diff --git a/.github/workflows/deploy-tag.yml b/.github/workflows/deploy-tag.yml
index 97c6ba9..36198d8 100644
--- a/.github/workflows/deploy-tag.yml
+++ b/.github/workflows/deploy-tag.yml
@@ -9,7 +9,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- - name: build
+ - name: regular build
+ run: composer install --ignore-platform-reqs
+ - name: build without dev
run: composer install --no-dev --no-scripts --ignore-platform-reqs
- name: remove composer/installers
run: composer remove composer/installers --update-no-dev --no-scripts --ignore-platform-reqs
diff --git a/.gitignore b/.gitignore
index c500eb8..16eabe2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
-
.DS_Store
-/vendor/
\ No newline at end of file
+/vendor/
+src/Dependencies
+.lando.yml
+package-lock.json
+.idea
\ No newline at end of file
diff --git a/assets/css/admin.css b/assets/css/admin.css
index 3e231b3..b85ebbb 100644
--- a/assets/css/admin.css
+++ b/assets/css/admin.css
@@ -100,7 +100,6 @@
.rocket-lazyload-form legend {
display: block;
- width: 100%;
padding: 19px 0 14px;
border-bottom: 1px solid #EEEEEE;
font-weight: 600;
diff --git a/composer.json b/composer.json
index 66b273b..1ba1956 100644
--- a/composer.json
+++ b/composer.json
@@ -16,7 +16,11 @@
],
"type": "wordpress-plugin",
"config": {
- "sort-packages": true
+ "sort-packages": true,
+ "allow-plugins": {
+ "composer/installers": true,
+ "dealerdirect/phpcodesniffer-composer-installer": true
+ }
},
"support": {
"issues": "https://github.com/wp-media/rocket-lazy-load/issues",
@@ -34,18 +38,21 @@
}
},
"require": {
- "php": ">=5.6",
- "composer/installers": "~1.0",
- "wp-media/rocket-lazyload-common": "^2.0"
+ "php": ">=7.3",
+ "composer/installers": "^1.0 || ^2.0"
},
"require-dev": {
- "league/container": "^2.4",
+ "psr/container": "1.0.0",
"brain/monkey": "^2.0",
- "coenjacobs/mozart": "^0.5.1",
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
+ "coenjacobs/mozart": "^0.7.0",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"phpcompatibility/phpcompatibility-wp": "^2.0",
- "phpunit/phpunit": "^5.7",
- "wp-coding-standards/wpcs": "^2.0.0"
+ "phpunit/phpunit": "^7.5 || ^8 || ^9",
+ "wp-coding-standards/wpcs": "^2.0.0",
+ "wp-launchpad/core": "^0.2.6",
+ "wp-launchpad/framework-options": "^0.1.3",
+ "wp-media/phpunit": "^3.0",
+ "wp-media/rocket-lazyload-common": "^3.0"
},
"extra": {
"mozart": {
@@ -55,7 +62,9 @@
"classmap_prefix": "RLLP_",
"packages": [
"wp-media/rocket-lazyload-common",
- "league/container"
+ "league/container",
+ "wp-launchpad/core",
+ "wp-launchpad/framework-options"
],
"delete_vendor_directories": true
}
@@ -64,12 +73,12 @@
"test-unit":"\"vendor/bin/phpunit\" --testsuite unit --colors=always",
"test-integration": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist",
"post-install-cmd": [
- "[ $COMPOSER_DEV_MODE -eq 0 ] || \"vendor/bin/mozart\" compose",
+ "\"vendor/bin/mozart\" compose",
"composer dump-autoload"
],
"post-update-cmd": [
- "[ $COMPOSER_DEV_MODE -eq 0 ] || \"vendor/bin/mozart\" compose",
+ "\"vendor/bin/mozart\" compose",
"composer dump-autoload"
]
- }
+ }
}
diff --git a/composer.lock b/composer.lock
index 495f87e..9b2a310 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,42 +4,41 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "88f049697a5890a4956ddbb51aa9f870",
+ "content-hash": "7d34084ad823de124118731064df1041",
"packages": [
{
"name": "composer/installers",
- "version": "v1.9.0",
+ "version": "v2.3.0",
"source": {
"type": "git",
"url": "https://github.com/composer/installers.git",
- "reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca"
+ "reference": "12fb2dfe5e16183de69e784a7b84046c43d97e8e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/installers/zipball/b93bcf0fa1fccb0b7d176b0967d969691cd74cca",
- "reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca",
+ "url": "https://api.github.com/repos/composer/installers/zipball/12fb2dfe5e16183de69e784a7b84046c43d97e8e",
+ "reference": "12fb2dfe5e16183de69e784a7b84046c43d97e8e",
"shasum": ""
},
"require": {
- "composer-plugin-api": "^1.0 || ^2.0"
- },
- "replace": {
- "roundcube/plugin-installer": "*",
- "shama/baton": "*"
+ "composer-plugin-api": "^1.0 || ^2.0",
+ "php": "^7.2 || ^8.0"
},
"require-dev": {
- "composer/composer": "1.6.* || 2.0.*@dev",
- "composer/semver": "1.0.* || 2.0.*@dev",
- "phpunit/phpunit": "^4.8.36",
- "sebastian/comparator": "^1.2.4",
- "symfony/process": "^2.3"
+ "composer/composer": "^1.10.27 || ^2.7",
+ "composer/semver": "^1.7.2 || ^3.4.0",
+ "phpstan/phpstan": "^1.11",
+ "phpstan/phpstan-phpunit": "^1",
+ "symfony/phpunit-bridge": "^7.1.1",
+ "symfony/process": "^5 || ^6 || ^7"
},
"type": "composer-plugin",
"extra": {
"class": "Composer\\Installers\\Plugin",
"branch-alias": {
- "dev-master": "1.0-dev"
- }
+ "dev-main": "2.x-dev"
+ },
+ "plugin-modifies-install-path": true
},
"autoload": {
"psr-4": {
@@ -60,7 +59,6 @@
"description": "A multi-framework Composer library installer",
"homepage": "https://composer.github.io/installers/",
"keywords": [
- "Craft",
"Dolibarr",
"Eliasis",
"Hurad",
@@ -76,11 +74,11 @@
"Porto",
"RadPHP",
"SMF",
+ "Starbug",
"Thelia",
"Whmcs",
"WolfCMS",
"agl",
- "aimeos",
"annotatecms",
"attogram",
"bitrix",
@@ -89,6 +87,7 @@
"cockpit",
"codeigniter",
"concrete5",
+ "concreteCMS",
"croogo",
"dokuwiki",
"drupal",
@@ -99,7 +98,6 @@
"grav",
"installer",
"itop",
- "joomla",
"known",
"kohana",
"laravel",
@@ -108,14 +106,18 @@
"magento",
"majima",
"mako",
+ "matomo",
"mediawiki",
+ "miaoxing",
"modulework",
"modx",
"moodle",
"osclass",
+ "pantheon",
"phpbb",
"piwik",
"ppi",
+ "processwire",
"puppet",
"pxcms",
"reindex",
@@ -124,87 +126,46 @@
"silverstripe",
"sydes",
"sylius",
- "symfony",
- "typo3",
+ "tastyigniter",
"wordpress",
"yawik",
"zend",
"zikula"
],
+ "support": {
+ "issues": "https://github.com/composer/installers/issues",
+ "source": "https://github.com/composer/installers/tree/v2.3.0"
+ },
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
- "time": "2020-04-07T06:57:05+00:00"
- },
- {
- "name": "wp-media/rocket-lazyload-common",
- "version": "v2.5.12",
- "source": {
- "type": "git",
- "url": "https://github.com/wp-media/rocket-lazyload-common.git",
- "reference": "09bdc9a550b8bd1197c155a98e17c45adcb190af"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/wp-media/rocket-lazyload-common/zipball/09bdc9a550b8bd1197c155a98e17c45adcb190af",
- "reference": "09bdc9a550b8bd1197c155a98e17c45adcb190af",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "require-dev": {
- "brain/monkey": "^2.0",
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
- "doctrine/instantiator": "1.0.*",
- "myclabs/deep-copy": "1.6.*",
- "phpcompatibility/phpcompatibility-wp": "^2.0",
- "phpdocumentor/reflection-docblock": "^3.3",
- "phpunit/php-token-stream": "^1.4",
- "phpunit/phpunit": "^5.7",
- "symfony/yaml": "2.8.*",
- "wp-coding-standards/wpcs": "^2.0.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "RocketLazyload\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "GPL-3.0-or-later"
- ],
- "authors": [
- {
- "name": "WP Media",
- "email": "contact@wp-media.me"
- }
- ],
- "description": "Common Code between WP Rocket and Lazyload by WP Rocket",
- "time": "2020-07-10T18:41:12+00:00"
+ "time": "2024-06-24T20:46:46+00:00"
}
],
"packages-dev": [
{
"name": "antecedent/patchwork",
- "version": "2.1.12",
+ "version": "2.1.28",
"source": {
"type": "git",
"url": "https://github.com/antecedent/patchwork.git",
- "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea"
+ "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/antecedent/patchwork/zipball/b98e046dd4c0acc34a0846604f06f6111654d9ea",
- "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea",
+ "url": "https://api.github.com/repos/antecedent/patchwork/zipball/6b30aff81ebadf0f2feb9268d3e08385cebcc08d",
+ "reference": "6b30aff81ebadf0f2feb9268d3e08385cebcc08d",
"shasum": ""
},
"require": {
@@ -225,7 +186,7 @@
}
],
"description": "Method redefinition (monkey-patching) functionality for PHP.",
- "homepage": "http://patchwork2.org/",
+ "homepage": "https://antecedent.github.io/patchwork/",
"keywords": [
"aop",
"aspect",
@@ -235,31 +196,35 @@
"runkit",
"testing"
],
- "time": "2019-12-22T17:52:09+00:00"
+ "support": {
+ "issues": "https://github.com/antecedent/patchwork/issues",
+ "source": "https://github.com/antecedent/patchwork/tree/2.1.28"
+ },
+ "time": "2024-02-06T09:26:11+00:00"
},
{
"name": "brain/monkey",
- "version": "2.4.0",
+ "version": "2.6.1",
"source": {
"type": "git",
"url": "https://github.com/Brain-WP/BrainMonkey.git",
- "reference": "b3ce8b619c26db6abd01b9dcfd6a2c0254060956"
+ "reference": "a31c84515bb0d49be9310f52ef1733980ea8ffbb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Brain-WP/BrainMonkey/zipball/b3ce8b619c26db6abd01b9dcfd6a2c0254060956",
- "reference": "b3ce8b619c26db6abd01b9dcfd6a2c0254060956",
+ "url": "https://api.github.com/repos/Brain-WP/BrainMonkey/zipball/a31c84515bb0d49be9310f52ef1733980ea8ffbb",
+ "reference": "a31c84515bb0d49be9310f52ef1733980ea8ffbb",
"shasum": ""
},
"require": {
- "antecedent/patchwork": "^2.0",
- "mockery/mockery": ">=0.9 <2",
+ "antecedent/patchwork": "^2.1.17",
+ "mockery/mockery": "^1.3.5 || ^1.4.4",
"php": ">=5.6.0"
},
"require-dev": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.4",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1",
"phpcompatibility/php-compatibility": "^9.3.0",
- "phpunit/phpunit": "^5.7.9 || ^6.0 || ^7.0"
+ "phpunit/phpunit": "^5.7.26 || ^6.0 || ^7.0 || >=8.0 <8.5.12 || ^8.5.14 || ^9.0"
},
"type": "library",
"extra": {
@@ -269,12 +234,12 @@
}
},
"autoload": {
- "psr-4": {
- "Brain\\Monkey\\": "src/"
- },
"files": [
"inc/api.php"
- ]
+ ],
+ "psr-4": {
+ "Brain\\Monkey\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -301,30 +266,37 @@
"test",
"testing"
],
- "time": "2019-11-24T16:03:21+00:00"
+ "support": {
+ "issues": "https://github.com/Brain-WP/BrainMonkey/issues",
+ "source": "https://github.com/Brain-WP/BrainMonkey"
+ },
+ "time": "2021-11-11T15:53:55+00:00"
},
{
"name": "coenjacobs/mozart",
- "version": "0.5.1",
+ "version": "0.7.1",
"source": {
"type": "git",
"url": "https://github.com/coenjacobs/mozart.git",
- "reference": "4bdde231f3309d9299c87b2246166e87acc93653"
+ "reference": "dbcdeb992d20d9c8914eef090f9a0d684bb1102c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/coenjacobs/mozart/zipball/4bdde231f3309d9299c87b2246166e87acc93653",
- "reference": "4bdde231f3309d9299c87b2246166e87acc93653",
+ "url": "https://api.github.com/repos/coenjacobs/mozart/zipball/dbcdeb992d20d9c8914eef090f9a0d684bb1102c",
+ "reference": "dbcdeb992d20d9c8914eef090f9a0d684bb1102c",
"shasum": ""
},
"require": {
"league/flysystem": "^1.0",
- "php": "^7.2",
+ "php": "^7.3|^8.0",
"symfony/console": "^4|^5",
"symfony/finder": "^4|^5"
},
"require-dev": {
- "phpunit/phpunit": "^8.5"
+ "mheap/phpunit-github-actions-printer": "^1.4",
+ "phpunit/phpunit": "^8.5",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.4"
},
"bin": [
"bin/mozart"
@@ -346,63 +318,41 @@
}
],
"description": "Composes all dependencies as a package inside a WordPress plugin",
- "time": "2019-12-23T12:24:56+00:00"
- },
- {
- "name": "container-interop/container-interop",
- "version": "1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/container-interop/container-interop.git",
- "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8",
- "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8",
- "shasum": ""
- },
- "require": {
- "psr/container": "^1.0"
+ "support": {
+ "issues": "https://github.com/coenjacobs/mozart/issues",
+ "source": "https://github.com/coenjacobs/mozart/tree/0.7.1"
},
- "type": "library",
- "autoload": {
- "psr-4": {
- "Interop\\Container\\": "src/Interop/Container/"
+ "funding": [
+ {
+ "url": "https://github.com/coenjacobs",
+ "type": "github"
}
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
],
- "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
- "homepage": "https://github.com/container-interop/container-interop",
- "abandoned": "psr/container",
- "time": "2017-02-14T19:40:03+00:00"
+ "time": "2021-02-02T21:37:03+00:00"
},
{
"name": "dealerdirect/phpcodesniffer-composer-installer",
- "version": "v0.5.0",
+ "version": "v0.7.2",
"source": {
"type": "git",
"url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
- "reference": "e749410375ff6fb7a040a68878c656c2e610b132"
+ "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/e749410375ff6fb7a040a68878c656c2e610b132",
- "reference": "e749410375ff6fb7a040a68878c656c2e610b132",
+ "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db",
+ "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db",
"shasum": ""
},
"require": {
- "composer-plugin-api": "^1.0",
- "php": "^5.3|^7",
- "squizlabs/php_codesniffer": "^2|^3"
+ "composer-plugin-api": "^1.0 || ^2.0",
+ "php": ">=5.3",
+ "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0"
},
"require-dev": {
"composer/composer": "*",
- "phpcompatibility/php-compatibility": "^9.0",
- "sensiolabs/security-checker": "^4.1.0"
+ "php-parallel-lint/php-parallel-lint": "^1.3.1",
+ "phpcompatibility/php-compatibility": "^9.0"
},
"type": "composer-plugin",
"extra": {
@@ -423,6 +373,10 @@
"email": "franck.nijhof@dealerdirect.com",
"homepage": "http://www.frenck.nl",
"role": "Developer / IT Manager"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors"
}
],
"description": "PHP_CodeSniffer Standards Composer Installer Plugin",
@@ -434,6 +388,7 @@
"codesniffer",
"composer",
"installer",
+ "phpcbf",
"phpcs",
"plugin",
"qa",
@@ -444,40 +399,40 @@
"stylecheck",
"tests"
],
- "time": "2018-10-26T13:21:45+00:00"
+ "support": {
+ "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues",
+ "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer"
+ },
+ "time": "2022-02-04T12:51:07+00:00"
},
{
"name": "doctrine/instantiator",
- "version": "1.3.1",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
+ "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
- "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
+ "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": "^8.1"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
+ "doctrine/coding-standard": "^11",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.13",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpstan/phpstan-shim": "^0.11",
- "phpunit/phpunit": "^7.0"
+ "phpbench/phpbench": "^1.2",
+ "phpstan/phpstan": "^1.9.4",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpunit/phpunit": "^9.5.27",
+ "vimeo/psalm": "^5.4"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
@@ -491,7 +446,7 @@
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
+ "homepage": "https://ocramius.github.io/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
@@ -500,6 +455,10 @@
"constructor",
"instantiate"
],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/2.0.0"
+ },
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
@@ -514,7 +473,7 @@
"type": "tidelift"
}
],
- "time": "2020-05-29T17:27:14+00:00"
+ "time": "2022-12-30T00:23:10+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -561,39 +520,47 @@
"keywords": [
"test"
],
+ "support": {
+ "issues": "https://github.com/hamcrest/hamcrest-php/issues",
+ "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
+ },
"time": "2020-07-09T08:09:16+00:00"
},
{
"name": "league/container",
- "version": "2.4.1",
+ "version": "3.4.1",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/container.git",
- "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0"
+ "reference": "84ecbc2dbecc31bd23faf759a0e329ee49abddbd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/container/zipball/43f35abd03a12977a60ffd7095efd6a7808488c0",
- "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0",
+ "url": "https://api.github.com/repos/thephpleague/container/zipball/84ecbc2dbecc31bd23faf759a0e329ee49abddbd",
+ "reference": "84ecbc2dbecc31bd23faf759a0e329ee49abddbd",
"shasum": ""
},
"require": {
- "container-interop/container-interop": "^1.2",
- "php": "^5.4.0 || ^7.0"
+ "php": "^7.0 || ^8.0",
+ "psr/container": "^1.0.0"
},
"provide": {
- "container-interop/container-interop-implementation": "^1.2",
"psr/container-implementation": "^1.0"
},
"replace": {
"orno/di": "~2.0"
},
"require-dev": {
- "phpunit/phpunit": "4.*"
+ "phpunit/phpunit": "^6.0 || ^7.0",
+ "roave/security-advisories": "dev-latest",
+ "scrutinizer/ocular": "^1.8",
+ "squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
"branch-alias": {
+ "dev-master": "3.x-dev",
+ "dev-3.x": "3.x-dev",
"dev-2.x": "2.x-dev",
"dev-1.x": "1.x-dev"
}
@@ -626,20 +593,30 @@
"provider",
"service"
],
- "time": "2017-05-10T09:20:27+00:00"
+ "support": {
+ "issues": "https://github.com/thephpleague/container/issues",
+ "source": "https://github.com/thephpleague/container/tree/3.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/philipobenito",
+ "type": "github"
+ }
+ ],
+ "time": "2021-07-09T08:23:52+00:00"
},
{
"name": "league/flysystem",
- "version": "1.1.4",
+ "version": "1.1.10",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32"
+ "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f3ad69181b8afed2c9edf7be5a2918144ff4ea32",
- "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1",
+ "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1",
"shasum": ""
},
"require": {
@@ -710,36 +687,40 @@
"sftp",
"storage"
],
+ "support": {
+ "issues": "https://github.com/thephpleague/flysystem/issues",
+ "source": "https://github.com/thephpleague/flysystem/tree/1.1.10"
+ },
"funding": [
{
"url": "https://offset.earth/frankdejonge",
"type": "other"
}
],
- "time": "2021-06-23T21:56:05+00:00"
+ "time": "2022-10-04T09:16:37+00:00"
},
{
"name": "league/mime-type-detection",
- "version": "1.7.0",
+ "version": "1.15.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/mime-type-detection.git",
- "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3"
+ "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
- "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
+ "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
+ "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
"shasum": ""
},
"require": {
"ext-fileinfo": "*",
- "php": "^7.2 || ^8.0"
+ "php": "^7.4 || ^8.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^2.18",
+ "friendsofphp/php-cs-fixer": "^3.2",
"phpstan/phpstan": "^0.12.68",
- "phpunit/phpunit": "^8.5.8 || ^9.3"
+ "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
},
"type": "library",
"autoload": {
@@ -758,6 +739,10 @@
}
],
"description": "Mime-type detection for Flysystem",
+ "support": {
+ "issues": "https://github.com/thephpleague/mime-type-detection/issues",
+ "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0"
+ },
"funding": [
{
"url": "https://github.com/frankdejonge",
@@ -768,39 +753,93 @@
"type": "tidelift"
}
],
- "time": "2021-01-18T20:58:21+00:00"
+ "time": "2024-01-28T23:22:08+00:00"
},
{
- "name": "mockery/mockery",
- "version": "1.3.3",
+ "name": "mikey179/vfsstream",
+ "version": "v1.6.11",
"source": {
"type": "git",
- "url": "https://github.com/mockery/mockery.git",
- "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d"
+ "url": "https://github.com/bovigo/vfsStream.git",
+ "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/60fa2f67f6e4d3634bb4a45ff3171fa52215800d",
- "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d",
+ "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f",
+ "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f",
"shasum": ""
},
"require": {
- "hamcrest/hamcrest-php": "^2.0.1",
- "lib-pcre": ">=7.0",
- "php": ">=5.6.0"
+ "php": ">=5.3.0"
},
"require-dev": {
- "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3"
+ "phpunit/phpunit": "^4.5|^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.3.x-dev"
+ "dev-master": "1.6.x-dev"
}
},
"autoload": {
"psr-0": {
- "Mockery": "library/"
+ "org\\bovigo\\vfs\\": "src/main/php"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Frank Kleine",
+ "homepage": "http://frankkleine.de/",
+ "role": "Developer"
+ }
+ ],
+ "description": "Virtual file system to mock the real file system in unit tests.",
+ "homepage": "http://vfs.bovigo.org/",
+ "support": {
+ "issues": "https://github.com/bovigo/vfsStream/issues",
+ "source": "https://github.com/bovigo/vfsStream/tree/master",
+ "wiki": "https://github.com/bovigo/vfsStream/wiki"
+ },
+ "time": "2022-02-23T02:02:42+00:00"
+ },
+ {
+ "name": "mockery/mockery",
+ "version": "1.6.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mockery/mockery.git",
+ "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699",
+ "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699",
+ "shasum": ""
+ },
+ "require": {
+ "hamcrest/hamcrest-php": "^2.0.1",
+ "lib-pcre": ">=7.0",
+ "php": ">=7.3"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5 || ^9.6.17",
+ "symplify/easy-coding-standard": "^12.1.14"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "library/helpers.php",
+ "library/Mockery.php"
+ ],
+ "psr-4": {
+ "Mockery\\": "library/Mockery"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -811,12 +850,20 @@
{
"name": "Pádraic Brady",
"email": "padraic.brady@gmail.com",
- "homepage": "http://blog.astrumfutura.com"
+ "homepage": "https://github.com/padraic",
+ "role": "Author"
},
{
"name": "Dave Marshall",
"email": "dave.marshall@atstsolutions.co.uk",
- "homepage": "http://davedevelopment.co.uk"
+ "homepage": "https://davedevelopment.co.uk",
+ "role": "Developer"
+ },
+ {
+ "name": "Nathanael Esayeas",
+ "email": "nathanael.esayeas@protonmail.com",
+ "homepage": "https://github.com/ghostwriter",
+ "role": "Lead Developer"
}
],
"description": "Mockery is a simple yet flexible PHP mock object framework",
@@ -833,41 +880,50 @@
"test double",
"testing"
],
- "time": "2020-08-11T18:10:21+00:00"
+ "support": {
+ "docs": "https://docs.mockery.io/",
+ "issues": "https://github.com/mockery/mockery/issues",
+ "rss": "https://github.com/mockery/mockery/releases.atom",
+ "security": "https://github.com/mockery/mockery/security/advisories",
+ "source": "https://github.com/mockery/mockery"
+ },
+ "time": "2024-05-16T03:13:13+00:00"
},
{
"name": "myclabs/deep-copy",
- "version": "1.10.1",
+ "version": "1.12.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
+ "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
- "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
+ "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
- "replace": {
- "myclabs/deep-copy": "self.version"
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3 <3.2.2"
},
"require-dev": {
- "doctrine/collections": "^1.0",
- "doctrine/common": "^2.6",
- "phpunit/phpunit": "^7.1"
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpspec/prophecy": "^1.10",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
"autoload": {
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- },
"files": [
"src/DeepCopy/deep_copy.php"
- ]
+ ],
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -881,419 +937,438 @@
"object",
"object graph"
],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0"
+ },
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
"type": "tidelift"
}
],
- "time": "2020-06-29T13:22:24+00:00"
+ "time": "2024-06-12T14:39:25+00:00"
},
{
- "name": "phpcompatibility/php-compatibility",
- "version": "9.3.5",
+ "name": "nikic/php-parser",
+ "version": "v5.1.0",
"source": {
"type": "git",
- "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
- "reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
- "reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/683130c2ff8c2739f4822ff7ac5c873ec529abd1",
+ "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1",
"shasum": ""
},
"require": {
- "php": ">=5.3",
- "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
- },
- "conflict": {
- "squizlabs/php_codesniffer": "2.6.2"
+ "ext-ctype": "*",
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "php": ">=7.4"
},
"require-dev": {
- "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^9.0"
},
- "suggest": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
- "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
},
- "type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
"license": [
- "LGPL-3.0-or-later"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Wim Godden",
- "homepage": "https://github.com/wimg",
- "role": "lead"
- },
- {
- "name": "Juliette Reinders Folmer",
- "homepage": "https://github.com/jrfnl",
- "role": "lead"
- },
- {
- "name": "Contributors",
- "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
+ "name": "Nikita Popov"
}
],
- "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
- "homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
+ "description": "A PHP parser written in PHP",
"keywords": [
- "compatibility",
- "phpcs",
- "standards"
+ "parser",
+ "php"
],
- "time": "2019-12-27T09:44:58+00:00"
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.1.0"
+ },
+ "time": "2024-07-01T20:03:41+00:00"
},
{
- "name": "phpcompatibility/phpcompatibility-paragonie",
- "version": "1.3.0",
+ "name": "phar-io/manifest",
+ "version": "2.0.4",
"source": {
"type": "git",
- "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git",
- "reference": "b862bc32f7e860d0b164b199bd995e690b4b191c"
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "54750ef60c58e43759730615a392c31c80e23176"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/b862bc32f7e860d0b164b199bd995e690b4b191c",
- "reference": "b862bc32f7e860d0b164b199bd995e690b4b191c",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176",
+ "reference": "54750ef60c58e43759730615a392c31c80e23176",
"shasum": ""
},
"require": {
- "phpcompatibility/php-compatibility": "^9.0"
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
},
- "require-dev": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5",
- "paragonie/random_compat": "dev-master",
- "paragonie/sodium_compat": "dev-master"
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
},
- "suggest": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
- "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
},
- "type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
"license": [
- "LGPL-3.0-or-later"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Wim Godden",
- "role": "lead"
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
},
{
- "name": "Juliette Reinders Folmer",
- "role": "lead"
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
}
],
- "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.",
- "homepage": "http://phpcompatibility.com/",
- "keywords": [
- "compatibility",
- "paragonie",
- "phpcs",
- "polyfill",
- "standards"
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
],
- "time": "2019-11-04T15:17:54+00:00"
+ "time": "2024-03-03T12:33:53+00:00"
},
{
- "name": "phpcompatibility/phpcompatibility-wp",
- "version": "2.1.0",
+ "name": "phar-io/version",
+ "version": "3.2.1",
"source": {
"type": "git",
- "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git",
- "reference": "41bef18ba688af638b7310666db28e1ea9158b2f"
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/41bef18ba688af638b7310666db28e1ea9158b2f",
- "reference": "41bef18ba688af638b7310666db28e1ea9158b2f",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
"shasum": ""
},
"require": {
- "phpcompatibility/php-compatibility": "^9.0",
- "phpcompatibility/phpcompatibility-paragonie": "^1.0"
- },
- "require-dev": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5"
+ "php": "^7.2 || ^8.0"
},
- "suggest": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
- "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
},
- "type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
"license": [
- "LGPL-3.0-or-later"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Wim Godden",
- "role": "lead"
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
},
{
- "name": "Juliette Reinders Folmer",
- "role": "lead"
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
}
],
- "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.",
- "homepage": "http://phpcompatibility.com/",
- "keywords": [
- "compatibility",
- "phpcs",
- "standards",
- "wordpress"
- ],
- "time": "2019-08-28T14:22:28+00:00"
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.2.1"
+ },
+ "time": "2022-02-21T01:04:05+00:00"
},
{
- "name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
+ "name": "phpcompatibility/php-compatibility",
+ "version": "9.3.5",
"source": {
"type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
+ "reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
+ "reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": ">=5.3",
+ "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-2.x": "2.x-dev"
- }
+ "conflict": {
+ "squizlabs/php_codesniffer": "2.6.2"
},
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
- }
+ "require-dev": {
+ "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "suggest": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
+ "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
},
+ "type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "LGPL-3.0-or-later"
],
"authors": [
{
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
+ "name": "Wim Godden",
+ "homepage": "https://github.com/wimg",
+ "role": "lead"
+ },
+ {
+ "name": "Juliette Reinders Folmer",
+ "homepage": "https://github.com/jrfnl",
+ "role": "lead"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
}
],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
+ "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
+ "homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
"keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
- "static analysis"
+ "compatibility",
+ "phpcs",
+ "standards"
],
- "time": "2020-06-27T09:03:43+00:00"
+ "support": {
+ "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues",
+ "source": "https://github.com/PHPCompatibility/PHPCompatibility"
+ },
+ "time": "2019-12-27T09:44:58+00:00"
},
{
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.2.1",
+ "name": "phpcompatibility/phpcompatibility-paragonie",
+ "version": "1.3.3",
"source": {
"type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "d870572532cd70bc3fab58f2e23ad423c8404c44"
+ "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git",
+ "reference": "293975b465e0e709b571cbf0c957c6c0a7b9a2ac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d870572532cd70bc3fab58f2e23ad423c8404c44",
- "reference": "d870572532cd70bc3fab58f2e23ad423c8404c44",
+ "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/293975b465e0e709b571cbf0c957c6c0a7b9a2ac",
+ "reference": "293975b465e0e709b571cbf0c957c6c0a7b9a2ac",
"shasum": ""
},
"require": {
- "ext-filter": "*",
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
- "webmozart/assert": "^1.9.1"
+ "phpcompatibility/php-compatibility": "^9.0"
},
"require-dev": {
- "mockery/mockery": "~1.3.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev"
- }
+ "dealerdirect/phpcodesniffer-composer-installer": "^1.0",
+ "paragonie/random_compat": "dev-master",
+ "paragonie/sodium_compat": "dev-master"
},
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
+ "suggest": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
+ "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
},
+ "type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "LGPL-3.0-or-later"
],
"authors": [
{
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
+ "name": "Wim Godden",
+ "role": "lead"
},
{
- "name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
+ "name": "Juliette Reinders Folmer",
+ "role": "lead"
}
],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2020-08-15T11:14:08+00:00"
- },
- {
- "name": "phpdocumentor/type-resolver",
- "version": "1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "e878a14a65245fbe78f8080eba03b47c3b705651"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651",
- "reference": "e878a14a65245fbe78f8080eba03b47c3b705651",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0"
- },
- "require-dev": {
- "ext-tokenizer": "*"
- },
- "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"
+ "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.",
+ "homepage": "http://phpcompatibility.com/",
+ "keywords": [
+ "compatibility",
+ "paragonie",
+ "phpcs",
+ "polyfill",
+ "standards",
+ "static analysis"
],
- "authors": [
+ "support": {
+ "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues",
+ "security": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/security/policy",
+ "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/PHPCompatibility",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/jrfnl",
+ "type": "github"
+ },
{
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
+ "url": "https://opencollective.com/php_codesniffer",
+ "type": "open_collective"
}
],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "time": "2020-06-27T10:12:23+00:00"
+ "time": "2024-04-24T21:30:46+00:00"
},
{
- "name": "phpspec/prophecy",
- "version": "v1.10.3",
+ "name": "phpcompatibility/phpcompatibility-wp",
+ "version": "2.1.5",
"source": {
"type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "451c3cd1418cf640de218914901e51b064abb093"
+ "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git",
+ "reference": "01c1ff2704a58e46f0cb1ca9d06aee07b3589082"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
- "reference": "451c3cd1418cf640de218914901e51b064abb093",
+ "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/01c1ff2704a58e46f0cb1ca9d06aee07b3589082",
+ "reference": "01c1ff2704a58e46f0cb1ca9d06aee07b3589082",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.0.2",
- "php": "^5.3|^7.0",
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
- "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
- "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
+ "phpcompatibility/php-compatibility": "^9.0",
+ "phpcompatibility/phpcompatibility-paragonie": "^1.0"
},
"require-dev": {
- "phpspec/phpspec": "^2.5 || ^3.2",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.10.x-dev"
- }
+ "dealerdirect/phpcodesniffer-composer-installer": "^1.0"
},
- "autoload": {
- "psr-4": {
- "Prophecy\\": "src/Prophecy"
- }
+ "suggest": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
+ "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
},
+ "type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "LGPL-3.0-or-later"
],
"authors": [
{
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
+ "name": "Wim Godden",
+ "role": "lead"
},
{
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
+ "name": "Juliette Reinders Folmer",
+ "role": "lead"
}
],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
+ "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.",
+ "homepage": "http://phpcompatibility.com/",
"keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
+ "compatibility",
+ "phpcs",
+ "standards",
+ "static analysis",
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues",
+ "security": "https://github.com/PHPCompatibility/PHPCompatibilityWP/security/policy",
+ "source": "https://github.com/PHPCompatibility/PHPCompatibilityWP"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/PHPCompatibility",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/jrfnl",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/php_codesniffer",
+ "type": "open_collective"
+ }
],
- "time": "2020-03-05T15:02:03+00:00"
+ "time": "2024-04-24T21:37:59+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "4.0.8",
+ "version": "9.2.31",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
+ "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
- "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965",
+ "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965",
"shasum": ""
},
"require": {
"ext-dom": "*",
+ "ext-libxml": "*",
"ext-xmlwriter": "*",
- "php": "^5.6 || ^7.0",
- "phpunit/php-file-iterator": "^1.3",
- "phpunit/php-text-template": "^1.2",
- "phpunit/php-token-stream": "^1.4.2 || ^2.0",
- "sebastian/code-unit-reverse-lookup": "^1.0",
- "sebastian/environment": "^1.3.2 || ^2.0",
- "sebastian/version": "^1.0 || ^2.0"
+ "nikic/php-parser": "^4.18 || ^5.0",
+ "php": ">=7.3",
+ "phpunit/php-file-iterator": "^3.0.3",
+ "phpunit/php-text-template": "^2.0.2",
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
+ "sebastian/complexity": "^2.0",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/lines-of-code": "^1.0.3",
+ "sebastian/version": "^3.0.1",
+ "theseer/tokenizer": "^1.2.0"
},
"require-dev": {
- "ext-xdebug": "^2.1.4",
- "phpunit/phpunit": "^5.7"
+ "phpunit/phpunit": "^9.3"
},
"suggest": {
- "ext-xdebug": "^2.5.1"
+ "ext-pcov": "PHP extension that provides line coverage",
+ "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0.x-dev"
+ "dev-master": "9.2-dev"
}
},
"autoload": {
@@ -1308,7 +1383,7 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
+ "email": "sebastian@phpunit.de",
"role": "lead"
}
],
@@ -1319,29 +1394,43 @@
"testing",
"xunit"
],
- "time": "2017-04-02T07:44:40+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-02T06:37:42+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "1.4.5",
+ "version": "3.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
- "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.4.x-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
@@ -1356,7 +1445,7 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
+ "email": "sebastian@phpunit.de",
"role": "lead"
}
],
@@ -1366,26 +1455,48 @@
"filesystem",
"iterator"
],
- "time": "2017-11-27T13:52:08+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-12-02T12:48:52+00:00"
},
{
- "name": "phpunit/php-text-template",
- "version": "1.2.1",
+ "name": "phpunit/php-invoker",
+ "version": "3.1.1",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
"autoload": {
"classmap": [
"src/"
@@ -1402,37 +1513,47 @@
"role": "lead"
}
],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
"keywords": [
- "template"
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
],
- "time": "2015-06-21T13:50:34+00:00"
+ "time": "2020-09-28T05:58:55+00:00"
},
{
- "name": "phpunit/php-timer",
- "version": "1.0.9",
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
- "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
"shasum": ""
},
"require": {
- "php": "^5.3.3 || ^7.0"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -1447,42 +1568,51 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
+ "email": "sebastian@phpunit.de",
"role": "lead"
}
],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
"keywords": [
- "timer"
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
],
- "time": "2017-02-26T11:10:40+00:00"
+ "time": "2020-10-26T05:33:50+00:00"
},
{
- "name": "phpunit/php-token-stream",
- "version": "2.0.2",
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "791198a2c6254db10131eecfe8c06670700904db"
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
- "reference": "791198a2c6254db10131eecfe8c06670700904db",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
"shasum": ""
},
"require": {
- "ext-tokenizer": "*",
- "php": "^7.0"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^6.2.4"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-master": "5.0-dev"
}
},
"autoload": {
@@ -1497,64 +1627,73 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
"keywords": [
- "tokenizer"
+ "timer"
],
- "abandoned": true,
- "time": "2017-11-27T05:48:46+00:00"
- },
- {
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:16:10+00:00"
+ },
+ {
"name": "phpunit/phpunit",
- "version": "5.7.27",
+ "version": "9.6.19",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c"
+ "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
- "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8",
+ "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8",
"shasum": ""
},
"require": {
+ "doctrine/instantiator": "^1.3.1 || ^2",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-xml": "*",
- "myclabs/deep-copy": "~1.3",
- "php": "^5.6 || ^7.0",
- "phpspec/prophecy": "^1.6.2",
- "phpunit/php-code-coverage": "^4.0.4",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": "^1.0.6",
- "phpunit/phpunit-mock-objects": "^3.2",
- "sebastian/comparator": "^1.2.4",
- "sebastian/diff": "^1.4.3",
- "sebastian/environment": "^1.3.4 || ^2.0",
- "sebastian/exporter": "~2.0",
- "sebastian/global-state": "^1.1",
- "sebastian/object-enumerator": "~2.0",
- "sebastian/resource-operations": "~1.0",
- "sebastian/version": "^1.0.6|^2.0.1",
- "symfony/yaml": "~2.1|~3.0|~4.0"
- },
- "conflict": {
- "phpdocumentor/reflection-docblock": "3.0.2"
- },
- "require-dev": {
- "ext-pdo": "*"
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.3",
+ "phar-io/version": "^3.0.2",
+ "php": ">=7.3",
+ "phpunit/php-code-coverage": "^9.2.28",
+ "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-invoker": "^3.1.1",
+ "phpunit/php-text-template": "^2.0.3",
+ "phpunit/php-timer": "^5.0.2",
+ "sebastian/cli-parser": "^1.0.1",
+ "sebastian/code-unit": "^1.0.6",
+ "sebastian/comparator": "^4.0.8",
+ "sebastian/diff": "^4.0.3",
+ "sebastian/environment": "^5.1.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.2",
+ "sebastian/version": "^3.0.2"
},
"suggest": {
- "ext-xdebug": "*",
- "phpunit/php-invoker": "~1.1"
+ "ext-soap": "To be able to generate mocks based on WSDL files",
+ "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
},
"bin": [
"phpunit"
@@ -1562,10 +1701,13 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.7.x-dev"
+ "dev-master": "9.6-dev"
}
},
"autoload": {
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ],
"classmap": [
"src/"
]
@@ -1588,41 +1730,104 @@
"testing",
"xunit"
],
- "time": "2018-02-01T05:50:59+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19"
+ },
+ "funding": [
+ {
+ "url": "https://phpunit.de/sponsors.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-04-05T04:35:58+00:00"
},
{
- "name": "phpunit/phpunit-mock-objects",
- "version": "3.4.4",
+ "name": "psr/container",
+ "version": "1.0.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
- "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.0.2",
- "php": "^5.6 || ^7.0",
- "phpunit/php-text-template": "^1.2",
- "sebastian/exporter": "^1.2 || ^2.0"
+ "php": ">=5.3.0"
},
- "conflict": {
- "phpunit/phpunit": "<5.4.0"
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
},
- "require-dev": {
- "phpunit/phpunit": "^5.4"
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
},
- "suggest": {
- "ext-soap": "*"
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/master"
+ },
+ "time": "2017-02-14T16:28:37+00:00"
+ },
+ {
+ "name": "sebastian/cli-parser",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
+ "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.2.x-dev"
+ "dev-master": "1.0-dev"
}
},
"autoload": {
@@ -1637,92 +1842,104 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
+ "email": "sebastian@phpunit.de",
"role": "lead"
}
],
- "description": "Mock Object library for PHPUnit",
- "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
- "keywords": [
- "mock",
- "xunit"
+ "description": "Library for parsing CLI options",
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
],
- "abandoned": true,
- "time": "2017-06-30T09:13:00+00:00"
+ "time": "2024-03-02T06:27:43+00:00"
},
{
- "name": "psr/container",
- "version": "1.0.0",
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "1.0-dev"
}
},
"autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
- }
+ "classmap": [
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
- "keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
+ "description": "Collection of value objects that represent the PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
],
- "time": "2017-02-14T16:28:37+00:00"
+ "time": "2020-10-26T13:08:54+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
- "version": "1.0.1",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
"shasum": ""
},
"require": {
- "php": "^5.6 || ^7.0"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^5.7 || ^6.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -1742,34 +1959,44 @@
],
"description": "Looks up which function or method a line of code belongs to",
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
- "time": "2017-03-04T06:30:41+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:30:19+00:00"
},
{
"name": "sebastian/comparator",
- "version": "1.2.4",
+ "version": "4.0.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
+ "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
- "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
+ "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
- "sebastian/diff": "~1.2",
- "sebastian/exporter": "~1.2 || ~2.0"
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.4"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.2.x-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
@@ -1782,6 +2009,10 @@
"BSD-3-Clause"
],
"authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
{
"name": "Jeff Welch",
"email": "whatthejeff@gmail.com"
@@ -1793,45 +2024,109 @@
{
"name": "Bernhard Schussek",
"email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
}
],
"description": "Provides the functionality to compare PHP values for equality",
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
"keywords": [
"comparator",
"compare",
"equality"
],
- "time": "2017-01-29T09:50:25+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-09-14T12:41:17+00:00"
+ },
+ {
+ "name": "sebastian/complexity",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a",
+ "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.18 || ^5.0",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-12-22T06:19:30+00:00"
},
{
"name": "sebastian/diff",
- "version": "1.4.3",
+ "version": "4.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
+ "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
- "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc",
+ "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc",
"shasum": ""
},
"require": {
- "php": "^5.3.3 || ^7.0"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.4-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
@@ -1844,46 +2139,62 @@
"BSD-3-Clause"
],
"authors": [
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- },
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
}
],
"description": "Diff implementation",
"homepage": "https://github.com/sebastianbergmann/diff",
"keywords": [
- "diff"
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
],
- "time": "2017-05-22T07:24:03+00:00"
+ "time": "2024-03-02T06:30:58+00:00"
},
{
"name": "sebastian/environment",
- "version": "2.0.0",
+ "version": "5.1.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
+ "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
- "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
+ "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
"shasum": ""
},
"require": {
- "php": "^5.6 || ^7.0"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^5.0"
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "5.1-dev"
}
},
"autoload": {
@@ -1908,34 +2219,44 @@
"environment",
"hhvm"
],
- "time": "2016-11-26T07:53:53+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-02-03T06:03:51+00:00"
},
{
"name": "sebastian/exporter",
- "version": "2.0.0",
+ "version": "4.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
+ "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
- "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72",
+ "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
- "sebastian/recursion-context": "~2.0"
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
},
"require-dev": {
"ext-mbstring": "*",
- "phpunit/phpunit": "~4.4"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
@@ -1948,6 +2269,10 @@
"BSD-3-Clause"
],
"authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
{
"name": "Jeff Welch",
"email": "whatthejeff@gmail.com"
@@ -1956,46 +2281,55 @@
"name": "Volker Dusch",
"email": "github@wallbash.com"
},
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
{
"name": "Adam Harvey",
"email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
}
],
"description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "homepage": "https://www.github.com/sebastianbergmann/exporter",
"keywords": [
"export",
"exporter"
],
- "time": "2016-11-19T08:54:04+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-02T06:33:00+00:00"
},
{
"name": "sebastian/global-state",
- "version": "1.1.1",
+ "version": "5.0.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
+ "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
+ "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.2"
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
},
"suggest": {
"ext-uopz": "*"
@@ -2003,7 +2337,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-master": "5.0-dev"
}
},
"autoload": {
@@ -2026,33 +2360,43 @@
"keywords": [
"global state"
],
- "time": "2015-10-12T03:26:01+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-02T06:35:11+00:00"
},
{
- "name": "sebastian/object-enumerator",
- "version": "2.0.1",
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.4",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
- "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5",
+ "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5",
"shasum": ""
},
"require": {
- "php": ">=5.6",
- "sebastian/recursion-context": "~2.0"
+ "nikic/php-parser": "^4.18 || ^5.0",
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "~5"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "1.0-dev"
}
},
"autoload": {
@@ -2067,37 +2411,160 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for counting the lines of code in PHP source code",
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-12-22T06:20:34+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
],
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
- "time": "2017-02-18T15:18:39+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:12:34+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:14:26+00:00"
},
{
"name": "sebastian/recursion-context",
- "version": "2.0.0",
+ "version": "4.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
+ "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
- "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
+ "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "~4.4"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
@@ -2110,44 +2577,57 @@
"BSD-3-Clause"
],
"authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
},
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
{
"name": "Adam Harvey",
"email": "aharvey@php.net"
}
],
"description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2016-11-19T07:33:16+00:00"
+ "homepage": "https://github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-02-03T06:07:39+00:00"
},
{
"name": "sebastian/resource-operations",
- "version": "1.0.0",
+ "version": "3.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+ "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
- "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
+ "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
"shasum": ""
},
"require": {
- "php": ">=5.6.0"
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -2167,29 +2647,94 @@
],
"description": "Provides a list of PHP built-in functions that operate on resources",
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
- "time": "2015-07-28T20:34:47+00:00"
+ "support": {
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-14T16:00:52+00:00"
+ },
+ {
+ "name": "sebastian/type",
+ "version": "3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
+ "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/3.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-02-03T06:13:03+00:00"
},
{
"name": "sebastian/version",
- "version": "2.0.1",
+ "version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
"shasum": ""
},
"require": {
- "php": ">=5.6"
+ "php": ">=7.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
@@ -2210,20 +2755,30 @@
],
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
"homepage": "https://github.com/sebastianbergmann/version",
- "time": "2016-10-03T07:35:21+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:39:44+00:00"
},
{
"name": "squizlabs/php_codesniffer",
- "version": "3.5.6",
+ "version": "3.10.1",
"source": {
"type": "git",
- "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
- "reference": "e97627871a7eab2f70e59166072a6b767d5834e0"
+ "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
+ "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e97627871a7eab2f70e59166072a6b767d5834e0",
- "reference": "e97627871a7eab2f70e59166072a6b767d5834e0",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/8f90f7a53ce271935282967f53d0894f8f1ff877",
+ "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877",
"shasum": ""
},
"require": {
@@ -2233,11 +2788,11 @@
"php": ">=5.4.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
},
"bin": [
- "bin/phpcs",
- "bin/phpcbf"
+ "bin/phpcbf",
+ "bin/phpcs"
],
"type": "library",
"extra": {
@@ -2252,40 +2807,71 @@
"authors": [
{
"name": "Greg Sherwood",
- "role": "lead"
+ "role": "Former lead"
+ },
+ {
+ "name": "Juliette Reinders Folmer",
+ "role": "Current lead"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
}
],
"description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
- "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"keywords": [
"phpcs",
- "standards"
+ "standards",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
+ "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
+ "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+ "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/PHPCSStandards",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/jrfnl",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/php_codesniffer",
+ "type": "open_collective"
+ }
],
- "time": "2020-08-10T04:50:15+00:00"
+ "time": "2024-05-22T21:24:41+00:00"
},
{
"name": "symfony/console",
- "version": "v5.1.3",
+ "version": "v5.4.41",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "2226c68009627934b8cfc01260b4d287eab070df"
+ "reference": "6473d441a913cb997123b59ff2dbe3d1cf9e11ba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/2226c68009627934b8cfc01260b4d287eab070df",
- "reference": "2226c68009627934b8cfc01260b4d287eab070df",
+ "url": "https://api.github.com/repos/symfony/console/zipball/6473d441a913cb997123b59ff2dbe3d1cf9e11ba",
+ "reference": "6473d441a913cb997123b59ff2dbe3d1cf9e11ba",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "^1.8",
- "symfony/polyfill-php80": "^1.15",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/string": "^5.1"
+ "symfony/polyfill-php73": "^1.9",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/string": "^5.1|^6.0"
},
"conflict": {
+ "psr/log": ">=3",
"symfony/dependency-injection": "<4.4",
"symfony/dotenv": "<5.1",
"symfony/event-dispatcher": "<4.4",
@@ -2293,16 +2879,16 @@
"symfony/process": "<4.4"
},
"provide": {
- "psr/log-implementation": "1.0"
+ "psr/log-implementation": "1.0|2.0"
},
"require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/event-dispatcher": "^4.4|^5.0",
- "symfony/lock": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/var-dumper": "^4.4|^5.0"
+ "psr/log": "^1|^2",
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
+ "symfony/lock": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/var-dumper": "^4.4|^5.0|^6.0"
},
"suggest": {
"psr/log": "For using the console logger",
@@ -2311,11 +2897,6 @@
"symfony/process": ""
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\Console\\": ""
@@ -2338,8 +2919,17 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Console Component",
+ "description": "Eases the creation of beautiful and testable command line interfaces",
"homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command-line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v5.4.41"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2354,37 +2944,38 @@
"type": "tidelift"
}
],
- "time": "2020-07-06T13:23:11+00:00"
+ "time": "2024-06-28T07:48:55+00:00"
},
{
- "name": "symfony/finder",
- "version": "v5.1.3",
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.5.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187"
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/4298870062bfc667cb78d2b379be4bf5dec5f187",
- "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
"shasum": ""
},
"require": {
- "php": ">=7.2.5"
+ "php": ">=8.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.1-dev"
+ "dev-main": "3.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Component\\Finder\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
+ "files": [
+ "function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2393,16 +2984,19 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Finder Component",
+ "description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2417,44 +3011,34 @@
"type": "tidelift"
}
],
- "time": "2020-05-20T17:43:50+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
- "name": "symfony/polyfill-ctype",
- "version": "v1.18.1",
+ "name": "symfony/finder",
+ "version": "v5.4.40",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "f51cff4687547641c7d8180d74932ab40b2205ce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
- "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/f51cff4687547641c7d8180d74932ab40b2205ce",
+ "reference": "f51cff4687547641c7d8180d74932ab40b2205ce",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-ctype": "For best performance"
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php80": "^1.16"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
+ "Symfony\\Component\\Finder\\": ""
},
- "files": [
- "bootstrap.php"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2463,22 +3047,19 @@
],
"authors": [
{
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill for ctype functions",
+ "description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v5.4.40"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2493,45 +3074,121 @@
"type": "tidelift"
}
],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2024-05-31T14:33:22+00:00"
},
{
- "name": "symfony/polyfill-intl-grapheme",
- "version": "v1.18.1",
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.30.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5"
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "0424dff1c58f028c451efff2045f5d92410bd540"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5",
- "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540",
+ "reference": "0424dff1c58f028c451efff2045f5d92410bd540",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
},
"suggest": {
- "ext-intl": "For best performance"
+ "ext-ctype": "For best performance"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
"psr-4": {
- "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
},
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-31T15:07:36+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.30.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a",
+ "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2557,6 +3214,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2571,45 +3231,42 @@
"type": "tidelift"
}
],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2024-05-31T15:07:36+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.18.1",
+ "version": "v1.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e"
+ "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
- "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb",
+ "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
- },
"files": [
"bootstrap.php"
],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
"classmap": [
"Resources/stubs"
]
@@ -2638,6 +3295,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2652,45 +3312,45 @@
"type": "tidelift"
}
],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2024-05-31T15:07:36+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.18.1",
+ "version": "v1.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
+ "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
- "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c",
+ "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2715,6 +3375,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2729,42 +3392,39 @@
"type": "tidelift"
}
],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2024-06-19T12:30:46+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.18.1",
+ "version": "v1.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
+ "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
- "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/ec444d3f3f6505bb28d11afa41e75faadebc10a1",
+ "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
- },
"files": [
"bootstrap.php"
],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
"classmap": [
"Resources/stubs"
]
@@ -2791,6 +3451,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.30.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2805,42 +3468,39 @@
"type": "tidelift"
}
],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2024-05-31T15:07:36+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.18.1",
+ "version": "v1.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
+ "reference": "77fa7995ac1b21ab60769b7323d600a991a90433"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
- "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433",
+ "reference": "77fa7995ac1b21ab60769b7323d600a991a90433",
"shasum": ""
},
"require": {
- "php": ">=7.0.8"
+ "php": ">=7.1"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
- },
"files": [
"bootstrap.php"
],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
"classmap": [
"Resources/stubs"
]
@@ -2871,6 +3531,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2885,20 +3548,20 @@
"type": "tidelift"
}
],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2024-05-31T15:07:36+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v2.1.3",
+ "version": "v2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442"
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442",
- "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
"shasum": ""
},
"require": {
@@ -2911,7 +3574,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1-dev"
+ "dev-master": "2.2-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2947,6 +3610,9 @@
"interoperability",
"standards"
],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/master"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2961,49 +3627,47 @@
"type": "tidelift"
}
],
- "time": "2020-07-06T13:23:11+00:00"
+ "time": "2020-09-07T11:33:47+00:00"
},
{
"name": "symfony/string",
- "version": "v5.1.3",
+ "version": "v6.4.9",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b"
+ "reference": "76792dbd99690a5ebef8050d9206c60c59e681d7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/f629ba9b611c76224feb21fe2bcbf0b6f992300b",
- "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b",
+ "url": "https://api.github.com/repos/symfony/string/zipball/76792dbd99690a5ebef8050d9206c60c59e681d7",
+ "reference": "76792dbd99690a5ebef8050d9206c60c59e681d7",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "~1.15"
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/http-client": "^4.4|^5.0",
- "symfony/translation-contracts": "^1.1|^2",
- "symfony/var-exporter": "^4.4|^5.0"
+ "symfony/error-handler": "^5.4|^6.0|^7.0",
+ "symfony/http-client": "^5.4|^6.0|^7.0",
+ "symfony/intl": "^6.2|^7.0",
+ "symfony/translation-contracts": "^2.5|^3.0",
+ "symfony/var-exporter": "^5.4|^6.0|^7.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
- "psr-4": {
- "Symfony\\Component\\String\\": ""
- },
"files": [
"Resources/functions.php"
],
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
"exclude-from-classmap": [
"/Tests/"
]
@@ -3022,7 +3686,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony String component",
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
"homepage": "https://symfony.com",
"keywords": [
"grapheme",
@@ -3032,6 +3696,9 @@
"utf-8",
"utf8"
],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v6.4.9"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -3046,175 +3713,505 @@
"type": "tidelift"
}
],
- "time": "2020-07-08T08:27:49+00:00"
+ "time": "2024-06-28T09:25:38+00:00"
},
{
- "name": "symfony/yaml",
- "version": "v4.4.11",
+ "name": "theseer/tokenizer",
+ "version": "1.2.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a"
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a",
- "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
+ "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
"shasum": ""
},
"require": {
- "php": ">=7.1.3",
- "symfony/polyfill-ctype": "~1.8"
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
},
- "conflict": {
- "symfony/console": "<3.4"
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-03T12:36:25+00:00"
+ },
+ {
+ "name": "wp-coding-standards/wpcs",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
+ "reference": "7da1894633f168fe244afc6de00d141f27517b62"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7da1894633f168fe244afc6de00d141f27517b62",
+ "reference": "7da1894633f168fe244afc6de00d141f27517b62",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4",
+ "squizlabs/php_codesniffer": "^3.3.1"
},
"require-dev": {
- "symfony/console": "^3.4|^4.0|^5.0"
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || ^0.6",
+ "phpcompatibility/php-compatibility": "^9.0",
+ "phpcsstandards/phpcsdevtools": "^1.0",
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
},
"suggest": {
- "symfony/console": "For validating YAML files using the lint command"
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.6 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
+ "type": "phpcodesniffer-standard",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors"
}
+ ],
+ "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions",
+ "keywords": [
+ "phpcs",
+ "standards",
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues",
+ "source": "https://github.com/WordPress/WordPress-Coding-Standards",
+ "wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki"
+ },
+ "time": "2020-05-13T23:57:56+00:00"
+ },
+ {
+ "name": "wp-launchpad/core",
+ "version": "v0.2.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wp-launchpad/core.git",
+ "reference": "563ee994bd5d058341368ecd053e7a3145791d26"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wp-launchpad/core/zipball/563ee994bd5d058341368ecd053e7a3145791d26",
+ "reference": "563ee994bd5d058341368ecd053e7a3145791d26",
+ "shasum": ""
+ },
+ "require": {
+ "league/container": "^3.3",
+ "php": ">=7.1",
+ "wp-launchpad/dispatcher": "^1.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "phpcompatibility/phpcompatibility-wp": "^2.0",
+ "phpstan/phpstan": "^1.10",
+ "szepeviktor/phpstan-wordpress": "^1.3",
+ "wp-coding-standards/wpcs": "^3",
+ "wp-launchpad/cli": "^1.0.2",
+ "wp-launchpad/phpunit-wp-hooks": "^1.0",
+ "wp-media/phpunit": "^3.0"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
+ "LaunchpadCore\\": "inc/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "GPL-2.0-or-later"
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "CrochetFeve0251"
}
],
- "description": "Symfony Yaml Component",
- "homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
+ "description": "Core from Launchpad",
+ "keywords": [
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/wp-launchpad/core/issues",
+ "source": "https://github.com/wp-launchpad/core/tree/v0.2.6"
+ },
+ "time": "2024-05-13T10:50:45+00:00"
+ },
+ {
+ "name": "wp-launchpad/dispatcher",
+ "version": "v1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wp-launchpad/dispatcher.git",
+ "reference": "76d6b61c5324f2aa750a86b1acb692723a3b368f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wp-launchpad/dispatcher/zipball/76d6b61c5324f2aa750a86b1acb692723a3b368f",
+ "reference": "76d6b61c5324f2aa750a86b1acb692723a3b368f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "wp-launchpad/cli": "^1.0.2",
+ "wp-launchpad/phpunit-wp-hooks": "^1.0",
+ "wp-media/phpunit": "^3.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "LaunchpadDispatcher\\": "inc/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0-or-later"
+ ],
+ "authors": [
{
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
+ "name": "CrochetFeve0251"
}
],
- "time": "2020-05-20T08:37:50+00:00"
+ "description": "Dispatcher library for Launchpad framework",
+ "keywords": [
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/wp-launchpad/dispatcher/issues",
+ "source": "https://github.com/wp-launchpad/dispatcher/tree/v1.0.0"
+ },
+ "time": "2024-04-13T15:05:16+00:00"
},
{
- "name": "webmozart/assert",
- "version": "1.9.1",
+ "name": "wp-launchpad/framework-options",
+ "version": "v0.1.3",
"source": {
"type": "git",
- "url": "https://github.com/webmozarts/assert.git",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+ "url": "https://github.com/wp-launchpad/framework-options.git",
+ "reference": "2484621a54734c8f0e07fc78cde84fb74faae3fd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "url": "https://api.github.com/repos/wp-launchpad/framework-options/zipball/2484621a54734c8f0e07fc78cde84fb74faae3fd",
+ "reference": "2484621a54734c8f0e07fc78cde84fb74faae3fd",
"shasum": ""
},
"require": {
- "php": "^5.3.3 || ^7.0 || ^8.0",
- "symfony/polyfill-ctype": "^1.8"
+ "php": ">=7.0",
+ "wp-launchpad/core": "^0.2.4",
+ "wp-launchpad/options": "^0.1"
},
- "conflict": {
- "phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<3.9.1"
+ "require-dev": {
+ "wp-launchpad/phpunit-wp-hooks": "^1.0",
+ "wp-media/phpunit": "^3.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "LaunchpadFrameworkOptions\\": "inc/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "description": "Options library for the framework Launchpad",
+ "support": {
+ "issues": "https://github.com/wp-launchpad/framework-options/issues",
+ "source": "https://github.com/wp-launchpad/framework-options/tree/v0.1.3"
+ },
+ "time": "2024-07-03T09:48:16+00:00"
+ },
+ {
+ "name": "wp-launchpad/options",
+ "version": "v0.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wp-launchpad/options.git",
+ "reference": "22a6c3c5c73feac79be61fa6cd6f7ca3e034623a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wp-launchpad/options/zipball/22a6c3c5c73feac79be61fa6cd6f7ca3e034623a",
+ "reference": "22a6c3c5c73feac79be61fa6cd6f7ca3e034623a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "LaunchpadOptions\\": "inc/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "description": "Options library for Launchpad",
+ "support": {
+ "issues": "https://github.com/wp-launchpad/options/issues",
+ "source": "https://github.com/wp-launchpad/options/tree/v0.1.3"
+ },
+ "time": "2024-05-21T18:28:15+00:00"
+ },
+ {
+ "name": "wp-media/phpunit",
+ "version": "v3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wp-media/phpunit.git",
+ "reference": "29a596a83c4d3893f63ea6ae21301bee8be41251"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wp-media/phpunit/zipball/29a596a83c4d3893f63ea6ae21301bee8be41251",
+ "reference": "29a596a83c4d3893f63ea6ae21301bee8be41251",
+ "shasum": ""
+ },
+ "require": {
+ "mikey179/vfsstream": "^1.6",
+ "php": "^7 || ^8",
+ "yoast/wp-test-utils": "^1.0.0"
+ },
+ "bin": [
+ "wpmedia-phpunit"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "WPMedia\\PHPUnit\\": "."
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0+"
+ ],
+ "authors": [
+ {
+ "name": "WP Media",
+ "email": "contact@wp-media.me",
+ "homepage": "https://wp-media.me"
+ }
+ ],
+ "description": "PHPUnit extender for bootstrapping unit and WordPress integration test suites.",
+ "homepage": "https://github.com/wp-media/phpunit",
+ "support": {
+ "issues": "https://github.com/wp-media/phpunit/issues",
+ "source": "https://github.com/wp-media/phpunit"
+ },
+ "time": "2023-05-10T15:56:16+00:00"
+ },
+ {
+ "name": "wp-media/rocket-lazyload-common",
+ "version": "v3.0.11",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wp-media/rocket-lazyload-common.git",
+ "reference": "df4369bdb0b8777bca7a7375e3d956c5794d844c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wp-media/rocket-lazyload-common/zipball/df4369bdb0b8777bca7a7375e3d956c5794d844c",
+ "reference": "df4369bdb0b8777bca7a7375e3d956c5794d844c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "php": ">=7.0",
+ "phpcompatibility/phpcompatibility-wp": "^2.0",
+ "phpunit/phpunit": "^7.5 || ^8 || ^9",
+ "szepeviktor/phpstan-wordpress": "^0.7.0",
+ "wp-coding-standards/wpcs": "^2.0",
+ "wp-media/phpunit": "^3.0"
},
"type": "library",
"autoload": {
"psr-4": {
- "Webmozart\\Assert\\": "src/"
+ "RocketLazyload\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "GPL-3.0-or-later"
],
"authors": [
{
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
+ "name": "WP Media",
+ "email": "contact@wp-media.me"
+ }
+ ],
+ "description": "Common Code between WP Rocket and Lazyload by WP Rocket",
+ "support": {
+ "issues": "https://github.com/wp-media/rocket-lazyload-common/issues",
+ "source": "https://github.com/wp-media/rocket-lazyload-common"
+ },
+ "time": "2023-04-20T06:44:58+00:00"
+ },
+ {
+ "name": "yoast/phpunit-polyfills",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Yoast/PHPUnit-Polyfills.git",
+ "reference": "a0f7d708794a738f328d7b6c94380fd1d6c40446"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/a0f7d708794a738f328d7b6c94380fd1d6c40446",
+ "reference": "a0f7d708794a738f328d7b6c94380fd1d6c40446",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4",
+ "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "require-dev": {
+ "php-parallel-lint/php-console-highlighter": "^1.0.0",
+ "php-parallel-lint/php-parallel-lint": "^1.4.0",
+ "yoast/yoastcs": "^3.1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "phpunitpolyfills-autoload.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Team Yoast",
+ "email": "support@yoast.com",
+ "homepage": "https://yoast.com"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/Yoast/PHPUnit-Polyfills/graphs/contributors"
}
],
- "description": "Assertions to validate method input/output with nice error messages.",
+ "description": "Set of polyfills for changed PHPUnit functionality to allow for creating PHPUnit cross-version compatible tests",
+ "homepage": "https://github.com/Yoast/PHPUnit-Polyfills",
"keywords": [
- "assert",
- "check",
- "validate"
+ "phpunit",
+ "polyfill",
+ "testing"
],
- "time": "2020-07-08T17:02:28+00:00"
+ "support": {
+ "issues": "https://github.com/Yoast/PHPUnit-Polyfills/issues",
+ "security": "https://github.com/Yoast/PHPUnit-Polyfills/security/policy",
+ "source": "https://github.com/Yoast/PHPUnit-Polyfills"
+ },
+ "time": "2024-04-05T16:01:51+00:00"
},
{
- "name": "wp-coding-standards/wpcs",
- "version": "2.3.0",
+ "name": "yoast/wp-test-utils",
+ "version": "1.2.0",
"source": {
"type": "git",
- "url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
- "reference": "7da1894633f168fe244afc6de00d141f27517b62"
+ "url": "https://github.com/Yoast/wp-test-utils.git",
+ "reference": "2e0f62e0281e4859707c5f13b7da1422aa1c8f7b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7da1894633f168fe244afc6de00d141f27517b62",
- "reference": "7da1894633f168fe244afc6de00d141f27517b62",
+ "url": "https://api.github.com/repos/Yoast/wp-test-utils/zipball/2e0f62e0281e4859707c5f13b7da1422aa1c8f7b",
+ "reference": "2e0f62e0281e4859707c5f13b7da1422aa1c8f7b",
"shasum": ""
},
"require": {
- "php": ">=5.4",
- "squizlabs/php_codesniffer": "^3.3.1"
+ "brain/monkey": "^2.6.1",
+ "php": ">=5.6",
+ "yoast/phpunit-polyfills": "^1.1.0"
},
"require-dev": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || ^0.6",
- "phpcompatibility/php-compatibility": "^9.0",
- "phpcsstandards/phpcsdevtools": "^1.0",
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ "yoast/yoastcs": "^2.3.1"
},
- "suggest": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.6 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-develop": "1.x-dev",
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ],
+ "exclude-from-classmap": [
+ "/src/WPIntegration/TestCase.php",
+ "/src/WPIntegration/TestCaseNoPolyfills.php"
+ ]
},
- "type": "phpcodesniffer-standard",
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
+ {
+ "name": "Team Yoast",
+ "email": "support@yoast.com",
+ "homepage": "https://yoast.com"
+ },
{
"name": "Contributors",
- "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors"
+ "homepage": "https://github.com/Yoast/wp-test-utils/graphs/contributors"
}
],
- "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions",
+ "description": "PHPUnit cross-version compatibility layer for testing plugins and themes build for WordPress",
+ "homepage": "https://github.com/Yoast/wp-test-utils/",
"keywords": [
- "phpcs",
- "standards",
+ "brainmonkey",
+ "integration-testing",
+ "phpunit",
+ "testing",
+ "unit-testing",
"wordpress"
],
- "time": "2020-05-13T23:57:56+00:00"
+ "support": {
+ "issues": "https://github.com/Yoast/wp-test-utils/issues",
+ "source": "https://github.com/Yoast/wp-test-utils"
+ },
+ "time": "2023-09-27T10:25:08+00:00"
}
],
"aliases": [],
@@ -3223,8 +4220,8 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": ">=5.6"
+ "php": ">=7.3"
},
"platform-dev": [],
- "plugin-api-version": "1.1.0"
+ "plugin-api-version": "2.2.0"
}
diff --git a/configs/parameters.php b/configs/parameters.php
new file mode 100644
index 0000000..bed878a
--- /dev/null
+++ b/configs/parameters.php
@@ -0,0 +1,12 @@
+ sanitize_key( 'Rocket Lazy Load' ),
+ 'plugin_basename' => ROCKET_LL_BASENAME,
+ 'template_path' => realpath( plugin_dir_path( __DIR__ ) ) . '/views/',
+ 'assets_baseurl' => plugin_dir_url( __DIR__ ) . 'assets/',
+ 'is_mu_plugin' => false,
+ 'translation_key' => 'rocket-lazy-load',
+ 'prefix' => 'rocket_lazyload_',
+ 'rocket_lazyload_settings' => 'options'
+];
\ No newline at end of file
diff --git a/configs/providers.php b/configs/providers.php
new file mode 100644
index 0000000..119144c
--- /dev/null
+++ b/configs/providers.php
@@ -0,0 +1,11 @@
+
-
+
diff --git a/readme.txt b/readme.txt
index ae09558..53a47b4 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,10 +1,10 @@
=== LazyLoad Plugin – Lazy Load Images, Videos, and Iframes ===
Contributors: wp_rocket, wp_media
Tags: lazyload, lazy load, images, iframes, thumbnail, thumbnails, smiley, smilies, avatar, gravatar, youtube
-Requires at least: 4.7
-Tested up to: 6.3
-Requires PHP: 5.6
-Stable tag: 2.3.7
+Requires at least: 4.9
+Tested up to: 6.5.5
+Requires PHP: 7.3
+Stable tag: 2.3.8
Tags: lazy load, lazy loading, defer offscreen images, lazy load plugin, lazy load images, image lazy loading, iframe lazy load, video lazy load
The best free lazy load plugin for WordPress. Lazy load images, videos, and iframes to improve performance and Core Web Vitals scores.
@@ -100,8 +100,8 @@ You can also apply it manually. The element you want to apply lazy load on must
The element must have the class `rocket-lazyload`, and a `data-bg` attribute, which value is the CSS url for the image.
-= Where do I report security bugs found in this plugin? =
-
+= Where do I report security bugs found in this plugin? =
+
You can report any security bugs found in the source code of the site-reviews plugin through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/rocket-lazy-load). The Patchstack team will assist you with verification, CVE assignment and take care of notifying the developers of this plugin.
= Related Plugins =
@@ -113,6 +113,12 @@ You can report any security bugs found in the source code of the site-reviews pl
* [Increase Max upload file size](https://wordpress.org/plugins/upload-max-file-size/) is the best plugin to increase the upload file size limit to any value with one click.
== Changelog ==
+= 2.3.8 =
+Enhancement: Launchpad compatibility (see https://github.com/wp-launchpad)
+Enhancement: Raised compatibility with PHP > 7.3
+Bug: Removed `wp-media/rocket-lazyload-common` from vendors
+Enhancement: Raised `wp-media/rocket-lazyload-common` to 3.0
+
= 2.3.7 =
Bugfix: Removed `rocket_lazyload_polyfill` filter due to a vulnerability on polyfill
diff --git a/rocket-lazy-load.php b/rocket-lazy-load.php
index 4e64922..bc74a2c 100644
--- a/rocket-lazy-load.php
+++ b/rocket-lazy-load.php
@@ -3,8 +3,9 @@
* Plugin Name: Lazy Load - Optimize Images
* Plugin URI: http://wordpress.org/plugins/rocket-lazy-load/
* Description: The tiny Lazy Load script for WordPress without jQuery or others libraries.
- * Version: 2.3.7
- * Requires PHP: 5.6
+ * Version: 2.3.8
+ * Requires at least: 4.9
+ * Requires PHP: 7.3
* Author: WP Rocket
* Author URI: https://wp-rocket.me
* Text Domain: rocket-lazy-load
@@ -12,7 +13,7 @@
*
* @package RocketLazyloadPlugin
*
- * Copyright 2015-2019 WP Media
+ * Copyright 2015-2024 WP Media
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -30,16 +31,18 @@
defined( 'ABSPATH' ) || die( 'Cheatin\' uh?' );
-define( 'ROCKET_LL_VERSION', '2.3.7' );
+define( 'ROCKET_LL_VERSION', '2.3.8' );
define( 'ROCKET_LL_WP_VERSION', '4.9' );
-define( 'ROCKET_LL_PHP_VERSION', '5.6' );
+define( 'ROCKET_LL_PHP_VERSION', '7.3' );
define( 'ROCKET_LL_BASENAME', plugin_basename( __FILE__ ) );
define( 'ROCKET_LL_PATH', realpath( plugin_dir_path( __FILE__ ) ) . '/' );
define( 'ROCKET_LL_ASSETS_URL', plugin_dir_url( __FILE__ ) . 'assets/' );
define( 'ROCKET_LL_FRONT_JS_URL', ROCKET_LL_ASSETS_URL . 'js/' );
define( 'ROCKET_LL_INT_MAX', PHP_INT_MAX - 15 );
-require ROCKET_LL_PATH . 'src/rocket-lazyload-requirements-check.php';
+use function RocketLazyLoadPlugin\Dependencies\LaunchpadCore\boot;
+
+require ROCKET_LL_PATH . 'includes/RocketLazyloadRequirementsCheck.php';
/**
* Loads plugin translations
@@ -72,7 +75,10 @@ function rocket_lazyload_textdomain() {
);
if ( $rocket_lazyload_requirement_checks->check() ) {
- require ROCKET_LL_PATH . 'main.php';
+ require __DIR__ . '/src/Dependencies/LaunchpadCore/boot.php';
+
+ boot( __FILE__ );
}
+
unset( $rocket_lazyload_requirement_checks );
diff --git a/src/Admin/AdminPage.php b/src/Admin/AdminPage.php
index 79d3294..aa484f0 100644
--- a/src/Admin/AdminPage.php
+++ b/src/Admin/AdminPage.php
@@ -7,10 +7,11 @@
namespace RocketLazyLoadPlugin\Admin;
-defined('ABSPATH') || die('Cheatin\' uh?');
+defined( 'ABSPATH' ) || die( 'Cheatin\' uh?' );
+
+use RocketLazyLoadPlugin\Dependencies\LaunchpadFrameworkOptions\Interfaces\SettingsAwareInterface;
+use RocketLazyLoadPlugin\Dependencies\LaunchpadFrameworkOptions\Traits\SettingsAwareTrait;
-use RocketLazyLoadPlugin\Options\Options;
-use RocketLazyLoadPlugin\Options\OptionArray;
/**
* Admin page configuration
@@ -18,159 +19,130 @@
* @since 2.0
* @author Remy Perona
*/
-class AdminPage
-{
- /**
- * Plugin slug
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @var string
- */
- private $slug = 'rocket_lazyload';
-
- /**
- * Options instance
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @var Options
- */
- private $options;
-
- /**
- * OptionArray instance
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @var OptionArray
- */
- private $option_array;
-
- /**
- * Template path
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @var string
- */
- private $template_path;
-
- /**
- * Constructor
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @param Options $options Options instance.
- * @param OptionArray $option_array OptionArray instance.
- * @param string $template_path Template path.
- */
- public function __construct(Options $options, OptionArray $option_array, $template_path)
- {
- $this->options = $options;
- $this->option_array = $option_array;
- $this->template_path = $template_path;
- }
-
- /**
- * Registers plugin settings with WordPress
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @return void
- */
- public function configure()
- {
- register_setting($this->getSlug(), $this->options->getOptionName('_options'));
- }
-
- /**
- * Gets the settings page title
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @return string
- */
- public function getPageTitle()
- {
- return __('LazyLoad by WP Rocket', 'rocket-lazy-load');
- }
-
- /**
- * Gets the settings submenu title
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @return string
- */
- public function getMenuTitle()
- {
- return __('LazyLoad', 'rocket-lazy-load');
- }
-
- /**
- * Gets the plugin slug
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @return string
- */
- public function getSlug()
- {
- return $this->slug;
- }
-
- /**
- * Gets the plugin required capability
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @return string
- */
- public function getCapability()
- {
- return 'manage_options';
- }
-
- /**
- * Renders the admin page template
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @return void
- */
- public function renderPage()
- {
- $this->renderTemplate('admin-page');
- }
-
- /**
- * Renders the given template if it's readable.
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @param string $template Template name.
- */
- protected function renderTemplate($template)
- {
- $template_path = $this->template_path . $template . '.php';
-
- if (! is_readable($template_path)) {
- return;
- }
-
- include $template_path;
- }
+class AdminPage implements SettingsAwareInterface {
+ use SettingsAwareTrait;
+
+ /**
+ * Plugin slug
+ *
+ * @since 2.0
+ * @author Remy Perona
+ *
+ * @var string
+ */
+ private $slug = 'rocket_lazyload';
+
+ /**
+ * Template path
+ *
+ * @since 2.0
+ * @author Remy Perona
+ *
+ * @var string
+ */
+ private $template_path;
+
+ /**
+ * Constructor
+ *
+ * @param string $template_path Template path.
+ *
+ * @author Remy Perona
+ *
+ * @since 2.0
+ */
+ public function __construct( string $template_path ) {
+ $this->template_path = $template_path;
+ }
+
+ /**
+ * Registers plugin settings with WordPress
+ *
+ * @return void
+ * @author Remy Perona
+ *
+ * @since 2.0
+ */
+ public function configure() {
+ register_setting( $this->getSlug(), $this->getSlug() . '_options' );
+ }
+
+ /**
+ * Gets the settings page title
+ *
+ * @return string
+ * @author Remy Perona
+ *
+ * @since 2.0
+ */
+ public function getPageTitle() {
+ return __( 'LazyLoad by WP Rocket', 'rocket-lazy-load' );
+ }
+
+ /**
+ * Gets the settings submenu title
+ *
+ * @return string
+ * @author Remy Perona
+ *
+ * @since 2.0
+ */
+ public function getMenuTitle() {
+ return __( 'LazyLoad', 'rocket-lazy-load' );
+ }
+
+ /**
+ * Gets the plugin slug
+ *
+ * @return string
+ * @author Remy Perona
+ *
+ * @since 2.0
+ */
+ public function getSlug() {
+ return $this->slug;
+ }
+
+ /**
+ * Gets the plugin required capability
+ *
+ * @return string
+ * @author Remy Perona
+ *
+ * @since 2.0
+ */
+ public function getCapability() {
+ return 'manage_options';
+ }
+
+ /**
+ * Renders the admin page template
+ *
+ * @return void
+ * @author Remy Perona
+ *
+ * @since 2.0
+ */
+ public function renderPage() {
+ $this->renderTemplate( 'admin-page' );
+ }
+
+ /**
+ * Renders the given template if it's readable.
+ *
+ * @param string $template Template name.
+ *
+ * @author Remy Perona
+ *
+ * @since 2.0
+ */
+ protected function renderTemplate( $template ) {
+ $template_path = $this->template_path . $template . '.php';
+
+ if ( ! is_readable( $template_path ) ) {
+ return;
+ }
+
+ include $template_path;
+ }
}
diff --git a/src/Admin/ImagifyNotice.php b/src/Admin/ImagifyNotice.php
index f563ab9..26c6136 100644
--- a/src/Admin/ImagifyNotice.php
+++ b/src/Admin/ImagifyNotice.php
@@ -13,60 +13,58 @@
* @since 2.0
* @author Remy Perona
*/
-class ImagifyNotice
-{
- /**
- * Template path
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @var string
- */
- private $template_path;
+class ImagifyNotice {
+ /**
+ * Template path
+ *
+ * @since 2.0
+ * @author Remy Perona
+ *
+ * @var string
+ */
+ private $template_path;
- /**
- * Constructor
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @param string $template_path Template path.
- */
- public function __construct($template_path)
- {
- $this->template_path = $template_path;
- }
+ /**
+ * Constructor
+ *
+ * @param string $template_path Template path.
+ *
+ * @author Remy Perona
+ *
+ * @since 2.0
+ */
+ public function __construct( $template_path ) {
+ $this->template_path = $template_path;
+ }
- /**
- * Renders the Imagify notice
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @return void
- */
- public function displayNotice()
- {
- $this->renderTemplate('imagify-notice');
- }
+ /**
+ * Renders the Imagify notice
+ *
+ * @return void
+ * @author Remy Perona
+ *
+ * @since 2.0
+ */
+ public function displayNotice() {
+ $this->renderTemplate( 'imagify-notice' );
+ }
- /**
- * Renders the given template if it's readable.
- *
- * @since 2.0
- * @author Remy Perona
- *
- * @param string $template Template name.
- */
- protected function renderTemplate($template)
- {
- $template_path = $this->template_path . $template . '.php';
+ /**
+ * Renders the given template if it's readable.
+ *
+ * @param string $template Template name.
+ *
+ * @author Remy Perona
+ *
+ * @since 2.0
+ */
+ protected function renderTemplate( $template ) {
+ $template_path = $this->template_path . $template . '.php';
- if (! is_readable($template_path)) {
- return;
- }
+ if ( ! is_readable( $template_path ) ) {
+ return;
+ }
- include $template_path;
- }
+ include $template_path;
+ }
}
diff --git a/src/Dependencies/League/Container/Argument/ArgumentResolverInterface.php b/src/Dependencies/League/Container/Argument/ArgumentResolverInterface.php
index b449386..74041a8 100644
--- a/src/Dependencies/League/Container/Argument/ArgumentResolverInterface.php
+++ b/src/Dependencies/League/Container/Argument/ArgumentResolverInterface.php
@@ -1,26 +1,28 @@
-getValue();
- continue;
+ return array_map(function ($argument) {
+ $justStringValue = false;
+
+ if ($argument instanceof RawArgumentInterface) {
+ return $argument->getValue();
+ } elseif ($argument instanceof ClassNameInterface) {
+ $id = $argument->getClassName();
+ } elseif (!is_string($argument)) {
+ return $argument;
+ } else {
+ $justStringValue = true;
+ $id = $argument;
}
- if (! is_string($arg)) {
- continue;
- }
-
- $container = $this->getContainer();
+ $container = null;
- if (is_null($container) && $this instanceof ReflectionContainer) {
- $container = $this;
+ try {
+ $container = $this->getLeagueContainer();
+ } catch (ContainerException $e) {
+ if ($this instanceof ReflectionContainer) {
+ $container = $this;
+ }
}
- if (! is_null($container) && $container->has($arg)) {
- $arg = $container->get($arg);
+ if ($container !== null) {
+ try {
+ return $container->get($id);
+ } catch (NotFoundException $exception) {
+ if ($argument instanceof ClassNameWithOptionalValue) {
+ return $argument->getOptionalValue();
+ }
+
+ if ($justStringValue) {
+ return $id;
+ }
- if ($arg instanceof RawArgumentInterface) {
- $arg = $arg->getValue();
+ throw $exception;
}
+ }
- continue;
+ if ($argument instanceof ClassNameWithOptionalValue) {
+ return $argument->getOptionalValue();
}
- }
- return $arguments;
+ // Just a string value.
+ return $id;
+ }, $arguments);
}
/**
* {@inheritdoc}
*/
- public function reflectArguments(ReflectionFunctionAbstract $method, array $args = [])
+ public function reflectArguments(ReflectionFunctionAbstract $method, array $args = []) : array
{
$arguments = array_map(function (ReflectionParameter $param) use ($method, $args) {
- $name = $param->getName();
- $class = $param->getClass();
+ $name = $param->getName();
+ $type = $param->getType();
if (array_key_exists($name, $args)) {
- return $args[$name];
+ return new RawArgument($args[$name]);
}
- if (! is_null($class)) {
- return $class->getName();
+ if ($type) {
+ if (PHP_VERSION_ID >= 70100) {
+ $typeName = $type->getName();
+ } else {
+ $typeName = (string) $type;
+ }
+
+ $typeName = ltrim($typeName, '?');
+
+ if ($param->isDefaultValueAvailable()) {
+ return new ClassNameWithOptionalValue($typeName, $param->getDefaultValue());
+ }
+
+ return new ClassName($typeName);
}
if ($param->isDefaultValueAvailable()) {
- return $param->getDefaultValue();
+ return new RawArgument($param->getDefaultValue());
}
throw new NotFoundException(sprintf(
@@ -76,7 +109,12 @@ public function reflectArguments(ReflectionFunctionAbstract $method, array $args
}
/**
- * @return \RocketLazyLoadPlugin\Dependencies\League\Container\ContainerInterface
+ * @return ContainerInterface
+ */
+ abstract public function getContainer() : ContainerInterface;
+
+ /**
+ * @return Container
*/
- abstract public function getContainer();
+ abstract public function getLeagueContainer() : Container;
}
diff --git a/src/Dependencies/League/Container/Argument/RawArgument.php b/src/Dependencies/League/Container/Argument/RawArgument.php
index 128cf1b..f61fcbd 100644
--- a/src/Dependencies/League/Container/Argument/RawArgument.php
+++ b/src/Dependencies/League/Container/Argument/RawArgument.php
@@ -1,4 +1,4 @@
-providers = (is_null($providers))
- ? (new ServiceProviderAggregate)->setContainer($this)
- : $providers->setContainer($this);
-
- $this->inflectors = (is_null($inflectors))
- ? (new InflectorAggregate)->setContainer($this)
- : $inflectors->setContainer($this);
-
- $this->definitionFactory = (is_null($definitionFactory))
- ? (new DefinitionFactory)->setContainer($this)
- : $definitionFactory->setContainer($this);
- }
-
- /**
- * {@inheritdoc}
- */
- public function get($alias, array $args = [])
- {
- try {
- return $this->getFromThisContainer($alias, $args);
- } catch (NotFoundException $exception) {
- if ($this->providers->provides($alias)) {
- $this->providers->register($alias);
+ $this->definitions = $definitions ?? new DefinitionAggregate;
+ $this->providers = $providers ?? new ServiceProviderAggregate;
+ $this->inflectors = $inflectors ?? new InflectorAggregate;
- return $this->getFromThisContainer($alias, $args);
- }
+ if ($this->definitions instanceof ContainerAwareInterface) {
+ $this->definitions->setLeagueContainer($this);
+ }
- $resolved = $this->getFromDelegate($alias, $args);
+ if ($this->providers instanceof ContainerAwareInterface) {
+ $this->providers->setLeagueContainer($this);
+ }
- return $this->inflectors->inflect($resolved);
+ if ($this->inflectors instanceof ContainerAwareInterface) {
+ $this->inflectors->setLeagueContainer($this);
}
}
/**
- * {@inheritdoc}
+ * Add an item to the container.
+ *
+ * @param string $id
+ * @param mixed $concrete
+ * @param boolean $shared
+ *
+ * @return DefinitionInterface
*/
- public function has($alias)
+ public function add(string $id, $concrete = null, bool $shared = null) : DefinitionInterface
{
- if (array_key_exists($alias, $this->definitions) || $this->hasShared($alias)) {
- return true;
- }
-
- if ($this->providers->provides($alias)) {
- return true;
- }
+ $concrete = $concrete ?? $id;
+ $shared = $shared ?? $this->defaultToShared;
- return $this->hasInDelegate($alias);
+ return $this->definitions->add($id, $concrete, $shared);
}
/**
- * Returns a boolean to determine if the container has a shared instance of an alias.
+ * Proxy to add with shared as true.
+ *
+ * @param string $id
+ * @param mixed $concrete
*
- * @param string $alias
- * @param boolean $resolved
- * @return boolean
+ * @return DefinitionInterface
*/
- public function hasShared($alias, $resolved = false)
+ public function share(string $id, $concrete = null) : DefinitionInterface
{
- $shared = ($resolved === false) ? array_merge($this->shared, $this->sharedDefinitions) : $this->shared;
-
- return (array_key_exists($alias, $shared));
+ return $this->add($id, $concrete, true);
}
/**
- * {@inheritdoc}
+ * Whether the container should default to defining shared definitions.
+ *
+ * @param boolean $shared
+ *
+ * @return self
*/
- public function add($alias, $concrete = null, $share = false)
+ public function defaultToShared(bool $shared = true) : ContainerInterface
{
- unset($this->shared[$alias]);
- unset($this->definitions[$alias]);
- unset($this->sharedDefinitions[$alias]);
-
- if (is_null($concrete)) {
- $concrete = $alias;
- }
-
- $definition = $this->definitionFactory->getDefinition($alias, $concrete);
+ $this->defaultToShared = $shared;
- if ($definition instanceof DefinitionInterface) {
- if ($share === false) {
- $this->definitions[$alias] = $definition;
- } else {
- $this->sharedDefinitions[$alias] = $definition;
- }
-
- return $definition;
- }
-
- // dealing with a value that cannot build a definition
- $this->shared[$alias] = $concrete;
+ return $this;
}
/**
- * {@inheritdoc}
+ * Get a definition to extend.
+ *
+ * @param string $id [description]
+ *
+ * @return DefinitionInterface
*/
- public function share($alias, $concrete = null)
+ public function extend(string $id) : DefinitionInterface
{
- return $this->add($alias, $concrete, true);
+ if ($this->providers->provides($id)) {
+ $this->providers->register($id);
+ }
+
+ if ($this->definitions->has($id)) {
+ return $this->definitions->getDefinition($id);
+ }
+
+ throw new NotFoundException(
+ sprintf('Unable to extend alias (%s) as it is not being managed as a definition', $id)
+ );
}
/**
- * {@inheritdoc}
+ * Add a service provider.
+ *
+ * @param ServiceProviderInterface|string $provider
+ *
+ * @return self
*/
- public function addServiceProvider($provider)
+ public function addServiceProvider($provider) : self
{
$this->providers->add($provider);
@@ -176,69 +151,62 @@ public function addServiceProvider($provider)
/**
* {@inheritdoc}
*/
- public function extend($alias)
+ public function get($id, bool $new = false)
{
- if ($this->providers->provides($alias)) {
- $this->providers->register($alias);
+ if ($this->definitions->has($id)) {
+ $resolved = $this->definitions->resolve($id, $new);
+ return $this->inflectors->inflect($resolved);
}
- if (array_key_exists($alias, $this->definitions)) {
- return $this->definitions[$alias];
+ if ($this->definitions->hasTag($id)) {
+ $arrayOf = $this->definitions->resolveTagged($id, $new);
+
+ array_walk($arrayOf, function (&$resolved) {
+ $resolved = $this->inflectors->inflect($resolved);
+ });
+
+ return $arrayOf;
}
- if (array_key_exists($alias, $this->sharedDefinitions)) {
- return $this->sharedDefinitions[$alias];
+ if ($this->providers->provides($id)) {
+ $this->providers->register($id);
+
+ if (!$this->definitions->has($id) && !$this->definitions->hasTag($id)) {
+ throw new ContainerException(sprintf('Service provider lied about providing (%s) service', $id));
+ }
+
+ return $this->get($id, $new);
}
- throw new NotFoundException(
- sprintf('Unable to extend alias (%s) as it is not being managed as a definition', $alias)
- );
- }
+ foreach ($this->delegates as $delegate) {
+ if ($delegate->has($id)) {
+ $resolved = $delegate->get($id);
+ return $this->inflectors->inflect($resolved);
+ }
+ }
- /**
- * {@inheritdoc}
- */
- public function inflector($type, callable $callback = null)
- {
- return $this->inflectors->add($type, $callback);
+ throw new NotFoundException(sprintf('Alias (%s) is not being managed by the container or delegates', $id));
}
/**
* {@inheritdoc}
*/
- public function call(callable $callable, array $args = [])
+ public function has($id)
{
- return (new ReflectionContainer)->setContainer($this)->call($callable, $args);
- }
-
- /**
- * Delegate a backup container to be checked for services if it
- * cannot be resolved via this container.
- *
- * @param \RocketLazyLoadPlugin\Dependencies\Interop\Container\ContainerInterface $container
- * @return $this
- */
- public function delegate(InteropContainerInterface $container)
- {
- $this->delegates[] = $container;
+ if ($this->definitions->has($id)) {
+ return true;
+ }
- if ($container instanceof ImmutableContainerAwareInterface) {
- $container->setContainer($this);
+ if ($this->definitions->hasTag($id)) {
+ return true;
}
- return $this;
- }
+ if ($this->providers->provides($id)) {
+ return true;
+ }
- /**
- * Returns true if service is registered in one of the delegated backup containers.
- *
- * @param string $alias
- * @return boolean
- */
- public function hasInDelegate($alias)
- {
- foreach ($this->delegates as $container) {
- if ($container->has($alias)) {
+ foreach ($this->delegates as $delegate) {
+ if ($delegate->has($id)) {
return true;
}
}
@@ -247,59 +215,34 @@ public function hasInDelegate($alias)
}
/**
- * Attempt to get a service from the stack of delegated backup containers.
+ * Allows for manipulation of specific types on resolution.
+ *
+ * @param string $type
+ * @param callable|null $callback
*
- * @param string $alias
- * @param array $args
- * @return mixed
+ * @return InflectorInterface
*/
- protected function getFromDelegate($alias, array $args = [])
+ public function inflector(string $type, callable $callback = null) : InflectorInterface
{
- foreach ($this->delegates as $container) {
- if ($container->has($alias)) {
- return $container->get($alias, $args);
- }
-
- continue;
- }
-
- throw new NotFoundException(
- sprintf('Alias (%s) is not being managed by the container', $alias)
- );
-
+ return $this->inflectors->add($type, $callback);
}
/**
- * Get a service that has been registered in this container.
+ * Delegate a backup container to be checked for services if it
+ * cannot be resolved via this container.
*
- * @param string $alias
- * @param array $args
- * @return mixed
+ * @param ContainerInterface $container
+ *
+ * @return self
*/
- protected function getFromThisContainer($alias, array $args = [])
+ public function delegate(ContainerInterface $container) : self
{
- if ($this->hasShared($alias, true)) {
- $shared = $this->inflectors->inflect($this->shared[$alias]);
- if ($shared instanceof RawArgumentInterface) {
- return $shared->getValue();
- }
- return $shared;
- }
-
- if (array_key_exists($alias, $this->sharedDefinitions)) {
- $shared = $this->inflectors->inflect($this->sharedDefinitions[$alias]->build());
- $this->shared[$alias] = $shared;
- return $shared;
- }
+ $this->delegates[] = $container;
- if (array_key_exists($alias, $this->definitions)) {
- return $this->inflectors->inflect(
- $this->definitions[$alias]->build($args)
- );
+ if ($container instanceof ContainerAwareInterface) {
+ $container->setLeagueContainer($this);
}
- throw new NotFoundException(
- sprintf('Alias (%s) is not being managed by the container', $alias)
- );
+ return $this;
}
}
diff --git a/src/Dependencies/League/Container/ContainerAwareInterface.php b/src/Dependencies/League/Container/ContainerAwareInterface.php
index c165bc7..f261731 100644
--- a/src/Dependencies/League/Container/ContainerAwareInterface.php
+++ b/src/Dependencies/League/Container/ContainerAwareInterface.php
@@ -1,20 +1,40 @@
-container = $container;
@@ -25,10 +34,43 @@ public function setContainer(ContainerInterface $container)
/**
* Get the container.
*
- * @return \RocketLazyLoadPlugin\Dependencies\League\Container\ContainerInterface
+ * @return ContainerInterface
*/
- public function getContainer()
+ public function getContainer() : ContainerInterface
{
- return $this->container;
+ if ($this->container instanceof ContainerInterface) {
+ return $this->container;
+ }
+
+ throw new ContainerException('No container implementation has been set.');
+ }
+
+ /**
+ * Set a container.
+ *
+ * @param Container $container
+ *
+ * @return self
+ */
+ public function setLeagueContainer(Container $container) : ContainerAwareInterface
+ {
+ $this->container = $container;
+ $this->leagueContainer = $container;
+
+ return $this;
+ }
+
+ /**
+ * Get the container.
+ *
+ * @return Container
+ */
+ public function getLeagueContainer() : Container
+ {
+ if ($this->leagueContainer instanceof Container) {
+ return $this->leagueContainer;
+ }
+
+ throw new ContainerException('No container implementation has been set.');
}
}
diff --git a/src/Dependencies/League/Container/ContainerInterface.php b/src/Dependencies/League/Container/ContainerInterface.php
deleted file mode 100644
index e03a796..0000000
--- a/src/Dependencies/League/Container/ContainerInterface.php
+++ /dev/null
@@ -1,59 +0,0 @@
-alias = $alias;
- $this->concrete = $concrete;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withArgument($arg)
- {
- $this->arguments[] = $arg;
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withArguments(array $args)
- {
- foreach ($args as $arg) {
- $this->withArgument($arg);
- }
-
- return $this;
- }
-}
diff --git a/src/Dependencies/League/Container/Definition/CallableDefinition.php b/src/Dependencies/League/Container/Definition/CallableDefinition.php
deleted file mode 100644
index eb2dfe5..0000000
--- a/src/Dependencies/League/Container/Definition/CallableDefinition.php
+++ /dev/null
@@ -1,23 +0,0 @@
-arguments : $args;
- $resolved = $this->resolveArguments($args);
-
- if (is_array($this->concrete) && is_string($this->concrete[0])) {
- $this->concrete[0] = ($this->getContainer()->has($this->concrete[0]))
- ? $this->getContainer()->get($this->concrete[0])
- : $this->concrete[0];
- }
-
- return call_user_func_array($this->concrete, $resolved);
- }
-}
diff --git a/src/Dependencies/League/Container/Definition/ClassDefinition.php b/src/Dependencies/League/Container/Definition/ClassDefinition.php
deleted file mode 100644
index 2c7627e..0000000
--- a/src/Dependencies/League/Container/Definition/ClassDefinition.php
+++ /dev/null
@@ -1,67 +0,0 @@
-methods[] = [
- 'method' => $method,
- 'arguments' => $args
- ];
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function withMethodCalls(array $methods = [])
- {
- foreach ($methods as $method => $args) {
- $this->withMethodCall($method, $args);
- }
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function build(array $args = [])
- {
- $args = (empty($args)) ? $this->arguments : $args;
- $resolved = $this->resolveArguments($args);
- $reflection = new ReflectionClass($this->concrete);
- $instance = $reflection->newInstanceArgs($resolved);
-
- return $this->invokeMethods($instance);
- }
-
- /**
- * Invoke methods on resolved instance.
- *
- * @param object $instance
- * @return object
- */
- protected function invokeMethods($instance)
- {
- foreach ($this->methods as $method) {
- $args = $this->resolveArguments($method['arguments']);
- call_user_func_array([$instance, $method['method']], $args);
- }
-
- return $instance;
- }
-}
diff --git a/src/Dependencies/League/Container/Definition/ClassDefinitionInterface.php b/src/Dependencies/League/Container/Definition/ClassDefinitionInterface.php
deleted file mode 100644
index e8a8c8d..0000000
--- a/src/Dependencies/League/Container/Definition/ClassDefinitionInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-setContainer($this->getContainer());
- }
-
- if (is_string($concrete) && class_exists($concrete)) {
- return (new ClassDefinition($alias, $concrete))->setContainer($this->getContainer());
- }
-
- // if the item is not definable we just return the value to be stored
- // in the container as an arbitrary value/instance
- return $concrete;
- }
-}
diff --git a/src/Dependencies/League/Container/Definition/DefinitionFactoryInterface.php b/src/Dependencies/League/Container/Definition/DefinitionFactoryInterface.php
deleted file mode 100644
index d11fa8f..0000000
--- a/src/Dependencies/League/Container/Definition/DefinitionFactoryInterface.php
+++ /dev/null
@@ -1,17 +0,0 @@
-container = $container;
-
- return $this;
- }
-
- /**
- * Get the container.
- *
- * @return \RocketLazyLoadPlugin\Dependencies\League\Container\ImmutableContainerInterface
- */
- public function getContainer()
- {
- return $this->container;
- }
-}
diff --git a/src/Dependencies/League/Container/ImmutableContainerInterface.php b/src/Dependencies/League/Container/ImmutableContainerInterface.php
deleted file mode 100644
index 43d5610..0000000
--- a/src/Dependencies/League/Container/ImmutableContainerInterface.php
+++ /dev/null
@@ -1,10 +0,0 @@
-type = $type;
+ $this->callback = $callback;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getType() : string
+ {
+ return $this->type;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function invokeMethod(string $name, array $args) : InflectorInterface
{
$this->methods[$name] = $args;
@@ -36,12 +62,9 @@ public function invokeMethod($name, array $args)
}
/**
- * Defines multiple methods to be invoked on the subject object.
- *
- * @param array $methods
- * @return $this
+ * {@inheritdoc}
*/
- public function invokeMethods(array $methods)
+ public function invokeMethods(array $methods) : InflectorInterface
{
foreach ($methods as $name => $args) {
$this->invokeMethod($name, $args);
@@ -51,26 +74,19 @@ public function invokeMethods(array $methods)
}
/**
- * Defines a property to be set on the subject object.
- *
- * @param string $property
- * @param mixed $value
- * @return $this
+ * {@inheritdoc}
*/
- public function setProperty($property, $value)
+ public function setProperty(string $property, $value) : InflectorInterface
{
- $this->properties[$property] = $value;
+ $this->properties[$property] = $this->resolveArguments([$value])[0];
return $this;
}
/**
- * Defines multiple properties to be set on the subject object.
- *
- * @param array $properties
- * @return $this
+ * {@inheritdoc}
*/
- public function setProperties(array $properties)
+ public function setProperties(array $properties) : InflectorInterface
{
foreach ($properties as $property => $value) {
$this->setProperty($property, $value);
@@ -80,24 +96,28 @@ public function setProperties(array $properties)
}
/**
- * Apply inflections to an object.
- *
- * @param object $object
- * @return void
+ * {@inheritdoc}
*/
public function inflect($object)
{
$properties = $this->resolveArguments(array_values($this->properties));
$properties = array_combine(array_keys($this->properties), $properties);
- foreach ($properties as $property => $value) {
+ // array_combine() can technically return false
+ foreach ($properties ?: [] as $property => $value) {
$object->{$property} = $value;
}
foreach ($this->methods as $method => $args) {
$args = $this->resolveArguments($args);
- call_user_func_array([$object, $method], $args);
+ /** @var callable $callable */
+ $callable = [$object, $method];
+ call_user_func_array($callable, $args);
+ }
+
+ if ($this->callback !== null) {
+ call_user_func($this->callback, $object);
}
}
}
diff --git a/src/Dependencies/League/Container/Inflector/InflectorAggregate.php b/src/Dependencies/League/Container/Inflector/InflectorAggregate.php
index e6d4cc1..8f99aab 100644
--- a/src/Dependencies/League/Container/Inflector/InflectorAggregate.php
+++ b/src/Dependencies/League/Container/Inflector/InflectorAggregate.php
@@ -1,31 +1,40 @@
-inflectors[$type] = $inflector;
+ $inflector = new Inflector($type, $callback);
+ $this->inflectors[] = $inflector;
- return $inflector;
- }
+ return $inflector;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getIterator() : Generator
+ {
+ $count = count($this->inflectors);
- $this->inflectors[$type] = $callback;
+ for ($i = 0; $i < $count; $i++) {
+ yield $this->inflectors[$i];
+ }
}
/**
@@ -33,19 +42,15 @@ public function add($type, callable $callback = null)
*/
public function inflect($object)
{
- foreach ($this->inflectors as $type => $inflector) {
- if (! $object instanceof $type) {
- continue;
- }
+ foreach ($this->getIterator() as $inflector) {
+ $type = $inflector->getType();
- if ($inflector instanceof Inflector) {
- $inflector->setContainer($this->getContainer());
- $inflector->inflect($object);
+ if (! $object instanceof $type) {
continue;
}
- // must be dealing with a callable as the inflector
- call_user_func_array($inflector, [$object]);
+ $inflector->setLeagueContainer($this->getLeagueContainer());
+ $inflector->inflect($object);
}
return $object;
diff --git a/src/Dependencies/League/Container/Inflector/InflectorAggregateInterface.php b/src/Dependencies/League/Container/Inflector/InflectorAggregateInterface.php
index 33247c6..13f15db 100644
--- a/src/Dependencies/League/Container/Inflector/InflectorAggregateInterface.php
+++ b/src/Dependencies/League/Container/Inflector/InflectorAggregateInterface.php
@@ -1,19 +1,21 @@
-has($alias)) {
+ if ($this->cacheResolutions === true && array_key_exists($id, $this->cache)) {
+ return $this->cache[$id];
+ }
+
+ if (! $this->has($id)) {
throw new NotFoundException(
- sprintf('Alias (%s) is not an existing class and therefore cannot be resolved', $alias)
+ sprintf('Alias (%s) is not an existing class and therefore cannot be resolved', $id)
);
}
- $reflector = new ReflectionClass($alias);
+ $reflector = new ReflectionClass($id);
$construct = $reflector->getConstructor();
- if ($construct === null) {
- return new $alias;
+ if ($construct && !$construct->isPublic()) {
+ throw new NotFoundException(
+ sprintf('Alias (%s) has a non-public constructor and therefore cannot be instantiated', $id)
+ );
}
- return $reflector->newInstanceArgs(
- $this->reflectArguments($construct, $args)
- );
+ $resolution = $construct === null
+ ? new $id
+ : $resolution = $reflector->newInstanceArgs($this->reflectArguments($construct, $args))
+ ;
+
+ if ($this->cacheResolutions === true) {
+ $this->cache[$id] = $resolution;
+ }
+
+ return $resolution;
}
/**
* {@inheritdoc}
*/
- public function has($alias)
+ public function has($id)
{
- return class_exists($alias);
+ return class_exists($id);
}
/**
* Invoke a callable via the container.
*
- * @param callable $callable
- * @param array $args
+ * @param callable $callable
+ * @param array $args
+ *
* @return mixed
+ *
+ * @throws ReflectionException
*/
public function call(callable $callable, array $args = [])
{
@@ -80,8 +109,23 @@ public function call(callable $callable, array $args = [])
return $reflection->invokeArgs($callable, $this->reflectArguments($reflection, $args));
}
- $reflection = new ReflectionFunction($callable);
+ $reflection = new ReflectionFunction(\Closure::fromCallable($callable));
return $reflection->invokeArgs($this->reflectArguments($reflection, $args));
}
+
+ /**
+ * Whether the container should default to caching resolutions and returning
+ * the cache on following calls.
+ *
+ * @param boolean $option
+ *
+ * @return self
+ */
+ public function cacheResolutions(bool $option = true) : ContainerInterface
+ {
+ $this->cacheResolutions = $option;
+
+ return $this;
+ }
}
diff --git a/src/Dependencies/League/Container/ServiceProvider/AbstractServiceProvider.php b/src/Dependencies/League/Container/ServiceProvider/AbstractServiceProvider.php
index 2ed2866..7374fba 100644
--- a/src/Dependencies/League/Container/ServiceProvider/AbstractServiceProvider.php
+++ b/src/Dependencies/League/Container/ServiceProvider/AbstractServiceProvider.php
@@ -1,4 +1,4 @@
-provides));
- }
+ return in_array($alias, $this->provides, true);
+ }
- return $this->provides;
+ /**
+ * {@inheritdoc}
+ */
+ public function setIdentifier(string $id) : ServiceProviderInterface
+ {
+ $this->identifier = $id;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getIdentifier() : string
+ {
+ return $this->identifier ?? get_class($this);
}
}
diff --git a/src/Dependencies/League/Container/ServiceProvider/AbstractSignatureServiceProvider.php b/src/Dependencies/League/Container/ServiceProvider/AbstractSignatureServiceProvider.php
deleted file mode 100644
index 029c367..0000000
--- a/src/Dependencies/League/Container/ServiceProvider/AbstractSignatureServiceProvider.php
+++ /dev/null
@@ -1,31 +0,0 @@
-signature = $signature;
-
- return $this;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSignature()
- {
- return (is_null($this->signature)) ? get_class($this) : $this->signature;
- }
-}
diff --git a/src/Dependencies/League/Container/ServiceProvider/BootableServiceProviderInterface.php b/src/Dependencies/League/Container/ServiceProvider/BootableServiceProviderInterface.php
index e730c6f..72f2876 100644
--- a/src/Dependencies/League/Container/ServiceProvider/BootableServiceProviderInterface.php
+++ b/src/Dependencies/League/Container/ServiceProvider/BootableServiceProviderInterface.php
@@ -1,4 +1,4 @@
-getContainer()->has($provider)) {
+ $provider = $this->getContainer()->get($provider);
+ } elseif (is_string($provider) && class_exists($provider)) {
$provider = new $provider;
}
+ if (in_array($provider, $this->providers, true)) {
+ return $this;
+ }
+
if ($provider instanceof ContainerAwareInterface) {
- $provider->setContainer($this->getContainer());
+ $provider->setLeagueContainer($this->getLeagueContainer());
}
if ($provider instanceof BootableServiceProviderInterface) {
@@ -37,14 +44,12 @@ public function add($provider)
}
if ($provider instanceof ServiceProviderInterface) {
- foreach ($provider->provides() as $service) {
- $this->providers[$service] = $provider;
- }
+ $this->providers[] = $provider;
return $this;
}
- throw new \InvalidArgumentException(
+ throw new ContainerException(
'A service provider must be a fully qualified class name or instance ' .
'of (\RocketLazyLoadPlugin\Dependencies\League\Container\ServiceProvider\ServiceProviderInterface)'
);
@@ -53,36 +58,49 @@ public function add($provider)
/**
* {@inheritdoc}
*/
- public function provides($service)
+ public function provides(string $service) : bool
{
- return array_key_exists($service, $this->providers);
+ foreach ($this->getIterator() as $provider) {
+ if ($provider->provides($service)) {
+ return true;
+ }
+ }
+
+ return false;
}
/**
* {@inheritdoc}
*/
- public function register($service)
+ public function getIterator() : Generator
{
- if (! array_key_exists($service, $this->providers)) {
- throw new \InvalidArgumentException(
- sprintf('(%s) is not provided by a service provider', $service)
- );
- }
+ $count = count($this->providers);
- $provider = $this->providers[$service];
- $signature = get_class($provider);
-
- if ($provider instanceof SignatureServiceProviderInterface) {
- $signature = $provider->getSignature();
+ for ($i = 0; $i < $count; $i++) {
+ yield $this->providers[$i];
}
+ }
- // ensure that the provider hasn't already been invoked by any other service request
- if (in_array($signature, $this->registered)) {
- return;
+ /**
+ * {@inheritdoc}
+ */
+ public function register(string $service)
+ {
+ if (false === $this->provides($service)) {
+ throw new ContainerException(
+ sprintf('(%s) is not provided by a service provider', $service)
+ );
}
- $provider->register();
+ foreach ($this->getIterator() as $provider) {
+ if (in_array($provider->getIdentifier(), $this->registered, true)) {
+ continue;
+ }
- $this->registered[] = $signature;
+ if ($provider->provides($service)) {
+ $this->registered[] = $provider->getIdentifier();
+ $provider->register();
+ }
+ }
}
}
diff --git a/src/Dependencies/League/Container/ServiceProvider/ServiceProviderAggregateInterface.php b/src/Dependencies/League/Container/ServiceProvider/ServiceProviderAggregateInterface.php
index 0165d69..d765286 100644
--- a/src/Dependencies/League/Container/ServiceProvider/ServiceProviderAggregateInterface.php
+++ b/src/Dependencies/League/Container/ServiceProvider/ServiceProviderAggregateInterface.php
@@ -1,32 +1,36 @@
-container property or the `getContainer` method
+ * protected $this->leagueContainer property or the `getLeagueContainer` method
* from the ContainerAwareTrait.
*
* @return void
*/
public function register();
+
+ /**
+ * Set a custom id for the service provider. This enables
+ * registering the same service provider multiple times.
+ *
+ * @param string $id
+ *
+ * @return self
+ */
+ public function setIdentifier(string $id) : ServiceProviderInterface;
+
+ /**
+ * The id of the service provider uniquely identifies it, so
+ * that we can quickly determine if it has already been registered.
+ * Defaults to get_class($provider).
+ *
+ * @return string
+ */
+ public function getIdentifier() : string;
}
diff --git a/src/Dependencies/League/Container/ServiceProvider/SignatureServiceProviderInterface.php b/src/Dependencies/League/Container/ServiceProvider/SignatureServiceProviderInterface.php
deleted file mode 100644
index 273b0ad..0000000
--- a/src/Dependencies/League/Container/ServiceProvider/SignatureServiceProviderInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-getLazyloadScript( $args );
+ echo $this->getLazyloadScript( $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
@@ -31,7 +33,6 @@ public function insertLazyloadScript( $args = [] ) {
public function getInlineLazyloadScript( $args = [] ) {
$defaults = [
'elements' => [
- 'img',
'iframe',
],
'threshold' => 300,
@@ -42,13 +43,24 @@ public function getInlineLazyloadScript( $args = [] ) {
'container' => 1,
'thresholds' => 1,
'data_bg' => 1,
+ 'data_bg_hidpi' => 1,
+ 'data_bg_multi' => 1,
+ 'data_bg_multi_hidpi' => 1,
+ 'data_poster' => 1,
+ 'class_applied' => 1,
'class_error' => 1,
+ 'class_entered' => 1,
+ 'class_exited' => 1,
'cancel_on_exit' => 1,
+ 'unobserve_entered' => 1,
'unobserve_completed' => 1,
'callback_enter' => 1,
'callback_exit' => 1,
'callback_loading' => 1,
+ 'callback_cancel' => 1,
+ 'callback_loaded' => 1,
'callback_error' => 1,
+ 'callback_applied' => 1,
'callback_finish' => 1,
'use_native' => 1,
];
@@ -57,8 +69,13 @@ public function getInlineLazyloadScript( $args = [] ) {
$script = '';
$args['options'] = array_intersect_key( $args['options'], $allowed_options );
+ $script .= 'window.lazyLoadOptions = ';
+
+ if ( isset( $args['elements']['background_image'] ) ) {
+ $script .= '[';
+ }
- $script .= 'window.lazyLoadOptions = {
+ $script .= '{
elements_selector: "' . esc_attr( implode( ',', $args['elements'] ) ) . '",
data_src: "lazy-src",
data_srcset: "lazy-srcset",
@@ -88,7 +105,19 @@ class_loaded: "lazyloaded",
$script = rtrim( $script, ',' );
}
- $script .= '};';
+ if ( isset( $args['elements']['background_image'] ) ) {
+ $script .= '},{
+ elements_selector: "' . esc_attr( $args['elements']['background_image'] ) . '",
+ data_src: "lazy-src",
+ data_srcset: "lazy-srcset",
+ data_sizes: "lazy-sizes",
+ class_loading: "lazyloading",
+ class_loaded: "lazyloaded",
+ threshold: ' . esc_attr( $args['threshold'] ) . ',
+ }];';
+ } else {
+ $script .= '};';
+ }
$script .= '
window.addEventListener(\'LazyLoad::Initialized\', function (e) {
@@ -101,13 +130,13 @@ class_loaded: "lazyloaded",
var rocketlazy_count = 0;
mutations.forEach(function(mutation) {
- for (i = 0; i < mutation.addedNodes.length; i++) {
+ for (var i = 0; i < mutation.addedNodes.length; i++) {
if (typeof mutation.addedNodes[i].getElementsByTagName !== \'function\') {
- return;
+ continue;
}
- if (typeof mutation.addedNodes[i].getElementsByClassName !== \'function\') {
- return;
+ if (typeof mutation.addedNodes[i].getElementsByClassName !== \'function\') {
+ continue;
}
images = mutation.addedNodes[i].getElementsByTagName(\'img\');
@@ -157,9 +186,8 @@ public function getLazyloadScript( $args = [] ) {
'version' => '',
];
- $args = wp_parse_args( $args, $defaults );
- $min = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
- $script = '';
+ $args = wp_parse_args( $args, $defaults );
+ $min = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min';
/**
* Filters the script tag for the lazyload script
@@ -168,9 +196,7 @@ public function getLazyloadScript( $args = [] ) {
*
* @param $script_tag HTML tag for the lazyload script.
*/
- $script .= apply_filters( 'rocket_lazyload_script_tag', '' );
-
- return $script;
+ return apply_filters( 'rocket_lazyload_script_tag', '' ); // phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript
}
/**
@@ -180,7 +206,7 @@ public function getLazyloadScript( $args = [] ) {
* @return void
*/
public function insertYoutubeThumbnailScript( $args = [] ) {
- echo $this->getYoutubeThumbnailScript( $args );
+ echo $this->getYoutubeThumbnailScript( $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
@@ -193,6 +219,8 @@ public function getYoutubeThumbnailScript( $args = [] ) {
$defaults = [
'resolution' => 'hqdefault',
'lazy_image' => false,
+ 'native' => true,
+ 'extension' => 'jpg',
];
$allowed_resolutions = [
@@ -223,13 +251,23 @@ public function getYoutubeThumbnailScript( $args = [] ) {
$args = wp_parse_args( $args, $defaults );
- $image = '';
+ $extension_uri = 'webp' === $args['extension'] ? 'vi_webp' : 'vi';
+
+ $image_url = 'https://i.ytimg.com/' . $extension_uri . '/ID/' . $args['resolution'] . '.' . $args['extension'];
+
+ $image = '';
if ( isset( $args['lazy_image'] ) && $args['lazy_image'] ) {
- $image = '';
+ $attributes = 'alt="" width="' . $allowed_resolutions[ $args['resolution'] ]['width'] . '" height="' . $allowed_resolutions[ $args['resolution'] ]['height'] . '"';
+
+ $image = '';
+
+ if ( $args['native'] ) {
+ $image = '';
+ }
}
- return "";
+ return "";
}
/**
@@ -239,7 +277,7 @@ public function getYoutubeThumbnailScript( $args = [] ) {
* @return void
*/
public function insertYoutubeThumbnailCSS( $args = [] ) {
- wp_register_style( 'rocket-lazyload', false );
+ wp_register_style( 'rocket-lazyload', false ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion
wp_enqueue_style( 'rocket-lazyload' );
wp_add_inline_style( 'rocket-lazyload', $this->getYoutubeThumbnailCSS( $args ) );
}
@@ -258,10 +296,10 @@ public function getYoutubeThumbnailCSS( $args = [] ) {
$args = wp_parse_args( $args, $defaults );
- $css = '.rll-youtube-player{position:relative;padding-bottom:56.23%;height:0;overflow:hidden;max-width:100%;}.rll-youtube-player iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;background:0 0}.rll-youtube-player img{bottom:0;display:block;left:0;margin:auto;max-width:100%;width:100%;position:absolute;right:0;top:0;border:none;height:auto;cursor:pointer;-webkit-transition:.4s all;-moz-transition:.4s all;transition:.4s all}.rll-youtube-player img:hover{-webkit-filter:brightness(75%)}.rll-youtube-player .play{height:72px;width:72px;left:50%;top:50%;margin-left:-36px;margin-top:-36px;position:absolute;background:url(' . $args['base_url'] . 'img/youtube.png) no-repeat;cursor:pointer}';
+ $css = '.rll-youtube-player{position:relative;padding-bottom:56.23%;height:0;overflow:hidden;max-width:100%;}.rll-youtube-player:focus-within{outline: 2px solid currentColor;outline-offset: 5px;}.rll-youtube-player iframe{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;background:0 0}.rll-youtube-player img{bottom:0;display:block;left:0;margin:auto;max-width:100%;width:100%;position:absolute;right:0;top:0;border:none;height:auto;-webkit-transition:.4s all;-moz-transition:.4s all;transition:.4s all}.rll-youtube-player img:hover{-webkit-filter:brightness(75%)}.rll-youtube-player .play{height:100%;width:100%;left:0;top:0;position:absolute;background:url(' . $args['base_url'] . 'img/youtube.png) no-repeat center;background-color: transparent !important;cursor:pointer;border:none;}';
if ( $args['responsive_embeds'] ) {
- $css .= '.wp-has-aspect-ratio .rll-youtube-player{position:absolute;padding-bottom:0;width:100%;height:100%;top:0;bottom:0;left:0;right:0}';
+ $css .= '.wp-embed-responsive .wp-has-aspect-ratio .rll-youtube-player{position:absolute;padding-bottom:0;width:100%;height:100%;top:0;bottom:0;left:0;right:0}';
}
return $css;
@@ -271,7 +309,7 @@ public function getYoutubeThumbnailCSS( $args = [] ) {
* Inserts the CSS needed when Javascript is not enabled to keep the display correct
*/
public function insertNoJSCSS() {
- echo $this->getNoJSCSS();
+ echo $this->getNoJSCSS(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
diff --git a/src/Dependencies/RocketLazyload/Iframe.php b/src/Dependencies/RocketLazyload/Iframe.php
index a4fc295..a4b369a 100644
--- a/src/Dependencies/RocketLazyload/Iframe.php
+++ b/src/Dependencies/RocketLazyload/Iframe.php
@@ -2,7 +2,7 @@
/**
* Handles lazyloading of iframes
*
- * @package RocketLazyload
+ * @package RocketLazyLoadPlugin\Dependencies\RocketLazyload
*/
namespace RocketLazyLoadPlugin\Dependencies\RocketLazyload;
@@ -106,6 +106,7 @@ private function getExcludedPatterns() {
'loading="eager"',
'data-skip-lazy',
'skip-lazy',
+ 'google_ads_iframe_',
]
);
}
@@ -163,6 +164,10 @@ private function replaceYoutubeThumbnail( $iframe ) {
$youtube_url = $this->changeYoutubeUrlForYoutuDotBe( $iframe['src'] );
$youtube_url = $this->cleanYoutubeUrl( $iframe['src'] );
+
+ preg_match( '@\s*title\s*=\s*(\'|")(?.*)\1@iUs', $iframe['atts'], $atts );
+
+ $title = $atts['title'] ?? '';
/**
* Filter the LazyLoad HTML output on Youtube iframes
*
@@ -170,7 +175,7 @@ private function replaceYoutubeThumbnail( $iframe ) {
*
* @param array $html Output that will be printed.
*/
- $youtube_lazyload = apply_filters( 'rocket_lazyload_youtube_html', '' );
+ $youtube_lazyload = apply_filters( 'rocket_lazyload_youtube_html', '' );
$youtube_lazyload .= '';
return $youtube_lazyload;
diff --git a/src/Dependencies/RocketLazyload/Image.php b/src/Dependencies/RocketLazyload/Image.php
index bf09538..e86a80c 100644
--- a/src/Dependencies/RocketLazyload/Image.php
+++ b/src/Dependencies/RocketLazyload/Image.php
@@ -1,8 +1,10 @@
]*)>(?:.+)?<\/script>/Umsi', '', $html );
- $clean_buffer = preg_replace( '##Umsi', '', $clean_buffer );
- if (! preg_match_all('#\s.+)\s?/?>#iUs', $clean_buffer, $images, PREG_SET_ORDER)) {
+ public function lazyloadImages( $html, $buffer, $use_native = true ) {
+ if ( ! preg_match_all( '#\s.+)\s?/?>#iUs', $buffer, $images, PREG_SET_ORDER ) ) {
return $html;
}
@@ -35,9 +36,13 @@ public function lazyloadImages( $html, $buffer ) {
continue;
}
- $image_lazyload = $this->replaceImage( $image );
- $image_lazyload .= $this->noscript( $image[0] );
- $html = str_replace( $image[0], $image_lazyload, $html );
+ $image_lazyload = $this->replaceImage( $image, $use_native );
+
+ if ( ! $use_native ) {
+ $image_lazyload .= $this->noscript( $image[0] );
+ }
+
+ $html = str_replace( $image[0], $image_lazyload, $html );
unset( $image_lazyload );
}
@@ -62,17 +67,34 @@ public function lazyloadBackgroundImages( $html, $buffer ) {
continue;
}
- if ( ! preg_match( '#background-image\s*:\s*(?\s*url\s*\((?[^)]+)\))\s*;?#is', $element['styles'], $url ) ) {
+ /**
+ * Regex to detect bg images inside CSS.
+ *
+ * @param string $regex regex to detect.
+ * @return string
+ */
+ $regex = apply_filters( 'rocket_lazyload_bg_images_regex', 'background-image\s*:\s*(?\s*url\s*\((?[^)]+)\))\s*;?' );
+
+ if ( @preg_match( "#$regex#is", '' ) === false ) {// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
+ $regex = 'background-image\s*:\s*(?\s*url\s*\((?[^)]+)\))\s*;?';
+ }
+
+ if ( ! preg_match( "#$regex#is", $element['styles'], $url ) ) {
continue;
}
+ if ( preg_match( '#data:image#is', $url['url'], $img ) ) {
+ continue;
+ }
$url['url'] = esc_url(
trim(
- strip_tags(
+ wp_strip_all_tags(
html_entity_decode(
- $url['url'], ENT_QUOTES|ENT_HTML5
+ $url['url'],
+ ENT_QUOTES | ENT_HTML5
)
- ), '\'" '
+ ),
+ '\'" '
)
);
@@ -99,7 +121,7 @@ public function lazyloadBackgroundImages( $html, $buffer ) {
*/
private function addLazyClass( $element ) {
$class = $this->getClasses( $element );
- if ( empty( $class ) ) {
+ if ( empty( $class ) ) {
return preg_replace( '#<(img|div|figure|section|li|span|a)([^>]*)>#is', '<\1 class="rocket-lazyload"\2>', $element );
}
@@ -132,7 +154,7 @@ private function addLazyClass( $element ) {
*/
private function getAttributeQuotes( $attribute_value ) {
$attribute_value = trim( $attribute_value );
- $first_char = $attribute_value[0];
+ $first_char = $attribute_value[0];
if ( '"' === $first_char || "'" === $first_char ) {
return $first_char;
@@ -230,7 +252,7 @@ private function stringToArray( $string, $delimiter = ' ' ) {
}
$array = explode( $delimiter, $string );
- $array = array_map('trim', $array );
+ $array = array_map( 'trim', $array );
// Remove empties.
return array_filter( $array );
@@ -253,25 +275,40 @@ public function lazyloadPictures( $html, $buffer ) {
foreach ( $pictures as $picture ) {
if ( $this->isExcluded( $picture[0], $excluded ) ) {
+ if ( ! preg_match( '#\s.+)\s?/?>#iUs', $picture[0], $img ) ) {
+ continue;
+ }
+
+ $img = $this->canLazyload( $img );
+
+ if ( ! $img ) {
+ continue;
+ }
+
+ $nolazy_picture = str_replace( '\s.+)>#iUs', $picture['sources'], $sources, PREG_SET_ORDER ) ) {
- $sources = array_unique( $sources, SORT_REGULAR );
-
$lazy_sources = 0;
+ $sources = array_unique( $sources, SORT_REGULAR );
+ $lazy_picture = $picture[0];
foreach ( $sources as $source ) {
$lazyload_srcset = preg_replace( '/([\s"\'])srcset/i', '\1data-lazy-srcset', $source[0] );
- $html = str_replace( $source[0], $lazyload_srcset, $html );
+ $lazy_picture = str_replace( $source[0], $lazyload_srcset, $lazy_picture );
unset( $lazyload_srcset );
$lazy_sources++;
}
- }
- if ( 0 === $lazy_sources ) {
- continue;
+ if ( 0 === $lazy_sources ) {
+ continue;
+ }
+
+ $html = str_replace( $picture[0], $lazy_picture, $html );
}
if ( ! preg_match( '#\s.+)\s?/?>#iUs', $picture[0], $img ) ) {
@@ -284,10 +321,10 @@ public function lazyloadPictures( $html, $buffer ) {
continue;
}
- $img_lazy = $this->replaceImage( $img );
+ $img_lazy = $this->replaceImage( $img, false );
$img_lazy .= $this->noscript( $img[0] );
- $safe_img = str_replace('/', '\/', preg_quote( $img[0], '#' ));
- $html = preg_replace( '#