diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml
index b6becea2..09b091d5 100644
--- a/.github/workflows/code-quality.yml
+++ b/.github/workflows/code-quality.yml
@@ -21,7 +21,7 @@ jobs:
- name: Setup proper PHP version
uses: shivammathur/setup-php@v2
with:
- php-version: 7.4
+ php-version: 8.0
- name: Install Composer dependencies
run: composer install --no-interaction --no-progress --no-suggest --optimize-autoloader
@@ -34,10 +34,10 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- php: [ 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1 ]
+ php: [ 8.0, 8.1, 8.2, 8.3, 8.4 ]
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
with:
ref: ${{ github.event.inputs.ref }}
diff --git a/.gitignore b/.gitignore
index cbed23ec..af436c37 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,6 +40,7 @@ npm-debug.log
.sass-cache*
.husky
*.lock
+!composer.lock
# Tests
codeception.yml
diff --git a/.wordpress-org/banner-1544x500.png b/.wordpress-org/banner-1544x500.png
index ed0b7d05..7ff495db 100644
Binary files a/.wordpress-org/banner-1544x500.png and b/.wordpress-org/banner-1544x500.png differ
diff --git a/.wordpress-org/banner-772x250.png b/.wordpress-org/banner-772x250.png
index 2f4d901f..c7cc37fb 100644
Binary files a/.wordpress-org/banner-772x250.png and b/.wordpress-org/banner-772x250.png differ
diff --git a/.wordpress-org/icon-128x128.png b/.wordpress-org/icon-128x128.png
index b4121d21..9ebd3136 100644
Binary files a/.wordpress-org/icon-128x128.png and b/.wordpress-org/icon-128x128.png differ
diff --git a/.wordpress-org/icon-256x256.png b/.wordpress-org/icon-256x256.png
index 91888915..90b76866 100644
Binary files a/.wordpress-org/icon-256x256.png and b/.wordpress-org/icon-256x256.png differ
diff --git a/bin/build-zip.sh b/bin/build-zip.sh
index 7f7dac3d..e379adb5 100755
--- a/bin/build-zip.sh
+++ b/bin/build-zip.sh
@@ -12,9 +12,9 @@ fi
echo "➤ Preparing zip for $VERSION of $SLUG..."
echo "➤ Building plugin..."
-npm install && npm run build
composer install
composer update --no-dev --no-scripts
+npm install && npm run build
echo "✓ Plugin built!"
# if directory already exists, delete it
diff --git a/bin/release.sh b/bin/release.sh
index 883fa9f2..22ca844d 100755
--- a/bin/release.sh
+++ b/bin/release.sh
@@ -16,12 +16,6 @@ fi
echo "Preparing release $VERSION for $SLUG..."
-echo "➤ Building plugin..."
-npm install && npm run build
-composer install
-composer update --no-dev --no-scripts
-echo "✓ Plugin built!"
-
# Check if svn user name is provided with -u flag and password with -p flag
while getopts u:p: flag; do
case "${flag}" in
@@ -36,6 +30,17 @@ if [ -z "$SVN_USER" ] || [ -z "$SVN_PASSWORD" ]; then
exit 1
fi
+# Replace the version in readme.txt
+sed -i '' "s/Stable tag: .*/Stable tag: $VERSION/" readme.txt
+# Replace the version in plugin file
+sed -i '' "s/Version: .*/Version: $VERSION/" $SLUG.php
+
+echo "➤ Building plugin..."
+npm install && npm run build
+composer install
+composer update --no-dev --no-scripts
+echo "✓ Plugin built!"
+
# if directory already exists, delete it
if [ -d "$SVN_DIR" ]; then
rm -rf $SVN_DIR
@@ -63,9 +68,9 @@ find "$SVN_DIR/trunk/" -type d -empty -delete
# Copy assets
# If .wordpress-org is a directory and contains files, copy them to the SVN repo.
-if [[ -d "$WORKSPACE/.wordpress-org" ]]; then
+if [[ -d "$WORKING_DIR/.wordpress-org" ]]; then
echo "➤ Copying assets..."
- rsync -rc "$WORKSPACE/.wordpress-org/" "$SVN_DIR/assets/" --delete --delete-excluded
+ rsync -rc "$WORKING_DIR/.wordpress-org/" "$SVN_DIR/assets/" --delete --delete-excluded
# Fix screenshots getting force downloaded when clicking them
# https://developer.wordpress.org/plugins/wordpress-org/plugin-assets/
if test -d "$SVN_DIR/assets" && test -n "$(find "$SVN_DIR/assets" -maxdepth 1 -name "*.png" -print -quit)"; then
diff --git a/composer.json b/composer.json
index 9be86780..219bc5a2 100644
--- a/composer.json
+++ b/composer.json
@@ -7,10 +7,6 @@
"prefer-stable": true,
"minimum-stability": "dev",
"repositories": [
- {
- "url": "git@github.com:byteever/byteever-sniffs.git",
- "type": "github"
- },
{
"url": "git@github.com:pluginever/framework-plugin.git",
"type": "github"
@@ -28,7 +24,7 @@
"php": ">=7.0"
},
"require-dev": {
- "byteever/byteever-sniffs": "dev-master",
+ "byteever/byteever-sniffs": "^1.0",
"codeception/lib-innerbrowser": "^1.0",
"codeception/module-asserts": "^1.1",
"codeception/module-cli": "^1.0",
@@ -42,9 +38,9 @@
"level-level/wp-browser-woocommerce": "^0.1.8",
"lucatume/wp-browser": "^3.1",
"phpcompatibility/php-compatibility": "9.3.5",
+ "pluginever/framework-model": "dev-master",
"pluginever/framework-plugin": "dev-master",
- "pluginever/framework-settings": "dev-master",
- "pluginever/framework-model": "dev-master"
+ "pluginever/framework-settings": "dev-master"
},
"config": {
"optimize-autoloader": true,
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 00000000..14e2ee5c
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,7238 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "1708bb6e2309c5b3f2b0c1d7ea103daf",
+ "packages": [],
+ "packages-dev": [
+ {
+ "name": "antecedent/patchwork",
+ "version": "2.1.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/antecedent/patchwork.git",
+ "reference": "f2dae0851b2eae4c51969af740fdd0356d7f8f55"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/antecedent/patchwork/zipball/f2dae0851b2eae4c51969af740fdd0356d7f8f55",
+ "reference": "f2dae0851b2eae4c51969af740fdd0356d7f8f55",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=4"
+ },
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ignas Rudaitis",
+ "email": "ignas.rudaitis@gmail.com"
+ }
+ ],
+ "description": "Method redefinition (monkey-patching) functionality for PHP.",
+ "homepage": "http://patchwork2.org/",
+ "keywords": [
+ "aop",
+ "aspect",
+ "interception",
+ "monkeypatching",
+ "redefinition",
+ "runkit",
+ "testing"
+ ],
+ "support": {
+ "issues": "https://github.com/antecedent/patchwork/issues",
+ "source": "https://github.com/antecedent/patchwork/tree/2.1.26"
+ },
+ "time": "2023-09-18T08:18:37+00:00"
+ },
+ {
+ "name": "behat/gherkin",
+ "version": "v4.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Behat/Gherkin.git",
+ "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Behat/Gherkin/zipball/0bc8d1e30e96183e4f36db9dc79caead300beff4",
+ "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "~7.2|~8.0"
+ },
+ "require-dev": {
+ "cucumber/cucumber": "dev-gherkin-22.0.0",
+ "phpunit/phpunit": "~8|~9",
+ "symfony/yaml": "~3|~4|~5"
+ },
+ "suggest": {
+ "symfony/yaml": "If you want to parse features, represented in YAML files"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Behat\\Gherkin": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ }
+ ],
+ "description": "Gherkin DSL parser for PHP",
+ "homepage": "http://behat.org/",
+ "keywords": [
+ "BDD",
+ "Behat",
+ "Cucumber",
+ "DSL",
+ "gherkin",
+ "parser"
+ ],
+ "support": {
+ "issues": "https://github.com/Behat/Gherkin/issues",
+ "source": "https://github.com/Behat/Gherkin/tree/v4.9.0"
+ },
+ "time": "2021-10-12T13:05:09+00:00"
+ },
+ {
+ "name": "bordoni/phpass",
+ "version": "0.3.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/bordoni/phpass.git",
+ "reference": "12f8f5cc03ebb7efd69554f104afe9aa1aa46e1a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/bordoni/phpass/zipball/12f8f5cc03ebb7efd69554f104afe9aa1aa46e1a",
+ "reference": "12f8f5cc03ebb7efd69554f104afe9aa1aa46e1a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "replace": {
+ "hautelook/phpass": "0.3.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Hautelook": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Public Domain"
+ ],
+ "authors": [
+ {
+ "name": "Solar Designer",
+ "email": "solar@openwall.com",
+ "homepage": "http://openwall.com/phpass/"
+ },
+ {
+ "name": "Gustavo Bordoni",
+ "email": "gustavo@bordoni.me",
+ "homepage": "https://bordoni.me"
+ }
+ ],
+ "description": "Portable PHP password hashing framework",
+ "homepage": "http://github.com/bordoni/phpass/",
+ "keywords": [
+ "blowfish",
+ "crypt",
+ "password",
+ "security"
+ ],
+ "support": {
+ "issues": "https://github.com/bordoni/phpass/issues",
+ "source": "https://github.com/bordoni/phpass/tree/0.3.6"
+ },
+ "time": "2012-08-31T00:00:00+00:00"
+ },
+ {
+ "name": "byteever/byteever-sniffs",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/byteever/byteever-sniffs.git",
+ "reference": "8c20a95245a883bcbaea42e46653f7f788bf8290"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/byteever/byteever-sniffs/zipball/8c20a95245a883bcbaea42e46653f7f788bf8290",
+ "reference": "8c20a95245a883bcbaea42e46653f7f788bf8290",
+ "shasum": ""
+ },
+ "require": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
+ "phpcompatibility/phpcompatibility-wp": "^2.1",
+ "wp-coding-standards/wpcs": "^3.0"
+ },
+ "require-dev": {
+ "roave/security-advisories": "dev-latest"
+ },
+ "type": "phpcodesniffer-standard",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "Sultan Nasir Uddin",
+ "email": "sultan@byteever.com"
+ }
+ ],
+ "description": "ByteEver PHP Coding Standards",
+ "keywords": [
+ "byteever",
+ "phpcs",
+ "standards",
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/byteever/byteever-sniffs/issues",
+ "source": "https://github.com/byteever/byteever-sniffs/tree/v1.0.1"
+ },
+ "time": "2023-10-25T04:55:22+00:00"
+ },
+ {
+ "name": "codeception/codeception",
+ "version": "4.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/Codeception.git",
+ "reference": "b88014f3348c93f3df99dc6d0967b0dbfa804474"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/Codeception/zipball/b88014f3348c93f3df99dc6d0967b0dbfa804474",
+ "reference": "b88014f3348c93f3df99dc6d0967b0dbfa804474",
+ "shasum": ""
+ },
+ "require": {
+ "behat/gherkin": "^4.4.0",
+ "codeception/lib-asserts": "^1.0 | 2.0.*@dev",
+ "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0",
+ "codeception/stub": "^2.0 | ^3.0 | ^4.0",
+ "ext-curl": "*",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "guzzlehttp/psr7": "^1.4 | ^2.0",
+ "php": ">=5.6.0 <9.0",
+ "symfony/console": ">=2.7 <6.0",
+ "symfony/css-selector": ">=2.7 <6.0",
+ "symfony/event-dispatcher": ">=2.7 <6.0",
+ "symfony/finder": ">=2.7 <6.0",
+ "symfony/yaml": ">=2.7 <6.0"
+ },
+ "require-dev": {
+ "codeception/module-asserts": "^1.0 | 2.0.*@dev",
+ "codeception/module-cli": "^1.0 | 2.0.*@dev",
+ "codeception/module-db": "^1.0 | 2.0.*@dev",
+ "codeception/module-filesystem": "^1.0 | 2.0.*@dev",
+ "codeception/module-phpbrowser": "^1.0 | 2.0.*@dev",
+ "codeception/specify": "~0.3",
+ "codeception/util-universalframework": "*@dev",
+ "monolog/monolog": "~1.8",
+ "squizlabs/php_codesniffer": "~2.0",
+ "symfony/process": ">=2.7 <6.0",
+ "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0 | ^5.0"
+ },
+ "suggest": {
+ "codeception/specify": "BDD-style code blocks",
+ "codeception/verify": "BDD-style assertions",
+ "hoa/console": "For interactive console functionality",
+ "stecman/symfony-console-completion": "For BASH autocompletion",
+ "symfony/phpunit-bridge": "For phpunit-bridge support"
+ },
+ "bin": [
+ "codecept"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": []
+ },
+ "autoload": {
+ "files": [
+ "functions.php"
+ ],
+ "psr-4": {
+ "Codeception\\": "src/Codeception",
+ "Codeception\\Extension\\": "ext"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Bodnarchuk",
+ "email": "davert@mail.ua",
+ "homepage": "https://codegyre.com"
+ }
+ ],
+ "description": "BDD-style testing framework",
+ "homepage": "https://codeception.com/",
+ "keywords": [
+ "BDD",
+ "TDD",
+ "acceptance testing",
+ "functional testing",
+ "unit testing"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/Codeception/issues",
+ "source": "https://github.com/Codeception/Codeception/tree/4.2.2"
+ },
+ "funding": [
+ {
+ "url": "https://opencollective.com/codeception",
+ "type": "open_collective"
+ }
+ ],
+ "time": "2022-08-13T13:28:25+00:00"
+ },
+ {
+ "name": "codeception/lib-asserts",
+ "version": "1.13.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/lib-asserts.git",
+ "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6",
+ "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6",
+ "shasum": ""
+ },
+ "require": {
+ "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0",
+ "ext-dom": "*",
+ "php": ">=5.6.0 <9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Bodnarchuk",
+ "email": "davert@mail.ua",
+ "homepage": "http://codegyre.com"
+ },
+ {
+ "name": "Gintautas Miselis"
+ },
+ {
+ "name": "Gustavo Nieves",
+ "homepage": "https://medium.com/@ganieves"
+ }
+ ],
+ "description": "Assertion methods used by Codeception core and Asserts module",
+ "homepage": "https://codeception.com/",
+ "keywords": [
+ "codeception"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/lib-asserts/issues",
+ "source": "https://github.com/Codeception/lib-asserts/tree/1.13.2"
+ },
+ "time": "2020-10-21T16:26:20+00:00"
+ },
+ {
+ "name": "codeception/lib-innerbrowser",
+ "version": "1.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/lib-innerbrowser.git",
+ "reference": "31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2",
+ "reference": "31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2",
+ "shasum": ""
+ },
+ "require": {
+ "codeception/codeception": "4.*@dev",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "php": ">=5.6.0 <9.0",
+ "symfony/browser-kit": ">=2.7 <6.0",
+ "symfony/dom-crawler": ">=2.7 <6.0"
+ },
+ "conflict": {
+ "codeception/codeception": "<4.0"
+ },
+ "require-dev": {
+ "codeception/util-universalframework": "dev-master"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Bodnarchuk",
+ "email": "davert@mail.ua",
+ "homepage": "http://codegyre.com"
+ },
+ {
+ "name": "Gintautas Miselis"
+ }
+ ],
+ "description": "Parent library for all Codeception framework modules and PhpBrowser",
+ "homepage": "https://codeception.com/",
+ "keywords": [
+ "codeception"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/lib-innerbrowser/issues",
+ "source": "https://github.com/Codeception/lib-innerbrowser/tree/1.5.1"
+ },
+ "time": "2021-08-30T15:21:42+00:00"
+ },
+ {
+ "name": "codeception/module-asserts",
+ "version": "1.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/module-asserts.git",
+ "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/59374f2fef0cabb9e8ddb53277e85cdca74328de",
+ "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de",
+ "shasum": ""
+ },
+ "require": {
+ "codeception/codeception": "*@dev",
+ "codeception/lib-asserts": "^1.13.1",
+ "php": ">=5.6.0 <9.0"
+ },
+ "conflict": {
+ "codeception/codeception": "<4.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Bodnarchuk"
+ },
+ {
+ "name": "Gintautas Miselis"
+ },
+ {
+ "name": "Gustavo Nieves",
+ "homepage": "https://medium.com/@ganieves"
+ }
+ ],
+ "description": "Codeception module containing various assertions",
+ "homepage": "https://codeception.com/",
+ "keywords": [
+ "assertions",
+ "asserts",
+ "codeception"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/module-asserts/issues",
+ "source": "https://github.com/Codeception/module-asserts/tree/1.3.1"
+ },
+ "time": "2020-10-21T16:48:15+00:00"
+ },
+ {
+ "name": "codeception/module-cli",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/module-cli.git",
+ "reference": "1f841ad4a1d43e5d9e60a43c4cc9e5af8008024f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/module-cli/zipball/1f841ad4a1d43e5d9e60a43c4cc9e5af8008024f",
+ "reference": "1f841ad4a1d43e5d9e60a43c4cc9e5af8008024f",
+ "shasum": ""
+ },
+ "require": {
+ "codeception/codeception": "*@dev",
+ "php": ">=5.6.0 <9.0"
+ },
+ "conflict": {
+ "codeception/codeception": "<4.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Bodnarchuk"
+ }
+ ],
+ "description": "Codeception module for testing basic shell commands and shell output",
+ "homepage": "http://codeception.com/",
+ "keywords": [
+ "codeception"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/module-cli/issues",
+ "source": "https://github.com/Codeception/module-cli/tree/1.1.1"
+ },
+ "time": "2020-12-26T16:56:19+00:00"
+ },
+ {
+ "name": "codeception/module-db",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/module-db.git",
+ "reference": "04c3e66fbd3a3ced17fcccc49627f6393a97b04b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/module-db/zipball/04c3e66fbd3a3ced17fcccc49627f6393a97b04b",
+ "reference": "04c3e66fbd3a3ced17fcccc49627f6393a97b04b",
+ "shasum": ""
+ },
+ "require": {
+ "codeception/codeception": "*@dev",
+ "php": ">=5.6.0 <9.0"
+ },
+ "conflict": {
+ "codeception/codeception": "<4.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Bodnarchuk"
+ },
+ {
+ "name": "Gintautas Miselis"
+ }
+ ],
+ "description": "DB module for Codeception",
+ "homepage": "http://codeception.com/",
+ "keywords": [
+ "codeception",
+ "database-testing",
+ "db-testing"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/module-db/issues",
+ "source": "https://github.com/Codeception/module-db/tree/1.2.0"
+ },
+ "time": "2022-03-05T19:38:40+00:00"
+ },
+ {
+ "name": "codeception/module-filesystem",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/module-filesystem.git",
+ "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/module-filesystem/zipball/781be167fb1557bfc9b61e0a4eac60a32c534ec1",
+ "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1",
+ "shasum": ""
+ },
+ "require": {
+ "codeception/codeception": "^4.0",
+ "php": ">=5.6.0 <9.0",
+ "symfony/finder": ">=2.7 <6.0"
+ },
+ "conflict": {
+ "codeception/codeception": "<4.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Bodnarchuk"
+ },
+ {
+ "name": "Gintautas Miselis"
+ }
+ ],
+ "description": "Codeception module for testing local filesystem",
+ "homepage": "http://codeception.com/",
+ "keywords": [
+ "codeception",
+ "filesystem"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/module-filesystem/issues",
+ "source": "https://github.com/Codeception/module-filesystem/tree/1.0.3"
+ },
+ "time": "2020-10-24T14:46:40+00:00"
+ },
+ {
+ "name": "codeception/module-phpbrowser",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/module-phpbrowser.git",
+ "reference": "8ba6bede11d0914e74d98691f427fd8f397f192e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/8ba6bede11d0914e74d98691f427fd8f397f192e",
+ "reference": "8ba6bede11d0914e74d98691f427fd8f397f192e",
+ "shasum": ""
+ },
+ "require": {
+ "codeception/codeception": "^4.1",
+ "codeception/lib-innerbrowser": "^1.3",
+ "guzzlehttp/guzzle": "^6.3|^7.0",
+ "php": ">=5.6.0 <9.0"
+ },
+ "conflict": {
+ "codeception/codeception": "<4.0"
+ },
+ "require-dev": {
+ "codeception/module-rest": "^1.0"
+ },
+ "suggest": {
+ "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Bodnarchuk"
+ },
+ {
+ "name": "Gintautas Miselis"
+ }
+ ],
+ "description": "Codeception module for testing web application over HTTP",
+ "homepage": "http://codeception.com/",
+ "keywords": [
+ "codeception",
+ "functional-testing",
+ "http"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/module-phpbrowser/issues",
+ "source": "https://github.com/Codeception/module-phpbrowser/tree/1.0.3"
+ },
+ "time": "2022-05-21T13:50:41+00:00"
+ },
+ {
+ "name": "codeception/module-rest",
+ "version": "1.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/module-rest.git",
+ "reference": "9cd7a87fd9343494e7782f7bdb51687c25046917"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/module-rest/zipball/9cd7a87fd9343494e7782f7bdb51687c25046917",
+ "reference": "9cd7a87fd9343494e7782f7bdb51687c25046917",
+ "shasum": ""
+ },
+ "require": {
+ "codeception/codeception": "^4.0",
+ "justinrainbow/json-schema": "~5.2.9",
+ "php": ">=5.6.6 <9.0",
+ "softcreatr/jsonpath": "^0.5 || ^0.7"
+ },
+ "require-dev": {
+ "codeception/lib-innerbrowser": "^1.0",
+ "codeception/util-universalframework": "^1.0"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "For using AWS Auth"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gintautas Miselis"
+ }
+ ],
+ "description": "REST module for Codeception",
+ "homepage": "http://codeception.com/",
+ "keywords": [
+ "codeception",
+ "rest"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/module-rest/issues",
+ "source": "https://github.com/Codeception/module-rest/tree/1.4.2"
+ },
+ "time": "2021-11-18T18:58:15+00:00"
+ },
+ {
+ "name": "codeception/module-webdriver",
+ "version": "1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/module-webdriver.git",
+ "reference": "e22ac7da756df659df6dd4fac2dff9c859e30131"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/module-webdriver/zipball/e22ac7da756df659df6dd4fac2dff9c859e30131",
+ "reference": "e22ac7da756df659df6dd4fac2dff9c859e30131",
+ "shasum": ""
+ },
+ "require": {
+ "codeception/codeception": "^4.0",
+ "php": ">=5.6.0 <9.0",
+ "php-webdriver/webdriver": "^1.8.0"
+ },
+ "suggest": {
+ "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Bodnarchuk"
+ },
+ {
+ "name": "Gintautas Miselis"
+ },
+ {
+ "name": "Zaahid Bateson"
+ }
+ ],
+ "description": "WebDriver module for Codeception",
+ "homepage": "http://codeception.com/",
+ "keywords": [
+ "acceptance-testing",
+ "browser-testing",
+ "codeception"
+ ],
+ "support": {
+ "issues": "https://github.com/Codeception/module-webdriver/issues",
+ "source": "https://github.com/Codeception/module-webdriver/tree/1.4.1"
+ },
+ "time": "2022-09-12T05:09:51+00:00"
+ },
+ {
+ "name": "codeception/phpunit-wrapper",
+ "version": "9.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/phpunit-wrapper.git",
+ "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7439a53ae367986e9c22b2ac00f9d7376bb2f8cf",
+ "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2",
+ "phpunit/phpunit": "^9.0"
+ },
+ "require-dev": {
+ "codeception/specify": "*",
+ "consolidation/robo": "^3.0.0-alpha3",
+ "vlucas/phpdotenv": "^3.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Codeception\\PHPUnit\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Davert",
+ "email": "davert.php@resend.cc"
+ },
+ {
+ "name": "Naktibalda"
+ }
+ ],
+ "description": "PHPUnit classes used by Codeception",
+ "support": {
+ "issues": "https://github.com/Codeception/phpunit-wrapper/issues",
+ "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.9"
+ },
+ "time": "2022-05-23T06:24:11+00:00"
+ },
+ {
+ "name": "codeception/stub",
+ "version": "4.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/Stub.git",
+ "reference": "18a148dacd293fc7b044042f5aa63a82b08bff5d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/Stub/zipball/18a148dacd293fc7b044042f5aa63a82b08bff5d",
+ "reference": "18a148dacd293fc7b044042f5aa63a82b08bff5d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 | ^8.0",
+ "phpunit/phpunit": "^8.4 | ^9.0 | ^10.0 | 10.0.x-dev"
+ },
+ "require-dev": {
+ "consolidation/robo": "^3.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Codeception\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder",
+ "support": {
+ "issues": "https://github.com/Codeception/Stub/issues",
+ "source": "https://github.com/Codeception/Stub/tree/4.0.2"
+ },
+ "time": "2022-01-31T19:25:15+00:00"
+ },
+ {
+ "name": "codeception/util-universalframework",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Codeception/util-universalframework.git",
+ "reference": "cc381f364c6d24f9b9c7b70a4c724949725f491a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Codeception/util-universalframework/zipball/cc381f364c6d24f9b9c7b70a4c724949725f491a",
+ "reference": "cc381f364c6d24f9b9c7b70a4c724949725f491a",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gintautas Miselis"
+ }
+ ],
+ "description": "Mock framework module used in internal Codeception tests",
+ "homepage": "http://codeception.com/",
+ "support": {
+ "issues": "https://github.com/Codeception/util-universalframework/issues",
+ "source": "https://github.com/Codeception/util-universalframework/tree/1.0.0"
+ },
+ "time": "2019-09-22T06:06:49+00:00"
+ },
+ {
+ "name": "coenjacobs/mozart",
+ "version": "0.7.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/coenjacobs/mozart.git",
+ "reference": "dbcdeb992d20d9c8914eef090f9a0d684bb1102c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/coenjacobs/mozart/zipball/dbcdeb992d20d9c8914eef090f9a0d684bb1102c",
+ "reference": "dbcdeb992d20d9c8914eef090f9a0d684bb1102c",
+ "shasum": ""
+ },
+ "require": {
+ "league/flysystem": "^1.0",
+ "php": "^7.3|^8.0",
+ "symfony/console": "^4|^5",
+ "symfony/finder": "^4|^5"
+ },
+ "require-dev": {
+ "mheap/phpunit-github-actions-printer": "^1.4",
+ "phpunit/phpunit": "^8.5",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.4"
+ },
+ "bin": [
+ "bin/mozart"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "CoenJacobs\\Mozart\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Coen Jacobs",
+ "email": "coenjacobs@gmail.com"
+ }
+ ],
+ "description": "Composes all dependencies as a package inside a WordPress plugin",
+ "support": {
+ "issues": "https://github.com/coenjacobs/mozart/issues",
+ "source": "https://github.com/coenjacobs/mozart/tree/0.7.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/coenjacobs",
+ "type": "github"
+ }
+ ],
+ "time": "2021-02-02T21:37:03+00:00"
+ },
+ {
+ "name": "dealerdirect/phpcodesniffer-composer-installer",
+ "version": "v0.7.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
+ "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db",
+ "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0 || ^2.0",
+ "php": ">=5.3",
+ "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0"
+ },
+ "require-dev": {
+ "composer/composer": "*",
+ "php-parallel-lint/php-parallel-lint": "^1.3.1",
+ "phpcompatibility/php-compatibility": "^9.0"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
+ },
+ "autoload": {
+ "psr-4": {
+ "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Franck Nijhof",
+ "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",
+ "homepage": "http://www.dealerdirect.com",
+ "keywords": [
+ "PHPCodeSniffer",
+ "PHP_CodeSniffer",
+ "code quality",
+ "codesniffer",
+ "composer",
+ "installer",
+ "phpcbf",
+ "phpcs",
+ "plugin",
+ "qa",
+ "quality",
+ "standard",
+ "standards",
+ "style guide",
+ "stylecheck",
+ "tests"
+ ],
+ "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": "dg/mysql-dump",
+ "version": "v1.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dg/MySQL-dump.git",
+ "reference": "e0e287b715b43293773a8b0edf8514f606e01780"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dg/MySQL-dump/zipball/e0e287b715b43293773a8b0edf8514f606e01780",
+ "reference": "e0e287b715b43293773a8b0edf8514f606e01780",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "http://davidgrudl.com"
+ }
+ ],
+ "description": "MySQL database dump.",
+ "homepage": "https://github.com/dg/MySQL-dump",
+ "keywords": [
+ "mysql"
+ ],
+ "support": {
+ "source": "https://github.com/dg/MySQL-dump/tree/master"
+ },
+ "time": "2019-09-10T21:36:25+00:00"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "2.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff",
+ "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^11.0",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.3",
+ "phpunit/phpunit": "^8.5 || ^9.5",
+ "vimeo/psalm": "^4.25 || ^5.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
+ "homepage": "https://www.doctrine-project.org/projects/inflector.html",
+ "keywords": [
+ "inflection",
+ "inflector",
+ "lowercase",
+ "manipulation",
+ "php",
+ "plural",
+ "singular",
+ "strings",
+ "uppercase",
+ "words"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/inflector/issues",
+ "source": "https://github.com/doctrine/inflector/tree/2.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-06-16T13:40:37+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
+ "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9 || ^11",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.16 || ^1",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.30 || ^5.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-12-30T00:15:36+00:00"
+ },
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "7.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9",
+ "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "guzzlehttp/promises": "^1.5.3 || ^2.0.1",
+ "guzzlehttp/psr7": "^1.9.1 || ^2.5.1",
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-client": "^1.0",
+ "symfony/deprecation-contracts": "^2.2 || ^3.0"
+ },
+ "provide": {
+ "psr/http-client-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.1",
+ "ext-curl": "*",
+ "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999",
+ "php-http/message-factory": "^1.1",
+ "phpunit/phpunit": "^8.5.29 || ^9.5.23",
+ "psr/log": "^1.1 || ^2.0 || ^3.0"
+ },
+ "suggest": {
+ "ext-curl": "Required for CURL handler support",
+ "ext-intl": "Required for Internationalized Domain Name (IDN) support",
+ "psr/log": "Required for using the Log middleware"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Jeremy Lindblom",
+ "email": "jeremeamia@gmail.com",
+ "homepage": "https://github.com/jeremeamia"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "psr-18",
+ "psr-7",
+ "rest",
+ "web service"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/guzzle/issues",
+ "source": "https://github.com/guzzle/guzzle/tree/7.8.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-08-27T10:20:53+00:00"
+ },
+ {
+ "name": "guzzlehttp/promises",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "111166291a0f8130081195ac4556a5587d7f1b5d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d",
+ "reference": "111166291a0f8130081195ac4556a5587d7f1b5d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.1",
+ "phpunit/phpunit": "^8.5.29 || ^9.5.23"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/2.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-08-03T15:11:55+00:00"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "2.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727",
+ "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.1 || ^2.0",
+ "ralouphie/getallheaders": "^3.0"
+ },
+ "provide": {
+ "psr/http-factory-implementation": "1.0",
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.1",
+ "http-interop/http-factory-tests": "^0.9",
+ "phpunit/phpunit": "^8.5.29 || ^9.5.23"
+ },
+ "suggest": {
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/2.6.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-08-27T10:13:57+00:00"
+ },
+ {
+ "name": "illuminate/collections",
+ "version": "v9.52.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/collections.git",
+ "reference": "d3710b0b244bfc62c288c1a87eaa62dd28352d1f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/collections/zipball/d3710b0b244bfc62c288c1a87eaa62dd28352d1f",
+ "reference": "d3710b0b244bfc62c288c1a87eaa62dd28352d1f",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/conditionable": "^9.0",
+ "illuminate/contracts": "^9.0",
+ "illuminate/macroable": "^9.0",
+ "php": "^8.0.2"
+ },
+ "suggest": {
+ "symfony/var-dumper": "Required to use the dump method (^6.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Collections package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2023-06-11T21:17:10+00:00"
+ },
+ {
+ "name": "illuminate/conditionable",
+ "version": "v9.52.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/conditionable.git",
+ "reference": "bea24daa0fa84b7e7b0d5b84f62c71b7e2dc3364"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/conditionable/zipball/bea24daa0fa84b7e7b0d5b84f62c71b7e2dc3364",
+ "reference": "bea24daa0fa84b7e7b0d5b84f62c71b7e2dc3364",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Conditionable package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2023-02-01T21:42:32+00:00"
+ },
+ {
+ "name": "illuminate/contracts",
+ "version": "v9.52.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/contracts.git",
+ "reference": "44f65d723b13823baa02ff69751a5948bde60c22"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/contracts/zipball/44f65d723b13823baa02ff69751a5948bde60c22",
+ "reference": "44f65d723b13823baa02ff69751a5948bde60c22",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.0.2",
+ "psr/container": "^1.1.1|^2.0.1",
+ "psr/simple-cache": "^1.0|^2.0|^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Contracts\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Contracts package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2023-02-08T14:36:30+00:00"
+ },
+ {
+ "name": "illuminate/macroable",
+ "version": "v9.52.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/macroable.git",
+ "reference": "e3bfaf6401742a9c6abca61b9b10e998e5b6449a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/macroable/zipball/e3bfaf6401742a9c6abca61b9b10e998e5b6449a",
+ "reference": "e3bfaf6401742a9c6abca61b9b10e998e5b6449a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Macroable package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-08-09T13:29:29+00:00"
+ },
+ {
+ "name": "illuminate/support",
+ "version": "v9.52.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/support.git",
+ "reference": "223c608dbca27232df6213f776bfe7bdeec24874"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/support/zipball/223c608dbca27232df6213f776bfe7bdeec24874",
+ "reference": "223c608dbca27232df6213f776bfe7bdeec24874",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/inflector": "^2.0",
+ "ext-ctype": "*",
+ "ext-filter": "*",
+ "ext-mbstring": "*",
+ "illuminate/collections": "^9.0",
+ "illuminate/conditionable": "^9.0",
+ "illuminate/contracts": "^9.0",
+ "illuminate/macroable": "^9.0",
+ "nesbot/carbon": "^2.62.1",
+ "php": "^8.0.2",
+ "voku/portable-ascii": "^2.0"
+ },
+ "conflict": {
+ "tightenco/collect": "<5.5.33"
+ },
+ "suggest": {
+ "illuminate/filesystem": "Required to use the composer class (^9.0).",
+ "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.0.2).",
+ "ramsey/uuid": "Required to use Str::uuid() (^4.7).",
+ "symfony/process": "Required to use the composer class (^6.0).",
+ "symfony/uid": "Required to use Str::ulid() (^6.0).",
+ "symfony/var-dumper": "Required to use the dd function (^6.0).",
+ "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.4.1)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Support package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2023-06-11T21:11:53+00:00"
+ },
+ {
+ "name": "justinrainbow/json-schema",
+ "version": "v5.2.13",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/justinrainbow/json-schema.git",
+ "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793",
+ "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
+ "json-schema/json-schema-test-suite": "1.2.0",
+ "phpunit/phpunit": "^4.8.35"
+ },
+ "bin": [
+ "bin/validate-json"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "JsonSchema\\": "src/JsonSchema/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bruno Prieto Reis",
+ "email": "bruno.p.reis@gmail.com"
+ },
+ {
+ "name": "Justin Rainbow",
+ "email": "justin.rainbow@gmail.com"
+ },
+ {
+ "name": "Igor Wiedler",
+ "email": "igor@wiedler.ch"
+ },
+ {
+ "name": "Robert Schönthal",
+ "email": "seroscho@googlemail.com"
+ }
+ ],
+ "description": "A library to validate a json schema.",
+ "homepage": "https://github.com/justinrainbow/json-schema",
+ "keywords": [
+ "json",
+ "schema"
+ ],
+ "support": {
+ "issues": "https://github.com/justinrainbow/json-schema/issues",
+ "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13"
+ },
+ "time": "2023-09-26T02:20:38+00:00"
+ },
+ {
+ "name": "league/flysystem",
+ "version": "1.1.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem.git",
+ "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1",
+ "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1",
+ "shasum": ""
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "league/mime-type-detection": "^1.3",
+ "php": "^7.2.5 || ^8.0"
+ },
+ "conflict": {
+ "league/flysystem-sftp": "<1.0.6"
+ },
+ "require-dev": {
+ "phpspec/prophecy": "^1.11.1",
+ "phpunit/phpunit": "^8.5.8"
+ },
+ "suggest": {
+ "ext-ftp": "Allows you to use FTP server storage",
+ "ext-openssl": "Allows you to use FTPS server storage",
+ "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
+ "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
+ "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
+ "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
+ "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
+ "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
+ "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
+ "league/flysystem-webdav": "Allows you to use WebDAV storage",
+ "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
+ "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
+ "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frenky.net"
+ }
+ ],
+ "description": "Filesystem abstraction: Many filesystems, one API.",
+ "keywords": [
+ "Cloud Files",
+ "WebDAV",
+ "abstraction",
+ "aws",
+ "cloud",
+ "copy.com",
+ "dropbox",
+ "file systems",
+ "files",
+ "filesystem",
+ "filesystems",
+ "ftp",
+ "rackspace",
+ "remote",
+ "s3",
+ "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": "2022-10-04T09:16:37+00:00"
+ },
+ {
+ "name": "league/mime-type-detection",
+ "version": "1.14.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/mime-type-detection.git",
+ "reference": "b6a5854368533df0295c5761a0253656a2e52d9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e",
+ "reference": "b6a5854368533df0295c5761a0253656a2e52d9e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.2",
+ "phpstan/phpstan": "^0.12.68",
+ "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\MimeTypeDetection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "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.14.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/frankdejonge",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-10-17T14:13:20+00:00"
+ },
+ {
+ "name": "level-level/wp-browser-woocommerce",
+ "version": "0.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/level-level/wp-browser-woocommerce.git",
+ "reference": "89488fbafc8043c3a2e290950b0d36758a566ea5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/level-level/wp-browser-woocommerce/zipball/89488fbafc8043c3a2e290950b0d36758a566ea5",
+ "reference": "89488fbafc8043c3a2e290950b0d36758a566ea5",
+ "shasum": ""
+ },
+ "require": {
+ "lucatume/wp-browser": "^2|^3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "LevelLevel\\WPBrowserWooCommerce\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "WooCommerce object factories for WP Browser integration tests.",
+ "support": {
+ "issues": "https://github.com/level-level/wp-browser-woocommerce/issues",
+ "source": "https://github.com/level-level/wp-browser-woocommerce/tree/0.1.8"
+ },
+ "time": "2022-12-30T08:36:19+00:00"
+ },
+ {
+ "name": "lucatume/wp-browser",
+ "version": "3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/lucatume/wp-browser.git",
+ "reference": "95a189fda634fd52cb44eebbbda3fabe0fdabdb2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/lucatume/wp-browser/zipball/95a189fda634fd52cb44eebbbda3fabe0fdabdb2",
+ "reference": "95a189fda634fd52cb44eebbbda3fabe0fdabdb2",
+ "shasum": ""
+ },
+ "require": {
+ "antecedent/patchwork": "^2.0",
+ "bordoni/phpass": "^0.3",
+ "codeception/codeception": "^4",
+ "codeception/module-asserts": "^1.0",
+ "codeception/module-cli": "^1.0",
+ "codeception/module-db": "^1.0",
+ "codeception/module-filesystem": "^1.0",
+ "codeception/module-phpbrowser": "^1.0",
+ "codeception/module-webdriver": "^1.0",
+ "codeception/util-universalframework": "^1.0",
+ "dg/mysql-dump": "^1.3",
+ "ext-fileinfo": "*",
+ "ext-json": "*",
+ "ext-pdo": "*",
+ "mikehaertl/php-shellcommand": "^1.6",
+ "mikemclin/laravel-wp-password": "~2.0.0",
+ "php": ">=5.6.0",
+ "vria/nodiacritic": "^0.1.2",
+ "wp-cli/wp-cli": ">=2.0 <3.0.0",
+ "zordius/lightncandy": "^1.2"
+ },
+ "conflict": {
+ "codeception/module-asserts": ">=2.0",
+ "codeception/module-cli": ">=2.0",
+ "codeception/module-db": ">=2.0",
+ "codeception/module-filesystem": ">=2.0",
+ "codeception/module-phpbrowser": ">=2.0",
+ "codeception/module-webdriver": ">=2.0",
+ "codeception/util-universalframework": ">=2.0"
+ },
+ "require-dev": {
+ "erusev/parsedown": "^1.7",
+ "gumlet/php-image-resize": "^1.6",
+ "lucatume/codeception-snapshot-assertions": "^0.2",
+ "mikey179/vfsstream": "^1.6",
+ "symfony/translation": "^3.4",
+ "victorjonsson/markdowndocs": "dev-master",
+ "vlucas/phpdotenv": "^3.0",
+ "wp-cli/wp-cli-bundle": "*"
+ },
+ "suggest": {
+ "codeception/module-asserts:^1.0": "Codeception 4.0 compatibility.",
+ "codeception/module-cli:^1.0": "Codeception 4.0 compatibility; required by the WPCLI module.",
+ "codeception/module-db:^1.0": "Codeception 4.0 compatibility; required by the WPDb module, PHP 5.6 compatible version.",
+ "codeception/module-filesystem:^1.0": "Codeception 4.0 compatibility; required by the WPFilesystem module.",
+ "codeception/module-phpbrowser:^1.0": "Codeception 4.0 compatibility; required by the WPBrowser module.",
+ "codeception/module-webdriver:^1.0": "Codeception 4.0 compatibility; required by the WPWebDriver module.",
+ "codeception/util-universalframework:^1.0": "Codeception 4.0 compatibility; required by the WordPress framework module.",
+ "gumlet/php-image-resize": "To handle runtime image modification in the WPDb::haveAttachmentInDatabase method.",
+ "vlucas/phpdotenv:^4.0": "To manage more complex environment file based configuration of the suites."
+ },
+ "type": "library",
+ "extra": {
+ "_hash": "484f861f69198089cab0e642f27e5653"
+ },
+ "autoload": {
+ "files": [
+ "src/tad/WPBrowser/utils.php",
+ "src/tad/WPBrowser/wp-polyfills.php"
+ ],
+ "psr-4": {
+ "tad\\": "src/tad",
+ "Codeception\\": "src/Codeception",
+ "lucatume\\WPBrowser\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "theAverageDev (Luca Tumedei)",
+ "email": "luca@theaveragedev.com",
+ "homepage": "http://theaveragedev.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "WordPress extension of the PhpBrowser class.",
+ "homepage": "http://github.com/lucatume/wp-browser",
+ "keywords": [
+ "codeception",
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/lucatume/wp-browser/issues",
+ "source": "https://github.com/lucatume/wp-browser/tree/3.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/lucatume",
+ "type": "github"
+ }
+ ],
+ "time": "2023-09-21T06:36:09+00:00"
+ },
+ {
+ "name": "mikehaertl/php-shellcommand",
+ "version": "1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mikehaertl/php-shellcommand.git",
+ "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mikehaertl/php-shellcommand/zipball/e79ea528be155ffdec6f3bf1a4a46307bb49e545",
+ "reference": "e79ea528be155ffdec6f3bf1a4a46307bb49e545",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">= 5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">4.0 <=9.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "mikehaertl\\shellcommand\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Härtl",
+ "email": "haertl.mike@gmail.com"
+ }
+ ],
+ "description": "An object oriented interface to shell commands",
+ "keywords": [
+ "shell"
+ ],
+ "support": {
+ "issues": "https://github.com/mikehaertl/php-shellcommand/issues",
+ "source": "https://github.com/mikehaertl/php-shellcommand/tree/1.7.0"
+ },
+ "time": "2023-04-19T08:25:22+00:00"
+ },
+ {
+ "name": "mikemclin/laravel-wp-password",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mikemclin/laravel-wp-password.git",
+ "reference": "5225c95f75aa0a5ad4040ec2074d1c8d7f10b5f4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mikemclin/laravel-wp-password/zipball/5225c95f75aa0a5ad4040ec2074d1c8d7f10b5f4",
+ "reference": "5225c95f75aa0a5ad4040ec2074d1c8d7f10b5f4",
+ "shasum": ""
+ },
+ "require": {
+ "bordoni/phpass": "0.3.*",
+ "illuminate/support": ">=4.0.0",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "~0.9",
+ "phpunit/phpunit": "~4.0",
+ "satooshi/php-coveralls": "^2.2"
+ },
+ "type": "laravel-package",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "MikeMcLin\\WpPassword\\WpPasswordProvider"
+ ],
+ "aliases": {
+ "WpPassword": "MikeMcLin\\WpPassword\\Facades\\WpPassword"
+ }
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "MikeMcLin\\WpPassword\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike McLin",
+ "email": "mike@mikemclin.com",
+ "homepage": "http://mikemclin.net"
+ }
+ ],
+ "description": "Laravel package that checks and creates WordPress password hashes",
+ "homepage": "https://github.com/mikemclin/laravel-wp-password",
+ "keywords": [
+ "hashing",
+ "laravel",
+ "password",
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/mikemclin/laravel-wp-password/issues",
+ "source": "https://github.com/mikemclin/laravel-wp-password/tree/2.0.3"
+ },
+ "time": "2021-09-30T13:48:57+00:00"
+ },
+ {
+ "name": "mustache/mustache",
+ "version": "v2.14.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/bobthecow/mustache.php.git",
+ "reference": "e62b7c3849d22ec55f3ec425507bf7968193a6cb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/e62b7c3849d22ec55f3ec425507bf7968193a6cb",
+ "reference": "e62b7c3849d22ec55f3ec425507bf7968193a6cb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.4"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "~1.11",
+ "phpunit/phpunit": "~3.7|~4.0|~5.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Mustache": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Justin Hileman",
+ "email": "justin@justinhileman.info",
+ "homepage": "http://justinhileman.com"
+ }
+ ],
+ "description": "A Mustache implementation in PHP.",
+ "homepage": "https://github.com/bobthecow/mustache.php",
+ "keywords": [
+ "mustache",
+ "templating"
+ ],
+ "support": {
+ "issues": "https://github.com/bobthecow/mustache.php/issues",
+ "source": "https://github.com/bobthecow/mustache.php/tree/v2.14.2"
+ },
+ "time": "2022-08-23T13:07:01+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.11.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+ "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ],
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-03-08T13:26:56+00:00"
+ },
+ {
+ "name": "nesbot/carbon",
+ "version": "2.71.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/briannesbitt/Carbon.git",
+ "reference": "98276233188583f2ff845a0f992a235472d9466a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/98276233188583f2ff845a0f992a235472d9466a",
+ "reference": "98276233188583f2ff845a0f992a235472d9466a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^7.1.8 || ^8.0",
+ "psr/clock": "^1.0",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0"
+ },
+ "provide": {
+ "psr/clock-implementation": "1.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.0 || ^3.1.4",
+ "doctrine/orm": "^2.7",
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "kylekatarnls/multi-tester": "^2.0",
+ "ondrejmirtes/better-reflection": "*",
+ "phpmd/phpmd": "^2.9",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12.99 || ^1.7.14",
+ "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20",
+ "squizlabs/php_codesniffer": "^3.4"
+ },
+ "bin": [
+ "bin/carbon"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-3.x": "3.x-dev",
+ "dev-master": "2.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Carbon\\Laravel\\ServiceProvider"
+ ]
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Carbon\\": "src/Carbon/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "https://markido.com"
+ },
+ {
+ "name": "kylekatarnls",
+ "homepage": "https://github.com/kylekatarnls"
+ }
+ ],
+ "description": "An API extension for DateTime that supports 281 different languages.",
+ "homepage": "https://carbon.nesbot.com",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "support": {
+ "docs": "https://carbon.nesbot.com/docs",
+ "issues": "https://github.com/briannesbitt/Carbon/issues",
+ "source": "https://github.com/briannesbitt/Carbon"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon#sponsor",
+ "type": "opencollective"
+ },
+ {
+ "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-09-25T11:31:05+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.17.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
+ "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1"
+ },
+ "time": "2023-08-13T19:53:39+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "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.3"
+ },
+ "time": "2021-07-20T11:28:43+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "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"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "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": "php-webdriver/webdriver",
+ "version": "1.15.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-webdriver/php-webdriver.git",
+ "reference": "cd52d9342c5aa738c2e75a67e47a1b6df97154e8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/cd52d9342c5aa738c2e75a67e47a1b6df97154e8",
+ "reference": "cd52d9342c5aa738c2e75a67e47a1b6df97154e8",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "ext-json": "*",
+ "ext-zip": "*",
+ "php": "^7.3 || ^8.0",
+ "symfony/polyfill-mbstring": "^1.12",
+ "symfony/process": "^5.0 || ^6.0 || ^7.0"
+ },
+ "replace": {
+ "facebook/webdriver": "*"
+ },
+ "require-dev": {
+ "ergebnis/composer-normalize": "^2.20.0",
+ "ondram/ci-detector": "^4.0",
+ "php-coveralls/php-coveralls": "^2.4",
+ "php-mock/php-mock-phpunit": "^2.0",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpunit/phpunit": "^9.3",
+ "squizlabs/php_codesniffer": "^3.5",
+ "symfony/var-dumper": "^5.0 || ^6.0"
+ },
+ "suggest": {
+ "ext-SimpleXML": "For Firefox profile creation"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "lib/Exception/TimeoutException.php"
+ ],
+ "psr-4": {
+ "Facebook\\WebDriver\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A PHP client for Selenium WebDriver. Previously facebook/webdriver.",
+ "homepage": "https://github.com/php-webdriver/php-webdriver",
+ "keywords": [
+ "Chromedriver",
+ "geckodriver",
+ "php",
+ "selenium",
+ "webdriver"
+ ],
+ "support": {
+ "issues": "https://github.com/php-webdriver/php-webdriver/issues",
+ "source": "https://github.com/php-webdriver/php-webdriver/tree/1.15.1"
+ },
+ "time": "2023-10-20T12:21:20+00:00"
+ },
+ {
+ "name": "phpcompatibility/php-compatibility",
+ "version": "9.3.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
+ "reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
+ "reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3",
+ "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
+ },
+ "conflict": {
+ "squizlabs/php_codesniffer": "2.6.2"
+ },
+ "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": [
+ "LGPL-3.0-or-later"
+ ],
+ "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"
+ }
+ ],
+ "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
+ "homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
+ "keywords": [
+ "compatibility",
+ "phpcs",
+ "standards"
+ ],
+ "support": {
+ "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues",
+ "source": "https://github.com/PHPCompatibility/PHPCompatibility"
+ },
+ "time": "2019-12-27T09:44:58+00:00"
+ },
+ {
+ "name": "phpcompatibility/phpcompatibility-paragonie",
+ "version": "1.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git",
+ "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/bba5a9dfec7fcfbd679cfaf611d86b4d3759da26",
+ "reference": "bba5a9dfec7fcfbd679cfaf611d86b4d3759da26",
+ "shasum": ""
+ },
+ "require": {
+ "phpcompatibility/php-compatibility": "^9.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
+ "paragonie/random_compat": "dev-master",
+ "paragonie/sodium_compat": "dev-master"
+ },
+ "suggest": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || 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": [
+ "LGPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Wim Godden",
+ "role": "lead"
+ },
+ {
+ "name": "Juliette Reinders Folmer",
+ "role": "lead"
+ }
+ ],
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues",
+ "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie"
+ },
+ "time": "2022-10-25T01:46:02+00:00"
+ },
+ {
+ "name": "phpcompatibility/phpcompatibility-wp",
+ "version": "2.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git",
+ "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5",
+ "reference": "b6c1e3ee1c35de6c41a511d5eb9bd03e447480a5",
+ "shasum": ""
+ },
+ "require": {
+ "phpcompatibility/php-compatibility": "^9.0",
+ "phpcompatibility/phpcompatibility-paragonie": "^1.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7"
+ },
+ "suggest": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || 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": [
+ "LGPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Wim Godden",
+ "role": "lead"
+ },
+ {
+ "name": "Juliette Reinders Folmer",
+ "role": "lead"
+ }
+ ],
+ "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",
+ "static analysis",
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues",
+ "source": "https://github.com/PHPCompatibility/PHPCompatibilityWP"
+ },
+ "time": "2022-10-24T09:00:36+00:00"
+ },
+ {
+ "name": "phpcsstandards/phpcsextra",
+ "version": "1.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPCSStandards/PHPCSExtra.git",
+ "reference": "746c3190ba8eb2f212087c947ba75f4f5b9a58d5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/746c3190ba8eb2f212087c947ba75f4f5b9a58d5",
+ "reference": "746c3190ba8eb2f212087c947ba75f4f5b9a58d5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4",
+ "phpcsstandards/phpcsutils": "^1.0.8",
+ "squizlabs/php_codesniffer": "^3.7.1"
+ },
+ "require-dev": {
+ "php-parallel-lint/php-console-highlighter": "^1.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3.2",
+ "phpcsstandards/phpcsdevcs": "^1.1.6",
+ "phpcsstandards/phpcsdevtools": "^1.2.1",
+ "phpunit/phpunit": "^4.5 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "type": "phpcodesniffer-standard",
+ "extra": {
+ "branch-alias": {
+ "dev-stable": "1.x-dev",
+ "dev-develop": "1.x-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Juliette Reinders Folmer",
+ "homepage": "https://github.com/jrfnl",
+ "role": "lead"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/PHPCSStandards/PHPCSExtra/graphs/contributors"
+ }
+ ],
+ "description": "A collection of sniffs and standards for use with PHP_CodeSniffer.",
+ "keywords": [
+ "PHP_CodeSniffer",
+ "phpcbf",
+ "phpcodesniffer-standard",
+ "phpcs",
+ "standards",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/PHPCSStandards/PHPCSExtra/issues",
+ "source": "https://github.com/PHPCSStandards/PHPCSExtra"
+ },
+ "time": "2023-09-20T22:06:18+00:00"
+ },
+ {
+ "name": "phpcsstandards/phpcsutils",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPCSStandards/PHPCSUtils.git",
+ "reference": "69465cab9d12454e5e7767b9041af0cd8cd13be7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/69465cab9d12454e5e7767b9041af0cd8cd13be7",
+ "reference": "69465cab9d12454e5e7767b9041af0cd8cd13be7",
+ "shasum": ""
+ },
+ "require": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0",
+ "php": ">=5.4",
+ "squizlabs/php_codesniffer": "^3.7.1 || 4.0.x-dev@dev"
+ },
+ "require-dev": {
+ "ext-filter": "*",
+ "php-parallel-lint/php-console-highlighter": "^1.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3.2",
+ "phpcsstandards/phpcsdevcs": "^1.1.6",
+ "yoast/phpunit-polyfills": "^1.0.5 || ^2.0.0"
+ },
+ "type": "phpcodesniffer-standard",
+ "extra": {
+ "branch-alias": {
+ "dev-stable": "1.x-dev",
+ "dev-develop": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "PHPCSUtils/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Juliette Reinders Folmer",
+ "homepage": "https://github.com/jrfnl",
+ "role": "lead"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/PHPCSStandards/PHPCSUtils/graphs/contributors"
+ }
+ ],
+ "description": "A suite of utility functions for use with PHP_CodeSniffer",
+ "homepage": "https://phpcsutils.com/",
+ "keywords": [
+ "PHP_CodeSniffer",
+ "phpcbf",
+ "phpcodesniffer-standard",
+ "phpcs",
+ "phpcs3",
+ "standards",
+ "static analysis",
+ "tokens",
+ "utility"
+ ],
+ "support": {
+ "docs": "https://phpcsutils.com/",
+ "issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues",
+ "source": "https://github.com/PHPCSStandards/PHPCSUtils"
+ },
+ "time": "2023-07-16T21:39:41+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "9.2.29",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76",
+ "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.15",
+ "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": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "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": "9.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": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "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.29"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-09-19T04:57:46+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "3.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.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": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "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-invoker",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "shasum": ""
+ },
+ "require": {
+ "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/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "keywords": [
+ "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": "2020-09-28T05:58:55+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "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",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "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": "2020-10-26T05:33:50+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.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": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "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": "9.6.13",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be",
+ "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1 || ^2",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "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-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"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.6-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ],
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "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.13"
+ },
+ "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": "2023-09-19T05:39:22+00:00"
+ },
+ {
+ "name": "pluginever/framework-model",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "git@github.com:pluginever/framework-model.git",
+ "reference": "5a5de16e378f2a7a3b8ba95d1eb3569f7a3a6574"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/pluginever/framework-model/zipball/5a5de16e378f2a7a3b8ba95d1eb3569f7a3a6574",
+ "reference": "5a5de16e378f2a7a3b8ba95d1eb3569f7a3a6574",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "byteever/byteever-sniffs": "dev-master"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Lib\\": "src"
+ }
+ },
+ "scripts": {
+ "phpcs": [
+ "@php ./vendor/bin/phpcs --standard=phpcs.xml -s -v"
+ ],
+ "phpcbf": [
+ "@php ./vendor/bin/phpcbf --standard=phpcs.xml -v"
+ ]
+ },
+ "license": [
+ "GPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Sultan Nasir Uddin",
+ "email": "manikdrmc@gmail.com"
+ }
+ ],
+ "description": "Model for the framework",
+ "support": {
+ "source": "https://github.com/pluginever/framework-model/tree/v1.0.8",
+ "issues": "https://github.com/pluginever/framework-model/issues"
+ },
+ "time": "2023-10-25T08:49:24+00:00"
+ },
+ {
+ "name": "pluginever/framework-plugin",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "git@github.com:pluginever/framework-plugin.git",
+ "reference": "dd76127abd4a0c6dd8253fe6b885a807dfe8e4e0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/pluginever/framework-plugin/zipball/dd76127abd4a0c6dd8253fe6b885a807dfe8e4e0",
+ "reference": "dd76127abd4a0c6dd8253fe6b885a807dfe8e4e0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "byteever/byteever-sniffs": "dev-master"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Lib\\": "src"
+ }
+ },
+ "scripts": {
+ "phpcs": [
+ "@php ./vendor/bin/phpcs --standard=phpcs.xml -s -v"
+ ],
+ "phpcbf": [
+ "@php ./vendor/bin/phpcbf --standard=phpcs.xml -v"
+ ]
+ },
+ "license": [
+ "GPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Sultan Nasir Uddin",
+ "email": "manikdrmc@gmail.com"
+ }
+ ],
+ "description": "A set of related classes to kick start WordPress plugin development.",
+ "support": {
+ "source": "https://github.com/pluginever/framework-plugin/tree/v1.0.8",
+ "issues": "https://github.com/pluginever/framework-plugin/issues"
+ },
+ "time": "2023-10-25T08:44:40+00:00"
+ },
+ {
+ "name": "pluginever/framework-settings",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "git@github.com:pluginever/framework-settings.git",
+ "reference": "f80a91b9a3aef06c56d85a5f3e097da7b9386a80"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/pluginever/framework-settings/zipball/f80a91b9a3aef06c56d85a5f3e097da7b9386a80",
+ "reference": "f80a91b9a3aef06c56d85a5f3e097da7b9386a80",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "byteever/byteever-sniffs": "dev-master"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Lib\\": "src"
+ }
+ },
+ "scripts": {
+ "phpcs": [
+ "@php ./vendor/bin/phpcs --standard=phpcs.xml -s -v"
+ ],
+ "phpcbf": [
+ "@php ./vendor/bin/phpcbf --standard=phpcs.xml -v"
+ ]
+ },
+ "license": [
+ "GPL-3.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "Sultan Nasir Uddin",
+ "email": "manikdrmc@gmail.com"
+ }
+ ],
+ "description": "A set of related classes to kick start WordPress plugin development.",
+ "support": {
+ "source": "https://github.com/pluginever/framework-settings/tree/v1.0.4",
+ "issues": "https://github.com/pluginever/framework-settings/issues"
+ },
+ "time": "2023-10-25T08:44:07+00:00"
+ },
+ {
+ "name": "psr/clock",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/clock.git",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Clock\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for reading the clock.",
+ "homepage": "https://github.com/php-fig/clock",
+ "keywords": [
+ "clock",
+ "now",
+ "psr",
+ "psr-20",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/clock/issues",
+ "source": "https://github.com/php-fig/clock/tree/1.0.0"
+ },
+ "time": "2022-11-25T14:36:26+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://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/2.0.2"
+ },
+ "time": "2021-11-05T16:47:00+00:00"
+ },
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
+ },
+ {
+ "name": "psr/http-client",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
+ "keywords": [
+ "http",
+ "http-client",
+ "psr",
+ "psr-18"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-client"
+ },
+ "time": "2023-09-23T14:17:50+00:00"
+ },
+ {
+ "name": "psr/http-factory",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "e616d01114759c4c489f93b099585439f795fe35"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
+ "reference": "e616d01114759c4c489f93b099585439f795fe35",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory/tree/1.0.2"
+ },
+ "time": "2023-04-10T20:10:41+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
+ },
+ "time": "2023-04-04T09:54:51+00:00"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
+ },
+ "time": "2021-10-29T13:26:27+00:00"
+ },
+ {
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ },
+ "time": "2019-03-08T08:55:37+00:00"
+ },
+ {
+ "name": "sebastian/cli-parser",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.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 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.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:08:49+00:00"
+ },
+ {
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.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": "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": "2020-10-26T13:08:54+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "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": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "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": "4.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
+ "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^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"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "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.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.7",
+ "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.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:52:27+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
+ "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "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"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-05-07T05:35:17+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "5.1.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
+ "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "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": "4.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+ "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "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"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "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": "https://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-09-14T06:03:37+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "5.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "bde739e7565280bda77be70044ac1047bc007e34"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34",
+ "reference": "bde739e7565280bda77be70044ac1047bc007e34",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-08-02T09:26:13+00:00"
+ },
+ {
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.6",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.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 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.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-28T06:42:11+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/",
+ "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": "4.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
+ "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "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"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "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": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:45:17+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": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.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 that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "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": "softcreatr/jsonpath",
+ "version": "0.7.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/SoftCreatR/JSONPath.git",
+ "reference": "008569bf80aa3584834f7890781576bc7b65afa7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/SoftCreatR/JSONPath/zipball/008569bf80aa3584834f7890781576bc7b65afa7",
+ "reference": "008569bf80aa3584834f7890781576bc7b65afa7",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": ">=7.1"
+ },
+ "replace": {
+ "flow/jsonpath": "*"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=7.0",
+ "roave/security-advisories": "dev-master",
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Flow\\JSONPath\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Stephen Frank",
+ "email": "stephen@flowsa.com",
+ "homepage": "https://prismaticbytes.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Sascha Greuel",
+ "email": "hello@1-2.dev",
+ "homepage": "http://1-2.dev",
+ "role": "Developer"
+ }
+ ],
+ "description": "JSONPath implementation for parsing, searching and flattening arrays",
+ "support": {
+ "email": "hello@1-2.dev",
+ "forum": "https://github.com/SoftCreatR/JSONPath/discussions",
+ "issues": "https://github.com/SoftCreatR/JSONPath/issues",
+ "source": "https://github.com/SoftCreatR/JSONPath"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/softcreatr",
+ "type": "github"
+ }
+ ],
+ "time": "2021-06-02T22:15:26+00:00"
+ },
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "3.7.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+ "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879",
+ "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "bin": [
+ "bin/phpcs",
+ "bin/phpcbf"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Greg Sherwood",
+ "role": "lead"
+ }
+ ],
+ "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",
+ "keywords": [
+ "phpcs",
+ "standards",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
+ "source": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
+ },
+ "time": "2023-02-22T23:07:41+00:00"
+ },
+ {
+ "name": "symfony/browser-kit",
+ "version": "v5.4.21",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/browser-kit.git",
+ "reference": "a866ca7e396f15d7efb6d74a8a7d364d4e05b704"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a866ca7e396f15d7efb6d74a8a7d364d4e05b704",
+ "reference": "a866ca7e396f15d7efb6d74a8a7d364d4e05b704",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/dom-crawler": "^4.4|^5.0|^6.0",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "require-dev": {
+ "symfony/css-selector": "^4.4|^5.0|^6.0",
+ "symfony/http-client": "^4.4|^5.0|^6.0",
+ "symfony/mime": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0"
+ },
+ "suggest": {
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\BrowserKit\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/browser-kit/tree/v5.4.21"
+ },
+ "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": "2023-02-14T08:03:56+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v5.4.28",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "f4f71842f24c2023b91237c72a365306f3c58827"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/f4f71842f24c2023b91237c72a365306f3c58827",
+ "reference": "f4f71842f24c2023b91237c72a365306f3c58827",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "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",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<4.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0"
+ },
+ "require-dev": {
+ "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",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "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.28"
+ },
+ "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": "2023-08-07T06:12:30+00:00"
+ },
+ {
+ "name": "symfony/css-selector",
+ "version": "v5.4.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/css-selector.git",
+ "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a",
+ "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\CssSelector\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Jean-François Simon",
+ "email": "jeanfrancois.simon@sensiolabs.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Converts CSS selectors to XPath expressions",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/css-selector/tree/v5.4.26"
+ },
+ "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": "2023-07-07T06:10:25+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2"
+ },
+ "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": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/dom-crawler",
+ "version": "v5.4.25",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dom-crawler.git",
+ "reference": "d2aefa5a7acc5511422792931d14d1be96fe9fea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d2aefa5a7acc5511422792931d14d1be96fe9fea",
+ "reference": "d2aefa5a7acc5511422792931d14d1be96fe9fea",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "conflict": {
+ "masterminds/html5": "<2.6"
+ },
+ "require-dev": {
+ "masterminds/html5": "^2.6",
+ "symfony/css-selector": "^4.4|^5.0|^6.0"
+ },
+ "suggest": {
+ "symfony/css-selector": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\DomCrawler\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases DOM navigation for HTML and XML documents",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/dom-crawler/tree/v5.4.25"
+ },
+ "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": "2023-06-05T08:05:41+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v5.4.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/5dcc00e03413f05c1e7900090927bb7247cb0aac",
+ "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/event-dispatcher-contracts": "^2|^3",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<4.4"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "2.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/error-handler": "^4.4|^5.0|^6.0",
+ "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/http-foundation": "^4.4|^5.0|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/stopwatch": "^4.4|^5.0|^6.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.26"
+ },
+ "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": "2023-07-06T06:34:20+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "7bc61cc2db649b4637d331240c5346dcc7708051"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051",
+ "reference": "7bc61cc2db649b4637d331240c5346dcc7708051",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/event-dispatcher": "^1"
+ },
+ "suggest": {
+ "symfony/event-dispatcher-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.2"
+ },
+ "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": "2022-01-02T09:55:41+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v5.4.27",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d",
+ "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v5.4.27"
+ },
+ "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": "2023-07-31T08:02:31+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.28.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
+ "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.28-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "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.28.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": "2023-01-26T09:26:14+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.28.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "875e90aeea2777b6f135677f618529449334a612"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612",
+ "reference": "875e90aeea2777b6f135677f618529449334a612",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.28-dev"
+ },
+ "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": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.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": "2023-01-26T09:26:14+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.28.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
+ "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.28-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.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": "2023-01-26T09:26:14+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.28.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "42292d99c55abe617799667f454222c54c60e229"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
+ "reference": "42292d99c55abe617799667f454222c54c60e229",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.28-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.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": "2023-07-28T09:04:16+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.28.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5",
+ "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.28-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.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": "2023-01-26T09:26:14+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.28.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
+ "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.28-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.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": "2023-01-26T09:26:14+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v6.0.19",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "2114fd60f26a296cc403a7939ab91478475a33d4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/2114fd60f26a296cc403a7939ab91478475a33d4",
+ "reference": "2114fd60f26a296cc403a7939ab91478475a33d4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Executes commands in sub-processes",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v6.0.19"
+ },
+ "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": "2023-01-01T08:36:10+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66",
+ "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "psr/container": "^2.0"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v3.0.2"
+ },
+ "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": "2022-05-30T19:17:58+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v6.0.19",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "d9e72497367c23e08bf94176d2be45b00a9d232a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/d9e72497367c23e08bf94176d2be45b00a9d232a",
+ "reference": "d9e72497367c23e08bf94176d2be45b00a9d232a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/translation-contracts": "<2.0"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/translation-contracts": "^2.0|^3.0",
+ "symfony/var-exporter": "^5.4|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "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",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v6.0.19"
+ },
+ "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": "2023-01-01T08:36:10+00:00"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v6.0.19",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "9c24b3fdbbe9fb2ef3a6afd8bbaadfd72dad681f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/9c24b3fdbbe9fb2ef3a6afd8bbaadfd72dad681f",
+ "reference": "9c24b3fdbbe9fb2ef3a6afd8bbaadfd72dad681f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/translation-contracts": "^2.3|^3.0"
+ },
+ "conflict": {
+ "symfony/config": "<5.4",
+ "symfony/console": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/twig-bundle": "<5.4",
+ "symfony/yaml": "<5.4"
+ },
+ "provide": {
+ "symfony/translation-implementation": "2.3|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/http-client-contracts": "^1.1|^2.0|^3.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/intl": "^5.4|^6.0",
+ "symfony/polyfill-intl-icu": "^1.21",
+ "symfony/service-contracts": "^1.1.2|^2|^3",
+ "symfony/yaml": "^5.4|^6.0"
+ },
+ "suggest": {
+ "psr/log-implementation": "To use logging capability in translator",
+ "symfony/config": "",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools to internationalize your application",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/translation/tree/v6.0.19"
+ },
+ "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": "2023-01-01T08:36:10+00:00"
+ },
+ {
+ "name": "symfony/translation-contracts",
+ "version": "v3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "acbfbb274e730e5a0236f619b6168d9dedb3e282"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/acbfbb274e730e5a0236f619b6168d9dedb3e282",
+ "reference": "acbfbb274e730e5a0236f619b6168d9dedb3e282",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "suggest": {
+ "symfony/translation-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to translation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.0.2"
+ },
+ "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": "2022-06-27T17:10:44+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v5.4.23",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b",
+ "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "symfony/console": "<5.3"
+ },
+ "require-dev": {
+ "symfony/console": "^5.3|^6.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
+ },
+ "bin": [
+ "Resources/bin/yaml-lint"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Loads and dumps YAML files",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/yaml/tree/v5.4.23"
+ },
+ "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": "2023-04-23T19:33:36+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "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.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2021-07-28T10:34:58+00:00"
+ },
+ {
+ "name": "voku/portable-ascii",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/voku/portable-ascii.git",
+ "reference": "b56450eed252f6801410d810c8e1727224ae0743"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743",
+ "reference": "b56450eed252f6801410d810c8e1727224ae0743",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
+ },
+ "suggest": {
+ "ext-intl": "Use Intl for transliterator_transliterate() support"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "voku\\": "src/voku/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Lars Moelleken",
+ "homepage": "http://www.moelleken.org/"
+ }
+ ],
+ "description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
+ "homepage": "https://github.com/voku/portable-ascii",
+ "keywords": [
+ "ascii",
+ "clean",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/voku/portable-ascii/issues",
+ "source": "https://github.com/voku/portable-ascii/tree/2.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.me/moelleken",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/voku",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/portable-ascii",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://www.patreon.com/voku",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-03-08T17:03:00+00:00"
+ },
+ {
+ "name": "vria/nodiacritic",
+ "version": "0.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vria/nodiacritic.git",
+ "reference": "3efeb60fb2586fe3ce8ff0f3c122d380717b8b07"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vria/nodiacritic/zipball/3efeb60fb2586fe3ce8ff0f3c122d380717b8b07",
+ "reference": "3efeb60fb2586fe3ce8ff0f3c122d380717b8b07",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.8.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "VRia\\Utils\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Riabchenko Vlad",
+ "email": "contact@vria.eu",
+ "homepage": "http://vria.eu"
+ }
+ ],
+ "description": "Tiny helper function that removes all diacritical signs from characters",
+ "homepage": "https://github.com/vria/nodiacritic",
+ "keywords": [
+ "accent",
+ "diacritic",
+ "filter",
+ "string",
+ "text"
+ ],
+ "support": {
+ "email": "contact@vria.eu",
+ "issues": "https://github.com/vria/nodiacritic/issues",
+ "source": "https://github.com/vria/nodiacritic/tree/0.1.2"
+ },
+ "time": "2016-09-17T22:03:11+00:00"
+ },
+ {
+ "name": "wp-cli/mustangostang-spyc",
+ "version": "0.6.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wp-cli/spyc.git",
+ "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wp-cli/spyc/zipball/6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7",
+ "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.3.*@dev"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.5.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "includes/functions.php"
+ ],
+ "psr-4": {
+ "Mustangostang\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "mustangostang",
+ "email": "vlad.andersen@gmail.com"
+ }
+ ],
+ "description": "A simple YAML loader/dumper class for PHP (WP-CLI fork)",
+ "homepage": "https://github.com/mustangostang/spyc/",
+ "support": {
+ "source": "https://github.com/wp-cli/spyc/tree/autoload"
+ },
+ "time": "2017-04-25T11:26:20+00:00"
+ },
+ {
+ "name": "wp-cli/php-cli-tools",
+ "version": "v0.11.21",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wp-cli/php-cli-tools.git",
+ "reference": "b3457a8d60cd0b1c48cab76ad95df136d266f0b6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/b3457a8d60cd0b1c48cab76ad95df136d266f0b6",
+ "reference": "b3457a8d60cd0b1c48cab76ad95df136d266f0b6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">= 5.3.0"
+ },
+ "require-dev": {
+ "roave/security-advisories": "dev-latest",
+ "wp-cli/wp-cli-tests": "^4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.11.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/cli/cli.php"
+ ],
+ "psr-0": {
+ "cli": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Bachhuber",
+ "email": "daniel@handbuilt.co",
+ "role": "Maintainer"
+ },
+ {
+ "name": "James Logsdon",
+ "email": "jlogsdon@php.net",
+ "role": "Developer"
+ }
+ ],
+ "description": "Console utilities for PHP",
+ "homepage": "http://github.com/wp-cli/php-cli-tools",
+ "keywords": [
+ "cli",
+ "console"
+ ],
+ "support": {
+ "issues": "https://github.com/wp-cli/php-cli-tools/issues",
+ "source": "https://github.com/wp-cli/php-cli-tools/tree/v0.11.21"
+ },
+ "time": "2023-09-29T15:28:10+00:00"
+ },
+ {
+ "name": "wp-cli/wp-cli",
+ "version": "v2.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wp-cli/wp-cli.git",
+ "reference": "8a3befba2d947fbf5cc6d1941edf2dd99da4d4b7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/8a3befba2d947fbf5cc6d1941edf2dd99da4d4b7",
+ "reference": "8a3befba2d947fbf5cc6d1941edf2dd99da4d4b7",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "mustache/mustache": "^2.14.1",
+ "php": "^5.6 || ^7.0 || ^8.0",
+ "symfony/finder": ">2.7",
+ "wp-cli/mustangostang-spyc": "^0.6.3",
+ "wp-cli/php-cli-tools": "~0.11.2"
+ },
+ "require-dev": {
+ "roave/security-advisories": "dev-latest",
+ "wp-cli/db-command": "^1.3 || ^2",
+ "wp-cli/entity-command": "^1.2 || ^2",
+ "wp-cli/extension-command": "^1.1 || ^2",
+ "wp-cli/package-command": "^1 || ^2",
+ "wp-cli/wp-cli-tests": "^4.0.1"
+ },
+ "suggest": {
+ "ext-readline": "Include for a better --prompt implementation",
+ "ext-zip": "Needed to support extraction of ZIP archives when doing downloads or updates"
+ },
+ "bin": [
+ "bin/wp",
+ "bin/wp.bat"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.9.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "WP_CLI\\": "php/"
+ },
+ "classmap": [
+ "php/class-wp-cli.php",
+ "php/class-wp-cli-command.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "WP-CLI framework",
+ "homepage": "https://wp-cli.org",
+ "keywords": [
+ "cli",
+ "wordpress"
+ ],
+ "support": {
+ "docs": "https://make.wordpress.org/cli/handbook/",
+ "issues": "https://github.com/wp-cli/wp-cli/issues",
+ "source": "https://github.com/wp-cli/wp-cli"
+ },
+ "time": "2023-10-25T09:06:37+00:00"
+ },
+ {
+ "name": "wp-coding-standards/wpcs",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
+ "reference": "b4caf9689f1a0e4a4c632679a44e638c1c67aff1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/b4caf9689f1a0e4a4c632679a44e638c1c67aff1",
+ "reference": "b4caf9689f1a0e4a4c632679a44e638c1c67aff1",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "ext-libxml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlreader": "*",
+ "php": ">=5.4",
+ "phpcsstandards/phpcsextra": "^1.1.0",
+ "phpcsstandards/phpcsutils": "^1.0.8",
+ "squizlabs/php_codesniffer": "^3.7.2"
+ },
+ "require-dev": {
+ "php-parallel-lint/php-console-highlighter": "^1.0.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3.2",
+ "phpcompatibility/php-compatibility": "^9.0",
+ "phpcsstandards/phpcsdevtools": "^1.2.0",
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "suggest": {
+ "ext-iconv": "For improved results",
+ "ext-mbstring": "For improved results"
+ },
+ "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",
+ "static analysis",
+ "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"
+ },
+ "funding": [
+ {
+ "url": "https://opencollective.com/thewpcc/contribute/wp-php-63406",
+ "type": "custom"
+ }
+ ],
+ "time": "2023-09-14T07:06:09+00:00"
+ },
+ {
+ "name": "zordius/lightncandy",
+ "version": "v1.2.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/zordius/lightncandy.git",
+ "reference": "b451f73e8b5c73e62e365997ba3c993a0376b72a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/zordius/lightncandy/zipball/b451f73e8b5c73e62e365997ba3c993a0376b72a",
+ "reference": "b451f73e8b5c73e62e365997ba3c993a0376b72a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "LightnCandy\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Zordius Chen",
+ "email": "zordius@gmail.com"
+ }
+ ],
+ "description": "An extremely fast PHP implementation of handlebars ( http://handlebarsjs.com/ ) and mustache ( http://mustache.github.io/ ).",
+ "homepage": "https://github.com/zordius/lightncandy",
+ "keywords": [
+ "handlebars",
+ "logicless",
+ "mustache",
+ "php",
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/zordius/lightncandy/issues",
+ "source": "https://github.com/zordius/lightncandy/tree/v1.2.6"
+ },
+ "time": "2021-07-11T04:52:41+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "dev",
+ "stability-flags": {
+ "pluginever/framework-model": 20,
+ "pluginever/framework-plugin": 20,
+ "pluginever/framework-settings": 20
+ },
+ "prefer-stable": true,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=7.0"
+ },
+ "platform-dev": [],
+ "plugin-api-version": "2.3.0"
+}
diff --git a/examples/api-test.php b/examples/api-test.txt
similarity index 99%
rename from examples/api-test.php
rename to examples/api-test.txt
index 2dc12629..680db184 100644
--- a/examples/api-test.php
+++ b/examples/api-test.txt
@@ -4,7 +4,6 @@
if ( ! current_user_can( 'manage_options' ) ) { die();
}
-
// API variables, please override.
$base_url = 'http://domain.com';
$email = 'example@domain.com';
diff --git a/languages/wc-serial-numbers.pot b/languages/wc-serial-numbers.pot
index 837daf4d..0a0b85d7 100644
--- a/languages/wc-serial-numbers.pot
+++ b/languages/wc-serial-numbers.pot
@@ -2,9 +2,9 @@
# This file is distributed under the GPLv2+.
msgid ""
msgstr ""
-"Project-Id-Version: Serial Numbers for WooCommerce 1.5.4\n"
+"Project-Id-Version: Serial Numbers for WooCommerce 1.6.5\n"
"Report-Msgid-Bugs-To: https://pluginever.com/plugins/wc-serial-numbers/\n"
-"POT-Creation-Date: 2023-07-26 11:50:29+00:00\n"
+"POT-Creation-Date: 2023-10-25 10:44:49+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -33,153 +33,145 @@ msgstr ""
msgid "Could not update item in the database."
msgstr ""
-#: lib/Lib/Plugin.php:294
+#: lib/Lib/Plugin.php:309
msgid "Go Pro"
msgstr ""
-#: lib/Lib/Plugin.php:640 src/Admin/Settings.php:190
+#: lib/Lib/Plugin.php:655 src/Admin/Settings.php:190
msgid "Documentation"
msgstr ""
-#: lib/Lib/Plugin.php:647
+#: lib/Lib/Plugin.php:662
msgid "Support"
msgstr ""
-#: lib/Lib/Plugin.php:654
+#: lib/Lib/Plugin.php:669
msgid "Review"
msgstr ""
-#: lib/Lib/Plugin.php:660
+#: lib/Lib/Plugin.php:675
msgid "More Plugins"
msgstr ""
-#: lib/Lib/Plugin.php:677 src/Admin/Menus.php:179 src/Admin/Menus.php:180
+#: lib/Lib/Plugin.php:692 src/Admin/Menus.php:169 src/Admin/Menus.php:170
msgid "Settings"
msgstr ""
-#: lib/Lib/Settings.php:84
+#: lib/Lib/Settings.php:96
msgid "Settings saved."
msgstr ""
-#: lib/Lib/Settings.php:248 lib/Lib/Settings.php:339 lib/Lib/Settings.php:348
-#: lib/Lib/Settings.php:357
+#: lib/Lib/Settings.php:310 lib/Lib/Settings.php:398 lib/Lib/Settings.php:406
+#: lib/Lib/Settings.php:414
msgid "Recommended"
msgstr ""
-#: lib/Lib/Settings.php:249 lib/Lib/Settings.php:340 lib/Lib/Settings.php:349
-#: lib/Lib/Settings.php:358
+#: lib/Lib/Settings.php:311 lib/Lib/Settings.php:399 lib/Lib/Settings.php:407
+#: lib/Lib/Settings.php:415
msgid "Install Now"
msgstr ""
-#: lib/Lib/Settings.php:310
+#: lib/Lib/Settings.php:370
msgid "Need Help?"
msgstr ""
-#: lib/Lib/Settings.php:372
+#: lib/Lib/Settings.php:429
msgid "Join our Community"
msgstr ""
-#: lib/Lib/Settings.php:376
+#: lib/Lib/Settings.php:433
msgid "Request a Feature"
msgstr ""
-#: lib/Lib/Settings.php:380
+#: lib/Lib/Settings.php:437
msgid "Report a Bug"
msgstr ""
-#: lib/classes/wp-background-process.php:653
-msgid "Every Minute"
-msgstr ""
-
-#: lib/classes/wp-background-process.php:655
-msgid "Every %d Minutes"
-msgstr ""
-
-#: src/API.php:60
+#: src/API.php:82
msgid "Invalid action."
msgstr ""
-#: src/API.php:71
+#: src/API.php:93
msgid "Invalid product ID."
msgstr ""
-#: src/API.php:81 src/Models/Key.php:494
+#: src/API.php:103 src/Models/Key.php:494
msgid "Serial key is required."
msgstr ""
-#: src/API.php:97
+#: src/API.php:119
msgid "Serial key is invalid."
msgstr ""
-#: src/API.php:107
+#: src/API.php:129
msgid "Serial key is not authorized to use."
msgstr ""
-#: src/API.php:118
+#: src/API.php:140
msgid "Please complete your order to activate the serial key."
msgstr ""
-#: src/API.php:128
+#: src/API.php:150
msgid "Serial key is not valid for this product."
msgstr ""
-#: src/API.php:138
+#: src/API.php:160
msgid "Invalid email address."
msgstr ""
-#: src/API.php:148
+#: src/API.php:170
msgid "Serial key is expired."
msgstr ""
-#: src/API.php:155
+#: src/API.php:177
msgid "Serial key is cancelled."
msgstr ""
-#: src/API.php:162
+#: src/API.php:184
msgid "Invalid serial key."
msgstr ""
-#: src/API.php:181
+#: src/API.php:203
msgid "Serial key is valid."
msgstr ""
-#: src/API.php:220 src/API.php:321
+#: src/API.php:242 src/API.php:343
msgid "Instance is missing, You must provide an instance to deactivate license"
msgstr ""
-#: src/API.php:236
+#: src/API.php:258
msgid "Instance is already activated."
msgstr ""
-#: src/API.php:246
+#: src/API.php:268
msgid "Activation limit reached"
msgstr ""
-#: src/API.php:273
+#: src/API.php:295
msgid "Activation failed."
msgstr ""
-#: src/API.php:282
+#: src/API.php:304
msgid "Serial key is activated."
msgstr ""
-#: src/API.php:337
+#: src/API.php:359
msgid "Instance is not activated."
msgstr ""
-#: src/API.php:347
+#: src/API.php:369
msgid "Deactivation failed."
msgstr ""
-#: src/API.php:356
+#: src/API.php:378
msgid "Serial key is deactivated."
msgstr ""
-#: src/Admin/Actions.php:49
+#: src/Admin/Actions.php:222
msgid "Key added successfully."
msgstr ""
-#: src/Admin/Actions.php:51
+#: src/Admin/Actions.php:224
msgid "Key updated successfully."
msgstr ""
@@ -207,84 +199,84 @@ msgstr ""
msgid "Copied"
msgstr ""
-#: src/Admin/Admin.php:104
+#: src/Admin/Admin.php:108
#. translators: 1: Plugin name 2: WordPress
msgid ""
"Thank you for using %1$s! Share your appreciation with a five-star review "
"%2$s."
msgstr ""
-#: src/Admin/Admin.php:106
+#: src/Admin/Admin.php:110
msgid "Thanks :)"
msgstr ""
-#: src/Admin/Admin.php:124
+#: src/Admin/Admin.php:128
#. translators: 1: Plugin version
msgid "Version %s"
msgstr ""
-#: src/Admin/Admin.php:137 src/Admin/Menus.php:56 src/Admin/Menus.php:97
-#: src/Admin/Menus.php:98 src/Admin/Menus.php:433 src/Admin/Metaboxes.php:33
-#: src/Admin/Metaboxes.php:229 src/Functions/Template.php:226
+#: src/Admin/Admin.php:141 src/Admin/Menus.php:52 src/Admin/Menus.php:87
+#: src/Admin/Menus.php:88 src/Admin/Menus.php:429 src/Admin/Metaboxes.php:36
+#: src/Admin/Metaboxes.php:248 src/Functions/Template.php:226
msgid "Serial Numbers"
msgstr ""
#: src/Admin/ListTables/ActivationsTable.php:39
-#: src/Admin/ListTables/KeysTable.php:321
+#: src/Admin/ListTables/KeysTable.php:355
msgid "Activation"
msgstr ""
-#: src/Admin/ListTables/ActivationsTable.php:40 src/Admin/Menus.php:128
-#: src/Admin/Menus.php:129 src/Admin/Views/html-list-activations.php:18
+#: src/Admin/ListTables/ActivationsTable.php:40 src/Admin/Menus.php:118
+#: src/Admin/Menus.php:119 src/Admin/views/html-list-activations.php:18
msgid "Activations"
msgstr ""
-#: src/Admin/ListTables/ActivationsTable.php:101
+#: src/Admin/ListTables/ActivationsTable.php:100
msgid "No activations found. Once a serial key is activated, it will appear here."
msgstr ""
-#: src/Admin/ListTables/ActivationsTable.php:125
-#: src/Admin/ListTables/KeysTable.php:244
-#: src/Admin/ListTables/StockTable.php:92
+#: src/Admin/ListTables/ActivationsTable.php:113
+#: src/Admin/ListTables/KeysTable.php:279
+#: src/Admin/ListTables/StockTable.php:82
msgid "Filter"
msgstr ""
-#: src/Admin/ListTables/ActivationsTable.php:177
-#: src/Admin/ListTables/ActivationsTable.php:252
-#: src/Admin/ListTables/KeysTable.php:301
-#: src/Admin/ListTables/KeysTable.php:392 src/Admin/Views/html-edit-key.php:132
+#: src/Admin/ListTables/ActivationsTable.php:165
+#: src/Admin/ListTables/ActivationsTable.php:240
+#: src/Admin/ListTables/KeysTable.php:335
+#: src/Admin/ListTables/KeysTable.php:427 src/Admin/views/html-edit-key.php:130
msgid "Delete"
msgstr ""
-#: src/Admin/ListTables/ActivationsTable.php:189
-#: src/Admin/Views/html-api-actions.php:141 src/Frontend/Shortcodes.php:141
+#: src/Admin/ListTables/ActivationsTable.php:177
+#: src/Admin/views/html-api-actions.php:141 src/Frontend/Shortcodes.php:142
msgid "Instance"
msgstr ""
-#: src/Admin/ListTables/ActivationsTable.php:190
-#: src/Admin/ListTables/KeysTable.php:315
-#: src/Admin/ListTables/StockTable.php:105
-#: src/Admin/Views/html-api-actions.php:118
-#: src/Admin/Views/html-api-validation.php:121
-#: src/Admin/Views/html-edit-key.php:39 src/Deprecated/Functions.php:359
-#: src/Frontend/Shortcodes.php:40 src/Frontend/Shortcodes.php:136
+#: src/Admin/ListTables/ActivationsTable.php:178
+#: src/Admin/ListTables/KeysTable.php:349
+#: src/Admin/ListTables/StockTable.php:95 src/Admin/views/html-add-key.php:33
+#: src/Admin/views/html-api-actions.php:118
+#: src/Admin/views/html-api-validation.php:121
+#: src/Admin/views/html-edit-key.php:37 src/Deprecated/Functions.php:358
+#: src/Frontend/Shortcodes.php:40 src/Frontend/Shortcodes.php:137
msgid "Product"
msgstr ""
-#: src/Admin/ListTables/ActivationsTable.php:191
-#: src/Admin/ListTables/KeysTable.php:314 src/Admin/Orders.php:192
-#: src/Admin/Views/html-api-actions.php:131
-#: src/Admin/Views/html-api-validation.php:134 src/Functions/Template.php:42
-#: src/functions.php:998
+#: src/Admin/ListTables/ActivationsTable.php:179
+#: src/Admin/ListTables/KeysTable.php:348 src/Admin/Orders.php:192
+#: src/Admin/views/html-api-actions.php:131
+#: src/Admin/views/html-api-validation.php:134 src/Functions/Template.php:42
+#: src/functions.php:1009
msgid "Key"
msgstr ""
-#: src/Admin/ListTables/ActivationsTable.php:192
-#: src/Admin/Views/html-api-actions.php:152 src/Frontend/Shortcodes.php:143
+#: src/Admin/ListTables/ActivationsTable.php:180
+#: src/Admin/views/html-api-actions.php:152 src/Frontend/Shortcodes.php:144
msgid "Platform"
msgstr ""
-#: src/Admin/ListTables/ActivationsTable.php:193
+#: src/Admin/ListTables/ActivationsTable.php:181
msgid "Activation Time"
msgstr ""
@@ -296,138 +288,142 @@ msgstr ""
msgid "keys"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:170
+#: src/Admin/ListTables/KeysTable.php:169
msgid "No keys found."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:170
+#: src/Admin/ListTables/KeysTable.php:169
msgid "Add new key"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:174
+#: src/Admin/ListTables/KeysTable.php:173
msgid "Keys can have one of the following statuses:"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:178
-#: src/Admin/ListTables/KeysTable.php:223 src/functions.php:46
+#: src/Admin/ListTables/KeysTable.php:177
+#: src/Admin/ListTables/KeysTable.php:233 src/functions.php:46
msgid "Available"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:180
+#: src/Admin/ListTables/KeysTable.php:179
msgid "This means the key is available for purchase."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:183
-#: src/Admin/ListTables/KeysTable.php:224 src/functions.php:47
+#: src/Admin/ListTables/KeysTable.php:182
+#: src/Admin/ListTables/KeysTable.php:240 src/functions.php:47
msgid "Pending"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:185
+#: src/Admin/ListTables/KeysTable.php:184
msgid "This means the key has been sold, but the order has not been completed yet."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:188
-#: src/Admin/ListTables/KeysTable.php:225
-#: src/Admin/ListTables/StockTable.php:107 src/functions.php:48
+#: src/Admin/ListTables/KeysTable.php:187
+#: src/Admin/ListTables/KeysTable.php:247
+#: src/Admin/ListTables/StockTable.php:97 src/functions.php:48
msgid "Sold"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:190
+#: src/Admin/ListTables/KeysTable.php:189
msgid "This means the key has been sold, and the order has been completed."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:193
-#: src/Admin/ListTables/KeysTable.php:226 src/Functions/Template.php:72
+#: src/Admin/ListTables/KeysTable.php:192
+#: src/Admin/ListTables/KeysTable.php:254 src/Functions/Template.php:72
#: src/functions.php:49
msgid "Expired"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:195
+#: src/Admin/ListTables/KeysTable.php:194
msgid "This means the key has expired and is no longer valid."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:198
-#: src/Admin/ListTables/KeysTable.php:227 src/functions.php:50
+#: src/Admin/ListTables/KeysTable.php:197
+#: src/Admin/ListTables/KeysTable.php:261 src/functions.php:50
msgid "Cancelled"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:200
+#: src/Admin/ListTables/KeysTable.php:199
msgid ""
"This means the key has been cancelled and is no longer available for "
"purchase or use."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:222
+#: src/Admin/ListTables/KeysTable.php:224
msgid "All keys."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:222
+#: src/Admin/ListTables/KeysTable.php:226
msgid "All"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:223
+#: src/Admin/ListTables/KeysTable.php:231
msgid "Available for sell."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:224
+#: src/Admin/ListTables/KeysTable.php:238
msgid "Pending payment."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:225
+#: src/Admin/ListTables/KeysTable.php:245
msgid "Sold keys."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:226
+#: src/Admin/ListTables/KeysTable.php:252
msgid "Expired keys."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:227
+#: src/Admin/ListTables/KeysTable.php:259
msgid "Cancelled keys."
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:302
+#: src/Admin/ListTables/KeysTable.php:336
msgid "Reset Activations"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:316
+#: src/Admin/ListTables/KeysTable.php:350 src/Admin/views/html-add-key.php:120
msgid "Order"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:317
+#: src/Admin/ListTables/KeysTable.php:351
msgid "Validity"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:324
+#: src/Admin/ListTables/KeysTable.php:358
msgid "Order Date"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:325 src/Admin/Menus.php:321
-#: src/Admin/Orders.php:204 src/Admin/Views/html-edit-key.php:94
-#: src/Functions/Template.php:78 src/functions.php:1023
+#: src/Admin/ListTables/KeysTable.php:359 src/Admin/Menus.php:316
+#: src/Admin/Orders.php:204 src/Admin/views/html-add-key.php:91
+#: src/Admin/views/html-edit-key.php:92 src/Functions/Template.php:78
+#: src/functions.php:1034
msgid "Status"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:390
+#: src/Admin/ListTables/KeysTable.php:425
+#. translators: %d: key id.
msgid "ID: %d"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:391
-#: src/Admin/ListTables/StockTable.php:153
+#: src/Admin/ListTables/KeysTable.php:426
+#: src/Admin/ListTables/StockTable.php:143
msgid "Edit"
msgstr ""
-#: src/Admin/ListTables/KeysTable.php:482
+#: src/Admin/ListTables/KeysTable.php:521
+#. translators: %1$s: validity, %2$s: validity.
msgid "%s Day
After purchase"
msgid_plural "%s Days
After purchase"
msgstr[0] ""
msgstr[1] ""
-#: src/Admin/ListTables/KeysTable.php:482 src/Admin/Orders.php:197
-#: src/Functions/Template.php:63 src/functions.php:1019
+#: src/Admin/ListTables/KeysTable.php:531 src/Admin/Orders.php:197
+#: src/Functions/Template.php:63 src/functions.php:1030
msgid "Lifetime"
msgstr ""
#: src/Admin/ListTables/ListTable.php:139
+#: src/Admin/ListTables/ListTable.php:141
msgid "Filter by order"
msgstr ""
@@ -451,161 +447,156 @@ msgstr ""
msgid "No products selling serial keys from \"stock\" found."
msgstr ""
-#: src/Admin/ListTables/StockTable.php:106
+#: src/Admin/ListTables/StockTable.php:96
msgid "Source"
msgstr ""
-#: src/Admin/ListTables/StockTable.php:108 src/Admin/Menus.php:280
+#: src/Admin/ListTables/StockTable.php:98 src/Admin/Menus.php:277
msgid "Stock"
msgstr ""
-#: src/Admin/ListTables/StockTable.php:182
+#: src/Admin/ListTables/StockTable.php:172
msgid "Manual"
msgstr ""
-#: src/Admin/ListTables/StockTable.php:184
+#: src/Admin/ListTables/StockTable.php:174
msgid "Generator Rule"
msgstr ""
-#: src/Admin/ListTables/StockTable.php:186
+#: src/Admin/ListTables/StockTable.php:176
msgid "Auto Generated"
msgstr ""
-#: src/Admin/ListTables/StockTable.php:188
+#: src/Admin/ListTables/StockTable.php:178
msgid "Unknown"
msgstr ""
-#: src/Admin/Menus.php:108 src/Admin/Menus.php:109
-#: src/Admin/Views/html-list-keys.php:18
+#: src/Admin/Menus.php:98 src/Admin/Menus.php:99
+#: src/Admin/views/html-list-keys.php:18
msgid "Serial Keys"
msgstr ""
-#: src/Admin/Menus.php:145 src/Admin/Menus.php:146
+#: src/Admin/Menus.php:135 src/Admin/Menus.php:136
msgid "Tools"
msgstr ""
-#: src/Admin/Menus.php:162 src/Admin/Menus.php:163
+#: src/Admin/Menus.php:152 src/Admin/Menus.php:153
msgid "Reports"
msgstr ""
-#: src/Admin/Menus.php:199 src/Admin/Metaboxes.php:125
-#: src/Admin/Metaboxes.php:144
+#: src/Admin/Menus.php:189 src/Admin/Metaboxes.php:136
+#: src/Admin/Metaboxes.php:157
msgid "Upgrade to Pro"
msgstr ""
-#: src/Admin/Menus.php:246 src/Admin/Views/html-list-keys.php:25
-msgid "Import"
+#: src/Admin/Menus.php:243 src/Admin/Menus.php:377
+msgid "Generators"
msgstr ""
-#: src/Admin/Menus.php:247 src/Admin/Views/html-list-keys.php:29
-msgid "Export"
+#: src/Admin/Menus.php:244
+msgid "API Toolkit"
msgstr ""
-#: src/Admin/Menus.php:248 src/Admin/Menus.php:382
-msgid "Generators"
+#: src/Admin/Menus.php:245 src/Admin/views/html-list-keys.php:25
+msgid "Import"
msgstr ""
-#: src/Admin/Menus.php:249
-msgid "API"
+#: src/Admin/Menus.php:246 src/Admin/views/html-list-keys.php:29
+msgid "Export"
msgstr ""
-#: src/Admin/Menus.php:336 src/Admin/Menus.php:343 src/Admin/Menus.php:361
-#: src/Admin/Menus.php:379
+#: src/Admin/Menus.php:331 src/Admin/Menus.php:338 src/Admin/Menus.php:356
+#: src/Admin/Menus.php:374
msgid "Available in Pro Version"
msgstr ""
-#: src/Admin/Menus.php:337 src/Admin/Menus.php:344 src/Admin/Menus.php:362
-#: src/Admin/Menus.php:380
+#: src/Admin/Menus.php:332 src/Admin/Menus.php:339 src/Admin/Menus.php:357
+#: src/Admin/Menus.php:375
msgid "Upgrade to Pro Now"
msgstr ""
-#: src/Admin/Menus.php:339 src/Admin/Menus.php:346
+#: src/Admin/Menus.php:334 src/Admin/Menus.php:341
msgid "Import Serial Numbers"
msgstr ""
-#: src/Admin/Menus.php:364
+#: src/Admin/Menus.php:359
msgid "Export Serial Numbers"
msgstr ""
-#: src/Admin/Menus.php:409
+#: src/Admin/Menus.php:404
msgid "Table exists"
msgstr ""
-#: src/Admin/Menus.php:411
+#: src/Admin/Menus.php:406
msgid "Table does not exist"
msgstr ""
-#: src/Admin/Menus.php:417
+#: src/Admin/Menus.php:412
msgid "Hourly cron"
msgstr ""
-#: src/Admin/Menus.php:418
+#: src/Admin/Menus.php:413
msgid "Daily cron"
msgstr ""
-#: src/Admin/Menus.php:423
+#: src/Admin/Menus.php:419
+#. translators: %s: Next scheduled time.
msgid "Next run: %s"
msgstr ""
-#: src/Admin/Menus.php:425
+#: src/Admin/Menus.php:421
msgid "Not scheduled"
msgstr ""
-#: src/Admin/Metaboxes.php:54
-msgid "Sell serial keys"
+#: src/Admin/Metaboxes.php:57
+msgid "Sell keys"
msgstr ""
-#: src/Admin/Metaboxes.php:55
-msgid "Enable this if you are selling serial keys for this product."
+#: src/Admin/Metaboxes.php:58
+msgid "Enable this if you are selling keys or licensing this product."
msgstr ""
-#: src/Admin/Metaboxes.php:68
+#: src/Admin/Metaboxes.php:71
msgid "Delivery quantity"
msgstr ""
-#: src/Admin/Metaboxes.php:69
-msgid "Number of serial key(s) will be delivered per item. Available in PRO."
+#: src/Admin/Metaboxes.php:72
+msgid "Number of key(s) will be delivered per item. Available in PRO."
msgstr ""
-#: src/Admin/Metaboxes.php:89
-msgid "Serial key source"
+#: src/Admin/Metaboxes.php:92 src/Admin/Metaboxes.php:124
+msgid "Key source"
msgstr ""
-#: src/Admin/Metaboxes.php:107
+#: src/Admin/Metaboxes.php:110
msgid "Software version"
msgstr ""
-#: src/Admin/Metaboxes.php:108
-msgid "Version number for the software. Ignore if it's not a software product."
+#: src/Admin/Metaboxes.php:111
+msgid "Version number for the software. Ignore if it's not a software."
msgstr ""
-#: src/Admin/Metaboxes.php:109
+#: src/Admin/Metaboxes.php:112
msgid "e.g. 1.0"
msgstr ""
-#: src/Admin/Metaboxes.php:120
-msgid "Stock status"
-msgstr ""
-
-#: src/Admin/Metaboxes.php:122
-msgid "serial key"
-msgid_plural "serial keys"
+#: src/Admin/Metaboxes.php:126
+msgid "key available."
+msgid_plural "keys available."
msgstr[0] ""
msgstr[1] ""
-#: src/Admin/Metaboxes.php:125
-msgid ""
-"Want serial keys to be generated automatically and auto assign with order "
-"and many more?"
+#: src/Admin/Metaboxes.php:134
+msgid "Want to sell keys for variable products?"
msgstr ""
-#: src/Admin/Metaboxes.php:144
+#: src/Admin/Metaboxes.php:155
msgid ""
"The free version of Serial Numbers for WooCommerce does not support product "
"variation."
msgstr ""
-#: src/Admin/Metaboxes.php:214
+#: src/Admin/Metaboxes.php:230
msgid "Order missing serial numbers for this item."
msgstr ""
@@ -619,9 +610,8 @@ msgstr ""
#: src/Admin/Notices.php:63
#. translators: %1$s: link to the plugin page, %2$s: link to the plugin page
msgid ""
-"New! Send Serial Keys via SMS with Twilio. Upgrade to %6$s to unlock the "
-"full potential of %5$s and avail a %1$s discount by using the promo code "
-"%2$s %3$s Upgrade Now %4$s."
+"Upgrade to %6$s to unlock the full potential of %5$s and avail a %1$s "
+"discount by using the promo code %2$s. %3$s Upgrade Now%4$s."
msgstr ""
#: src/Admin/Orders.php:46 src/Admin/Orders.php:125
@@ -661,7 +651,8 @@ msgstr ""
msgid "Expire date"
msgstr ""
-#: src/Admin/Orders.php:200 src/Admin/Views/html-edit-key.php:69
+#: src/Admin/Orders.php:200 src/Admin/views/html-add-key.php:65
+#: src/Admin/views/html-edit-key.php:67
msgid "Activation limit"
msgstr ""
@@ -683,7 +674,7 @@ msgid "General Settings"
msgstr ""
#: src/Admin/Settings.php:48
-msgid "These options determine the behavior and operation of the serial keys."
+msgid "These options determine the behavior and operation of the plugin."
msgstr ""
#: src/Admin/Settings.php:52
@@ -695,39 +686,39 @@ msgid "Automatically completes orders after successful payments."
msgstr ""
#: src/Admin/Settings.php:59
-msgid "Reuse serial key"
+msgid "Reuse keys"
msgstr ""
#: src/Admin/Settings.php:61
-msgid "Recover failed, refunded serial keys for selling again."
+msgid "Recover failed, refunded keys for selling again."
msgstr ""
#: src/Admin/Settings.php:62
msgid ""
-"If you enable this option, the serial keys will be available for selling "
-"again if the order is refunded or failed."
+"If you enable this option, the keys will be available for selling again if "
+"the order is refunded or failed."
msgstr ""
#: src/Admin/Settings.php:68
-msgid "Revoke serial keys"
+msgid "Revoke keys"
msgstr ""
#: src/Admin/Settings.php:70
-msgid "Revoke serial keys when the order status changes to cancelled or refunded."
+msgid "Revoke keys when the order status changes to cancelled or refunded."
msgstr ""
#: src/Admin/Settings.php:71
msgid ""
-"If you enable this option, the serial keys will be revoked when the order "
-"status changes to cancelled or refunded."
+"If you enable this option, the keys will be revoked when the order status "
+"changes to cancelled or refunded."
msgstr ""
#: src/Admin/Settings.php:76
-msgid "Hide serial key"
+msgid "Hide keys"
msgstr ""
#: src/Admin/Settings.php:78
-msgid "Serial keys will be masked in the list table."
+msgid "Keys will be masked in the list table."
msgstr ""
#: src/Admin/Settings.php:83
@@ -749,7 +740,7 @@ msgid "Stock Notification"
msgstr ""
#: src/Admin/Settings.php:97
-msgid "These options determine the operation of the serial key stock notification."
+msgid "These options determine the operation of the key's stock notification."
msgstr ""
#: src/Admin/Settings.php:101
@@ -757,7 +748,7 @@ msgid "Stock notification email"
msgstr ""
#: src/Admin/Settings.php:103
-msgid "Sends notification emails when product stock is low."
+msgid "Sends notification emails when key stock is low."
msgstr ""
#: src/Admin/Settings.php:109
@@ -766,8 +757,8 @@ msgstr ""
#: src/Admin/Settings.php:111
msgid ""
-"An email notification will be sent when the stock falls below the specified "
-"number."
+"An email notification will be sent when the key stock falls below the "
+"specified number."
msgstr ""
#: src/Admin/Settings.php:116
@@ -779,44 +770,42 @@ msgid "The email address which will be used to send email notifications."
msgstr ""
#: src/Admin/Settings.php:152
-msgid "Create and assign license keys for WooCommerce variable products."
+msgid "Create and assign keys for WooCommerce variable products."
msgstr ""
#: src/Admin/Settings.php:153
-msgid "Generate bulk license keys with your custom key generator rule."
+msgid "Generate bulk keys with your custom key generator rule."
msgstr ""
-#: src/Admin/Settings.php:154
+#: src/Admin/Settings.php:154 src/Admin/views/html-add-key.php:172
msgid "Random & sequential key order for the generator rules."
msgstr ""
#: src/Admin/Settings.php:155
-msgid "Automatic license key generator to auto-create & assign keys with orders."
+msgid "Automatic key generator to auto-create & assign keys with orders."
msgstr ""
-#: src/Admin/Settings.php:156
+#: src/Admin/Settings.php:156 src/Admin/views/html-add-key.php:174
msgid "License key management option from the order page with required actions."
msgstr ""
#: src/Admin/Settings.php:157
-msgid "Support for bulk import/export of license keys from/to CSV."
+msgid "Support for bulk import/export of keys from/to CSV."
msgstr ""
#: src/Admin/Settings.php:158
-msgid "Send Serial Keys via SMS with Twilio."
+msgid "Send keys via SMS with Twilio."
msgstr ""
#: src/Admin/Settings.php:159
-msgid ""
-"Option to sell license keys even if there are no available keys in the "
-"stock."
+msgid "Option to sell keys even if there are no available keys in the stock."
msgstr ""
-#: src/Admin/Settings.php:160
+#: src/Admin/Settings.php:160 src/Admin/views/html-add-key.php:178
msgid "Custom deliverable quantity to deliver multiple keys with a single product."
msgstr ""
-#: src/Admin/Settings.php:161
+#: src/Admin/Settings.php:161 src/Admin/views/html-add-key.php:179
msgid ""
"Manual delivery option to manually deliver license keys instead of "
"automatic."
@@ -824,406 +813,528 @@ msgstr ""
#: src/Admin/Settings.php:162
msgid ""
-"Email Template to easily and quickly customize the order confirmation & low "
+"Email template to easily and quickly customize the order confirmation & low "
"stock alert email."
msgstr ""
-#: src/Admin/Settings.php:163
+#: src/Admin/Settings.php:163 src/Admin/views/html-add-key.php:181
msgid "Many more ..."
msgstr ""
-#: src/Admin/Settings.php:167
+#: src/Admin/Settings.php:167 src/Admin/views/html-add-key.php:185
msgid "Want More?"
msgstr ""
-#: src/Admin/Settings.php:168
+#: src/Admin/Settings.php:168 src/Admin/views/html-add-key.php:186
msgid ""
"This plugin offers a premium version which comes with the following "
"features:"
msgstr ""
-#: src/Admin/Settings.php:174
+#: src/Admin/Settings.php:174 src/Admin/views/html-add-key.php:192
msgid "Upgrade to PRO"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:21
+#: src/Admin/views/html-add-key.php:15
+msgid "Add Serial Key"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:17 src/Admin/views/html-edit-key.php:22
+msgid "Go Back"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:22
+msgid ""
+"This section allows you to add a new key that can be sold to customers. "
+"Additionally, you can choose to associate this key with either a new order "
+"or an existing order."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:38 src/Admin/views/html-add-key.php:39
+#: src/Admin/views/html-edit-key.php:40
+msgid "Select Product"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:42
+msgid ""
+"Choose the product to which this key is applicable. The key will be "
+"associated with this product for sale."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:50 src/Admin/views/html-edit-key.php:56
+msgid "Serial key"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:57
+msgid ""
+"Enter the unique serial key you want to sell. This key will be sent to the "
+"customer after the order status is marked as complete. e.g. "
+"4CE0460D0G-4CE0460D1G-4CE0460D2G"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:68
+msgid "e.g. 5"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:70
+msgid ""
+"For software products, specify the maximum number of times the key can be "
+"used to activate the software. If the product is not software, you can "
+"leave this field blank."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:78
+msgid "Valid for (days)"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:82
+msgid "e.g. 365"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:83
+msgid ""
+"For software products, enter the number of days the key will be valid from "
+"the purchase date. If the key should have a lifetime validity, leave this "
+"field blank."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:99
+msgid ""
+"Set as available for selling: The key will be available for purchase by "
+"customers."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:105
+msgid ""
+"Create a new corresponding order for this key: This option generates a new "
+"order specifically for this key."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:111
+msgid ""
+"Associate this key with an existing order: If the customer has already made "
+"a purchase and wants to associate this key with that order, select this "
+"option."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:125 src/Admin/views/html-add-key.php:126
+#: src/Admin/views/html-edit-key.php:106
+msgid "Select Order"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:129
+msgid ""
+"Select the order to which this key should be associated. The key will be "
+"sent to the customer after the order status is marked as complete."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:138
+msgid "Customer"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:143 src/Admin/views/html-add-key.php:144
+msgid "Select Customer"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:147
+msgid ""
+"Select the customer to which this key should be associated. The key will be "
+"sent to the customer after the order status is marked as complete."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:158
+msgid "Add Key"
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:170
+msgid "Create and assign license keys for WooCommerce variable products."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:171
+msgid "Generate bulk license keys with your custom key generator rule."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:173
+msgid "Automatic license key generator to auto-create & assign keys with orders."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:175
+msgid "Support for bulk import/export of license keys from/to CSV."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:176
+msgid "Send Serial Keys via SMS with Twilio."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:177
+msgid ""
+"Option to sell license keys even if there are no available keys in the "
+"stock."
+msgstr ""
+
+#: src/Admin/views/html-add-key.php:180
+msgid ""
+"Email Template to easily and quickly customize the order confirmation & low "
+"stock alert email."
+msgstr ""
+
+#: src/Admin/views/html-api-actions.php:21
msgid "API Actions"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:26
+#: src/Admin/views/html-api-actions.php:26
msgid ""
"You can use the API to perform actions on your website or on another "
"website."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:29
+#: src/Admin/views/html-api-actions.php:29
msgid "To perform an action, you need to send a POST request to the following URL:"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:33
-#: src/Admin/Views/html-api-validation.php:46
+#: src/Admin/views/html-api-actions.php:33
+#: src/Admin/views/html-api-validation.php:46
msgid "The request must contain the following parameters:"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:37
-#: src/Admin/Views/html-api-actions.php:104
-#: src/Admin/Views/html-api-validation.php:50
-#: src/Admin/Views/html-api-validation.php:105
+#: src/Admin/views/html-api-actions.php:37
+#: src/Admin/views/html-api-actions.php:104
+#: src/Admin/views/html-api-validation.php:50
+#: src/Admin/views/html-api-validation.php:105
msgid "The ID of the product for which the serial key is valid."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:40
-#: src/Admin/Views/html-api-validation.php:53
+#: src/Admin/views/html-api-actions.php:40
+#: src/Admin/views/html-api-validation.php:53
msgid "The serial key to validate."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:43
+#: src/Admin/views/html-api-actions.php:43
msgid "The request type. Must be set to \"activate\" or \"deactivate\"."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:46
+#: src/Admin/views/html-api-actions.php:46
msgid ""
"Instance is the base of activation and deactivation. It is a unique "
"identifier for the installation. For example, you can use the domain name "
"of the website."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:49
+#: src/Admin/views/html-api-actions.php:49
msgid ""
"Optional. The platform on which the serial key is used. For example, "
"\"Windows\" or \"Mac\"."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:52
-#: src/Admin/Views/html-api-validation.php:59
+#: src/Admin/views/html-api-actions.php:52
+#: src/Admin/views/html-api-validation.php:59
msgid ""
"Using email is completely voluntary. The API will verify that the serial "
"number is associated with the given email address."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:57
-#: src/Admin/Views/html-api-validation.php:63
+#: src/Admin/views/html-api-actions.php:57
+#: src/Admin/views/html-api-validation.php:63
msgid "Example:"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:75
-#: src/Admin/Views/html-api-validation.php:80
+#: src/Admin/views/html-api-actions.php:75
+#: src/Admin/views/html-api-validation.php:80
msgid "The API will return a JSON response with the following parameters:"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:80
+#: src/Admin/views/html-api-actions.php:80
msgid ""
"The response code. \"key_activated\" or \"key_deactivated\" if the request "
"was successful. \"invalid_key\" or \"invalid_request\" if the request was "
"not successful."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:83
-#: src/Admin/Views/html-api-validation.php:87
+#: src/Admin/views/html-api-actions.php:83
+#: src/Admin/views/html-api-validation.php:87
msgid ""
"The response message. If the serial key is valid, the message will be "
"\"Serial key is valid\"."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:86
+#: src/Admin/views/html-api-actions.php:86
msgid "Activated or deactivated when the request is successful."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:89
-#: src/Admin/Views/html-api-validation.php:90
+#: src/Admin/views/html-api-actions.php:89
+#: src/Admin/views/html-api-validation.php:90
msgid "The activation limit for the serial key."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:92
-#: src/Admin/Views/html-api-validation.php:93
+#: src/Admin/views/html-api-actions.php:92
+#: src/Admin/views/html-api-validation.php:93
msgid "The number of activations for the serial key."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:95
-#: src/Admin/Views/html-api-validation.php:96
+#: src/Admin/views/html-api-actions.php:95
+#: src/Admin/views/html-api-validation.php:96
msgid "The number of activations left for the serial key."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:98
-#: src/Admin/Views/html-api-validation.php:99
+#: src/Admin/views/html-api-actions.php:98
+#: src/Admin/views/html-api-validation.php:99
msgid "The expiration date for the serial key."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:101
+#: src/Admin/views/html-api-actions.php:101
msgid "The expiration date for the serial key in Unix timestamp format."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:107
-#: src/Admin/Views/html-api-validation.php:108
+#: src/Admin/views/html-api-actions.php:107
+#: src/Admin/views/html-api-validation.php:108
msgid "The name of the product for which the serial key is valid."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:110
-#: src/Admin/Views/html-api-validation.php:111
+#: src/Admin/views/html-api-actions.php:110
+#: src/Admin/views/html-api-validation.php:111
msgid "The list of activations for the serial key."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:113
+#: src/Admin/views/html-api-actions.php:113
msgid "You can use the form below to test the API activation/deactivation."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:126
+#: src/Admin/views/html-api-actions.php:126
msgid "Select a product to activate/deactivate serial key for."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:133
+#: src/Admin/views/html-api-actions.php:133
msgid "Please enter serial key to activate/deactivate"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:135
+#: src/Admin/views/html-api-actions.php:135
msgid "Required field. Enter serial key to activate/deactivate."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:143
+#: src/Admin/views/html-api-actions.php:143
msgid "Please enter a unique instance"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:145
+#: src/Admin/views/html-api-actions.php:145
msgid ""
"Required field. Instance is the unique identifier of the activation record. "
"It is used to identify the activation when activating/deactivating serial "
"key."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:154
+#: src/Admin/views/html-api-actions.php:154
msgid "Please enter a platform. e.g. Windows"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:156
+#: src/Admin/views/html-api-actions.php:156
msgid ""
"Optional field. Platform is the extra information of the activation record. "
"You can use it to identify the platform of the activation."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:162
-#: src/Admin/Views/html-api-validation.php:144
-#: src/Admin/Views/html-edit-key.php:156 src/Deprecated/Functions.php:361
-#: src/Frontend/Shortcodes.php:43 src/Frontend/Shortcodes.php:139
+#: src/Admin/views/html-api-actions.php:162
+#: src/Admin/views/html-api-validation.php:144
+#: src/Admin/views/html-edit-key.php:154 src/Deprecated/Functions.php:360
+#: src/Frontend/Shortcodes.php:43 src/Frontend/Shortcodes.php:140
msgid "Email"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:164
-#: src/Admin/Views/html-api-validation.php:146
+#: src/Admin/views/html-api-actions.php:164
+#: src/Admin/views/html-api-validation.php:146
msgid "Please enter a valid email address"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:166
+#: src/Admin/views/html-api-actions.php:166
msgid ""
"Optional field when duplicate key is off. If email is provided, only serial "
"key that are assigned to the email will be activated/deactivated otherwise "
"ignored."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:172 src/Frontend/Shortcodes.php:145
+#: src/Admin/views/html-api-actions.php:172 src/Frontend/Shortcodes.php:146
msgid "Action"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:175 src/Frontend/Shortcodes.php:152
+#: src/Admin/views/html-api-actions.php:175 src/Frontend/Shortcodes.php:153
msgid "Activate"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:176 src/Frontend/Shortcodes.php:153
+#: src/Admin/views/html-api-actions.php:176 src/Frontend/Shortcodes.php:154
msgid "Deactivate"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:179
+#: src/Admin/views/html-api-actions.php:179
msgid "Select an action to perform on the serial key."
msgstr ""
-#: src/Admin/Views/html-api-actions.php:185
-#: src/Admin/Views/html-api-validation.php:153
+#: src/Admin/views/html-api-actions.php:185
+#: src/Admin/views/html-api-validation.php:153
msgid "API response"
msgstr ""
-#: src/Admin/Views/html-api-actions.php:195 src/Frontend/Shortcodes.php:146
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:284
+#: src/Admin/views/html-api-actions.php:195 src/Frontend/Shortcodes.php:147
msgid "Submit"
msgstr ""
-#: src/Admin/Views/html-api-validation.php:20
+#: src/Admin/views/html-api-validation.php:20
msgid "API Validation"
msgstr ""
-#: src/Admin/Views/html-api-validation.php:30
+#: src/Admin/views/html-api-validation.php:30
#. translators: %s: link to the pro version
msgid ""
"You are using the free version of Serial Numbers for WooCommerce. Upgrade to Pro to get more features."
msgstr ""
-#: src/Admin/Views/html-api-validation.php:39
+#: src/Admin/views/html-api-validation.php:39
msgid ""
"You can use the API to validate serial keys on your website or on another "
"website."
msgstr ""
-#: src/Admin/Views/html-api-validation.php:42
+#: src/Admin/views/html-api-validation.php:42
msgid ""
"To validate a serial key, you need to send a POST request to the following "
"URL:"
msgstr ""
-#: src/Admin/Views/html-api-validation.php:56
+#: src/Admin/views/html-api-validation.php:56
msgid "The request type. Must be set to \"validate\"."
msgstr ""
-#: src/Admin/Views/html-api-validation.php:84
+#: src/Admin/views/html-api-validation.php:84
msgid ""
"The response code. If the serial key is valid, the code will be "
"\"key_valid\"."
msgstr ""
-#: src/Admin/Views/html-api-validation.php:102
+#: src/Admin/views/html-api-validation.php:102
msgid "The status of the serial key."
msgstr ""
-#: src/Admin/Views/html-api-validation.php:115
+#: src/Admin/views/html-api-validation.php:115
msgid "You can test the API using the form below."
msgstr ""
-#: src/Admin/Views/html-api-validation.php:129
+#: src/Admin/views/html-api-validation.php:129
msgid "Select a product to validate serial key for."
msgstr ""
-#: src/Admin/Views/html-api-validation.php:136
+#: src/Admin/views/html-api-validation.php:136
msgid "Please enter serial key to validate"
msgstr ""
-#: src/Admin/Views/html-api-validation.php:138
+#: src/Admin/views/html-api-validation.php:138
msgid "Required field. Enter serial key to validate."
msgstr ""
-#: src/Admin/Views/html-api-validation.php:148
+#: src/Admin/views/html-api-validation.php:148
msgid ""
"Optional field. If email is provided, only serial key that are assigned to "
"the email will be validated otherwise ignored."
msgstr ""
-#: src/Admin/Views/html-api-validation.php:164 src/Frontend/Shortcodes.php:45
+#: src/Admin/views/html-api-validation.php:164 src/Frontend/Shortcodes.php:45
msgid "Validate"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:16
+#: src/Admin/views/html-edit-key.php:16
msgid "Edit Serial Key"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:18
+#: src/Admin/views/html-edit-key.php:18
msgid "Add Another"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:21
-msgid "Add New Serial Key"
-msgstr ""
-
-#: src/Admin/Views/html-edit-key.php:23
-msgid "Go Back"
-msgstr ""
-
-#: src/Admin/Views/html-edit-key.php:33
+#: src/Admin/views/html-edit-key.php:31
msgid "Key Details"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:42
-msgid "Select Product"
-msgstr ""
-
-#: src/Admin/Views/html-edit-key.php:52
+#: src/Admin/views/html-edit-key.php:50
msgid "Select the product for which this key is applicable."
msgstr ""
-#: src/Admin/Views/html-edit-key.php:58
-msgid "Serial key"
-msgstr ""
-
-#: src/Admin/Views/html-edit-key.php:63
+#: src/Admin/views/html-edit-key.php:61
msgid ""
"Enter your serial key, also supports multiline. For example: "
"4CE0460D0G-4CE0460D1G-4CE0460D2G"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:73
+#: src/Admin/views/html-edit-key.php:71
msgid ""
"Maximum number of times the key can be used to activate the software. If "
"the product is not software, keep it blank."
msgstr ""
-#: src/Admin/Views/html-edit-key.php:79
+#: src/Admin/views/html-edit-key.php:77
msgid "Valid for"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:84
+#: src/Admin/views/html-edit-key.php:82
msgid "Days"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:87
+#: src/Admin/views/html-edit-key.php:85
msgid ""
"Number of days the key will be valid from the purchase date. Leave it blank "
"for lifetime validity."
msgstr ""
-#: src/Admin/Views/html-edit-key.php:101
+#: src/Admin/views/html-edit-key.php:99
msgid "Serial key status auto-updates with order status. Avoid manual changes."
msgstr ""
-#: src/Admin/Views/html-edit-key.php:106
+#: src/Admin/views/html-edit-key.php:104
msgid "Order ID"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:108
-msgid "Select Order"
-msgstr ""
-
-#: src/Admin/Views/html-edit-key.php:117
+#: src/Admin/views/html-edit-key.php:115
msgid "The order to which the serial number will be assigned."
msgstr ""
-#: src/Admin/Views/html-edit-key.php:128
+#: src/Admin/views/html-edit-key.php:126
msgid "Actions"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:134
+#: src/Admin/views/html-edit-key.php:132
msgid "Save Key"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:141
+#: src/Admin/views/html-edit-key.php:139
msgid "Customer details"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:148
+#: src/Admin/views/html-edit-key.php:146
msgid "Name"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:164
+#: src/Admin/views/html-edit-key.php:162
msgid "Address"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:173
+#: src/Admin/views/html-edit-key.php:171
msgid "Phone"
msgstr ""
-#: src/Admin/Views/html-edit-key.php:183
+#: src/Admin/views/html-edit-key.php:181
msgid "View Order"
msgstr ""
-#: src/Admin/Views/html-list-activations.php:26
-#: src/Admin/Views/html-list-keys.php:43
+#: src/Admin/views/html-list-activations.php:26
+#: src/Admin/views/html-list-keys.php:43
msgid "Search key"
msgstr ""
-#: src/Admin/Views/html-list-keys.php:21
+#: src/Admin/views/html-list-keys.php:21
msgid "Add New"
msgstr ""
-#: src/Admin/Views/html-list-keys.php:33
+#: src/Admin/views/html-list-keys.php:33
msgid "Generate"
msgstr ""
-#: src/Admin/Views/html-list-stock.php:16
+#: src/Admin/views/html-list-stock.php:16
msgid "Search"
msgstr ""
@@ -1236,20 +1347,20 @@ msgstr ""
msgid "Serial Numbers stock running low"
msgstr ""
-#: src/Deprecated/Functions.php:155
+#: src/Deprecated/Functions.php:154
msgid "Serial number not found."
msgstr ""
-#: src/Deprecated/Functions.php:360
+#: src/Deprecated/Functions.php:359
msgid "Serial Number"
msgstr ""
-#: src/Deprecated/Functions.php:362 src/Functions/Template.php:52
-#: src/functions.php:1008
+#: src/Deprecated/Functions.php:361 src/Functions/Template.php:52
+#: src/functions.php:1019
msgid "Activation Limit"
msgstr ""
-#: src/Deprecated/Functions.php:363
+#: src/Deprecated/Functions.php:362
msgid "Expires"
msgstr ""
@@ -1261,16 +1372,16 @@ msgstr ""
msgid "Serial Key Validation"
msgstr ""
-#: src/Frontend/Shortcodes.php:41 src/Frontend/Shortcodes.php:137
+#: src/Frontend/Shortcodes.php:41 src/Frontend/Shortcodes.php:138
msgid "Serial Key"
msgstr ""
-#: src/Frontend/Shortcodes.php:42 src/Frontend/Shortcodes.php:138
+#: src/Frontend/Shortcodes.php:42 src/Frontend/Shortcodes.php:139
msgid "Enter your serial key"
msgstr ""
#: src/Frontend/Shortcodes.php:44 src/Frontend/Shortcodes.php:105
-#: src/Frontend/Shortcodes.php:140 src/Frontend/Shortcodes.php:216
+#: src/Frontend/Shortcodes.php:141 src/Frontend/Shortcodes.php:217
msgid "Enter your email"
msgstr ""
@@ -1278,40 +1389,40 @@ msgstr ""
msgid "No products found."
msgstr ""
-#: src/Frontend/Shortcodes.php:90 src/Frontend/Shortcodes.php:200
+#: src/Frontend/Shortcodes.php:90 src/Frontend/Shortcodes.php:201
msgid "Select a product"
msgstr ""
-#: src/Frontend/Shortcodes.php:135
+#: src/Frontend/Shortcodes.php:136
msgid "Activate/Deactivate Serial Key"
msgstr ""
-#: src/Frontend/Shortcodes.php:142
+#: src/Frontend/Shortcodes.php:143
msgid "Enter your instance"
msgstr ""
-#: src/Frontend/Shortcodes.php:144
+#: src/Frontend/Shortcodes.php:145
msgid "Enter platform"
msgstr ""
-#: src/Frontend/Shortcodes.php:186
+#: src/Frontend/Shortcodes.php:187
msgid "Could not find any products with serial numbers enabled."
msgstr ""
-#: src/Functions/Template.php:47 src/functions.php:1003
+#: src/Functions/Template.php:47 src/functions.php:1014
msgid "Activation Email"
msgstr ""
#: src/Functions/Template.php:53 src/Functions/Template.php:58
-#: src/functions.php:1009 src/functions.php:1014
+#: src/functions.php:1020 src/functions.php:1025
msgid "None"
msgstr ""
-#: src/Functions/Template.php:57 src/functions.php:1013
+#: src/Functions/Template.php:57 src/functions.php:1024
msgid "Activation Count"
msgstr ""
-#: src/Functions/Template.php:62 src/functions.php:1018
+#: src/Functions/Template.php:62 src/functions.php:1029
msgid "Expire Date"
msgstr ""
@@ -1357,6 +1468,7 @@ msgid "Order id is invalid."
msgstr ""
#: src/Orders.php:67
+#. translators: %1$s: product title, %2$s: stock quantity.
msgid ""
"Sorry, there aren’t enough Serial Keys for %1$s. Please remove this item or "
"lower the quantity. For now, we have %2$s Serial Keys for this product."
@@ -1366,12 +1478,12 @@ msgstr ""
msgid "Order automatically completed by the Serial Numbers for WooCommerce."
msgstr ""
-#: src/Plugin.php:69
+#: src/Plugin.php:63
#. translators: 1: plugin name 2: WooCommerce
msgid "%1$s requires %2$s to be installed and active."
msgstr ""
-#: src/Plugin.php:71
+#: src/Plugin.php:65
msgid "WooCommerce"
msgstr ""
@@ -1379,253 +1491,32 @@ msgstr ""
msgid "Manually added"
msgstr ""
-#: src/functions.php:537
+#: src/functions.php:533
#. translators: 1: product title 2: source and 3: Quantity
msgid ""
"There is not enough serial numbers for the product %1$s from selected "
"source %2$s, needed total %3$d."
msgstr ""
-#: templates/email-stock-notification.php:12
+#: templates/email-stock-notification.php:14
msgid "Hi There,"
msgstr ""
-#: templates/email-stock-notification.php:13
+#: templates/email-stock-notification.php:15
msgid ""
"There are few products stock running low, please add serial numbers for "
"these products"
msgstr ""
-#: templates/email-stock-notification.php:30
+#: templates/email-stock-notification.php:37
+#. translators: %s: plugin url.
msgid ""
"The email is sent by Serial Numbers for "
"WooCommerce"
msgstr ""
-#: vendor/lucatume/wp-browser/src/data/plugins/internationalized-plugin.php:11
-msgid "This is a dummy plugin"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/parsers.php:42
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/parsers.php:72
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/parsers.php:80
-msgid "There was an error when reading this WXR file"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/parsers.php:43
-msgid ""
-"Details are shown above. The importer will now try again with a different "
-"parser..."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/parsers.php:84
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/parsers.php:89
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/parsers.php:306
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/parsers.php:495
-msgid "This does not appear to be a WXR file, missing/invalid WXR version number"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:132
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:141
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:192
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:196
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:205
-msgid "Sorry, there has been an error."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:133
-msgid "The file does not exist, please try again."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:176
-msgid "All done."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:176
-msgid "Have fun!"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:177
-msgid "Remember to update the passwords and roles of imported users."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:197
-msgid ""
-"The export file could not be found at %s
. It is likely that "
-"this was caused by a permissions problem."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:213
-msgid ""
-"This WXR file (version %s) may not be supported by this version of the "
-"importer. Please consider updating."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:238
-msgid ""
-"Failed to import author %s. Their posts will be attributed to the current "
-"user."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:264
-msgid "Assign Authors"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:265
-msgid ""
-"To make it easier for you to edit and save the imported content, you may "
-"want to reassign the author of the imported item to an existing user of "
-"this site. For example, you may want to import all the entries as "
-"admin
s entries."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:267
-msgid ""
-"If a new user is created by WordPress, a new password will be randomly "
-"generated and the new user’s role will be set as %s. Manually "
-"changing the new user’s details will be necessary."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:277
-msgid "Import Attachments"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:280
-msgid "Download and import file attachments"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:297
-msgid "Import author:"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:308
-msgid "or create new user with login name:"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:311
-msgid "as a new user:"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:319
-msgid "assign posts to an existing user:"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:321
-msgid "or assign posts to an existing user:"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:322
-msgid "- Select -"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:372
-msgid ""
-"Failed to create new user for %s. Their posts will be attributed to the "
-"current user."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:424
-msgid "Failed to import category %s"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:467
-msgid "Failed to import post tag %s"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:516
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:738
-msgid "Failed to import %s %s"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:605
-msgid "Failed to import “%s”: Invalid post type %s"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:642
-msgid "%s “%s” already exists."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:704
-msgid "Failed to import %s “%s”"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:869
-msgid "Menu item skipped due to missing menu slug"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:876
-msgid "Menu item skipped due to invalid menu slug: %s"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:939
-msgid "Fetching attachments is not enabled"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:952
-msgid "Invalid file type"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:996
-msgid "Remote server did not respond"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:1002
-msgid "Remote server returned error response %1$d %2$s"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:1009
-msgid "Remote file is incorrect size"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:1014
-msgid "Zero size file downloaded"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:1020
-msgid "Remote file is too large, limit is %s"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:1119
-msgid "Import WordPress"
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:1126
-msgid ""
-"A new version of this importer is available. Please update to version %s to "
-"ensure compatibility with newer export files."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:1141
-msgid ""
-"Howdy! Upload your WordPress eXtended RSS (WXR) file and we’ll import "
-"the posts, pages, comments, custom fields, categories, and tags into this "
-"site."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:1142
-msgid "Choose a WXR (.xml) file to upload, then click Upload file and import."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/plugins/wordpress-importer/wordpress-importer.php:1216
-msgid ""
-"Import posts, pages, comments, custom fields, categories, and "
-"tags from a WordPress export file."
-msgstr ""
-
-#: vendor/lucatume/wp-browser/src/data/themedir1/internationalized-theme/functions.php:7
-msgid "This is a dummy theme"
-msgstr ""
-
-#: vendor/wp-cli/wp-cli/php/utils-wp.php:238
-msgid "Inactive Widgets"
-msgstr ""
-
-#: vendor/wp-cli/wp-cli/php/utils-wp.php:241
-msgid "Drag widgets here to remove them from the sidebar but keep their settings."
-msgstr ""
-
#. Plugin Name of the plugin/theme
-msgid "Serial Numbers for WooCommerce"
+msgid "WC Serial Numbers"
msgstr ""
#. Plugin URI of the plugin/theme
@@ -1634,7 +1525,7 @@ msgstr ""
#. Description of the plugin/theme
msgid ""
-"Sell and manage license keys/ serial numbers/ secrect keys easily within "
+"Sell and manage license keys/ serial numbers/ secret keys easily within "
"your WooCommerce store."
msgstr ""
diff --git a/lib/classes/wp-async-request.php b/lib/classes/wp-async-request.php
deleted file mode 100644
index 9759ab09..00000000
--- a/lib/classes/wp-async-request.php
+++ /dev/null
@@ -1,202 +0,0 @@
-identifier = $this->prefix . '_' . $this->action;
-
- add_action( 'wp_ajax_' . $this->identifier, array( $this, 'maybe_handle' ) );
- add_action( 'wp_ajax_nopriv_' . $this->identifier, array( $this, 'maybe_handle' ) );
- }
-
- /**
- * Set data used during the request.
- *
- * @param array $data Data.
- *
- * @return $this
- */
- public function data( $data ) {
- $this->data = $data;
-
- return $this;
- }
-
- /**
- * Dispatch the async request.
- *
- * @return array|WP_Error|false HTTP Response array, WP_Error on failure, or false if not attempted.
- */
- public function dispatch() {
- $url = add_query_arg( $this->get_query_args(), $this->get_query_url() );
- $args = $this->get_post_args();
-
- return wp_remote_post( esc_url_raw( $url ), $args );
- }
-
- /**
- * Get query args.
- *
- * @return array
- */
- protected function get_query_args() {
- if ( property_exists( $this, 'query_args' ) ) {
- return $this->query_args;
- }
-
- $args = array(
- 'action' => $this->identifier,
- 'nonce' => wp_create_nonce( $this->identifier ),
- );
-
- /**
- * Filters the post arguments used during an async request.
- *
- * @param array $url
- */
- return apply_filters( $this->identifier . '_query_args', $args );
- }
-
- /**
- * Get query URL.
- *
- * @return string
- */
- protected function get_query_url() {
- if ( property_exists( $this, 'query_url' ) ) {
- return $this->query_url;
- }
-
- $url = admin_url( 'admin-ajax.php' );
-
- /**
- * Filters the post arguments used during an async request.
- *
- * @param string $url
- */
- return apply_filters( $this->identifier . '_query_url', $url );
- }
-
- /**
- * Get post args.
- *
- * @return array
- */
- protected function get_post_args() {
- if ( property_exists( $this, 'post_args' ) ) {
- return $this->post_args;
- }
-
- $args = array(
- 'timeout' => 0.01,
- 'blocking' => false,
- 'body' => $this->data,
- 'cookies' => $_COOKIE, // Passing cookies ensures request is performed as initiating user.
- 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), // Local requests, fine to pass false.
- );
-
- /**
- * Filters the post arguments used during an async request.
- *
- * @param array $args
- */
- return apply_filters( $this->identifier . '_post_args', $args );
- }
-
- /**
- * Maybe handle a dispatched request.
- *
- * Check for correct nonce and pass to handler.
- *
- * @return void|mixed
- */
- public function maybe_handle() {
- // Don't lock up other requests while processing.
- session_write_close();
-
- check_ajax_referer( $this->identifier, 'nonce' );
-
- $this->handle();
-
- return $this->maybe_wp_die();
- }
-
- /**
- * Should the process exit with wp_die?
- *
- * @param mixed $return What to return if filter says don't die, default is null.
- *
- * @return void|mixed
- */
- protected function maybe_wp_die( $return = null ) {
- /**
- * Should wp_die be used?
- *
- * @return bool
- */
- if ( apply_filters( $this->identifier . '_wp_die', true ) ) {
- wp_die();
- }
-
- return $return;
- }
-
- /**
- * Handle a dispatched request.
- *
- * Override this method to perform any actions required
- * during the async request.
- */
- abstract protected function handle();
-}
diff --git a/lib/classes/wp-background-process.php b/lib/classes/wp-background-process.php
deleted file mode 100644
index fbc81fff..00000000
--- a/lib/classes/wp-background-process.php
+++ /dev/null
@@ -1,733 +0,0 @@
-cron_hook_identifier = $this->identifier . '_cron';
- $this->cron_interval_identifier = $this->identifier . '_cron_interval';
-
- add_action( $this->cron_hook_identifier, array( $this, 'handle_cron_healthcheck' ) );
- add_filter( 'cron_schedules', array( $this, 'schedule_cron_healthcheck' ) );
- }
-
- /**
- * Schedule the cron healthcheck and dispatch an async request to start processing the queue.
- *
- * @access public
- * @return array|WP_Error|false HTTP Response array, WP_Error on failure, or false if not attempted.
- */
- public function dispatch() {
- if ( $this->is_processing() ) {
- // Process already running.
- return false;
- }
-
- // Schedule the cron healthcheck.
- $this->schedule_event();
-
- // Perform remote post.
- return parent::dispatch();
- }
-
- /**
- * Push to the queue.
- *
- * Note, save must be called in order to persist queued items to a batch for processing.
- *
- * @param mixed $data Data.
- *
- * @return $this
- */
- public function push_to_queue( $data ) {
- $this->data[] = $data;
-
- return $this;
- }
-
- /**
- * Save the queued items for future processing.
- *
- * @return $this
- */
- public function save() {
- $key = $this->generate_key();
-
- if ( ! empty( $this->data ) ) {
- update_site_option( $key, $this->data );
- }
-
- // Clean out data so that new data isn't prepended with closed session's data.
- $this->data = array();
-
- return $this;
- }
-
- /**
- * Update a batch's queued items.
- *
- * @param string $key Key.
- * @param array $data Data.
- *
- * @return $this
- */
- public function update( $key, $data ) {
- if ( ! empty( $data ) ) {
- update_site_option( $key, $data );
- }
-
- return $this;
- }
-
- /**
- * Delete a batch of queued items.
- *
- * @param string $key Key.
- *
- * @return $this
- */
- public function delete( $key ) {
- delete_site_option( $key );
-
- return $this;
- }
-
- /**
- * Delete entire job queue.
- */
- public function delete_all() {
- $batches = $this->get_batches();
-
- foreach ( $batches as $batch ) {
- $this->delete( $batch->key );
- }
-
- delete_site_option( $this->get_status_key() );
-
- $this->cancelled();
- }
-
- /**
- * Cancel job on next batch.
- */
- public function cancel() {
- update_site_option( $this->get_status_key(), self::STATUS_CANCELLED );
-
- // Just in case the job was paused at the time.
- $this->dispatch();
- }
-
- /**
- * Has the process been cancelled?
- *
- * @return bool
- */
- public function is_cancelled() {
- $status = get_site_option( $this->get_status_key(), 0 );
-
- if ( absint( $status ) === self::STATUS_CANCELLED ) {
- return true;
- }
-
- return false;
- }
-
- /**
- * Called when background process has been cancelled.
- */
- protected function cancelled() {
- do_action( $this->identifier . '_cancelled' );
- }
-
- /**
- * Pause job on next batch.
- */
- public function pause() {
- update_site_option( $this->get_status_key(), self::STATUS_PAUSED );
- }
-
- /**
- * Is the job paused?
- *
- * @return bool
- */
- public function is_paused() {
- $status = get_site_option( $this->get_status_key(), 0 );
-
- if ( absint( $status ) === self::STATUS_PAUSED ) {
- return true;
- }
-
- return false;
- }
-
- /**
- * Called when background process has been paused.
- */
- protected function paused() {
- do_action( $this->identifier . '_paused' );
- }
-
- /**
- * Resume job.
- */
- public function resume() {
- delete_site_option( $this->get_status_key() );
-
- $this->schedule_event();
- $this->dispatch();
- $this->resumed();
- }
-
- /**
- * Called when background process has been resumed.
- */
- protected function resumed() {
- do_action( $this->identifier . '_resumed' );
- }
-
- /**
- * Is queued?
- *
- * @return bool
- */
- public function is_queued() {
- return ! $this->is_queue_empty();
- }
-
- /**
- * Is the tool currently active, e.g. starting, working, paused or cleaning up?
- *
- * @return bool
- */
- public function is_active() {
- return $this->is_queued() || $this->is_processing() || $this->is_paused() || $this->is_cancelled();
- }
-
- /**
- * Generate key for a batch.
- *
- * Generates a unique key based on microtime. Queue items are
- * given a unique key so that they can be merged upon save.
- *
- * @param int $length Optional max length to trim key to, defaults to 64 characters.
- * @param string $key Optional string to append to identifier before hash, defaults to "batch".
- *
- * @return string
- */
- protected function generate_key( $length = 64, $key = 'batch' ) {
- $unique = md5( microtime() . wp_rand() );
- $prepend = $this->identifier . '_' . $key . '_';
-
- return substr( $prepend . $unique, 0, $length );
- }
-
- /**
- * Get the status key.
- *
- * @return string
- */
- protected function get_status_key() {
- return $this->identifier . '_status';
- }
-
- /**
- * Maybe process a batch of queued items.
- *
- * Checks whether data exists within the queue and that
- * the process is not already running.
- */
- public function maybe_handle() {
- // Don't lock up other requests while processing.
- session_write_close();
-
- if ( $this->is_processing() ) {
- // Background process already running.
- return $this->maybe_wp_die();
- }
-
- if ( $this->is_cancelled() ) {
- $this->clear_scheduled_event();
- $this->delete_all();
-
- return $this->maybe_wp_die();
- }
-
- if ( $this->is_paused() ) {
- $this->clear_scheduled_event();
- $this->paused();
-
- return $this->maybe_wp_die();
- }
-
- if ( $this->is_queue_empty() ) {
- // No data to process.
- return $this->maybe_wp_die();
- }
-
- check_ajax_referer( $this->identifier, 'nonce' );
-
- $this->handle();
-
- return $this->maybe_wp_die();
- }
-
- /**
- * Is queue empty?
- *
- * @return bool
- */
- protected function is_queue_empty() {
- return empty( $this->get_batch() );
- }
-
- /**
- * Is process running?
- *
- * Check whether the current process is already running
- * in a background process.
- *
- * @return bool
- *
- * @deprecated 1.1.0 Superseded.
- * @see is_processing()
- */
- protected function is_process_running() {
- return $this->is_processing();
- }
-
- /**
- * Is the background process currently running?
- *
- * @return bool
- */
- public function is_processing() {
- if ( get_site_transient( $this->identifier . '_process_lock' ) ) {
- // Process already running.
- return true;
- }
-
- return false;
- }
-
- /**
- * Lock process.
- *
- * Lock the process so that multiple instances can't run simultaneously.
- * Override if applicable, but the duration should be greater than that
- * defined in the time_exceeded() method.
- */
- protected function lock_process() {
- $this->start_time = time(); // Set start time of current process.
-
- $lock_duration = ( property_exists( $this, 'queue_lock_time' ) ) ? $this->queue_lock_time : 60; // 1 minute
- $lock_duration = apply_filters( $this->identifier . '_queue_lock_time', $lock_duration );
-
- set_site_transient( $this->identifier . '_process_lock', microtime(), $lock_duration );
- }
-
- /**
- * Unlock process.
- *
- * Unlock the process so that other instances can spawn.
- *
- * @return $this
- */
- protected function unlock_process() {
- delete_site_transient( $this->identifier . '_process_lock' );
-
- return $this;
- }
-
- /**
- * Get batch.
- *
- * @return stdClass Return the first batch of queued items.
- */
- protected function get_batch() {
- return array_reduce(
- $this->get_batches( 1 ),
- function ( $carry, $batch ) {
- return $batch;
- },
- array()
- );
- }
-
- /**
- * Get batches.
- *
- * @param int $limit Number of batches to return, defaults to all.
- *
- * @return array of stdClass
- */
- public function get_batches( $limit = 0 ) {
- global $wpdb;
-
- if ( empty( $limit ) || ! is_int( $limit ) ) {
- $limit = 0;
- }
-
- $table = $wpdb->options;
- $column = 'option_name';
- $key_column = 'option_id';
- $value_column = 'option_value';
-
- if ( is_multisite() ) {
- $table = $wpdb->sitemeta;
- $column = 'meta_key';
- $key_column = 'meta_id';
- $value_column = 'meta_value';
- }
-
- $key = $wpdb->esc_like( $this->identifier . '_batch_' ) . '%';
-
- $sql = '
- SELECT *
- FROM ' . $table . '
- WHERE ' . $column . ' LIKE %s
- ORDER BY ' . $key_column . ' ASC
- ';
-
- $args = array( $key );
-
- if ( ! empty( $limit ) ) {
- $sql .= ' LIMIT %d';
-
- $args[] = $limit;
- }
-
- $items = $wpdb->get_results( $wpdb->prepare( $sql, $args ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
-
- $batches = array();
-
- if ( ! empty( $items ) ) {
- $batches = array_map(
- function ( $item ) use ( $column, $value_column ) {
- $batch = new stdClass();
- $batch->key = $item->{$column};
- $batch->data = maybe_unserialize( $item->{$value_column} );
-
- return $batch;
- },
- $items
- );
- }
-
- return $batches;
- }
-
- /**
- * Handle a dispatched request.
- *
- * Pass each queue item to the task handler, while remaining
- * within server memory and time limit constraints.
- */
- protected function handle() {
- $this->lock_process();
-
- /**
- * Number of seconds to sleep between batches. Defaults to 0 seconds, minimum 0.
- *
- * @param int $seconds
- */
- $throttle_seconds = max(
- 0,
- apply_filters(
- $this->identifier . '_seconds_between_batches',
- apply_filters(
- $this->prefix . '_seconds_between_batches',
- 0
- )
- )
- );
-
- do {
- $batch = $this->get_batch();
-
- foreach ( $batch->data as $key => $value ) {
- $task = $this->task( $value );
-
- if ( false !== $task ) {
- $batch->data[ $key ] = $task;
- } else {
- unset( $batch->data[ $key ] );
- }
-
- // Keep the batch up to date while processing it.
- if ( ! empty( $batch->data ) ) {
- $this->update( $batch->key, $batch->data );
- }
-
- // Let the server breathe a little.
- sleep( $throttle_seconds );
-
- // Batch limits reached, or pause or cancel request.
- if ( $this->time_exceeded() || $this->memory_exceeded() || $this->is_paused() || $this->is_cancelled() ) {
- break;
- }
- }
-
- // Delete current batch if fully processed.
- if ( empty( $batch->data ) ) {
- $this->delete( $batch->key );
- }
- } while ( ! $this->time_exceeded() && ! $this->memory_exceeded() && ! $this->is_queue_empty() && ! $this->is_paused() && ! $this->is_cancelled() );
-
- $this->unlock_process();
-
- // Start next batch or complete process.
- if ( ! $this->is_queue_empty() ) {
- $this->dispatch();
- } else {
- $this->complete();
- }
-
- return $this->maybe_wp_die();
- }
-
- /**
- * Memory exceeded?
- *
- * Ensures the batch process never exceeds 90%
- * of the maximum WordPress memory.
- *
- * @return bool
- */
- protected function memory_exceeded() {
- $memory_limit = $this->get_memory_limit() * 0.9; // 90% of max memory
- $current_memory = memory_get_usage( true );
- $return = false;
-
- if ( $current_memory >= $memory_limit ) {
- $return = true;
- }
-
- return apply_filters( $this->identifier . '_memory_exceeded', $return );
- }
-
- /**
- * Get memory limit in bytes.
- *
- * @return int
- */
- protected function get_memory_limit() {
- if ( function_exists( 'ini_get' ) ) {
- $memory_limit = ini_get( 'memory_limit' );
- } else {
- // Sensible default.
- $memory_limit = '128M';
- }
-
- if ( ! $memory_limit || -1 === intval( $memory_limit ) ) {
- // Unlimited, set to 32GB.
- $memory_limit = '32000M';
- }
-
- return wp_convert_hr_to_bytes( $memory_limit );
- }
-
- /**
- * Time limit exceeded?
- *
- * Ensures the batch never exceeds a sensible time limit.
- * A timeout limit of 30s is common on shared hosting.
- *
- * @return bool
- */
- protected function time_exceeded() {
- $finish = $this->start_time + apply_filters( $this->identifier . '_default_time_limit', 20 ); // 20 seconds
- $return = false;
-
- if ( time() >= $finish ) {
- $return = true;
- }
-
- return apply_filters( $this->identifier . '_time_exceeded', $return );
- }
-
- /**
- * Complete processing.
- *
- * Override if applicable, but ensure that the below actions are
- * performed, or, call parent::complete().
- */
- protected function complete() {
- delete_site_option( $this->get_status_key() );
-
- // Remove the cron healthcheck job from the cron schedule.
- $this->clear_scheduled_event();
-
- $this->completed();
- }
-
- /**
- * Called when background process has completed.
- */
- protected function completed() {
- do_action( $this->identifier . '_completed' );
- }
-
- /**
- * Schedule the cron healthcheck job.
- *
- * @access public
- *
- * @param mixed $schedules Schedules.
- *
- * @return mixed
- */
- public function schedule_cron_healthcheck( $schedules ) {
- $interval = apply_filters( $this->cron_interval_identifier, 5 );
-
- if ( property_exists( $this, 'cron_interval' ) ) {
- $interval = apply_filters( $this->cron_interval_identifier, $this->cron_interval );
- }
-
- if ( 1 === $interval ) {
- $display = __( 'Every Minute', 'wc-serial-numbers' );
- } else {
- $display = sprintf( __( 'Every %d Minutes', 'wc-serial-numbers' ), $interval );
- }
-
- // Adds an "Every NNN Minute(s)" schedule to the existing cron schedules.
- $schedules[ $this->cron_interval_identifier ] = array(
- 'interval' => MINUTE_IN_SECONDS * $interval,
- 'display' => $display,
- );
-
- return $schedules;
- }
-
- /**
- * Handle cron healthcheck event.
- *
- * Restart the background process if not already running
- * and data exists in the queue.
- */
- public function handle_cron_healthcheck() {
- if ( $this->is_processing() ) {
- // Background process already running.
- exit;
- }
-
- if ( $this->is_queue_empty() ) {
- // No data to process.
- $this->clear_scheduled_event();
- exit;
- }
-
- $this->dispatch();
- }
-
- /**
- * Schedule the cron healthcheck event.
- */
- protected function schedule_event() {
- if ( ! wp_next_scheduled( $this->cron_hook_identifier ) ) {
- wp_schedule_event( time(), $this->cron_interval_identifier, $this->cron_hook_identifier );
- }
- }
-
- /**
- * Clear scheduled cron healthcheck event.
- */
- protected function clear_scheduled_event() {
- $timestamp = wp_next_scheduled( $this->cron_hook_identifier );
-
- if ( $timestamp ) {
- wp_unschedule_event( $timestamp, $this->cron_hook_identifier );
- }
- }
-
- /**
- * Cancel the background process.
- *
- * Stop processing queue items, clear cron job and delete batch.
- *
- * @deprecated 1.1.0 Superseded.
- * @see cancel()
- */
- public function cancel_process() {
- $this->cancel();
- }
-
- /**
- * Perform task with queued item.
- *
- * Override this method to perform any actions required on each
- * queue item. Return the modified item for further processing
- * in the next pass through. Or, return false to remove the
- * item from the queue.
- *
- * @param mixed $item Queue item to iterate over.
- *
- * @return mixed
- */
- abstract protected function task( $item );
-}
diff --git a/package-lock.json b/package-lock.json
index bd033de7..0c4b0e30 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "wc-serial-numbers",
- "version": "1.5.4",
+ "version": "1.6.5",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "wc-serial-numbers",
- "version": "1.5.4",
+ "version": "1.6.5",
"license": "GPL-3.0+",
"devDependencies": {
"@lodder/time-grunt": "^4.0.0",
diff --git a/package.json b/package.json
index b3abcdd0..37cf2957 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "wc-serial-numbers",
"title": "Serial Numbers for WooCommerce",
- "version": "1.5.7",
+ "version": "1.6.5",
"description": "The best WooCommerce extension to sell license & serial keys, gift cards and other secret numbers!",
"homepage": "https://pluginever.com/plugins/wc-serial-numbers/",
"license": "GPL-3.0+",
diff --git a/src/API.php b/src/API.php
index dc082efd..391d36cd 100644
--- a/src/API.php
+++ b/src/API.php
@@ -21,6 +21,8 @@ class API {
* @since 1.0.0
*/
public function __construct() {
+ // add query vars.
+ add_filter( 'query_vars', array( __CLASS__, 'add_query_vars' ), 0 );
add_action( 'woocommerce_api_serial-numbers-api', array( __CLASS__, 'process_request' ) );
add_action( 'wc_serial_numbers_api_action_check', array( __CLASS__, 'validate_key' ) );
add_action( 'wc_serial_numbers_api_action_validate', array( __CLASS__, 'validate_key' ) );
@@ -29,16 +31,36 @@ public function __construct() {
add_action( 'wc_serial_numbers_api_action_version_check', array( __CLASS__, 'check_version' ) );
}
+ /**
+ * Add query vars.
+ *
+ * @param array $vars Query vars.
+ *
+ * @since 1.0.0
+ *
+ * @return array
+ */
+ public static function add_query_vars( $vars ) {
+ $vars[] = 'product_id';
+ $vars[] = 'serial_key';
+ $vars[] = 'request';
+ $vars[] = 'email';
+ $vars[] = 'instance';
+ $vars[] = 'platform';
+
+ return $vars;
+ }
+
/**
* Process request.
*
* @since 1.0.0
*/
public static function process_request() {
- $product_id = isset( $_REQUEST['product_id'] ) ? absint( $_REQUEST['product_id'] ) : 0;
- $key = isset( $_REQUEST['serial_key'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['serial_key'] ) ) : '';
- $action = isset( $_REQUEST['request'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['request'] ) ) : '';
- $email = isset( $_REQUEST['email'] ) ? sanitize_email( wp_unslash( $_REQUEST['email'] ) ) : '';
+ $product_id = self::get_query_var( 'product_id', 'absint' );
+ $key = self::get_query_var( 'serial_key' );
+ $action = self::get_query_var( 'request' );
+ $email = strtolower( self::get_query_var( 'email' ) );
WCSN()->log(
'API request',
@@ -131,7 +153,7 @@ public static function process_request() {
}
// If email is provided, check if it is valid.
- if ( ( $email || wcsn_is_duplicate_key_allowed() ) && $order->get_billing_email() !== $email ) {
+ if ( ( $email || wcsn_is_duplicate_key_allowed() ) && strtolower( $order->get_billing_email() ) !== $email ) {
wp_send_json_error(
array(
'code' => 'invalid_email',
@@ -208,9 +230,9 @@ public static function validate_key( $serial_key ) {
* @since 1.0.0
*/
public static function activate_key( $serial_key ) {
- $user_agent = ! empty( $_SERVER['HTTP_USER_AGENT'] ) ? md5( sanitize_textarea_field( $_SERVER['HTTP_USER_AGENT'] ) . time() ) : md5( time() );
- $instance = ! empty( $_REQUEST['instance'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['instance'] ) ) : $user_agent; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
- $platform = ! empty( $_REQUEST['platform'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['platform'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ $user_agent = ! empty( $_SERVER['HTTP_USER_AGENT'] ) ? md5( sanitize_textarea_field( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) . time() ) : md5( time() );
+ $instance = self::get_query_var( 'instance', 'sanitize_text_field', $user_agent );
+ $platform = self::get_query_var( 'platform' );
// Check if instance key is valid.
if ( empty( $instance ) ) {
@@ -311,7 +333,7 @@ public static function activate_key( $serial_key ) {
* @since 1.0.0
*/
public static function deactivate_key( $serial_key ) {
- $instance = ! empty( $_REQUEST['instance'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['instance'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
+ $instance = self::get_query_var( 'instance' );
// Check if instance key is valid.
if ( empty( $instance ) ) {
@@ -391,4 +413,24 @@ public static function check_version( $serial_key ) {
)
);
}
+
+ /**
+ * Get query var.
+ *
+ * @param string $key Query var key.
+ * @param string $sanitize Sanitize method.
+ * @param mixed $fallback Fallback value.
+ *
+ * @since 1.0.0
+ * @return mixed
+ */
+ public static function get_query_var( $key, $sanitize = 'sanitize_text_field', $fallback = null ) {
+ global $wp;
+
+ if ( isset( $wp->query_vars[ $key ] ) ) {
+ return call_user_func( $sanitize, wp_unslash( $wp->query_vars[ $key ] ) );
+ }
+
+ return $fallback;
+ }
}
diff --git a/src/Actions.php b/src/Actions.php
index 8ffc9df6..b26fe1f2 100644
--- a/src/Actions.php
+++ b/src/Actions.php
@@ -121,7 +121,7 @@ public static function revoke_order_item_keys( $revoke ) {
* @since 1.0.0
*/
public static function update_activation_count( $activation ) {
- $key = Key::get( $activation->serial_id );
+ $key = Key::get( $activation->get_serial_id() );
if ( $key ) {
$key->recount_remaining_activation();
}
diff --git a/src/Admin/Actions.php b/src/Admin/Actions.php
index 5b194ccb..77365bf4 100644
--- a/src/Admin/Actions.php
+++ b/src/Admin/Actions.php
@@ -194,7 +194,6 @@ public static function handle_add_key() {
update_post_meta( $product_id, '_is_serial_number', 'yes' );
update_post_meta( $product_id, '_serial_key_source', 'custom_source' );
$status = isset( $data['status'] ) ? $data['status'] : '';
-
}
/**
diff --git a/src/Admin/Admin.php b/src/Admin/Admin.php
index 5d2ecbf1..9d10ad4c 100644
--- a/src/Admin/Admin.php
+++ b/src/Admin/Admin.php
@@ -31,7 +31,7 @@ public function __construct() {
* @since 1.0.0
*/
public function init() {
- WCSN()->services['admin/settings'] = Settings::get_instance();
+ WCSN()->services['admin/settings'] = Settings::instance();
WCSN()->services['admin/menus'] = new Menus();
WCSN()->services['admin/notices'] = new Notices();
WCSN()->services['admin/actions'] = new Actions();
@@ -75,6 +75,9 @@ public function enqueue_scripts( $hook ) {
'apiurl' => site_url( '?wc-api=serial-numbers-api' ),
)
);
+
+ // add inline style for select2 --wp-admin-theme-color.
+ wp_add_inline_style( 'common', ':root{--wp-admin-theme-color:#0073aa;}' );
}
@@ -136,7 +139,7 @@ public function update_footer( $footer_text ) {
*/
public static function get_screen_ids() {
$screen_id = sanitize_title( __( 'Serial Numbers', 'wc-serial-numbers' ) );
- $screen_ids = [
+ $screen_ids = array(
'toplevel_page_' . $screen_id,
'toplevel_page_wc-serial-numbers',
$screen_id . '_page_wc-serial-numbers-activations',
@@ -144,7 +147,7 @@ public static function get_screen_ids() {
$screen_id . '_page_wc-serial-numbers-tools',
$screen_id . '_page_wc-serial-numbers-reports',
$screen_id . '_page_wc-serial-numbers-settings',
- ];
+ );
return apply_filters( 'wc_serial_numbers_screen_ids', $screen_ids );
}
@@ -159,7 +162,7 @@ public static function get_screen_ids() {
* @since 1.0.0
* @return void
*/
- public static function view( $view, $args = [], $path = '' ) {
+ public static function view( $view, $args = array(), $path = '' ) {
if ( empty( $path ) ) {
$path = __DIR__ . '/views/';
}
diff --git a/src/Admin/ListTables/ActivationsTable.php b/src/Admin/ListTables/ActivationsTable.php
index a2677a8d..b7bb8755 100644
--- a/src/Admin/ListTables/ActivationsTable.php
+++ b/src/Admin/ListTables/ActivationsTable.php
@@ -51,18 +51,18 @@ public function __construct() {
public function prepare_items() {
$per_page = $this->get_items_per_page( 'wcsn_activations_per_page' );
$columns = $this->get_columns();
- $hidden = [];
+ $hidden = array();
$sortable = $this->get_sortable_columns();
$this->_column_headers = array( $columns, $hidden, $sortable );
$current_page = $this->get_pagenum();
- $orderby = isset( $_GET['orderby'] ) ? sanitize_key( $_GET['orderby'] ) : 'order_date';
- $order = isset( $_GET['order'] ) ? sanitize_key( $_GET['order'] ) : 'desc';
- $search = isset( $_GET['s'] ) ? sanitize_text_field( $_GET['s'] ) : null;
- $product_id = isset( $_GET['product_id'] ) ? absint( $_GET['product_id'] ) : '';
- $order_id = isset( $_GET['order_id'] ) ? absint( $_GET['order_id'] ) : '';
- $customer_id = isset( $_GET['customer_id'] ) ? absint( $_GET['customer_id'] ) : '';
- $id = isset( $_GET['id'] ) ? absint( $_GET['id'] ) : '';
- $serial_id = isset( $_GET['serial_id'] ) ? absint( $_GET['serial_id'] ) : '';
+ $orderby = filter_input( INPUT_GET, 'orderby', FILTER_SANITIZE_SPECIAL_CHARS );
+ $order = filter_input( INPUT_GET, 'order', FILTER_SANITIZE_SPECIAL_CHARS );
+ $search = filter_input( INPUT_GET, 's', FILTER_SANITIZE_SPECIAL_CHARS );
+ $product_id = filter_input( INPUT_GET, 'product_id', FILTER_SANITIZE_NUMBER_INT );
+ $order_id = filter_input( INPUT_GET, 'order_id', FILTER_SANITIZE_NUMBER_INT );
+ $customer_id = filter_input( INPUT_GET, 'customer_id', FILTER_SANITIZE_NUMBER_INT );
+ $id = filter_input( INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT );
+ $serial_id = filter_input( INPUT_GET, 'serial_id', FILTER_SANITIZE_NUMBER_INT );
if ( array_key_exists( $orderby, $this->get_sortable_columns() ) && 'order_date' !== $orderby ) {
$args['orderby'] = $orderby;
@@ -91,7 +91,6 @@ public function prepare_items() {
'total_pages' => $this->total_count > 0 ? ceil( $this->total_count / $per_page ) : 0,
)
);
-
}
/**
@@ -101,27 +100,16 @@ public function no_items() {
esc_html_e( 'No activations found. Once a serial key is activated, it will appear here.', 'wc-serial-numbers' );
}
- /**
- * Retrieve the view types
- *
- * @since 1.0.0
- * @return array $views All the views sellable
- */
- public function get_views() {
- return parent::get_views();
- }
-
/**
* Adds the order and product filters to the licenses list.
*
- * @param string $which
+ * @param string $which Which nav.
*/
protected function extra_tablenav( $which ) {
- if ( $which === 'top' ) {
+ if ( 'top' === $which ) {
echo '
%1$s
%2$s', esc_html( $activation->get_instance() ), $this->row_actions( $actions ) );
}
@@ -299,5 +287,4 @@ protected function column_platform( $activation ) {
protected function column_activation_time( $activation ) {
return empty( $activation->get_activation_time() ) ? '—' : esc_html( $activation->get_activation_time() );
}
-
}
diff --git a/src/Admin/ListTables/KeysTable.php b/src/Admin/ListTables/KeysTable.php
index 401cb9fe..f316cbdb 100644
--- a/src/Admin/ListTables/KeysTable.php
+++ b/src/Admin/ListTables/KeysTable.php
@@ -90,18 +90,19 @@ public function __construct() {
public function prepare_items() {
$per_page = $this->get_items_per_page( 'wc_serial_numbers_keys_per_page' );
$columns = $this->get_columns();
- $hidden = [];
+ $hidden = array();
$sortable = $this->get_sortable_columns();
$this->_column_headers = array( $columns, $hidden, $sortable );
$current_page = $this->get_pagenum();
- $status = isset( $_GET['status'] ) ? $_GET['status'] : '';
- $orderby = isset( $_GET['orderby'] ) ? sanitize_key( $_GET['orderby'] ) : 'order_date';
- $order = isset( $_GET['order'] ) ? sanitize_key( $_GET['order'] ) : 'desc';
- $search = isset( $_GET['s'] ) ? sanitize_text_field( $_GET['s'] ) : null;
- $product_id = isset( $_GET['product_id'] ) ? absint( $_GET['product_id'] ) : '';
- $order_id = isset( $_GET['order_id'] ) ? absint( $_GET['order_id'] ) : '';
- $customer_id = isset( $_GET['customer_id'] ) ? absint( $_GET['customer_id'] ) : '';
- $id = isset( $_GET['id'] ) ? absint( $_GET['id'] ) : '';
+ $status = filter_input( INPUT_GET, 'status', FILTER_SANITIZE_SPECIAL_CHARS );
+ $orderby = filter_input( INPUT_GET, 'orderby', FILTER_SANITIZE_SPECIAL_CHARS );
+ $order = filter_input( INPUT_GET, 'order', FILTER_SANITIZE_SPECIAL_CHARS );
+ $search = filter_input( INPUT_GET, 's', FILTER_SANITIZE_SPECIAL_CHARS );
+ $product_id = filter_input( INPUT_GET, 'product_id', FILTER_SANITIZE_NUMBER_INT );
+ $order_id = filter_input( INPUT_GET, 'order_id', FILTER_SANITIZE_NUMBER_INT );
+ $customer_id = filter_input( INPUT_GET, 'customer_id', FILTER_SANITIZE_NUMBER_INT );
+ $id = filter_input( INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT );
+
if ( ! empty( $status ) && ! array_key_exists( $status, wcsn_get_key_statuses() ) ) {
$status = 'available';
}
@@ -124,12 +125,12 @@ public function prepare_items() {
);
$this->items = Key::query( $args );
- $this->available_count = Key::count( array_merge( $args, [ 'status' => 'available' ] ) );
- $this->pending_count = Key::count( array_merge( $args, [ 'status' => 'pending' ] ) );
- $this->sold_count = Key::count( array_merge( $args, [ 'status' => 'sold' ] ) );
- $this->expired_count = Key::count( array_merge( $args, [ 'status' => 'expired' ] ) );
- $this->cancelled_count = Key::count( array_merge( $args, [ 'status' => 'cancelled' ] ) );
- $this->total_count = array_sum( [ $this->available_count, $this->sold_count, $this->pending_count, $this->expired_count, $this->cancelled_count ] );
+ $this->available_count = Key::count( array_merge( $args, array( 'status' => 'available' ) ) );
+ $this->pending_count = Key::count( array_merge( $args, array( 'status' => 'pending' ) ) );
+ $this->sold_count = Key::count( array_merge( $args, array( 'status' => 'sold' ) ) );
+ $this->expired_count = Key::count( array_merge( $args, array( 'status' => 'expired' ) ) );
+ $this->cancelled_count = Key::count( array_merge( $args, array( 'status' => 'cancelled' ) ) );
+ $this->total_count = array_sum( array( $this->available_count, $this->sold_count, $this->pending_count, $this->expired_count, $this->cancelled_count ) );
switch ( $status ) {
case 'available':
@@ -160,14 +161,13 @@ public function prepare_items() {
'total_pages' => $total_items > 0 ? ceil( $total_items / $per_page ) : 0,
)
);
-
}
/**
* No items found text.
*/
public function no_items() {
- echo sprintf( '%s %s', esc_html__( 'No keys found.', 'wc-serial-numbers' ), '' . esc_html__( 'Add new key', 'wc-serial-numbers' ) . '' );
+ printf( '%s %s', esc_html__( 'No keys found.', 'wc-serial-numbers' ), '' . esc_html__( 'Add new key', 'wc-serial-numbers' ) . '' );
// Show a documentation about key's statuses.
?>
%s %s
', __( 'The free version of Serial Numbers for WooCommerce does not support product variation.', 'wc-serial-numbers' ), 'https://www.pluginever.com/plugins/woocommerce-serial-numbers-pro/?utm_source=product_page_license_area&utm_medium=link&utm_campaign=wc-serial-numbers&utm_content=Upgrade%20to%20Pro', __( 'Upgrade to Pro', 'wc-serial-numbers' ) ); + echo wp_kses_post( + sprintf( + '%s %s
', + __( 'The free version of Serial Numbers for WooCommerce does not support product variation.', 'wc-serial-numbers' ), + 'https://www.pluginever.com/plugins/woocommerce-serial-numbers-pro/?utm_source=product_page_license_area&utm_medium=link&utm_campaign=wc-serial-numbers&utm_content=Upgrade%20to%20Pro', + __( 'Upgrade to Pro', 'wc-serial-numbers' ) + ) + ); } - } /** @@ -151,13 +165,17 @@ public static function variable_product_content( $loop, $variation_data, $variat */ public static function product_save_data() { global $post; + if ( ! isset( $_POST['woocommerce_meta_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['woocommerce_meta_nonce'] ) ), 'woocommerce_save_data' ) ) { + return; + } $status = isset( $_POST['_is_serial_number'] ) ? 'yes' : 'no'; - $source = isset( $_POST['_serial_key_source'] ) ? sanitize_text_field( $_POST['_serial_key_source'] ) : 'custom_source'; + $source = isset( $_POST['_serial_key_source'] ) ? sanitize_text_field( wp_unslash( $_POST['_serial_key_source'] ) ) : 'custom_source'; update_post_meta( $post->ID, '_is_serial_number', $status ); update_post_meta( $post->ID, '_serial_key_source', $source ); - // save only if software licensing enabled - if ( ! wc_serial_numbers_software_support_disabled() ) { - update_post_meta( $post->ID, '_software_version', ! empty( $_POST['_software_version'] ) ? sanitize_text_field( $_POST['_software_version'] ) : '' ); + // save only if software licensing enabled. + if ( wcsn_is_software_support_enabled() ) { + $software_version = isset( $_POST['_software_version'] ) ? sanitize_text_field( wp_unslash( $_POST['_software_version'] ) ) : ''; + update_post_meta( $post->ID, '_software_version', $software_version ); } do_action( 'wcsn_save_simple_product_meta', $post ); @@ -165,42 +183,40 @@ public static function product_save_data() { /** + * Display serial numbers in order item meta. * - * @param $o_item - * @param $product - * - * @param $o_item_id + * @param int $o_item_id order item id. + * @param \WC_Order_Item $o_item order item object. + * @param \WC_Product $product product object. * * @since 1.1.6 * - * @return bool|string + * @return void */ public function order_itemmeta( $o_item_id, $o_item, $product ) { global $post; if ( ! is_object( $post ) || ! isset( $post->ID ) ) { - return false; + return; } $order = wc_get_order( $post->ID ); - // bail for no order + // bail for no order. if ( ! $order ) { - return false; + return; } if ( 'completed' !== $order->get_status( 'edit' ) ) { - return ''; + return; } - // if this is not product then no need to process + // if this is not product then no need to process. if ( empty( $product ) ) { - return false; + return; } - $is_serial_product = 'yes' == get_post_meta( $product->get_id(), '_is_serial_number', true ); - - if ( ! $is_serial_product ) { - return false; + if ( 'yes' !== get_post_meta( $product->get_id(), '_is_serial_number', true ) ) { + return; } $items = wcsn_get_keys( @@ -211,22 +227,28 @@ public function order_itemmeta( $o_item_id, $o_item, $product ) { ); if ( empty( $items ) && $order ) { - echo sprintf( '