From 769d8fbe9bbe2291c7ab0a101d18ea0ddc7c5af6 Mon Sep 17 00:00:00 2001 From: Bojan Rajh Date: Mon, 18 Apr 2022 13:45:32 +0200 Subject: [PATCH 1/3] 8.0 --- .github/workflows/checkout.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/checkout.yml b/.github/workflows/checkout.yml index 31bbb77..43ff81d 100644 --- a/.github/workflows/checkout.yml +++ b/.github/workflows/checkout.yml @@ -2,9 +2,9 @@ name: Pckg Payment CI on: push: - branches: [ master ] + branches: [ master, next-8.0 ] pull_request: - branches: [ master ] + branches: [ master, next-8.0 ] jobs: @@ -16,7 +16,7 @@ jobs: strategy: fail-fast: true matrix: - php-versions: [ '7.4', '8.0' ] + php-versions: [ '8.0' ] steps: - uses: actions/checkout@v2 From 6417b4a5f0a55dab01fd01e6412071388e3e97c6 Mon Sep 17 00:00:00 2001 From: Bojan Rajh Date: Fri, 22 Apr 2022 21:34:06 +0200 Subject: [PATCH 2/3] Reformat --- composer.json | 34 +- composer.lock | 7323 ++++++++++++----- src/Pckg/Payment/Adapter/AbstractCustomer.php | 35 +- src/Pckg/Payment/Adapter/AbstractOrder.php | 55 +- src/Pckg/Payment/Adapter/AbstractProduct.php | 25 +- src/Pckg/Payment/Adapter/Customer.php | 40 +- src/Pckg/Payment/Adapter/Environment.php | 43 +- .../Payment/Adapter/Environment/Laravel.php | 54 - src/Pckg/Payment/Adapter/Environment/Pckg.php | 127 +- src/Pckg/Payment/Adapter/Log.php | 16 +- src/Pckg/Payment/Adapter/Order.php | 70 +- src/Pckg/Payment/Adapter/Product.php | 34 +- src/Pckg/Payment/Controller/Payment.php | 15 +- src/Pckg/Payment/Entity/Addresses.php | 22 + src/Pckg/Payment/Entity/Companies.php | 27 + src/Pckg/Payment/Entity/Countries.php | 11 + src/Pckg/Payment/Entity/PaymentLogs.php | 8 +- src/Pckg/Payment/Entity/Payments.php | 10 +- src/Pckg/Payment/Entity/PaymentsMorphs.php | 8 +- src/Pckg/Payment/Form/Bancontact.php | 8 +- src/Pckg/Payment/Form/CreditCard.php | 8 +- src/Pckg/Payment/Form/Ideal.php | 8 +- .../Payment/Form/PlatformSettings/Axcess.php | 8 +- .../Form/PlatformSettings/BankTransfer.php | 8 +- .../Payment/Form/PlatformSettings/Bankart.php | 8 +- .../Form/PlatformSettings/Braintree.php | 8 +- .../Form/PlatformSettings/CheckoutPortal.php | 8 +- .../Payment/Form/PlatformSettings/Cod.php | 8 +- .../Form/PlatformSettings/CorvusPay.php | 8 +- .../Payment/Form/PlatformSettings/Icepay.php | 8 +- .../Payment/Form/PlatformSettings/Leanpay.php | 6 +- .../Payment/Form/PlatformSettings/Mollie.php | 8 +- .../Payment/Form/PlatformSettings/Monri.php | 8 +- .../Payment/Form/PlatformSettings/Paypal.php | 8 +- .../PlatformSettings/RequireWhenEnabled.php | 8 +- .../Payment/Form/PlatformSettings/Revolut.php | 8 +- .../Payment/Form/PlatformSettings/Stripe.php | 8 +- .../Payment/Form/PlatformSettings/Upn.php | 8 +- .../Payment/Form/PlatformSettings/Valu.php | 8 +- .../Form/PlatformSettings/VivaWallet.php | 8 +- src/Pckg/Payment/Form/Sofort.php | 8 +- src/Pckg/Payment/Handler.php | 7 + src/Pckg/Payment/Handler/AbstractHandler.php | 578 +- src/Pckg/Payment/Handler/Axcess.php | 6 +- src/Pckg/Payment/Handler/BankTransfer.php | 8 +- src/Pckg/Payment/Handler/Bankart.php | 8 +- src/Pckg/Payment/Handler/BankartCC.php | 8 +- src/Pckg/Payment/Handler/Braintree.php | 426 +- src/Pckg/Payment/Handler/CheckoutPortal.php | 454 +- src/Pckg/Payment/Handler/Cod.php | 8 +- src/Pckg/Payment/Handler/CommsWallet.php | 10 +- src/Pckg/Payment/Handler/Handler.php | 88 +- src/Pckg/Payment/Handler/Icepay.php | 483 +- .../Handler/Icepay/Americanexpress.php | 19 +- .../Payment/Handler/Icepay/Bancontact.php | 54 +- .../Payment/Handler/Icepay/CreditCard.php | 29 +- src/Pckg/Payment/Handler/Icepay/Eps.php | 51 +- src/Pckg/Payment/Handler/Icepay/Giropay.php | 51 +- src/Pckg/Payment/Handler/Icepay/Ideal.php | 56 +- .../Payment/Handler/Icepay/Mastercard.php | 19 +- src/Pckg/Payment/Handler/Icepay/Sofort.php | 54 +- src/Pckg/Payment/Handler/Icepay/Visa.php | 19 +- src/Pckg/Payment/Handler/Leanpay.php | 5 +- src/Pckg/Payment/Handler/ManagesWebhooks.php | 2 +- src/Pckg/Payment/Handler/MojCent.php | 7 +- src/Pckg/Payment/Handler/Mollie.php | 353 +- .../Payment/Handler/Mollie/Bancontact.php | 8 +- .../Payment/Handler/Mollie/Creditcard.php | 8 +- src/Pckg/Payment/Handler/Mollie/Eps.php | 8 +- src/Pckg/Payment/Handler/Mollie/Giropay.php | 8 +- src/Pckg/Payment/Handler/Mollie/Ideal.php | 8 +- src/Pckg/Payment/Handler/Mollie/Sofort.php | 8 +- src/Pckg/Payment/Handler/Monri.php | 8 +- .../Handler/Omnipay/AbstractOmnipay.php | 9 +- .../Payment/Handler/Omnipay/CorvusPay.php | 8 +- src/Pckg/Payment/Handler/Omnipay/Revolut.php | 7 +- src/Pckg/Payment/Handler/Paymill.php | 223 +- src/Pckg/Payment/Handler/Paymill/Paypal.php | 150 +- src/Pckg/Payment/Handler/Paymill/Sepa.php | 75 +- src/Pckg/Payment/Handler/Paypal.php | 376 +- src/Pckg/Payment/Handler/PaypalGnp.php | 543 +- src/Pckg/Payment/Handler/PaypalRest.php | 320 +- src/Pckg/Payment/Handler/Proforma.php | 202 +- src/Pckg/Payment/Handler/Stripe.php | 14 +- src/Pckg/Payment/Handler/Upn.php | 7 +- .../Payment/Handler/Upn/QRCodeGenerator.php | 6 +- src/Pckg/Payment/Handler/Valu.php | 16 +- src/Pckg/Payment/Handler/Valu/CMoneta.php | 74 - src/Pckg/Payment/Handler/Valu/ValuHelper.php | 23 +- src/Pckg/Payment/Handler/VivaWallet.php | 363 +- src/Pckg/Payment/Provider/Payment.php | 16 +- src/Pckg/Payment/Record/Address.php | 23 + src/Pckg/Payment/Record/Company.php | 72 + src/Pckg/Payment/Record/Country.php | 60 + src/Pckg/Payment/Record/Payment.php | 33 +- src/Pckg/Payment/Record/PaymentLog.php | 8 +- src/Pckg/Payment/Record/PaymentsMorph.php | 8 +- src/Pckg/Payment/Resolver/Company.php | 14 + src/Pckg/Payment/Resolver/Payment.php | 8 +- src/Pckg/Payment/Service/Handlers.php | 385 +- src/Pckg/Payment/Service/LaravelPayment.php | 16 - src/Pckg/Payment/Service/Payment.php | 212 +- src/Pckg/Payment/Service/PckgPayment.php | 34 +- 103 files changed, 8452 insertions(+), 5843 deletions(-) delete mode 100644 src/Pckg/Payment/Adapter/Environment/Laravel.php create mode 100644 src/Pckg/Payment/Entity/Addresses.php create mode 100644 src/Pckg/Payment/Entity/Companies.php create mode 100644 src/Pckg/Payment/Entity/Countries.php create mode 100644 src/Pckg/Payment/Handler.php delete mode 100644 src/Pckg/Payment/Handler/Valu/CMoneta.php create mode 100644 src/Pckg/Payment/Record/Address.php create mode 100644 src/Pckg/Payment/Record/Company.php create mode 100644 src/Pckg/Payment/Record/Country.php create mode 100644 src/Pckg/Payment/Resolver/Company.php delete mode 100644 src/Pckg/Payment/Service/LaravelPayment.php diff --git a/composer.json b/composer.json index 1c05e49..64f4986 100644 --- a/composer.json +++ b/composer.json @@ -18,23 +18,39 @@ } ], "require": { + "ext-json": "*", "paymill/paymill": "4.*", "paypal/rest-api-sdk-php": "1.*", "braintree/braintree_php": "3.*", "mollie/mollie-api-php": "^2.0", "stripe/stripe-php": "7.*", - "wirecard/payment-sdk-php": "dev-master", + "wirecard/payment-sdk-php": "dev-patch-php-8 as dev-master", "icepay/api": "^0.0.1", "ampeco/omnipay-bankart": "dev-master", "eoler/omnipay-corvuspay": "*" }, "require-dev": { - "pckg-app/frontend-dev": "dev-master" + "pckg-app/frontend-dev": "dev-next-8.0 as dev-master", + "pckg/database": "dev-next-8.0 as dev-master", + "pckg/framework": "dev-next-8.0 as dev-master", + "pckg/auth": "dev-next-8.0 as dev-master", + "pckg/htmlbuilder": "dev-next-8.0 as dev-master", + "pckg/collection": "dev-next-8.0 as dev-master", + "pckg/generic": "dev-next-8.0 as dev-master", + "nesbot/carbon": "2.*" }, "repositories": [ { "type": "vcs", "url": "https://github.com/Eoler/omnipay-corvuspay.git" + }, + { + "type": "vcs", + "url": "https://github.com/schtr4jh/omnipay-revolut.git" + }, + { + "type": "vcs", + "url": "https://github.com/schtr4jh/paymentSDK-php.git" } ], "autoload": { @@ -44,11 +60,17 @@ }, "scripts": { "test": [ - "vendor/bin/phpunit --help --stop-on-defect", - "vendor/bin/phpcloc cloc src/", + "true || vendor/bin/phpunit --help --stop-on-defect", + "true || vendor/bin/phpcloc cloc src/", "vendor/bin/phpstan analyse src/ --level=1 || true", - "vendor/bin/phpcs -p src/ || true", - "vendor/bin/codecept run" + "true || vendor/bin/phpcs --extensions=php --warning-severity=8 --error-severity=1 --standard=PSR12 --parallel=2 -p src/", + "true || vendor/bin/codecept run" + ], + "autofix": [ + "vendor/bin/phpcs --extensions=php --report-diff=phpcs.diff --warning-severity=8 --error-severity=1 --standard=PSR12 --parallel=2 -p src/" + ], + "autopatch": [ + "patch -p0 -ui phpcs.diff && rm phpcs.diff" ] }, "scripts-descriptions": { diff --git a/composer.lock b/composer.lock index ae5e699..68c8da2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cb32a7be13696e94a616cf292907b68c", + "content-hash": "36ae5424ce77fc6bbdce13a5b99665c4", "packages": [ { "name": "ampeco/omnipay-bankart", @@ -34,8 +34,8 @@ "type": "project", "autoload": { "psr-4": { - "PaymentGateway\\Client\\": "api/", - "Ampeco\\OmnipayBankart\\": "src/" + "Ampeco\\OmnipayBankart\\": "src/", + "PaymentGateway\\Client\\": "api/" } }, "notification-url": "https://packagist.org/downloads/", @@ -102,16 +102,16 @@ }, { "name": "clue/stream-filter", - "version": "v1.5.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/clue/stream-filter.git", - "reference": "aeb7d8ea49c7963d3b581378955dbf5bc49aa320" + "reference": "d6169430c7731d8509da7aecd0af756a5747b78e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/clue/stream-filter/zipball/aeb7d8ea49c7963d3b581378955dbf5bc49aa320", - "reference": "aeb7d8ea49c7963d3b581378955dbf5bc49aa320", + "url": "https://api.github.com/repos/clue/stream-filter/zipball/d6169430c7731d8509da7aecd0af756a5747b78e", + "reference": "d6169430c7731d8509da7aecd0af756a5747b78e", "shasum": "" }, "require": { @@ -122,12 +122,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "Clue\\StreamFilter\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "Clue\\StreamFilter\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -152,7 +152,7 @@ ], "support": { "issues": "https://github.com/clue/stream-filter/issues", - "source": "https://github.com/clue/stream-filter/tree/v1.5.0" + "source": "https://github.com/clue/stream-filter/tree/v1.6.0" }, "funding": [ { @@ -164,20 +164,20 @@ "type": "github" } ], - "time": "2020-10-02T12:38:20+00:00" + "time": "2022-02-21T13:15:14+00:00" }, { "name": "composer/ca-bundle", - "version": "1.2.9", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5" + "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/78a0e288fdcebf92aa2318a8d3656168da6ac1a5", - "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", + "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", "shasum": "" }, "require": { @@ -189,7 +189,7 @@ "phpstan/phpstan": "^0.12.55", "psr/log": "^1.0", "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" }, "type": "library", "extra": { @@ -224,7 +224,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.2.9" + "source": "https://github.com/composer/ca-bundle/tree/1.3.1" }, "funding": [ { @@ -240,7 +240,7 @@ "type": "tidelift" } ], - "time": "2021-01-12T12:10:35+00:00" + "time": "2021-10-28T20:44:15+00:00" }, { "name": "eoler/omnipay-corvuspay", @@ -300,238 +300,6 @@ }, "time": "2019-06-06T22:51:13+00:00" }, - { - "name": "guzzlehttp/guzzle", - "version": "7.2.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0aa74dfb41ae110835923ef10a9d803a22d50e79", - "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.4", - "guzzlehttp/psr7": "^1.7", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "psr/log": "^1.1" - }, - "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": { - "branch-alias": { - "dev-master": "7.1-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "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.2.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://github.com/alexeyshockov", - "type": "github" - }, - { - "url": "https://github.com/gmponos", - "type": "github" - } - ], - "time": "2020-10-10T11:47:56+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "60d379c243457e073cff02bc323a2a86cb355631" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", - "reference": "60d379c243457e073cff02bc323a2a86cb355631", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.0" - }, - "time": "2020-09-30T07:37:28+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "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/1.7.0" - }, - "time": "2020-09-30T07:37:11+00:00" - }, { "name": "icepay/api", "version": "0.0.1", @@ -599,30 +367,31 @@ }, { "name": "mollie/mollie-api-php", - "version": "v2.29.0", + "version": "v2.42.1", "source": { "type": "git", "url": "https://github.com/mollie/mollie-api-php.git", - "reference": "619349868112df2825d7a225d4e92f9fb7e9f2d8" + "reference": "1ced5854c98af5cffca09b1093156ebdac277285" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/619349868112df2825d7a225d4e92f9fb7e9f2d8", - "reference": "619349868112df2825d7a225d4e92f9fb7e9f2d8", + "url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/1ced5854c98af5cffca09b1093156ebdac277285", + "reference": "1ced5854c98af5cffca09b1093156ebdac277285", "shasum": "" }, "require": { - "composer/ca-bundle": "^1.1", + "composer/ca-bundle": "^1.2", "ext-curl": "*", "ext-json": "*", "ext-openssl": "*", - "guzzlehttp/guzzle": "^6.3 || ^7.0", - "php": ">=5.6" + "php": "^7.0|^8.0" }, "require-dev": { - "eloquent/liberator": "^2.0", - "friendsofphp/php-cs-fixer": "^v2.17", - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.1 || ^8.5" + "eloquent/liberator": "^2.0||^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "guzzlehttp/guzzle": "^6.3 || ^7.0", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^6.5 || ^7.1 || ^8.5 || ^9.5" }, "suggest": { "mollie/oauth2-mollie-php": "Use OAuth to authenticate with the Mollie API. This is needed for some endpoints. Visit https://docs.mollie.com/ for more information." @@ -684,47 +453,50 @@ ], "support": { "issues": "https://github.com/mollie/mollie-api-php/issues", - "source": "https://github.com/mollie/mollie-api-php/tree/v2.29.0" + "source": "https://github.com/mollie/mollie-api-php/tree/v2.42.1" }, - "time": "2021-01-27T10:05:15+00:00" + "time": "2022-04-21T11:21:14+00:00" }, { "name": "moneyphp/money", - "version": "v3.3.1", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/moneyphp/money.git", - "reference": "122664c2621a95180a13c1ac81fea1d2ef20781e" + "reference": "d945f775bd6ab0920d9d205813d8831a899a8844" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/moneyphp/money/zipball/122664c2621a95180a13c1ac81fea1d2ef20781e", - "reference": "122664c2621a95180a13c1ac81fea1d2ef20781e", + "url": "https://api.github.com/repos/moneyphp/money/zipball/d945f775bd6ab0920d9d205813d8831a899a8844", + "reference": "d945f775bd6ab0920d9d205813d8831a899a8844", "shasum": "" }, "require": { + "ext-bcmath": "*", + "ext-filter": "*", "ext-json": "*", - "php": ">=5.6" + "php": "^8.0" }, "require-dev": { - "cache/taggable-cache": "^0.4.0", - "doctrine/instantiator": "^1.0.5", - "ext-bcmath": "*", + "cache/taggable-cache": "^1.1.0", + "doctrine/coding-standard": "^9.0", + "doctrine/instantiator": "^1.4.0", "ext-gmp": "*", "ext-intl": "*", - "florianv/exchanger": "^1.0", - "florianv/swap": "^3.0", - "friends-of-phpspec/phpspec-code-coverage": "^3.1.1 || ^4.3", + "florianv/exchanger": "^2.6.3", + "florianv/swap": "^4.3.0", "moneyphp/iso-currencies": "^3.2.1", - "php-http/message": "^1.4", - "php-http/mock-client": "^1.0.0", - "phpspec/phpspec": "^3.4.3", - "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.18 || ^8.5", - "psr/cache": "^1.0", - "symfony/phpunit-bridge": "^4" + "php-http/message": "^1.11.0", + "php-http/mock-client": "^1.4.1", + "phpbench/phpbench": "1.0.0-beta1@BETA", + "phpspec/phpspec": "^7.0.1", + "phpunit/phpunit": "^9.5.4", + "psalm/plugin-phpunit": "^0.15.1", + "psr/cache": "^1.0.1", + "roave/infection-static-analysis-plugin": "^1.7", + "vimeo/psalm": "~4.7.0 || ^4.8.2" }, "suggest": { - "ext-bcmath": "Calculate without integer limits", "ext-gmp": "Calculate without integer limits", "ext-intl": "Format Money objects with intl", "florianv/exchanger": "Exchange rates library for PHP", @@ -770,57 +542,70 @@ ], "support": { "issues": "https://github.com/moneyphp/money/issues", - "source": "https://github.com/moneyphp/money/tree/master" + "source": "https://github.com/moneyphp/money/tree/v4.0.3" }, - "time": "2020-03-18T17:49:59+00:00" + "time": "2021-12-01T10:39:00+00:00" }, { "name": "monolog/monolog", - "version": "1.26.0", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33" + "reference": "4192345e260f1d51b365536199744b987e160edc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/2209ddd84e7ef1256b7af205d0717fb62cfc9c33", - "reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4192345e260f1d51b365536199744b987e160edc", + "reference": "4192345e260f1d51b365536199744b987e160edc", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0" + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" }, "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "php-amqplib/php-amqplib": "~2.4", + "elasticsearch/elasticsearch": "^7", + "graylog2/gelf-php": "^1.4.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", + "phpspec/prophecy": "^1.6.1", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": ">=0.90@dev", "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -834,11 +619,11 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ "log", "logging", @@ -846,7 +631,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.26.0" + "source": "https://github.com/Seldaek/monolog/tree/2.5.0" }, "funding": [ { @@ -858,34 +643,34 @@ "type": "tidelift" } ], - "time": "2020-12-14T12:56:38+00:00" + "time": "2022-04-08T15:43:54+00:00" }, { "name": "omnipay/common", - "version": "v3.0.5", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/thephpleague/omnipay-common.git", - "reference": "0d1f4486c1c873537ac030d37c7ce2986c4de1d2" + "reference": "e278ff00676c05cd0f4aaaf6189a226f26ae056e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay-common/zipball/0d1f4486c1c873537ac030d37c7ce2986c4de1d2", - "reference": "0d1f4486c1c873537ac030d37c7ce2986c4de1d2", + "url": "https://api.github.com/repos/thephpleague/omnipay-common/zipball/e278ff00676c05cd0f4aaaf6189a226f26ae056e", + "reference": "e278ff00676c05cd0f4aaaf6189a226f26ae056e", "shasum": "" }, "require": { - "moneyphp/money": "^3.1", - "php": "^5.6|^7", + "moneyphp/money": "^3.1|^4.0.3", + "php": "^7.2|^8", "php-http/client-implementation": "^1", - "php-http/discovery": "^1.2.1", + "php-http/discovery": "^1.14", "php-http/message": "^1.5", - "symfony/http-foundation": "^2.1|^3|^4|^5" + "symfony/http-foundation": "^2.1|^3|^4|^5|^6" }, "require-dev": { - "omnipay/tests": "^3", + "omnipay/tests": "^4.1", + "php-http/guzzle7-adapter": "^1", "php-http/mock-client": "^1", - "phpro/grumphp": "^0.14", "squizlabs/php_codesniffer": "^3.5" }, "suggest": { @@ -894,7 +679,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -942,9 +727,15 @@ ], "support": { "issues": "https://github.com/thephpleague/omnipay-common/issues", - "source": "https://github.com/thephpleague/omnipay-common/tree/v3.0.5" + "source": "https://github.com/thephpleague/omnipay-common/tree/v3.2.0" }, - "time": "2020-08-20T18:22:12+00:00" + "funding": [ + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2021-12-30T11:32:00+00:00" }, { "name": "paymill/paymill", @@ -1044,28 +835,29 @@ }, { "name": "php-http/client-common", - "version": "1.10.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/php-http/client-common.git", - "reference": "c0390ae3c8f2ae9d50901feef0127fb9e396f6b4" + "reference": "1901ad36347227c14751a218d8f4ea1467d1f1ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/c0390ae3c8f2ae9d50901feef0127fb9e396f6b4", - "reference": "c0390ae3c8f2ae9d50901feef0127fb9e396f6b4", + "url": "https://api.github.com/repos/php-http/client-common/zipball/1901ad36347227c14751a218d8f4ea1467d1f1ed", + "reference": "1901ad36347227c14751a218d8f4ea1467d1f1ed", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0", + "php": ">=5.4", "php-http/httplug": "^1.1", "php-http/message": "^1.6", "php-http/message-factory": "^1.0", - "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0 || ^5.0" + "symfony/options-resolver": "^2.6 || ^3.0" }, "require-dev": { "guzzlehttp/psr7": "^1.4", - "phpspec/phpspec": "^2.5 || ^3.4 || ^4.2" + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.4" }, "suggest": { "php-http/cache-plugin": "PSR-6 Cache plugin", @@ -1075,7 +867,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10.x-dev" + "dev-master": "1.7-dev" } }, "autoload": { @@ -1103,44 +895,44 @@ ], "support": { "issues": "https://github.com/php-http/client-common/issues", - "source": "https://github.com/php-http/client-common/tree/1.x" + "source": "https://github.com/php-http/client-common/tree/master" }, - "time": "2019-11-18T08:54:36+00:00" + "time": "2017-10-16T16:16:36+00:00" }, { "name": "php-http/discovery", - "version": "1.6.1", + "version": "1.14.1", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "684855f2c2e9d0a61868b8f8d6bd0295c8a4b651" + "reference": "de90ab2b41d7d61609f504e031339776bc8c7223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/684855f2c2e9d0a61868b8f8d6bd0295c8a4b651", - "reference": "684855f2c2e9d0a61868b8f8d6bd0295c8a4b651", + "url": "https://api.github.com/repos/php-http/discovery/zipball/de90ab2b41d7d61609f504e031339776bc8c7223", + "reference": "de90ab2b41d7d61609f504e031339776bc8c7223", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0" + "php": "^7.1 || ^8.0" }, "conflict": { "nyholm/psr7": "<1.0" }, "require-dev": { + "graham-campbell/phpspec-skip-example-extension": "^5.0", "php-http/httplug": "^1.0 || ^2.0", "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^2.4", + "phpspec/phpspec": "^5.1 || ^6.1", "puli/composer-plugin": "1.0.0-beta10" }, "suggest": { - "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories", - "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details." + "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -1171,9 +963,9 @@ ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/master" + "source": "https://github.com/php-http/discovery/tree/1.14.1" }, - "time": "2019-02-23T07:42:53+00:00" + "time": "2021-09-18T07:57:46+00:00" }, { "name": "php-http/httplug", @@ -1237,21 +1029,21 @@ }, { "name": "php-http/message", - "version": "1.7.2", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/php-http/message.git", - "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1" + "reference": "2edd63bae5f52f79363c5f18904b05ce3a4b7253" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/b159ffe570dffd335e22ef0b91a946eacb182fa1", - "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1", + "url": "https://api.github.com/repos/php-http/message/zipball/2edd63bae5f52f79363c5f18904b05ce3a4b7253", + "reference": "2edd63bae5f52f79363c5f18904b05ce3a4b7253", "shasum": "" }, "require": { - "clue/stream-filter": "^1.4", - "php": "^5.4 || ^7.0", + "clue/stream-filter": "^1.3", + "php": ">=5.4", "php-http/message-factory": "^1.0.2", "psr/http-message": "^1.0" }, @@ -1281,12 +1073,12 @@ } }, "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - }, "files": [ "src/filters.php" - ] + ], + "psr-4": { + "Http\\Message\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1309,7 +1101,7 @@ "issues": "https://github.com/php-http/message/issues", "source": "https://github.com/php-http/message/tree/master" }, - "time": "2018-11-01T09:32:41+00:00" + "time": "2017-07-05T06:40:53+00:00" }, { "name": "php-http/message-factory", @@ -1473,25 +1265,25 @@ }, { "name": "psr/container", - "version": "1.0.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -1506,7 +1298,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -1520,61 +1312,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/master" - }, - "time": "2017-02-14T16:28:37+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.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": "http://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/tree/master" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/http-message", @@ -1631,16 +1371,16 @@ }, { "name": "psr/log", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { @@ -1664,7 +1404,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -1675,53 +1415,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.3" - }, - "time": "2020-03-23T09:12:05+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" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, - "time": "2019-03-08T08:55:37+00:00" + "time": "2021-05-03T11:20:27+00:00" }, { "name": "robrichards/xmlseclibs", @@ -1767,16 +1463,16 @@ }, { "name": "stripe/stripe-php", - "version": "v7.69.0", + "version": "v7.125.0", "source": { "type": "git", "url": "https://github.com/stripe/stripe-php.git", - "reference": "6716cbc4ebf8cba7d45374a059c7c6e5bf53277d" + "reference": "822c00aa380c10c2a3c55d105c5da72ad577b7c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stripe/stripe-php/zipball/6716cbc4ebf8cba7d45374a059c7c6e5bf53277d", - "reference": "6716cbc4ebf8cba7d45374a059c7c6e5bf53277d", + "url": "https://api.github.com/repos/stripe/stripe-php/zipball/822c00aa380c10c2a3c55d105c5da72ad577b7c4", + "reference": "822c00aa380c10c2a3c55d105c5da72ad577b7c4", "shasum": "" }, "require": { @@ -1786,11 +1482,10 @@ "php": ">=5.6.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "2.17.1", - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "^3.3", - "symfony/process": "~3.4" + "friendsofphp/php-cs-fixer": "3.5.0", + "phpstan/phpstan": "^1.2", + "phpunit/phpunit": "^5.7 || ^9.0", + "squizlabs/php_codesniffer": "^3.3" }, "type": "library", "extra": { @@ -1822,31 +1517,31 @@ ], "support": { "issues": "https://github.com/stripe/stripe-php/issues", - "source": "https://github.com/stripe/stripe-php/tree/v7.69.0" + "source": "https://github.com/stripe/stripe-php/tree/v7.125.0" }, - "time": "2021-01-22T03:21:13+00:00" + "time": "2022-04-21T22:31:37+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.2.0", + "version": "v3.0.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", - "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -1875,7 +1570,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/master" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.1" }, "funding": [ { @@ -1891,49 +1586,47 @@ "type": "tidelift" } ], - "time": "2020-09-07T11:33:47+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/http-client", - "version": "v5.2.1", + "version": "v6.0.7", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "a77cbec69ea90dea509beef29b79748c0df33a83" + "reference": "a7930c47248b9b57e9d0b8da100ffc1e031536dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/a77cbec69ea90dea509beef29b79748c0df33a83", - "reference": "a77cbec69ea90dea509beef29b79748c0df33a83", + "url": "https://api.github.com/repos/symfony/http-client/zipball/a7930c47248b9b57e9d0b8da100ffc1e031536dc", + "reference": "a7930c47248b9b57e9d0b8da100ffc1e031536dc", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/log": "^1.0", - "symfony/http-client-contracts": "^2.2", - "symfony/polyfill-php73": "^1.11", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.0|^2" + "php": ">=8.0.2", + "psr/log": "^1|^2|^3", + "symfony/http-client-contracts": "^3", + "symfony/service-contracts": "^1.0|^2|^3" }, "provide": { "php-http/async-client-implementation": "*", "php-http/client-implementation": "*", "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "1.1" + "symfony/http-client-implementation": "3.0" }, "require-dev": { "amphp/amp": "^2.5", "amphp/http-client": "^4.2.1", "amphp/http-tunnel": "^1.0", "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.3.1", + "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-kernel": "^4.4.13|^5.1.5", - "symfony/process": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -1958,10 +1651,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpClient component", + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v5.2.1" + "source": "https://github.com/symfony/http-client/tree/v6.0.7" }, "funding": [ { @@ -1977,33 +1670,32 @@ "type": "tidelift" } ], - "time": "2020-12-14T10:56:50+00:00" + "time": "2022-04-01T12:27:43+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.3.1", + "version": "v3.0.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "41db680a15018f9c1d4b23516059633ce280ca33" + "reference": "f7525778c712be78ad5b6ca31f47fdcfd404c280" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33", - "reference": "41db680a15018f9c1d4b23516059633ce280ca33", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/f7525778c712be78ad5b6ca31f47fdcfd404c280", + "reference": "f7525778c712be78ad5b6ca31f47fdcfd404c280", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=8.0.2" }, "suggest": { "symfony/http-client-implementation": "" }, "type": "library", "extra": { - "branch-version": "2.3", "branch-alias": { - "dev-main": "2.3-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -2040,7 +1732,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.3.1" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.0.1" }, "funding": [ { @@ -2056,33 +1748,32 @@ "type": "tidelift" } ], - "time": "2020-10-14T17:08:19+00:00" + "time": "2022-03-13T20:10:05+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.2.1", + "version": "v6.0.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "a1f6218b29897ab52acba58cfa905b83625bef8d" + "reference": "c816b26f03b6902dba79b352c84a17f53d815f0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a1f6218b29897ab52acba58cfa905b83625bef8d", - "reference": "a1f6218b29897ab52acba58cfa905b83625bef8d", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c816b26f03b6902dba79b352c84a17f53d815f0d", + "reference": "c816b26f03b6902dba79b352c84a17f53d815f0d", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.15" + "php": ">=8.0.2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0" + "symfony/cache": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0" }, "suggest": { "symfony/mime": "To use the file extension guesser" @@ -2110,10 +1801,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpFoundation Component", + "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.2.1" + "source": "https://github.com/symfony/http-foundation/tree/v6.0.7" }, "funding": [ { @@ -2129,27 +1820,24 @@ "type": "tidelift" } ], - "time": "2020-12-18T10:00:10+00:00" + "time": "2022-03-24T14:13:59+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.2.1", + "version": "v3.4.47", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "87a2a4a766244e796dd9cb9d6f58c123358cd986" + "reference": "c7efc97a47b2ebaabc19d5b6c6b50f5c37c92744" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/87a2a4a766244e796dd9cb9d6f58c123358cd986", - "reference": "87a2a4a766244e796dd9cb9d6f58c123358cd986", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/c7efc97a47b2ebaabc19d5b6c6b50f5c37c92744", + "reference": "c7efc97a47b2ebaabc19d5b6c6b50f5c37c92744", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.15" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "autoload": { @@ -2182,7 +1870,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.2.1" + "source": "https://github.com/symfony/options-resolver/tree/v3.4.47" }, "funding": [ { @@ -2198,32 +1886,35 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:08:07+00:00" + "time": "2020-10-24T10:57:07+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.22.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13" + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, "suggest": { "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -2231,12 +1922,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2262,7 +1953,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" }, "funding": [ { @@ -2278,45 +1969,46 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-11-30T18:21:41+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.22.0", + "name": "symfony/service-contracts", + "version": "v3.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e517458f278c2131ca9f262f8fbaf01410f2c65c", + "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c", "shasum": "" }, "require": { - "php": ">=7.1" + "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": "1.22-dev" + "dev-main": "3.0-dev" }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2332,16 +2024,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.0.1" }, "funding": [ { @@ -2357,45 +2051,45 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2022-03-13T20:10:05+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.22.0", + "name": "whichbrowser/parser", + "version": "v2.0.42", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" + "url": "https://github.com/WhichBrowser/Parser-PHP.git", + "reference": "4899110cd2f87b01e04ced62dbb9dec541031dee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", + "url": "https://api.github.com/repos/WhichBrowser/Parser-PHP/zipball/4899110cd2f87b01e04ced62dbb9dec541031dee", + "reference": "4899110cd2f87b01e04ced62dbb9dec541031dee", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=5.4.0", + "psr/cache": "^1.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.22-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "icomefromthenet/reverse-regex": "0.0.6.3", + "phpunit/php-code-coverage": "^2.2 || ^3.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0", + "satooshi/php-coveralls": "^1.0", + "squizlabs/php_codesniffer": "2.5.*", + "symfony/yaml": "~2.8 || ~3.4 || ~4.2 || ~5.0" }, + "suggest": { + "cache/array-adapter": "Allows testing of the caching functionality" + }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "WhichBrowser\\": [ + "src/", + "tests/src/" + ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2403,207 +2097,45 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Niels Leenheer", + "email": "niels@leenheer.nl", + "role": "Developer" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Useragent sniffing library for PHP", + "homepage": "http://whichbrowser.net", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "browser", + "sniffing", + "ua", + "useragent" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.0" + "issues": "https://github.com/WhichBrowser/Parser-PHP/issues", + "source": "https://github.com/WhichBrowser/Parser-PHP/tree/v2.0.42" }, - "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": "2021-01-07T16:49:33+00:00" + "time": "2020-02-12T10:54:23+00:00" }, { - "name": "symfony/service-contracts", - "version": "v2.2.0", + "name": "wirecard/iso-paypal-converter", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" + "url": "https://github.com/wirecard/iso-paypal-converter.git", + "reference": "94bf024f71fdbd9b21344c03e14ec99197cf672a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", - "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "url": "https://api.github.com/repos/wirecard/iso-paypal-converter/zipball/94bf024f71fdbd9b21344c03e14ec99197cf672a", + "reference": "94bf024f71fdbd9b21344c03e14ec99197cf672a", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.0" + "php": ">=5.6" }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-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/master" - }, - "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": "2020-09-07T11:33:47+00:00" - }, - { - "name": "whichbrowser/parser", - "version": "v2.0.42", - "source": { - "type": "git", - "url": "https://github.com/WhichBrowser/Parser-PHP.git", - "reference": "4899110cd2f87b01e04ced62dbb9dec541031dee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/WhichBrowser/Parser-PHP/zipball/4899110cd2f87b01e04ced62dbb9dec541031dee", - "reference": "4899110cd2f87b01e04ced62dbb9dec541031dee", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/cache": "^1.0" - }, - "require-dev": { - "icomefromthenet/reverse-regex": "0.0.6.3", - "phpunit/php-code-coverage": "^2.2 || ^3.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0", - "satooshi/php-coveralls": "^1.0", - "squizlabs/php_codesniffer": "2.5.*", - "symfony/yaml": "~2.8 || ~3.4 || ~4.2 || ~5.0" - }, - "suggest": { - "cache/array-adapter": "Allows testing of the caching functionality" - }, - "type": "library", - "autoload": { - "psr-4": { - "WhichBrowser\\": [ - "src/", - "tests/src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Niels Leenheer", - "email": "niels@leenheer.nl", - "role": "Developer" - } - ], - "description": "Useragent sniffing library for PHP", - "homepage": "http://whichbrowser.net", - "keywords": [ - "browser", - "sniffing", - "ua", - "useragent" - ], - "support": { - "issues": "https://github.com/WhichBrowser/Parser-PHP/issues", - "source": "https://github.com/WhichBrowser/Parser-PHP/tree/v2.0.42" - }, - "time": "2020-02-12T10:54:23+00:00" - }, - { - "name": "wirecard/iso-paypal-converter", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/wirecard/iso-paypal-converter.git", - "reference": "94bf024f71fdbd9b21344c03e14ec99197cf672a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wirecard/iso-paypal-converter/zipball/94bf024f71fdbd9b21344c03e14ec99197cf672a", - "reference": "94bf024f71fdbd9b21344c03e14ec99197cf672a", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "^2.7" + "require-dev": { + "phpunit/phpunit": "^5.7", + "squizlabs/php_codesniffer": "^2.7" }, "type": "library", "autoload": { @@ -2624,16 +2156,16 @@ }, { "name": "wirecard/payment-sdk-php", - "version": "dev-master", + "version": "dev-patch-php-8", "source": { "type": "git", - "url": "https://github.com/wirecard/paymentSDK-php.git", - "reference": "21e5f961237343606f049b8b97fff46eed63bf75" + "url": "https://github.com/schtr4jh/paymentSDK-php.git", + "reference": "c5749b68011c73644cf40e64c68712f4efe8af13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wirecard/paymentSDK-php/zipball/21e5f961237343606f049b8b97fff46eed63bf75", - "reference": "21e5f961237343606f049b8b97fff46eed63bf75", + "url": "https://api.github.com/repos/schtr4jh/paymentSDK-php/zipball/c5749b68011c73644cf40e64c68712f4efe8af13", + "reference": "c5749b68011c73644cf40e64c68712f4efe8af13", "shasum": "" }, "require": { @@ -2645,10 +2177,10 @@ "ext-mbstring": "*", "ext-openssl": "*", "ext-simplexml": "*", - "monolog/monolog": "^1.16", - "php": "5.6.* || 7.0.* || 7.1.* || 7.2.* || 7.3.* || 7.4.*", + "monolog/monolog": "1.* || 2.*", + "php": "5.6.* || 7.0.* || 7.1.* || 7.2.* || 7.3.* || 7.4.* || 8.0.*", "php-http/client-common": "^1.0", - "php-http/discovery": "^1.0 <= 1.6.1", + "php-http/discovery": "1.*", "php-http/message": "~1.6.0 || ~1.7.0", "psr/log": "^1.0.0", "robrichards/xmlseclibs": "~3.1.0", @@ -2664,96 +2196,70 @@ "phpunit/phpunit": "^5.7", "squizlabs/php_codesniffer": "^3.3" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { "Wirecard\\PaymentSdk\\": "src/" } }, - "notification-url": "https://packagist.org/downloads/", + "autoload-dev": { + "psr-4": { + "WirecardTest\\PaymentSdk\\": "test/", + "Wirecard\\PaymentSdk\\Example\\Constants\\": "examples/inc/constants/" + } + }, + "scripts": { + "upload-coverage": [ + "codacycoverage clover build/coverage/xml" + ], + "cs-check": [ + "phpcs" + ], + "cs-fix": [ + "phpcbf" + ], + "test": [ + "phpunit --colors=always" + ], + "test-coverage": [ + "phpunit --coverage-clover build/coverage/xml" + ], + "infection": [ + "infection --threads=4 --min-msi=75 --min-covered-msi=75 --only-covered --log-verbosity=2" + ] + }, "license": [ "MIT" ], "description": "PHP SDK for the payment processing ReST API of Wirecard", "support": { - "source": "https://github.com/wirecard/paymentSDK-php/tree/master" + "source": "https://github.com/schtr4jh/paymentSDK-php/tree/patch-php-8" }, - "time": "2020-08-20T09:22:04+00:00" + "time": "2022-04-18T13:00:15+00:00" } ], "packages-dev": [ - { - "name": "appzcoder/phpcloc", - "version": "v0.0.2", - "source": { - "type": "git", - "url": "https://github.com/appzcoder/phpcloc.git", - "reference": "b8da7420a826361e66959e024e8223a76b5139eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/appzcoder/phpcloc/zipball/b8da7420a826361e66959e024e8223a76b5139eb", - "reference": "b8da7420a826361e66959e024e8223a76b5139eb", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/console": "^3.4 || ^4.0" - }, - "bin": [ - "phpcloc" - ], - "type": "library", - "autoload": { - "psr-4": { - "Appzcoder\\PHPCloc\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sohel Amin", - "email": "sohelamincse@gmail.com" - } - ], - "description": "Cloc & duplicate code checker tool.", - "keywords": [ - "cloc", - "count lines of code", - "duplicate code checker", - "phpcloc" - ], - "support": { - "issues": "https://github.com/appzcoder/phpcloc/issues", - "source": "https://github.com/appzcoder/phpcloc/tree/master" - }, - "time": "2018-05-27T06:27:35+00:00" - }, { "name": "behat/gherkin", - "version": "v4.7.1", + "version": "v4.9.0", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "987bcdc3d29ba433e6bd4b1db4ae59737ba3dacd" + "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/987bcdc3d29ba433e6bd4b1db4ae59737ba3dacd", - "reference": "987bcdc3d29ba433e6bd4b1db4ae59737ba3dacd", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/0bc8d1e30e96183e4f36db9dc79caead300beff4", + "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4", "shasum": "" }, "require": { - "php": ">=5.6" + "php": "~7.2|~8.0" }, "require-dev": { - "phpunit/phpunit": "~5.7|~6|~7", - "symfony/phpunit-bridge": "~2.7|~3|~4", - "symfony/yaml": "~2.3|~3|~4" + "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" @@ -2761,7 +2267,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "4.x-dev" } }, "autoload": { @@ -2792,33 +2298,33 @@ ], "support": { "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.7.1" + "source": "https://github.com/Behat/Gherkin/tree/v4.9.0" }, - "time": "2021-01-26T16:24:32+00:00" + "time": "2021-10-12T13:05:09+00:00" }, { "name": "codeception/codeception", - "version": "4.1.16", + "version": "4.1.31", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "daf4fe110b33855252009a0dcab87ce8bcf7c009" + "reference": "15524571ae0686a7facc2eb1f40f600e5bbce9e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/daf4fe110b33855252009a0dcab87ce8bcf7c009", - "reference": "daf4fe110b33855252009a0dcab87ce8bcf7c009", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/15524571ae0686a7facc2eb1f40f600e5bbce9e5", + "reference": "15524571ae0686a7facc2eb1f40f600e5bbce9e5", "shasum": "" }, "require": { "behat/gherkin": "^4.4.0", - "codeception/lib-asserts": "^1.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", + "codeception/stub": "^2.0 | ^3.0 | ^4.0", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "guzzlehttp/psr7": "~1.4", + "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", @@ -2827,11 +2333,11 @@ "symfony/yaml": ">=2.7 <6.0" }, "require-dev": { - "codeception/module-asserts": "*@dev", - "codeception/module-cli": "*@dev", - "codeception/module-db": "*@dev", - "codeception/module-filesystem": "*@dev", - "codeception/module-phpbrowser": "*@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", @@ -2854,6 +2360,9 @@ "branch-alias": [] }, "autoload": { + "files": [ + "functions.php" + ], "psr-4": { "Codeception\\": "src/Codeception", "Codeception\\Extension\\": "ext" @@ -2881,7 +2390,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.1.16" + "source": "https://github.com/Codeception/Codeception/tree/4.1.31" }, "funding": [ { @@ -2889,7 +2398,7 @@ "type": "open_collective" } ], - "time": "2021-01-26T07:25:32+00:00" + "time": "2022-03-13T17:07:08+00:00" }, { "name": "codeception/lib-asserts", @@ -2947,20 +2456,20 @@ }, { "name": "codeception/lib-innerbrowser", - "version": "1.3.6", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/Codeception/lib-innerbrowser.git", - "reference": "41b79ba6761001bdb1f373a347400180693ad4e7" + "reference": "31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/41b79ba6761001bdb1f373a347400180693ad4e7", - "reference": "41b79ba6761001bdb1f373a347400180693ad4e7", + "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2", + "reference": "31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2", "shasum": "" }, "require": { - "codeception/codeception": "*@dev", + "codeception/codeception": "4.*@dev", "ext-dom": "*", "ext-json": "*", "ext-mbstring": "*", @@ -3001,9 +2510,9 @@ ], "support": { "issues": "https://github.com/Codeception/lib-innerbrowser/issues", - "source": "https://github.com/Codeception/lib-innerbrowser/tree/1.3.6" + "source": "https://github.com/Codeception/lib-innerbrowser/tree/1.5.1" }, - "time": "2021-01-17T11:21:09+00:00" + "time": "2021-08-30T15:21:42+00:00" }, { "name": "codeception/module-asserts", @@ -3063,34 +2572,26 @@ "time": "2020-10-21T16:48:15+00:00" }, { - "name": "codeception/module-phpbrowser", - "version": "1.0.2", + "name": "codeception/module-db", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/Codeception/module-phpbrowser.git", - "reference": "770a6be4160a5c0c08d100dd51bff35f6056bbf1" + "url": "https://github.com/Codeception/module-db.git", + "reference": "04c3e66fbd3a3ced17fcccc49627f6393a97b04b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/770a6be4160a5c0c08d100dd51bff35f6056bbf1", - "reference": "770a6be4160a5c0c08d100dd51bff35f6056bbf1", + "url": "https://api.github.com/repos/Codeception/module-db/zipball/04c3e66fbd3a3ced17fcccc49627f6393a97b04b", + "reference": "04c3e66fbd3a3ced17fcccc49627f6393a97b04b", "shasum": "" }, "require": { - "codeception/codeception": "^4.0", - "codeception/lib-innerbrowser": "^1.3", - "guzzlehttp/guzzle": "^6.3|^7.0", + "codeception/codeception": "*@dev", "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": [ @@ -3109,45 +2610,47 @@ "name": "Gintautas Miselis" } ], - "description": "Codeception module for testing web application over HTTP", + "description": "DB module for Codeception", "homepage": "http://codeception.com/", "keywords": [ "codeception", - "functional-testing", - "http" + "database-testing", + "db-testing" ], "support": { - "issues": "https://github.com/Codeception/module-phpbrowser/issues", - "source": "https://github.com/Codeception/module-phpbrowser/tree/1.0.2" + "issues": "https://github.com/Codeception/module-db/issues", + "source": "https://github.com/Codeception/module-db/tree/1.2.0" }, - "time": "2020-10-24T15:29:28+00:00" + "time": "2022-03-05T19:38:40+00:00" }, { - "name": "codeception/module-rest", - "version": "1.2.7", + "name": "codeception/module-phpbrowser", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/Codeception/module-rest.git", - "reference": "beeb5a91a97d042273bf10f00063e9b8f541879a" + "url": "https://github.com/Codeception/module-phpbrowser.git", + "reference": "770a6be4160a5c0c08d100dd51bff35f6056bbf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-rest/zipball/beeb5a91a97d042273bf10f00063e9b8f541879a", - "reference": "beeb5a91a97d042273bf10f00063e9b8f541879a", + "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/770a6be4160a5c0c08d100dd51bff35f6056bbf1", + "reference": "770a6be4160a5c0c08d100dd51bff35f6056bbf1", "shasum": "" }, "require": { "codeception/codeception": "^4.0", - "justinrainbow/json-schema": "~5.2.9", - "php": ">=5.6.0 <9.0", - "softcreatr/jsonpath": "^0.5 || ^0.7" + "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/lib-innerbrowser": "^1.0", - "codeception/util-universalframework": "^1.0" + "codeception/module-rest": "^1.0" }, "suggest": { - "aws/aws-sdk-php": "For using AWS Auth" + "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests" }, "type": "library", "autoload": { @@ -3160,45 +2663,49 @@ "MIT" ], "authors": [ + { + "name": "Michael Bodnarchuk" + }, { "name": "Gintautas Miselis" } ], - "description": "REST module for Codeception", + "description": "Codeception module for testing web application over HTTP", "homepage": "http://codeception.com/", "keywords": [ "codeception", - "rest" + "functional-testing", + "http" ], "support": { - "issues": "https://github.com/Codeception/module-rest/issues", - "source": "https://github.com/Codeception/module-rest/tree/1.2.7" + "issues": "https://github.com/Codeception/module-phpbrowser/issues", + "source": "https://github.com/Codeception/module-phpbrowser/tree/1.0.2" }, - "time": "2020-11-04T16:58:11+00:00" + "time": "2020-10-24T15:29:28+00:00" }, { - "name": "codeception/module-webdriver", - "version": "dev-master", + "name": "codeception/module-redis", + "version": "1.4.1", "source": { "type": "git", - "url": "https://github.com/Codeception/module-webdriver.git", - "reference": "63ea08880a44df809bdfbca08597e1b68cee9f87" + "url": "https://github.com/Codeception/module-redis.git", + "reference": "a0f26804200346761500a37a39aed919ada20b3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-webdriver/zipball/63ea08880a44df809bdfbca08597e1b68cee9f87", - "reference": "63ea08880a44df809bdfbca08597e1b68cee9f87", + "url": "https://api.github.com/repos/Codeception/module-redis/zipball/a0f26804200346761500a37a39aed919ada20b3f", + "reference": "a0f26804200346761500a37a39aed919ada20b3f", "shasum": "" }, "require": { - "codeception/codeception": "^4.0", - "php": ">=5.6.0 <9.0", - "php-webdriver/webdriver": "^1.8.0" + "codeception/codeception": "^4.1", + "php": "^7.4 | ^8.0", + "predis/predis": "^1.1", + "sebastian/comparator": "^4.0" }, - "suggest": { - "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests" + "require-dev": { + "codeception/stub": "^4.0" }, - "default-branch": true, "type": "library", "autoload": { "classmap": [ @@ -3214,10 +2721,116 @@ "name": "Michael Bodnarchuk" }, { - "name": "Gintautas Miselis" - }, - { - "name": "Zaahid Bateson" + "name": "Dmitriy Maltsev" + } + ], + "description": "Redis module for Codeception", + "homepage": "https://codeception.com/", + "keywords": [ + "codeception", + "redis" + ], + "support": { + "issues": "https://github.com/Codeception/module-redis/issues", + "source": "https://github.com/Codeception/module-redis/tree/1.4.1" + }, + "time": "2021-12-21T01:52:19+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.0", + "source": { + "type": "git", + "url": "https://github.com/Codeception/module-webdriver.git", + "reference": "baa18b7bf70aa024012f967b5ce5021e1faa9151" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/module-webdriver/zipball/baa18b7bf70aa024012f967b5ce5021e1faa9151", + "reference": "baa18b7bf70aa024012f967b5ce5021e1faa9151", + "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", @@ -3229,22 +2842,22 @@ ], "support": { "issues": "https://github.com/Codeception/module-webdriver/issues", - "source": "https://github.com/Codeception/module-webdriver/tree/1.2.0" + "source": "https://github.com/Codeception/module-webdriver/tree/1.4.0" }, - "time": "2021-01-17T19:23:20+00:00" + "time": "2021-09-02T12:01:02+00:00" }, { "name": "codeception/phpunit-wrapper", - "version": "9.0.6", + "version": "9.0.7", "source": { "type": "git", "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "b0c06abb3181eedca690170f7ed0fd26a70bfacc" + "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/b0c06abb3181eedca690170f7ed0fd26a70bfacc", - "reference": "b0c06abb3181eedca690170f7ed0fd26a70bfacc", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7d6b1a5ea4ed28d010e5d36b993db813eb49710b", + "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b", "shasum": "" }, "require": { @@ -3278,26 +2891,76 @@ "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.6" + "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.7" + }, + "time": "2022-01-26T14:43:10+00:00" + }, + { + "name": "codeception/specify", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Specify.git", + "reference": "17ae6d4d6cb201ef5461f6587ecfcff8c177f854" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Specify/zipball/17ae6d4d6cb201ef5461f6587ecfcff8c177f854", + "reference": "17ae6d4d6cb201ef5461f6587ecfcff8c177f854", + "shasum": "" + }, + "require": { + "myclabs/deep-copy": "~1.1", + "php": ">=7.1.0", + "phpunit/phpunit": ">=7.0 <10.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Codeception\\": "src/" + } }, - "time": "2020-12-28T13:59:47+00:00" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert@codeception.com" + }, + { + "name": "Gustavo Nieves", + "homepage": "https://medium.com/@ganieves" + } + ], + "description": "BDD code blocks for PHPUnit and Codeception", + "support": { + "issues": "https://github.com/Codeception/Specify/issues", + "source": "https://github.com/Codeception/Specify/tree/1.4.0" + }, + "time": "2020-08-27T20:17:29+00:00" }, { "name": "codeception/stub", - "version": "3.7.0", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/Codeception/Stub.git", - "reference": "468dd5fe659f131fc997f5196aad87512f9b1304" + "reference": "18a148dacd293fc7b044042f5aa63a82b08bff5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304", - "reference": "468dd5fe659f131fc997f5196aad87512f9b1304", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/18a148dacd293fc7b044042f5aa63a82b08bff5d", + "reference": "18a148dacd293fc7b044042f5aa63a82b08bff5d", "shasum": "" }, "require": { - "phpunit/phpunit": "^8.4 | ^9.0" + "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": { @@ -3312,35 +2975,135 @@ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", "support": { "issues": "https://github.com/Codeception/Stub/issues", - "source": "https://github.com/Codeception/Stub/tree/3.7.0" + "source": "https://github.com/Codeception/Stub/tree/4.0.2" + }, + "time": "2022-01-31T19:25:15+00:00" + }, + { + "name": "doctrine/cache", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/4cf401d14df219fa6f38b671f5493449151c9ad8", + "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8", + "shasum": "" + }, + "require": { + "php": "~7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "cache/integration-tests": "dev-master", + "doctrine/coding-standard": "^8.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "predis/predis": "~1.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", + "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "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 Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", + "keywords": [ + "abstraction", + "apcu", + "cache", + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" + ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/1.12.1" }, - "time": "2020-07-03T15:54:43+00:00" + "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%2Fcache", + "type": "tidelift" + } + ], + "time": "2021-07-17T14:39:21+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -3367,7 +3130,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -3383,114 +3146,96 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { - "name": "justinrainbow/json-schema", - "version": "5.2.10", + "name": "ezyang/htmlpurifier", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "1dd3e52365c32a142fb7c9c9f8f038f18e353270" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", - "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/1dd3e52365c32a142fb7c9c9f8f038f18e353270", + "reference": "1dd3e52365c32a142fb7c9c9f8f038f18e353270", "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" + "php": ">=5.2" }, - "bin": [ - "bin/validate-json" - ], + "default-branch": true, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "LGPL-2.1-or-later" ], "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" + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" } ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", "keywords": [ - "json", - "schema" + "html" ], "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.10" + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/master" }, - "time": "2020-05-27T16:41:55+00:00" + "time": "2022-04-08T17:48:12+00:00" }, { - "name": "maximebf/debugbar", - "version": "v1.16.5", + "name": "filp/whoops", + "version": "2.14.5", "source": { "type": "git", - "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "6d51ee9e94cff14412783785e79a4e7ef97b9d62" + "url": "https://github.com/filp/whoops.git", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/6d51ee9e94cff14412783785e79a4e7ef97b9d62", - "reference": "6d51ee9e94cff14412783785e79a4e7ef97b9d62", + "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", "shasum": "" }, "require": { - "php": "^7.1|^8", - "psr/log": "^1.0", - "symfony/var-dumper": "^2.6|^3|^4|^5" + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "require-dev": { - "phpunit/phpunit": "^7.5.20 || ^9.4.2" + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" }, "suggest": { - "kriswallsmith/assetic": "The best way to manage assets", - "monolog/monolog": "Log using Monolog", - "predis/predis": "Redis storage" + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.16-dev" + "dev-master": "2.7-dev" } }, "autoload": { "psr-4": { - "DebugBar\\": "src/DebugBar/" + "Whoops\\": "src/Whoops/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3499,120 +3244,2760 @@ ], "authors": [ { - "name": "Maxime Bouroumeau-Fuseau", - "email": "maxime.bouroumeau@gmail.com", - "homepage": "http://maximebf.com" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" } ], - "description": "Debug bar in the browser for php application", - "homepage": "https://github.com/maximebf/php-debugbar", + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", "keywords": [ - "debug", - "debugbar" + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" ], "support": { - "issues": "https://github.com/maximebf/php-debugbar/issues", - "source": "https://github.com/maximebf/php-debugbar/tree/v1.16.5" + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.14.5" }, - "time": "2020-12-07T11:07:24+00:00" + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2022-01-07T12:00:00+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.10.2", + "name": "guzzlehttp/guzzle", + "version": "7.4.2", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "url": "https://github.com/guzzle/guzzle.git", + "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ac1ec1cd9b5624694c3a40be801d94137afb12b4", + "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "ext-json": "*", + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.8.3 || ^2.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-curl": "*", + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "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": { + "branch-alias": { + "dev-master": "7.4-dev" + } + }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "DeepCopy\\": "src/DeepCopy/" + "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.4.2" + }, + "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": "2022-03-20T14:16:28+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { "files": [ - "src/DeepCopy/deep_copy.php" - ] + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", + "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": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "promise" ], "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.5.1" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "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": "2020-11-13T09:40:50+00:00" + "time": "2021-10-22T20:56:57+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.10.4", + "name": "guzzlehttp/psr7", + "version": "2.2.1", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e" + "url": "https://github.com/guzzle/psr7.git", + "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e", - "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2", + "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" }, "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "bamarni/composer-bin-plugin": "^1.4.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "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.2.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": "2022-03-20T21:55:58+00:00" + }, + { + "name": "josegonzalez/dotenv", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/josegonzalez/php-dotenv.git", + "reference": "f6d2fb63610f98b7ae859031566228dbade1a79c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/josegonzalez/php-dotenv/zipball/f6d2fb63610f98b7ae859031566228dbade1a79c", + "reference": "f6d2fb63610f98b7ae859031566228dbade1a79c", + "shasum": "" + }, + "require": { + "m1/env": "2.*", + "php": ">=5.5.0" + }, + "require-dev": { + "php-mock/php-mock-phpunit": "^1.1", + "satooshi/php-coveralls": "1.*", + "squizlabs/php_codesniffer": "2.*" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-0": { + "josegonzalez\\Dotenv": [ + "src", + "tests" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jose Diaz-Gonzalez", + "email": "dotenv@josegonzalez.com", + "homepage": "http://josediazgonzalez.com", + "role": "Maintainer" + } + ], + "description": "dotenv file parsing for PHP", + "homepage": "https://github.com/josegonzalez/php-dotenv", + "keywords": [ + "configuration", + "dotenv", + "php" + ], + "support": { + "issues": "https://github.com/josegonzalez/php-dotenv/issues", + "source": "https://github.com/josegonzalez/php-dotenv/tree/master" + }, + "time": "2019-07-07T21:21:39+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.12", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "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/5.2.12" + }, + "time": "2022-04-13T08:02:27+00:00" + }, + { + "name": "laminas/laminas-escaper", + "version": "2.10.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-escaper.git", + "reference": "58af67282db37d24e584a837a94ee55b9c7552be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/58af67282db37d24e584a837a94ee55b9c7552be", + "reference": "58af67282db37d24e584a837a94ee55b9c7552be", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-mbstring": "*", + "php": "^7.4 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-escaper": "*" + }, + "require-dev": { + "infection/infection": "^0.26.6", + "laminas/laminas-coding-standard": "~2.3.0", + "maglnet/composer-require-checker": "^3.8.0", + "phpunit/phpunit": "^9.5.18", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.22.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Escaper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", + "homepage": "https://laminas.dev", + "keywords": [ + "escaper", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-escaper/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-escaper/issues", + "rss": "https://github.com/laminas/laminas-escaper/releases.atom", + "source": "https://github.com/laminas/laminas-escaper" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2022-03-08T20:15:36+00:00" + }, + { + "name": "league/uri-parser", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-parser.git", + "reference": "671548427e4c932352d9b9279fdfa345bf63fa00" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-parser/zipball/671548427e4c932352d9b9279fdfa345bf63fa00", + "reference": "671548427e4c932352d9b9279fdfa345bf63fa00", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0", + "phpstan/phpstan": "^0.9.2", + "phpstan/phpstan-phpunit": "^0.9.4", + "phpstan/phpstan-strict-rules": "^0.9.0", + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-intl": "Allow parsing RFC3987 compliant hosts", + "league/uri-schemes": "Allow validating and normalizing URI parsing results" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "League\\Uri\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "userland URI parser RFC 3986 compliant", + "homepage": "https://github.com/thephpleague/uri-parser", + "keywords": [ + "parse_url", + "parser", + "rfc3986", + "rfc3987", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/thephpleague/uri-parser/issues", + "source": "https://github.com/thephpleague/uri-parser/tree/master" + }, + "time": "2018-11-22T07:55:51+00:00" + }, + { + "name": "m1/env", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/m1/Env.git", + "reference": "5c296e3e13450a207e12b343f3af1d7ab569f6f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/m1/Env/zipball/5c296e3e13450a207e12b343f3af1d7ab569f6f3", + "reference": "5c296e3e13450a207e12b343f3af1d7ab569f6f3", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*", + "scrutinizer/ocular": "~1.1", + "squizlabs/php_codesniffer": "^2.3" + }, + "suggest": { + "josegonzalez/dotenv": "For loading of .env", + "m1/vars": "For loading of configs" + }, + "type": "library", + "autoload": { + "psr-4": { + "M1\\Env\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Miles Croxford", + "email": "hello@milescroxford.com", + "homepage": "http://milescroxford.com", + "role": "Developer" + } + ], + "description": "Env is a lightweight library bringing .env file parser compatibility to PHP. In short - it enables you to read .env files with PHP.", + "homepage": "https://github.com/m1/Env", + "keywords": [ + ".env", + "config", + "dotenv", + "env", + "loader", + "m1", + "parser", + "support" + ], + "support": { + "issues": "https://github.com/m1/Env/issues", + "source": "https://github.com/m1/Env/tree/2.2.0" + }, + "time": "2020-02-19T09:02:13+00:00" + }, + { + "name": "maennchen/zipstream-php", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/c4c5803cc1f93df3d2448478ef79394a5981cc58", + "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58", + "shasum": "" + }, + "require": { + "myclabs/php-enum": "^1.5", + "php": ">= 7.1", + "psr/http-message": "^1.0", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "ext-zip": "*", + "guzzlehttp/guzzle": ">= 6.3", + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": ">= 7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/master" + }, + "funding": [ + { + "url": "https://opencollective.com/zipstream", + "type": "open_collective" + } + ], + "time": "2020-05-30T13:11:16+00:00" + }, + { + "name": "markbaker/complex", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "6f724d7e04606fd8adaa4e3bb381c3e9db09c946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/6f724d7e04606fd8adaa4e3bb381c3e9db09c946", + "reference": "6f724d7e04606fd8adaa4e3bb381c3e9db09c946", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "phpcompatibility/php-compatibility": "^9.0", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.3", + "squizlabs/php_codesniffer": "^3.4" + }, + "type": "library", + "autoload": { + "files": [ + "classes/src/functions/abs.php", + "classes/src/functions/acos.php", + "classes/src/functions/acosh.php", + "classes/src/functions/acot.php", + "classes/src/functions/acoth.php", + "classes/src/functions/acsc.php", + "classes/src/functions/acsch.php", + "classes/src/functions/argument.php", + "classes/src/functions/asec.php", + "classes/src/functions/asech.php", + "classes/src/functions/asin.php", + "classes/src/functions/asinh.php", + "classes/src/functions/atan.php", + "classes/src/functions/atanh.php", + "classes/src/functions/conjugate.php", + "classes/src/functions/cos.php", + "classes/src/functions/cosh.php", + "classes/src/functions/cot.php", + "classes/src/functions/coth.php", + "classes/src/functions/csc.php", + "classes/src/functions/csch.php", + "classes/src/functions/exp.php", + "classes/src/functions/inverse.php", + "classes/src/functions/ln.php", + "classes/src/functions/log2.php", + "classes/src/functions/log10.php", + "classes/src/functions/negative.php", + "classes/src/functions/pow.php", + "classes/src/functions/rho.php", + "classes/src/functions/sec.php", + "classes/src/functions/sech.php", + "classes/src/functions/sin.php", + "classes/src/functions/sinh.php", + "classes/src/functions/sqrt.php", + "classes/src/functions/tan.php", + "classes/src/functions/tanh.php", + "classes/src/functions/theta.php", + "classes/src/operations/add.php", + "classes/src/operations/subtract.php", + "classes/src/operations/multiply.php", + "classes/src/operations/divideby.php", + "classes/src/operations/divideinto.php" + ], + "psr-4": { + "Complex\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", + "keywords": [ + "complex", + "mathematics" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/2.0.3" + }, + "time": "2021-06-02T09:44:11+00:00" + }, + { + "name": "markbaker/matrix", + "version": "2.1.3", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "174395a901b5ba0925f1d790fa91bab531074b61" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/174395a901b5ba0925f1d790fa91bab531074b61", + "reference": "174395a901b5ba0925f1d790fa91bab531074b61", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "phpcompatibility/php-compatibility": "^9.0", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "^4.0", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.3", + "sebastian/phpcpd": "^4.0", + "squizlabs/php_codesniffer": "^3.4" + }, + "type": "library", + "autoload": { + "files": [ + "classes/src/Functions/adjoint.php", + "classes/src/Functions/antidiagonal.php", + "classes/src/Functions/cofactors.php", + "classes/src/Functions/determinant.php", + "classes/src/Functions/diagonal.php", + "classes/src/Functions/identity.php", + "classes/src/Functions/inverse.php", + "classes/src/Functions/minors.php", + "classes/src/Functions/trace.php", + "classes/src/Functions/transpose.php", + "classes/src/Operations/add.php", + "classes/src/Operations/directsum.php", + "classes/src/Operations/subtract.php", + "classes/src/Operations/multiply.php", + "classes/src/Operations/divideby.php", + "classes/src/Operations/divideinto.php" + ], + "psr-4": { + "Matrix\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@demon-angel.eu" + } + ], + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", + "keywords": [ + "mathematics", + "matrix", + "vector" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/2.1.3" + }, + "time": "2021-05-25T15:42:17+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.7.5", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f640ac1bdddff06ea333a920c95bbad8872429ab", + "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-libxml": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.7.5" + }, + "time": "2021-07-01T14:25:37+00:00" + }, + { + "name": "maximebf/debugbar", + "version": "v1.18.0", + "source": { + "type": "git", + "url": "https://github.com/maximebf/php-debugbar.git", + "reference": "0d44b75f3b5d6d41ae83b79c7a4bceae7fbc78b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/0d44b75f3b5d6d41ae83b79c7a4bceae7fbc78b6", + "reference": "0d44b75f3b5d6d41ae83b79c7a4bceae7fbc78b6", + "shasum": "" + }, + "require": { + "php": "^7.1|^8", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^2.6|^3|^4|^5|^6" + }, + "require-dev": { + "phpunit/phpunit": "^7.5.20 || ^9.4.2", + "twig/twig": "^1.38|^2.7|^3.0" + }, + "suggest": { + "kriswallsmith/assetic": "The best way to manage assets", + "monolog/monolog": "Log using Monolog", + "predis/predis": "Redis storage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "DebugBar\\": "src/DebugBar/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maxime Bouroumeau-Fuseau", + "email": "maxime.bouroumeau@gmail.com", + "homepage": "http://maximebf.com" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Debug bar in the browser for php application", + "homepage": "https://github.com/maximebf/php-debugbar", + "keywords": [ + "debug", + "debugbar" + ], + "support": { + "issues": "https://github.com/maximebf/php-debugbar/issues", + "source": "https://github.com/maximebf/php-debugbar/tree/v1.18.0" + }, + "time": "2021-12-27T18:49:48+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "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.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2022-03-03T13:19:32+00:00" + }, + { + "name": "myclabs/php-enum", + "version": "1.8.3", + "source": { + "type": "git", + "url": "https://github.com/myclabs/php-enum.git", + "reference": "b942d263c641ddb5190929ff840c68f78713e937" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937", + "reference": "b942d263c641ddb5190929ff840c68f78713e937", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "1.*", + "vimeo/psalm": "^4.6.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "MyCLabs\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP Enum contributors", + "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" + } + ], + "description": "PHP Enum implementation", + "homepage": "http://github.com/myclabs/php-enum", + "keywords": [ + "enum" + ], + "support": { + "issues": "https://github.com/myclabs/php-enum/issues", + "source": "https://github.com/myclabs/php-enum/tree/1.8.3" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", + "type": "tidelift" + } + ], + "time": "2021-07-05T08:18:36+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.57.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "4a54375c21eea4811dbd1149fe6b246517554e78" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4a54375c21eea4811dbd1149fe6b246517554e78", + "reference": "4a54375c21eea4811dbd1149fe6b246517554e78", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.0", + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.54 || ^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.14", + "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://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2022-02-13T18:13:33+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.13.2", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "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.13.2" + }, + "time": "2021-11-30T19:35:32+00:00" + }, + { + "name": "pckg-app/frontend-dev", + "version": "dev-next-8.0", + "source": { + "type": "git", + "url": "https://github.com/pckg-app/frontend-dev.git", + "reference": "6c7928bcfd463c8a5014f66cf7564009de21400d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pckg-app/frontend-dev/zipball/6c7928bcfd463c8a5014f66cf7564009de21400d", + "reference": "6c7928bcfd463c8a5014f66cf7564009de21400d", + "shasum": "" + }, + "require": { + "codeception/codeception": "4.*", + "codeception/module-asserts": "1.*", + "codeception/module-db": "1.*", + "codeception/module-phpbrowser": "1.*", + "codeception/module-redis": "1.*", + "codeception/module-rest": "^1.2", + "codeception/module-webdriver": "1.*", + "codeception/specify": "^1.4", + "maximebf/debugbar": "1.*", + "php": ">=8.0", + "phpstan/phpstan": "1.*", + "phpstan/phpstan-strict-rules": "1.*", + "squizlabs/php_codesniffer": "3.*" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Rajh", + "email": "schtr4jh@schtr4jh.net" + } + ], + "description": "Frontend pckg dev package", + "homepage": "https://github.com/pckg-app/frontend-dev", + "support": { + "issues": "https://github.com/pckg-app/frontend-dev/issues", + "source": "https://github.com/pckg-app/frontend-dev/tree/next-8.0" + }, + "time": "2022-04-18T16:14:59+00:00" + }, + { + "name": "pckg/auth", + "version": "dev-next-8.0", + "source": { + "type": "git", + "url": "https://github.com/pckg/auth.git", + "reference": "026f06d996eaa844897c4602961911700110a83e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pckg/auth/zipball/026f06d996eaa844897c4602961911700110a83e", + "reference": "026f06d996eaa844897c4602961911700110a83e", + "shasum": "" + }, + "require": { + "ext-json": "*" + }, + "require-dev": { + "defuse/php-encryption": "^2.0", + "league/oauth2-client": "^2.6", + "pckg-app/api": "dev-next-8.0 as dev-master", + "pckg-app/frontend-dev": "dev-next-8.0 as dev-master", + "pckg/collection": "dev-next-8.0 as dev-master", + "pckg/concept": "dev-master", + "pckg/database": "dev-next-8.0 as dev-master", + "pckg/framework": "dev-next-8.0 as dev-master", + "pckg/htmlbuilder": "dev-next-8.0 as dev-master", + "pckg/mail": "dev-master", + "pckg/manager": "dev-next-8.0 as dev-master", + "pckg/migrator": "dev-next-8.0 as dev-master" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-0": { + "Pckg": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Rajh", + "email": "schtr4jh@schtr4jh.net" + } + ], + "description": "Provides basic functionality for authentication and authorization users in database, on Twitter, Facebook and with OAuth2 standard", + "homepage": "https://github.com/pckg/auth", + "support": { + "issues": "https://github.com/pckg/auth/issues", + "source": "https://github.com/pckg/auth/tree/next-8.0" + }, + "time": "2022-04-18T13:09:02+00:00" + }, + { + "name": "pckg/cache", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/pckg/cache.git", + "reference": "7b56641cbacf9deb724e337335ccfe38c72c06bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pckg/cache/zipball/7b56641cbacf9deb724e337335ccfe38c72c06bf", + "reference": "7b56641cbacf9deb724e337335ccfe38c72c06bf", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.6" + }, + "require-dev": { + "pckg-app/frontend-dev": "dev-master", + "pckg/framework": "dev-master" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-0": { + "Pckg": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Rajh", + "email": "schtr4jh@schtr4jh.net" + } + ], + "description": "PHP cache", + "homepage": "https://github.com/pckg/cache", + "support": { + "issues": "https://github.com/pckg/cache/issues", + "source": "https://github.com/pckg/cache/tree/master" + }, + "time": "2021-03-05T18:25:17+00:00" + }, + { + "name": "pckg/collection", + "version": "dev-next-8.0", + "source": { + "type": "git", + "url": "https://github.com/pckg/collection.git", + "reference": "afd3a3aba2863beb7fe95a5da3a88b042ec4c39c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pckg/collection/zipball/afd3a3aba2863beb7fe95a5da3a88b042ec4c39c", + "reference": "afd3a3aba2863beb7fe95a5da3a88b042ec4c39c", + "shasum": "" + }, + "require": { + "ext-json": "*", + "pckg/concept": "dev-master" + }, + "require-dev": { + "pckg-app/frontend-dev": "dev-next-8.0 as dev-master", + "pckg/database": "dev-next-8.0 as dev-master", + "pckg/framework": "dev-next-8.0 as dev-master" + }, + "default-branch": true, + "type": "library", + "autoload": { + "files": [ + "src/Pckg/Collection/Helper/functions.php" + ], + "psr-0": { + "Pckg": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Rajh", + "email": "schtr4jh@schtr4jh.net" + } + ], + "description": "Implementation for more human-like dealing with collections", + "homepage": "https://github.com/pckg/collection", + "support": { + "issues": "https://github.com/pckg/collection/issues", + "source": "https://github.com/pckg/collection/tree/next-8.0" + }, + "time": "2022-04-20T11:29:18+00:00" + }, + { + "name": "pckg/concept", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/pckg/concept.git", + "reference": "0ebc4a200faab53a3990da8b9793336c8f91e3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pckg/concept/zipball/0ebc4a200faab53a3990da8b9793336c8f91e3e5", + "reference": "0ebc4a200faab53a3990da8b9793336c8f91e3e5", + "shasum": "" + }, + "require-dev": { + "pckg-app/frontend-dev": "dev-master", + "pckg/framework": "dev-master-yoda", + "pckg/htmlbuilder": "dev-master", + "pckg/manager": "dev-master" + }, + "default-branch": true, + "type": "library", + "autoload": { + "files": [ + "src/Pckg/Concept/Helper/functions.php", + "src/Pckg/Concept/Helper/functions_bc.php" + ], + "psr-0": { + "Pckg": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Rajh", + "email": "schtr4jh@schtr4jh.net" + } + ], + "description": "Simple php concepts", + "homepage": "https://github.com/pckg/concept", + "support": { + "issues": "https://github.com/pckg/concept/issues", + "source": "https://github.com/pckg/concept/tree/master" + }, + "time": "2021-11-09T11:25:31+00:00" + }, + { + "name": "pckg/database", + "version": "dev-next-8.0", + "source": { + "type": "git", + "url": "https://github.com/pckg/database.git", + "reference": "382d3e67edf9812328b0594babee575dd073228a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pckg/database/zipball/382d3e67edf9812328b0594babee575dd073228a", + "reference": "382d3e67edf9812328b0594babee575dd073228a", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-pdo": "*", + "pckg/cache": "dev-master", + "pckg/concept": "dev-master", + "pckg/locale": "dev-master" + }, + "require-dev": { + "aws/aws-sdk-php-resources": "^0.3.0", + "fakerphp/faker": "1.*", + "pckg-app/frontend-dev": "dev-next-8.0 as dev-master", + "pckg/auth": "dev-next-8.0 as dev-master", + "pckg/collection": "dev-next-8.0 as dev-master", + "pckg/framework": "dev-next-8.0 as dev-master", + "pckg/htmlbuilder": "dev-next-8.0 as dev-master", + "pckg/manager": "dev-next-8.0 as dev-master", + "pckg/migrator": "dev-next-8.0 as dev-master" + }, + "suggest": { + "fakerphp/faker": "Use faker to mock data*", + "maximebf/debugbar": "Push queries and events to debugbar" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-0": { + "Pckg": "src\\", + "Test": "tests\\src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Rajh", + "email": "schtr4jh@schtr4jh.net" + } + ], + "description": "Just another php / orm / pdo implementation for simple and advanced data management", + "homepage": "https://github.com/pckg/database", + "support": { + "issues": "https://github.com/pckg/database/issues", + "source": "https://github.com/pckg/database/tree/next-8.0" + }, + "time": "2022-04-18T19:20:05+00:00" + }, + { + "name": "pckg/framework", + "version": "dev-next-8.0", + "source": { + "type": "git", + "url": "https://github.com/pckg/framework.git", + "reference": "2a3550d5c67c857a86eeee7abb1a1a857d82a136" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pckg/framework/zipball/2a3550d5c67c857a86eeee7abb1a1a857d82a136", + "reference": "2a3550d5c67c857a86eeee7abb1a1a857d82a136", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-pcntl": "*", + "ezyang/htmlpurifier": "dev-master", + "filp/whoops": "2.*", + "josegonzalez/dotenv": "dev-master", + "pckg/cache": "dev-master", + "pckg/concept": "dev-master", + "pckg/locale": "dev-master", + "php": "8.0.*", + "rollbar/rollbar": "3.*", + "tgalopin/html-sanitizer": "dev-master", + "twig/twig": "1.*" + }, + "require-dev": { + "defuse/php-encryption": "2.*", + "ext-pdo": "*", + "maximebf/debugbar": "1.*", + "nesbot/carbon": "2.*", + "pckg-app/frontend-dev": "dev-next-8.0 as dev-master", + "pckg/auth": "dev-next-8.0 as dev-master", + "pckg/collection": "dev-next-8.0 as dev-master", + "pckg/database": "dev-next-8.0 as dev-master", + "pckg/htmlbuilder": "dev-next-8.0 as dev-master", + "pckg/mail": "dev-master", + "pckg/manager": "dev-next-8.0 as dev-master", + "pckg/migrator": "dev-master", + "pckg/queue": "dev-next-8.0 as dev-master", + "pckg/translator": "dev-master", + "ramsey/uuid": "4.*" + }, + "default-branch": true, + "type": "library", + "autoload": { + "files": [ + "src/Pckg/Framework/Helper/functions_bc.php", + "src/Pckg/Framework/Helper/functions.php" + ], + "psr-0": { + "Pckg": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Rajh", + "email": "schtr4jh@schtr4jh.net" + } + ], + "description": "Fully featured lightweight php framework with multilingual support, twig templating engine, and tons of other features.", + "homepage": "https://github.com/pckg/framework", + "support": { + "issues": "https://github.com/pckg/framework/issues", + "source": "https://github.com/pckg/framework/tree/next-8.0" + }, + "time": "2022-04-19T06:48:24+00:00" + }, + { + "name": "pckg/generic", + "version": "dev-next-8.0", + "source": { + "type": "git", + "url": "https://github.com/pckg/generic.git", + "reference": "7afe1fd68b55f8a15ae2f84fe5b76eb825607266" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pckg/generic/zipball/7afe1fd68b55f8a15ae2f84fe5b76eb825607266", + "reference": "7afe1fd68b55f8a15ae2f84fe5b76eb825607266", + "shasum": "" + }, + "require": { + "ext-json": "*", + "phpoffice/phpspreadsheet": "1.*", + "phpoffice/phpword": "0.*" + }, + "require-dev": { + "commscenter/comms-hub-api": "dev-master", + "defuse/php-encryption": "2.*", + "fakerphp/faker": "1.*", + "league/csv": "9.*", + "pckg-app/frontend-dev": "dev-next-8.0 as dev-master", + "pckg/auth": "dev-next-8.0 as dev-master", + "pckg/collection": "dev-next-8.0 as dev-master", + "pckg/database": "dev-next-8.0 as dev-master", + "pckg/framework": "dev-next-8.0 as dev-master", + "pckg/htmlbuilder": "dev-next-8.0 as dev-master", + "pckg/manager": "dev-next-8.0 as dev-master", + "pckg/migrator": "dev-next-8.0 as dev-master" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-0": { + "Pckg": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Rajh", + "email": "schtr4jh@schtr4jh.net" + } + ], + "description": "Building admin interface and generic frontend made simple", + "homepage": "https://github.com/pckg/generic", + "support": { + "issues": "https://github.com/pckg/generic/issues", + "source": "https://github.com/pckg/generic/tree/next-8.0" + }, + "time": "2022-04-22T16:47:44+00:00" + }, + { + "name": "pckg/htmlbuilder", + "version": "dev-next-8.0", + "source": { + "type": "git", + "url": "https://github.com/pckg/htmlbuilder.git", + "reference": "fe6ac15fd98aa2155804c3c223664cd042b69131" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pckg/htmlbuilder/zipball/fe6ac15fd98aa2155804c3c223664cd042b69131", + "reference": "fe6ac15fd98aa2155804c3c223664cd042b69131", + "shasum": "" + }, + "require": { + "pckg/concept": "dev-master", + "php": ">=8.0" + }, + "require-dev": { + "pckg-app/frontend-dev": "dev-master", + "pckg/framework": "dev-master || dev-master-yoda" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-0": { + "Pckg\\Htmlbuilder": [ + "src\\" + ], + "Pckg\\Htmlbuilder\\Test": [ + "test\\" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Rajh", + "email": "schtr4jh@schtr4jh.net" + } + ], + "description": "Build advanced forms in php with datasources, decorators, handlers and validators", + "homepage": "https://bitbucket.org/lfw/htmlbuilder", + "support": { + "issues": "https://github.com/pckg/htmlbuilder/issues", + "source": "https://github.com/pckg/htmlbuilder/tree/next-8.0" + }, + "time": "2022-04-18T11:56:07+00:00" + }, + { + "name": "pckg/locale", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/pckg/locale.git", + "reference": "5ad051c578910670d8619d04adeadaf440facff6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pckg/locale/zipball/5ad051c578910670d8619d04adeadaf440facff6", + "reference": "5ad051c578910670d8619d04adeadaf440facff6", + "shasum": "" + }, + "require-dev": { + "pckg-app/frontend-dev": "dev-master", + "pckg/database": "dev-master", + "pckg/framework": "dev-master", + "pckg/manager": "dev-master" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-0": { + "Pckg": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Rajh", + "email": "schtr4jh@schtr4jh.net" + } + ], + "description": "PHP locale", + "homepage": "https://github.com/pckg/locale", + "support": { + "issues": "https://github.com/pckg/locale/issues", + "source": "https://github.com/pckg/locale/tree/master" + }, + "time": "2021-03-05T18:27:18+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.12.0", + "source": { + "type": "git", + "url": "https://github.com/php-webdriver/php-webdriver.git", + "reference": "99d4856ed7dffcdf6a52eccd6551e83d8d557ceb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/99d4856ed7dffcdf6a52eccd6551e83d8d557ceb", + "reference": "99d4856ed7dffcdf6a52eccd6551e83d8d557ceb", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-zip": "*", + "php": "^5.6 || ~7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.12", + "symfony/process": "^2.8 || ^3.1 || ^4.0 || ^5.0 || ^6.0" + }, + "replace": { + "facebook/webdriver": "*" + }, + "require-dev": { + "ondram/ci-detector": "^2.1 || ^3.5 || ^4.0", + "php-coveralls/php-coveralls": "^2.4", + "php-mock/php-mock-phpunit": "^1.1 || ^2.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpunit/phpunit": "^5.7 || ^7 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3.5", + "symfony/var-dumper": "^3.3 || ^4.0 || ^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.12.0" + }, + "time": "2021-10-14T09:30:02+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "77a32518733312af16a44300404e945338981de3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + }, + "time": "2022-03-15T21:29:03+00:00" + }, + { + "name": "phpoffice/phpspreadsheet", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "a8e8068b31b8119e1daa5b1eb5715a3a8ea8305f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/a8e8068b31b8119e1daa5b1eb5715a3a8ea8305f", + "reference": "a8e8068b31b8119e1daa5b1eb5715a3a8ea8305f", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "maennchen/zipstream-php": "^2.1", + "markbaker/complex": "^1.5|^2.0", + "markbaker/matrix": "^1.2|^2.0", + "php": "^7.2|^8.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/simple-cache": "^1.0" + }, + "require-dev": { + "dompdf/dompdf": "^0.8.5", + "friendsofphp/php-cs-fixer": "^2.16", + "jpgraph/jpgraph": "^4.0", + "mpdf/mpdf": "^8.0", + "phpcompatibility/php-compatibility": "^9.3", + "phpunit/phpunit": "^8.5|^9.3", + "squizlabs/php_codesniffer": "^3.5", + "tecnickcom/tcpdf": "^6.3" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)", + "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + } + ], + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "keywords": [ + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "support": { + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.15.0" + }, + "time": "2020-10-11T13:20:59+00:00" + }, + { + "name": "phpoffice/phpword", + "version": "0.18.3", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PHPWord.git", + "reference": "be0190cd5d8f95b4be08d5853b107aa4e352759a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/be0190cd5d8f95b4be08d5853b107aa4e352759a", + "reference": "be0190cd5d8f95b4be08d5853b107aa4e352759a", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "laminas/laminas-escaper": "^2.2", + "php": "^5.3.3 || ^7.0 || ^8.0" + }, + "require-dev": { + "dompdf/dompdf": "0.8.* || 1.0.*", + "ext-gd": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^2.2", + "mpdf/mpdf": "5.7.4 || 6.* || 7.* || 8.*", + "php-coveralls/php-coveralls": "1.1.0 || ^2.0", + "phploc/phploc": "2.* || 3.* || 4.* || 5.* || 6.* || 7.*", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^4.8.36 || ^7.0", + "squizlabs/php_codesniffer": "^2.9 || ^3.5", + "tecnickcom/tcpdf": "6.*" + }, + "suggest": { + "dompdf/dompdf": "Allows writing PDF", + "ext-gd2": "Allows adding images", + "ext-xmlwriter": "Allows writing OOXML and ODF", + "ext-xsl": "Allows applying XSL style sheet to headers, to main document part, and to footers of an OOXML template", + "ext-zip": "Allows writing OOXML and ODF" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.19-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOffice\\PhpWord\\": "src/PhpWord" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Mark Baker" + }, + { + "name": "Gabriel Bull", + "email": "me@gabrielbull.com", + "homepage": "http://gabrielbull.com/" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net/blog/" + }, + { + "name": "Ivan Lanin", + "homepage": "http://ivan.lanin.org" + }, + { + "name": "Roman Syroeshko", + "homepage": "http://ru.linkedin.com/pub/roman-syroeshko/34/a53/994/" + }, + { + "name": "Antoine de Troostembergh" + } + ], + "description": "PHPWord - A pure PHP library for reading and writing word processing documents (OOXML, ODF, RTF, HTML, PDF)", + "homepage": "http://phpoffice.github.io", + "keywords": [ + "ISO IEC 29500", + "OOXML", + "Office Open XML", + "OpenDocument", + "OpenXML", + "PhpOffice", + "PhpWord", + "Rich Text Format", + "WordprocessingML", + "doc", + "docx", + "html", + "odf", + "odt", + "office", + "pdf", + "php", + "reader", + "rtf", + "template", + "template processor", + "word", + "writer" + ], + "support": { + "issues": "https://github.com/PHPOffice/PHPWord/issues", + "source": "https://github.com/PHPOffice/PHPWord/tree/0.18.3" + }, + "time": "2022-02-17T15:40:03+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "1.5.7", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "7fb7e2e1e9f3d59a26a413b2d3d5e47f0edb75ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7fb7e2e1e9f3d59a26a413b2d3d5e47f0edb75ac", + "reference": "7fb7e2e1e9f3d59a26a413b2d3d5e47f0edb75ac", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "support": { + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/1.5.7" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpstan", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2022-04-20T12:20:27+00:00" + }, + { + "name": "phpstan/phpstan-strict-rules", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-strict-rules.git", + "reference": "e12d55f74a8cca18c6e684c6450767e055ba7717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/e12d55f74a8cca18c6e684c6450767e055ba7717", + "reference": "e12d55f74a8cca18c6e684c6450767e055ba7717", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "phpstan/phpstan": "^1.2.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5" + }, + "type": "phpstan-extension", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "phpstan": { + "includes": [ + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Extra strict and opinionated rules for PHPStan", + "support": { + "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", + "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.1.0" + }, + "time": "2021-11-18T09:30:29+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "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", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-07T09:28:20+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": "*" }, - "bin": [ - "bin/php-parse" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "3.1-dev" } }, "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3620,91 +6005,52 @@ ], "authors": [ { - "name": "Nikita Popov" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "A PHP parser written in PHP", + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", "keywords": [ - "parser", - "php" + "process" ], "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.4" - }, - "time": "2020-12-20T10:01:03+00:00" - }, - { - "name": "pckg-app/frontend-dev", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/pckg-app/frontend-dev.git", - "reference": "ca79231db124a87fa02808114a0b2143dd408b93" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pckg-app/frontend-dev/zipball/ca79231db124a87fa02808114a0b2143dd408b93", - "reference": "ca79231db124a87fa02808114a0b2143dd408b93", - "shasum": "" - }, - "require": { - "appzcoder/phpcloc": "^0.0.2", - "codeception/codeception": "4.*", - "codeception/module-asserts": "1.*", - "codeception/module-phpbrowser": "^1.0", - "codeception/module-rest": "^1.2", - "codeception/module-webdriver": "dev-master", - "maximebf/debugbar": "^1.16", - "phpstan/phpstan": "^0.12.42", - "phpstan/phpstan-strict-rules": "^0.12.5", - "squizlabs/php_codesniffer": "^3.5" + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" }, - "default-branch": true, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Bojan Rajh", - "email": "schtr4jh@schtr4jh.net" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "description": "Frontend pckg dev package", - "homepage": "https://github.com/pckg-app/frontend-dev", - "support": { - "issues": "https://github.com/pckg-app/frontend-dev/issues", - "source": "https://github.com/pckg-app/frontend-dev/tree/master" - }, - "time": "2021-01-27T00:15:21+00:00" + "time": "2020-09-28T05:58:55+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.1", + "name": "phpunit/php-text-template", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3717,47 +6063,55 @@ "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" + "role": "lead" } ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, - "time": "2020-06-27T14:33:11+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" }, { - "name": "phar-io/version", - "version": "3.0.4", + "name": "phpunit/php-timer", + "version": "5.0.3", "source": { "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "e4782611070e50613683d2b9a57730e9a3ba5451" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/e4782611070e50613683d2b9a57730e9a3ba5451", - "reference": "e4782611070e50613683d2b9a57730e9a3ba5451", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -3768,126 +6122,160 @@ "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" + "role": "lead" } ], - "description": "Library for handling version information and constraints", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.0.4" + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, - "time": "2020-12-13T23:18:30+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" }, { - "name": "php-webdriver/webdriver", - "version": "1.9.0", + "name": "phpunit/phpunit", + "version": "9.5.20", "source": { "type": "git", - "url": "https://github.com/php-webdriver/php-webdriver.git", - "reference": "e3633154554605274cc9d59837f55a7427d72003" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/e3633154554605274cc9d59837f55a7427d72003", - "reference": "e3633154554605274cc9d59837f55a7427d72003", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", "shasum": "" }, "require": { - "ext-curl": "*", + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", "ext-json": "*", - "ext-zip": "*", - "php": "^5.6 || ~7.0 || ^8.0", - "symfony/polyfill-mbstring": "^1.12", - "symfony/process": "^2.8 || ^3.1 || ^4.0 || ^5.0" - }, - "replace": { - "facebook/webdriver": "*" + "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", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "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.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.0", + "sebastian/version": "^3.0.2" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "ondram/ci-detector": "^2.1 || ^3.5", - "php-coveralls/php-coveralls": "^2.4", - "php-mock/php-mock-phpunit": "^1.1 || ^2.0", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpunit/phpunit": "^5.7 || ^7 || ^8 || ^9", - "squizlabs/php_codesniffer": "^3.5", - "symfony/var-dumper": "^3.3 || ^4.0 || ^5.0" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { - "ext-SimpleXML": "For Firefox profile creation" + "ext-soap": "*", + "ext-xdebug": "*" }, + "bin": [ + "phpunit" + ], "type": "library", "extra": { "branch-alias": { - "dev-main": "1.8.x-dev" + "dev-master": "9.5-dev" } }, "autoload": { - "psr-4": { - "Facebook\\WebDriver\\": "lib/" - }, "files": [ - "lib/Exception/TimeoutException.php" + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "A PHP client for Selenium WebDriver. Previously facebook/webdriver.", - "homepage": "https://github.com/php-webdriver/php-webdriver", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "Chromedriver", - "geckodriver", - "php", - "selenium", - "webdriver" + "phpunit", + "testing", + "xunit" ], "support": { - "issues": "https://github.com/php-webdriver/php-webdriver/issues", - "source": "https://github.com/php-webdriver/php-webdriver/tree/1.9.0" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" }, - "time": "2020-11-19T15:21:05+00:00" + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-04-01T12:37:26+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "predis/predis", + "version": "v1.1.10", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/predis/predis.git", + "reference": "a2fb02d738bedadcffdbb07efa3a5e7bd57f8d6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/predis/predis/zipball/a2fb02d738bedadcffdbb07efa3a5e7bd57f8d6e", + "reference": "a2fb02d738bedadcffdbb07efa3a5e7bd57f8d6e", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=5.3.9" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "suggest": { + "ext-curl": "Allows access to Webdis when paired with phpiredis", + "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol" }, + "type": "library", "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src/" + "Predis\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3896,58 +6284,62 @@ ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Daniele Alessandri", + "email": "suppakilla@gmail.com", + "homepage": "http://clorophilla.net", + "role": "Creator & Maintainer" + }, + { + "name": "Till Krüss", + "homepage": "https://till.im", + "role": "Maintainer" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "Flexible and feature-complete Redis client for PHP and HHVM", + "homepage": "http://github.com/predis/predis", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "nosql", + "predis", + "redis" ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "issues": "https://github.com/predis/predis/issues", + "source": "https://github.com/predis/predis/tree/v1.1.10" }, - "time": "2020-06-27T09:03:43+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/tillkruss", + "type": "github" + } + ], + "time": "2022-01-05T17:46:08+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "name": "psr/event-dispatcher", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2" + "php": ">=7.2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "Psr\\EventDispatcher\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3956,51 +6348,49 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2020-09-03T19:13:55+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "name": "psr/http-client", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "url": "https://github.com/php-fig/http-client.git", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*" + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "Psr\\Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4009,51 +6399,50 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + "source": "https://github.com/php-fig/http-client/tree/master" }, - "time": "2020-09-17T18:55:26+00:00" + "time": "2020-06-29T06:28:15+00:00" }, { - "name": "phpspec/prophecy", - "version": "1.12.2", + "name": "psr/http-factory", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "245710e971a030f42e08f4912863805570f23d39" + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/245710e971a030f42e08f4912863805570f23d39", - "reference": "245710e971a030f42e08f4912863805570f23d39", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "php": ">=7.0.0", + "psr/http-message": "^1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Prophecy\\": "src/Prophecy" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4062,231 +6451,196 @@ ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", + "description": "Common interfaces for PSR-7 HTTP message factories", "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" ], "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.12.2" + "source": "https://github.com/php-fig/http-factory/tree/master" }, - "time": "2020-12-19T10:15:11+00:00" + "time": "2019-04-30T12:38:16+00:00" }, { - "name": "phpstan/phpstan", - "version": "0.12.69", + "name": "psr/simple-cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "8f436ea35241da33487fd0d38b4bc3e6dfe30ea8" + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/8f436ea35241da33487fd0d38b4bc3e6dfe30ea8", - "reference": "8f436ea35241da33487fd0d38b4bc3e6dfe30ea8", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { - "php": "^7.1|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" + "php": ">=5.3.0" }, - "bin": [ - "phpstan", - "phpstan.phar" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "0.12-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ] + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHPStan - PHP Static Analysis Tool", - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.69" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, + "authors": [ { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "time": "2021-01-24T14:55:37+00:00" + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "time": "2017-10-23T01:57:42+00:00" }, { - "name": "phpstan/phpstan-strict-rules", - "version": "0.12.9", + "name": "ralouphie/getallheaders", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "0705fefc7c9168529fd130e341428f5f10f4f01d" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/0705fefc7c9168529fd130e341428f5f10f4f01d", - "reference": "0705fefc7c9168529fd130e341428f5f10f4f01d", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.12.66" + "php": ">=5.6" }, "require-dev": { - "phing/phing": "^2.16.3", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^0.12.16", - "phpunit/phpunit": "^7.5.20" - }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - }, - "phpstan": { - "includes": [ - "rules.neon" - ] - } + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, + "type": "library", "autoload": { - "psr-4": { - "PHPStan\\": "src/" - } + "files": [ + "src/getallheaders.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Extra strict and opinionated rules for PHPStan", + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", "support": { - "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", - "source": "https://github.com/phpstan/phpstan-strict-rules/tree/0.12.9" + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" }, - "time": "2021-01-13T08:50:28+00:00" + "time": "2019-03-08T08:55:37+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "9.2.5", + "name": "rollbar/rollbar", + "version": "v3.1.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1" + "url": "https://github.com/rollbar/rollbar-php.git", + "reference": "0d114753f47222ef32f5799b59a2a276acdf3cfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1", - "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1", + "url": "https://api.github.com/repos/rollbar/rollbar-php/zipball/0d114753f47222ef32f5799b59a2a276acdf3cfa", + "reference": "0d114753f47222ef32f5799b59a2a276acdf3cfa", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", - "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" + "ext-curl": "*", + "monolog/monolog": "^2", + "php": ">=8.0.0 <9.0", + "psr/log": "^1 || ^2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "mockery/mockery": "^1", + "phpmd/phpmd": "^2", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.6 || 3.x-dev", + "vimeo/psalm": "^4.13" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "fluent/logger": "Needed to use the 'fluent' handler for fluentd support" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Rollbar\\": "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", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5" - }, - "funding": [ + "MIT" + ], + "authors": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "Rollbar, Inc.", + "email": "support@rollbar.com", + "role": "Developer" } ], - "time": "2020-11-28T06:44:49+00:00" + "description": "Monitors errors and exceptions and reports them to Rollbar", + "homepage": "https://github.com/rollbar/rollbar-php", + "keywords": [ + "debugging", + "errors", + "exceptions", + "logging", + "monitoring" + ], + "support": { + "email": "support@rollbar.com", + "issues": "https://github.com/rollbar/rollbar-php/issues", + "source": "https://github.com/rollbar/rollbar-php/tree/v3.1.2" + }, + "time": "2022-03-30T21:22:36+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "name": "sebastian/cli-parser", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { @@ -4298,7 +6652,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -4317,15 +6671,11 @@ "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" - ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" }, "funding": [ { @@ -4333,36 +6683,32 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2020-09-28T06:08:49+00:00" }, { - "name": "phpunit/php-invoker", - "version": "3.1.1", + "name": "sebastian/code-unit", + "version": "1.0.8", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "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" + "dev-master": "1.0-dev" } }, "autoload": { @@ -4381,14 +6727,11 @@ "role": "lead" } ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" }, "funding": [ { @@ -4396,20 +6739,20 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2020-10-26T13:08:54+00:00" }, { - "name": "phpunit/php-text-template", - "version": "2.0.4", + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { @@ -4436,18 +6779,14 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], + "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/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, "funding": [ { @@ -4455,24 +6794,26 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2020-09-28T05:30:19+00:00" }, { - "name": "phpunit/php-timer", - "version": "5.0.3", + "name": "sebastian/comparator", + "version": "4.0.6", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { "phpunit/phpunit": "^9.3" @@ -4480,7 +6821,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -4495,18 +6836,31 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "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": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ - "timer" + "comparator", + "compare", + "equality" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" }, "funding": [ { @@ -4514,75 +6868,38 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2020-10-26T15:49:45+00:00" }, { - "name": "phpunit/phpunit", - "version": "9.5.1", + "name": "sebastian/complexity", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e7bdf4085de85a825f4424eae52c99a1cec2f360", - "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.1", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", - "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.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3", - "sebastian/version": "^3.0.2" + "nikic/php-parser": "^4.7", + "php": ">=7.3" }, "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "phpunit/phpunit": "^9.3" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "2.0-dev" } }, "autoload": { "classmap": [ "src/" - ], - "files": [ - "src/Framework/Assert/Functions.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4596,53 +6913,45 @@ "role": "lead" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.1" + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" }, "funding": [ - { - "url": "https://phpunit.de/donate.html", - "type": "custom" - }, { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2021-01-17T07:42:25+00:00" + "time": "2020-10-26T15:52:27+00:00" }, { - "name": "sebastian/cli-parser", - "version": "1.0.1", + "name": "sebastian/diff", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -4657,15 +6966,24 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, "funding": [ { @@ -4673,20 +6991,20 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2020-10-26T13:10:38+00:00" }, { - "name": "sebastian/code-unit", - "version": "1.0.8", + "name": "sebastian/environment", + "version": "5.1.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -4695,10 +7013,13 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, + "suggest": { + "ext-posix": "*" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4713,15 +7034,19 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", + "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/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -4729,32 +7054,34 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "name": "sebastian/exporter", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { + "ext-mbstring": "*", "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -4770,13 +7097,33 @@ { "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": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "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/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { @@ -4784,34 +7131,38 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { - "name": "sebastian/comparator", - "version": "4.0.6", + "name": "sebastian/global-state", + "version": "5.0.5", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "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": "4.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -4827,30 +7178,16 @@ { "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", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ - "comparator", - "compare", - "equality" + "global state" ], "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -4858,24 +7195,24 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { - "name": "sebastian/complexity", - "version": "2.0.2", + "name": "sebastian/lines-of-code", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.6", "php": ">=7.3" }, "require-dev": { @@ -4884,7 +7221,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -4903,11 +7240,11 @@ "role": "lead" } ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", + "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/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" }, "funding": [ { @@ -4915,28 +7252,29 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2020-11-28T06:42:11+00:00" }, { - "name": "sebastian/diff", + "name": "sebastian/object-enumerator", "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -4957,23 +7295,13 @@ { "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" - ], + "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/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { @@ -4981,20 +7309,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { - "name": "sebastian/environment", - "version": "5.1.3", + "name": "sebastian/object-reflector", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { @@ -5003,13 +7331,10 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "suggest": { - "ext-posix": "*" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -5027,16 +7352,11 @@ "email": "sebastian@phpunit.de" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], + "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/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { @@ -5044,28 +7364,26 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { - "name": "sebastian/exporter", - "version": "4.0.3", + "name": "sebastian/recursion-context", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "php": ">=7.3" }, "require-dev": { - "ext-mbstring": "*", "phpunit/phpunit": "^9.3" }, "type": "library", @@ -5092,28 +7410,71 @@ "name": "Jeff Welch", "email": "whatthejeff@gmail.com" }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" - }, + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+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": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], + "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/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" }, "funding": [ { @@ -5121,38 +7482,32 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2020-09-28T06:45:17+00:00" }, { - "name": "sebastian/global-state", - "version": "5.0.2", + "name": "sebastian/type", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "a90ccbddffa067b51f574dea6eb25d5680839455" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", - "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=7.3" }, "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5167,17 +7522,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], + "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/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" }, "funding": [ { @@ -5185,33 +7538,29 @@ "type": "github" } ], - "time": "2020-10-26T15:55:19+00:00" + "time": "2022-03-15T09:54:48+00:00" }, { - "name": "sebastian/lines-of-code", - "version": "1.0.3", + "name": "sebastian/version", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "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" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5230,11 +7579,11 @@ "role": "lead" } ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "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/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, "funding": [ { @@ -5242,380 +7591,560 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2020-09-28T06:39:44+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "4.0.4", + "name": "softcreatr/jsonpath", + "version": "0.7.5", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "url": "https://github.com/SoftCreatR/JSONPath.git", + "reference": "008569bf80aa3584834f7890781576bc7b65afa7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/SoftCreatR/JSONPath/zipball/008569bf80aa3584834f7890781576bc7b65afa7", + "reference": "008569bf80aa3584834f7890781576bc7b65afa7", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "ext-json": "*", + "php": ">=7.1" + }, + "replace": { + "flow/jsonpath": "*" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": ">=7.0", + "roave/security-advisories": "dev-master", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Flow\\JSONPath\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "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": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "description": "JSONPath implementation for parsing, searching and flattening arrays", "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "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/sebastianbergmann", + "url": "https://github.com/softcreatr", "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2021-06-02T22:15:26+00:00" }, { - "name": "sebastian/object-reflector", - "version": "2.0.4", + "name": "squizlabs/php_codesniffer", + "version": "3.6.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", "shasum": "" }, "require": { - "php": ">=7.3" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "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" + ], + "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": "2021-12-12T21:44:58+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v5.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "18e73179c6a33d520de1b644941eba108dd811ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/18e73179c6a33d520de1b644941eba108dd811ad", + "reference": "18e73179c6a33d520de1b644941eba108dd811ad", + "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": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "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": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.3" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:14:26+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { - "name": "sebastian/recursion-context", - "version": "4.0.4", + "name": "symfony/console", + "version": "v5.4.7", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "url": "https://github.com/symfony/console.git", + "reference": "900275254f0a1a2afff1ab0e11abd5587a10e1d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/symfony/console/zipball/900275254f0a1a2afff1ab0e11abd5587a10e1d6", + "reference": "900275254f0a1a2afff1ab0e11abd5587a10e1d6", "shasum": "" }, "require": { - "php": ">=7.3" + "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": { - "phpunit/phpunit": "^9.3" + "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" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, + "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/symfony/console/tree/v5.4.7" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:17:30+00:00" + "time": "2022-03-31T17:09:19+00:00" }, { - "name": "sebastian/resource-operations", - "version": "3.0.3", + "name": "symfony/css-selector", + "version": "v5.4.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "url": "https://github.com/symfony/css-selector.git", + "reference": "b0a190285cd95cb019237851205b8140ef6e368e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", + "reference": "b0a190285cd95cb019237851205b8140ef6e368e", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/symfony/css-selector/tree/v5.4.3" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T06:45:17+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { - "name": "sebastian/type", - "version": "2.3.1", + "name": "symfony/dom-crawler", + "version": "v5.4.6", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "c0bda97480d96337bd3866026159a8b358665457" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", - "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/c0bda97480d96337bd3866026159a8b358665457", + "reference": "c0bda97480d96337bd3866026159a8b358665457", "shasum": "" }, "require": { - "php": ">=7.3" + "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": { - "phpunit/phpunit": "^9.3" + "masterminds/html5": "^2.6", + "symfony/css-selector": "^4.4|^5.0|^6.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } + "suggest": { + "symfony/css-selector": "" }, + "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.1" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.6" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:18:59+00:00" + "time": "2022-03-02T12:42:23+00:00" }, { - "name": "sebastian/version", - "version": "3.0.2", + "name": "symfony/event-dispatcher", + "version": "v5.4.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dec8a9f58d20df252b9cd89f1c6c1530f747685d", + "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", + "symfony/polyfill-php80": "^1.16" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } + "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": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", + "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": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.3" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T06:39:44+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { - "name": "softcreatr/jsonpath", - "version": "0.7.2", + "name": "symfony/event-dispatcher-contracts", + "version": "v3.0.1", "source": { "type": "git", - "url": "https://github.com/SoftCreatR/JSONPath.git", - "reference": "46689608586a8081be399342755c36e179f3b5fc" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "7bc61cc2db649b4637d331240c5346dcc7708051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SoftCreatR/JSONPath/zipball/46689608586a8081be399342755c36e179f3b5fc", - "reference": "46689608586a8081be399342755c36e179f3b5fc", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051", + "reference": "7bc61cc2db649b4637d331240c5346dcc7708051", "shasum": "" }, "require": { - "ext-json": "*", - "php": ">=7.1" + "php": ">=8.0.2", + "psr/event-dispatcher": "^1" }, - "conflict": { - "phpunit/phpunit": "<7.0 || >= 10.0" - }, - "replace": { - "flow/jsonpath": "*" - }, - "require-dev": { - "phpunit/phpunit": ">=7.0", - "roave/security-advisories": "dev-master", - "squizlabs/php_codesniffer": "^3.5" + "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": { - "Flow\\JSONPath\\": "src/" + "Symfony\\Contracts\\EventDispatcher\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -5624,123 +8153,146 @@ ], "authors": [ { - "name": "Stephen Frank", - "email": "stephen@flowsa.com", - "homepage": "https://prismaticbytes.com", - "role": "Developer" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Sascha Greuel", - "email": "hello@1-2.dev", - "homepage": "http://1-2.dev", - "role": "Developer" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "JSONPath implementation for parsing, searching and flattening arrays", - "support": { - "email": "hello@1-2.dev", - "issues": "https://github.com/SoftCreatR/JSONPath/issues", - "source": "https://github.com/SoftCreatR/JSONPath" + "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.1" }, "funding": [ { - "url": "https://github.com/softcreatr", + "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": "2020-10-27T11:37:08+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "3.5.8", + "name": "symfony/finder", + "version": "v5.4.3", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "9d583721a7157ee997f235f327de038e7ea6dac4" + "url": "https://github.com/symfony/finder.git", + "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4", - "reference": "9d583721a7157ee997f235f327de038e7ea6dac4", + "url": "https://api.github.com/repos/symfony/finder/zipball/231313534dded84c7ecaa79d14bc5da4ccb69b7d", + "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d", "shasum": "" }, "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Greg Sherwood", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "source": "https://github.com/symfony/finder/tree/v5.4.3" }, - "time": "2020-10-23T02:01:07+00:00" + "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-26T16:34:36+00:00" }, { - "name": "symfony/browser-kit", - "version": "v5.2.1", + "name": "symfony/polyfill-ctype", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "87d6f0a7436b03a57d4cf9a6a9cd0c83a355c49a" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/87d6f0a7436b03a57d4cf9a6a9cd0c83a355c49a", - "reference": "87d6f0a7436b03a57d4cf9a6a9cd0c83a355c49a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/dom-crawler": "^4.4|^5.0" + "php": ">=7.1" }, - "require-dev": { - "symfony/css-selector": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0" + "provide": { + "ext-ctype": "*" }, "suggest": { - "symfony/process": "" + "ext-ctype": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5748,18 +8300,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony BrowserKit Component", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.2.1" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" }, "funding": [ { @@ -5775,61 +8333,45 @@ "type": "tidelift" } ], - "time": "2020-12-18T08:03:05+00:00" + "time": "2021-10-20T20:35:02+00:00" }, { - "name": "symfony/console", - "version": "v4.4.18", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "12e071278e396cc3e1c149857337e9e192deca0b" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/12e071278e396cc3e1c149857337e9e192deca0b", - "reference": "12e071278e396cc3e1c149857337e9e192deca0b", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "php": ">=7.1" }, "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5837,18 +8379,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", + "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/console/tree/v4.4.18" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" }, "funding": [ { @@ -5864,32 +8414,47 @@ "type": "tidelift" } ], - "time": "2020-12-18T07:41:31+00:00" + "time": "2021-11-23T21:10:46+00:00" }, { - "name": "symfony/css-selector", - "version": "v5.2.1", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "f789e7ead4c79e04ca9a6d6162fc629c89bd8054" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/f789e7ead4c79e04ca9a6d6162fc629c89bd8054", - "reference": "f789e7ead4c79e04ca9a6d6162fc629c89bd8054", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\CssSelector\\": "" + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5898,22 +8463,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony CssSelector Component", + "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/css-selector/tree/v5.2.1" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" }, "funding": [ { @@ -5929,45 +8498,44 @@ "type": "tidelift" } ], - "time": "2020-12-08T17:02:38+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { - "name": "symfony/dom-crawler", - "version": "v5.2.1", + "name": "symfony/polyfill-php73", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "ee7cf316fb0de786cfe5ae32ee79502b290c81ea" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/ee7cf316fb0de786cfe5ae32ee79502b290c81ea", - "reference": "ee7cf316fb0de786cfe5ae32ee79502b290c81ea", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "masterminds/html5": "<2.6" - }, - "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "^4.4|^5.0" - }, - "suggest": { - "symfony/css-selector": "" + "php": ">=7.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" + "Symfony\\Polyfill\\Php73\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5976,18 +8544,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DomCrawler Component", + "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/dom-crawler/tree/v5.2.1" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" }, "funding": [ { @@ -6003,54 +8577,44 @@ "type": "tidelift" } ], - "time": "2020-12-18T08:02:46+00:00" + "time": "2021-06-05T21:20:04+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v4.4.18", + "name": "symfony/polyfill-php80", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "5d4c874b0eb1c32d40328a09dbc37307a5a910b0" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/5d4c874b0eb1c32d40328a09dbc37307a5a910b0", - "reference": "5d4c874b0eb1c32d40328a09dbc37307a5a910b0", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "php": ">=7.1" }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } }, - "type": "library", "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Polyfill\\Php80\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6059,18 +8623,28 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "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 EventDispatcher Component", + "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/event-dispatcher/tree/v4.4.18" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" }, "funding": [ { @@ -6086,43 +8660,33 @@ "type": "tidelift" } ], - "time": "2020-12-18T07:41:31+00:00" + "time": "2022-03-04T08:16:47+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", + "name": "symfony/process", + "version": "v6.0.7", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + "url": "https://github.com/symfony/process.git", + "reference": "e13f6757e267d687e20ec5b26ccfcbbe511cd8f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "url": "https://api.github.com/repos/symfony/process/zipball/e13f6757e267d687e20ec5b26ccfcbbe511cd8f4", + "reference": "e13f6757e267d687e20ec5b26ccfcbbe511cd8f4", "shasum": "" }, "require": { - "php": ">=7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "php": ">=8.0.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6130,26 +8694,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9" + "source": "https://github.com/symfony/process/tree/v6.0.7" }, "funding": [ { @@ -6165,29 +8721,45 @@ "type": "tidelift" } ], - "time": "2020-07-06T13:19:58+00:00" + "time": "2022-03-18T16:21:55+00:00" }, { - "name": "symfony/finder", - "version": "v5.2.1", + "name": "symfony/string", + "version": "v6.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "0b9231a5922fd7287ba5b411893c0ecd2733e5ba" + "url": "https://github.com/symfony/string.git", + "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/0b9231a5922fd7287ba5b411893c0ecd2733e5ba", - "reference": "0b9231a5922fd7287ba5b411893c0ecd2733e5ba", + "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", + "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", "shasum": "" }, "require": { - "php": ">=7.2.5" + "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\\Finder\\": "" + "Symfony\\Component\\String\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6199,18 +8771,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Finder Component", + "description": "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/finder/tree/v5.2.1" + "source": "https://github.com/symfony/string/tree/v6.0.3" }, "funding": [ { @@ -6226,44 +8806,66 @@ "type": "tidelift" } ], - "time": "2020-12-08T17:02:38+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.22.0", + "name": "symfony/translation", + "version": "v6.0.7", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + "url": "https://github.com/symfony/translation.git", + "reference": "b2792b39d74cf41ea3065f27fd2ddf0b556ac7a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "url": "https://api.github.com/repos/symfony/translation/zipball/b2792b39d74cf41ea3065f27fd2ddf0b556ac7a1", + "reference": "b2792b39d74cf41ea3065f27fd2ddf0b556ac7a1", "shasum": "" }, "require": { - "php": ">=7.1" + "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": { - "ext-ctype": "For best performance" + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.22-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Symfony\\Component\\Translation\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6272,24 +8874,18 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.0" + "source": "https://github.com/symfony/translation/tree/v6.0.7" }, "funding": [ { @@ -6305,34 +8901,42 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2022-03-31T17:18:25+00:00" }, { - "name": "symfony/process", - "version": "v5.2.1", + "name": "symfony/translation-contracts", + "version": "v3.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "bd8815b8b6705298beaa384f04fabd459c10bedd" + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/bd8815b8b6705298beaa384f04fabd459c10bedd", - "reference": "bd8815b8b6705298beaa384f04fabd459c10bedd", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9", + "reference": "c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" + "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\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Translation\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6340,18 +8944,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Generic abstractions related to translation", "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "source": "https://github.com/symfony/process/tree/v5.2.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.0.1" }, "funding": [ { @@ -6367,36 +8979,36 @@ "type": "tidelift" } ], - "time": "2020-12-08T17:03:37+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.2.1", + "version": "v6.0.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "13e7e882eaa55863faa7c4ad7c60f12f1a8b5089" + "reference": "38358405ae948963c50a3aae3dfea598223ba15e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/13e7e882eaa55863faa7c4ad7c60f12f1a8b5089", - "reference": "13e7e882eaa55863faa7c4ad7c60f12f1a8b5089", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/38358405ae948963c50a3aae3dfea598223ba15e", + "reference": "38358405ae948963c50a3aae3dfea598223ba15e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15" + "php": ">=8.0.2", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4" + "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^2.4|^3.0" + "symfony/console": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", @@ -6432,14 +9044,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony mechanism for exploring and dumping PHP variables", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", "keywords": [ "debug", "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.2.1" + "source": "https://github.com/symfony/var-dumper/tree/v6.0.6" }, "funding": [ { @@ -6455,32 +9067,32 @@ "type": "tidelift" } ], - "time": "2020-12-16T17:02:19+00:00" + "time": "2022-03-02T12:58:14+00:00" }, { "name": "symfony/yaml", - "version": "v5.2.1", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "290ea5e03b8cf9b42c783163123f54441fb06939" + "reference": "e80f87d2c9495966768310fc531b487ce64237a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/290ea5e03b8cf9b42c783163123f54441fb06939", - "reference": "290ea5e03b8cf9b42c783163123f54441fb06939", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2", + "reference": "e80f87d2c9495966768310fc531b487ce64237a2", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<4.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^4.4|^5.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -6511,10 +9123,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", + "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.2.1" + "source": "https://github.com/symfony/yaml/tree/v5.4.3" }, "funding": [ { @@ -6530,20 +9142,69 @@ "type": "tidelift" } ], - "time": "2020-12-08T17:02:38+00:00" + "time": "2022-01-26T16:32:32+00:00" + }, + { + "name": "tgalopin/html-sanitizer", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/tgalopin/html-sanitizer.git", + "reference": "82da21fbb6ca4ed6ac3458391612529958b0a69f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tgalopin/html-sanitizer/zipball/82da21fbb6ca4ed6ac3458391612529958b0a69f", + "reference": "82da21fbb6ca4ed6ac3458391612529958b0a69f", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "league/uri-parser": "^1.4.1", + "masterminds/html5": "^2.4", + "php": ">=7.1", + "psr/log": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4", + "symfony/var-dumper": "^4.4" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-4": { + "HtmlSanitizer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com" + } + ], + "description": "Sanitize untrustworthy HTML user input", + "support": { + "issues": "https://github.com/tgalopin/html-sanitizer/issues", + "source": "https://github.com/tgalopin/html-sanitizer/tree/master" + }, + "time": "2021-12-15T11:03:58+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "75a63c33a8577608444246075ea0af0d052e452a" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", - "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { @@ -6572,7 +9233,7 @@ "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/master" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, "funding": [ { @@ -6580,34 +9241,117 @@ "type": "github" } ], - "time": "2020-07-12T23:59:07+00:00" + "time": "2021-07-28T10:34:58+00:00" + }, + { + "name": "twig/twig", + "version": "v1.44.6", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "ae39480f010ef88adc7938503c9b02d3baf2f3b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/ae39480f010ef88adc7938503c9b02d3baf2f3b3", + "reference": "ae39480f010ef88adc7938503c9b02d3baf2f3b3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.44-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v1.44.6" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-11-25T13:31:46+00:00" }, { "name": "webmozart/assert", - "version": "1.9.1", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0 || ^8.0", + "php": "^7.2 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<3.9.1" + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" + "phpunit/phpunit": "^8.5.13" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -6631,21 +9375,78 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.9.1" + "source": "https://github.com/webmozarts/assert/tree/1.10.0" }, - "time": "2020-07-08T17:02:28+00:00" + "time": "2021-03-09T10:59:23+00:00" + } + ], + "aliases": [ + { + "package": "pckg-app/frontend-dev", + "version": "dev-next-8.0", + "alias": "dev-master", + "alias_normalized": "dev-master" + }, + { + "package": "pckg/auth", + "version": "dev-next-8.0", + "alias": "dev-master", + "alias_normalized": "dev-master" + }, + { + "package": "pckg/collection", + "version": "dev-next-8.0", + "alias": "dev-master", + "alias_normalized": "dev-master" + }, + { + "package": "pckg/database", + "version": "dev-next-8.0", + "alias": "dev-master", + "alias_normalized": "dev-master" + }, + { + "package": "pckg/framework", + "version": "dev-next-8.0", + "alias": "dev-master", + "alias_normalized": "dev-master" + }, + { + "package": "pckg/generic", + "version": "dev-next-8.0", + "alias": "dev-master", + "alias_normalized": "dev-master" + }, + { + "package": "pckg/htmlbuilder", + "version": "dev-next-8.0", + "alias": "dev-master", + "alias_normalized": "dev-master" + }, + { + "package": "wirecard/payment-sdk-php", + "version": "dev-patch-php-8", + "alias": "dev-master", + "alias_normalized": "dev-master" } ], - "aliases": [], "minimum-stability": "dev", "stability-flags": { "wirecard/payment-sdk-php": 20, "ampeco/omnipay-bankart": 20, - "pckg-app/frontend-dev": 20 + "pckg-app/frontend-dev": 20, + "pckg/database": 20, + "pckg/framework": 20, + "pckg/auth": 20, + "pckg/htmlbuilder": 20, + "pckg/collection": 20, + "pckg/generic": 20 }, "prefer-stable": true, "prefer-lowest": false, - "platform": [], + "platform": { + "ext-json": "*" + }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.2.0" } diff --git a/src/Pckg/Payment/Adapter/AbstractCustomer.php b/src/Pckg/Payment/Adapter/AbstractCustomer.php index 80d0b42..12480a3 100644 --- a/src/Pckg/Payment/Adapter/AbstractCustomer.php +++ b/src/Pckg/Payment/Adapter/AbstractCustomer.php @@ -1,18 +1,17 @@ -customer = $customer; - } - - public function getFullName() - { - return $this->getLastName() . ' ' . $this->getFirstName(); - } - -} \ No newline at end of file +customer = $customer; + } + + public function getFullName() + { + return $this->getLastName() . ' ' . $this->getFirstName(); + } +} diff --git a/src/Pckg/Payment/Adapter/AbstractOrder.php b/src/Pckg/Payment/Adapter/AbstractOrder.php index 1dc9bfe..dfa1210 100644 --- a/src/Pckg/Payment/Adapter/AbstractOrder.php +++ b/src/Pckg/Payment/Adapter/AbstractOrder.php @@ -1,28 +1,27 @@ -order = $order; - } - - public function getOrder() - { - return $this->order; - } - - public function getCurrency() - { - return config('pckg.payment.currency'); - } - - public function getIdString() - { - return sha1($this->getId()); - } - -} \ No newline at end of file +order = $order; + } + + public function getOrder() + { + return $this->order; + } + + public function getCurrency() + { + return config('pckg.payment.currency'); + } + + public function getIdString() + { + return sha1($this->getId()); + } +} diff --git a/src/Pckg/Payment/Adapter/AbstractProduct.php b/src/Pckg/Payment/Adapter/AbstractProduct.php index ee55f27..7016476 100644 --- a/src/Pckg/Payment/Adapter/AbstractProduct.php +++ b/src/Pckg/Payment/Adapter/AbstractProduct.php @@ -1,13 +1,12 @@ -product = $product; - } - -} \ No newline at end of file +product = $product; + } +} diff --git a/src/Pckg/Payment/Adapter/Customer.php b/src/Pckg/Payment/Adapter/Customer.php index c751476..4f2441f 100644 --- a/src/Pckg/Payment/Adapter/Customer.php +++ b/src/Pckg/Payment/Adapter/Customer.php @@ -1,24 +1,16 @@ -validator = Validator::make($request->all(), $rules); - - return $this->validator->passes(); - } - - public function errorJsonResponse() - { - return new JsonResponse($this->validator->getMessageBag()->toArray(), 422); - } - - public function config($key) - { - return config('payment.' . $key); - } - - public function request($key) - { - return request($key); - } - - public function url($slug, $params = []) - { - return url($slug, $params); - } - - public function fullUrl($slug, $params = []) - { - return full_url($slug, $params); - } - - public function redirect($url) - { - redirect()->away($url)->send(); - } - -} \ No newline at end of file diff --git a/src/Pckg/Payment/Adapter/Environment/Pckg.php b/src/Pckg/Payment/Adapter/Environment/Pckg.php index 47fad0d..90023f6 100644 --- a/src/Pckg/Payment/Adapter/Environment/Pckg.php +++ b/src/Pckg/Payment/Adapter/Environment/Pckg.php @@ -1,64 +1,63 @@ -respond(['error' => true, 'errors' => ['@T00D001']]); - } - - public function config($key) - { - return config('pckg.payment.provider.' . $key); - } - - public function request($key) - { - return request()->get($key); - } - - public function post($key) - { - return request()->post($key); - } - - public function get($key) - { - return request()->get($key); - } - - public function url($slug, $params = [], $absolute = true) - { - return url($slug, $params, $absolute); - } - - public function fullUrl($slug, $params = []) - { - return url($slug, $params, true); - } - - public function redirect($url) - { - return response()->redirect($url); - } - - public function flash($key, $val) - { - return flash($key, $val); - } - -} \ No newline at end of file +respond(['error' => true, 'errors' => ['@T00D001']]); + } + + public function config($key) + { + return config('pckg.payment.provider.' . $key); + } + + public function request($key) + { + return request()->get($key); + } + + public function post($key) + { + return request()->post($key); + } + + public function get($key) + { + return request()->get($key); + } + + public function url($slug, $params = [], $absolute = true) + { + return url($slug, $params, $absolute); + } + + public function fullUrl($slug, $params = []) + { + return url($slug, $params, true); + } + + public function redirect($url) + { + return response()->redirect($url); + } + + public function flash($key, $val) + { + return flash($key, $val); + } +} diff --git a/src/Pckg/Payment/Adapter/Log.php b/src/Pckg/Payment/Adapter/Log.php index 793e7d1..ba2505b 100644 --- a/src/Pckg/Payment/Adapter/Log.php +++ b/src/Pckg/Payment/Adapter/Log.php @@ -1,8 +1,8 @@ - true, ]; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Entity/Addresses.php b/src/Pckg/Payment/Entity/Addresses.php new file mode 100644 index 0000000..390033b --- /dev/null +++ b/src/Pckg/Payment/Entity/Addresses.php @@ -0,0 +1,22 @@ +belongsTo(Users::class)->foreignKey('user_id'); + } + + public function country() + { + return $this->belongsTo(Countries::class)->foreignKey('country_id'); + } +} diff --git a/src/Pckg/Payment/Entity/Companies.php b/src/Pckg/Payment/Entity/Companies.php new file mode 100644 index 0000000..04f039d --- /dev/null +++ b/src/Pckg/Payment/Entity/Companies.php @@ -0,0 +1,27 @@ +withCountry(); + + return $this; + } + + public function country() + { + return $this->belongsTo(Countries::class) + ->foreignKey('country_id'); + } +} diff --git a/src/Pckg/Payment/Entity/Countries.php b/src/Pckg/Payment/Entity/Countries.php new file mode 100644 index 0000000..a426212 --- /dev/null +++ b/src/Pckg/Payment/Entity/Countries.php @@ -0,0 +1,11 @@ +belongsTo(Orders::class)->foreignKey('poly_id'); } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/Bancontact.php b/src/Pckg/Payment/Form/Bancontact.php index c86ddaa..9309662 100644 --- a/src/Pckg/Payment/Form/Bancontact.php +++ b/src/Pckg/Payment/Form/Bancontact.php @@ -1,4 +1,6 @@ -setDecoratorClasses([ @@ -25,5 +26,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/CreditCard.php b/src/Pckg/Payment/Form/CreditCard.php index d4e8a7f..23c636c 100644 --- a/src/Pckg/Payment/Form/CreditCard.php +++ b/src/Pckg/Payment/Form/CreditCard.php @@ -1,11 +1,12 @@ -setDecoratorClasses([ @@ -46,5 +47,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/Ideal.php b/src/Pckg/Payment/Form/Ideal.php index 7eda58c..9e593ae 100644 --- a/src/Pckg/Payment/Form/Ideal.php +++ b/src/Pckg/Payment/Form/Ideal.php @@ -1,4 +1,6 @@ -setDecoratorClasses([ @@ -25,5 +26,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/Axcess.php b/src/Pckg/Payment/Form/PlatformSettings/Axcess.php index 863b37d..7531c37 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/Axcess.php +++ b/src/Pckg/Payment/Form/PlatformSettings/Axcess.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -19,5 +20,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/BankTransfer.php b/src/Pckg/Payment/Form/PlatformSettings/BankTransfer.php index f68df07..f3a715e 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/BankTransfer.php +++ b/src/Pckg/Payment/Form/PlatformSettings/BankTransfer.php @@ -1,4 +1,6 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -20,5 +21,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/Braintree.php b/src/Pckg/Payment/Form/PlatformSettings/Braintree.php index 2f0e25e..3de40ad 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/Braintree.php +++ b/src/Pckg/Payment/Form/PlatformSettings/Braintree.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -18,5 +19,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/CheckoutPortal.php b/src/Pckg/Payment/Form/PlatformSettings/CheckoutPortal.php index 2b60b6a..503fd12 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/CheckoutPortal.php +++ b/src/Pckg/Payment/Form/PlatformSettings/CheckoutPortal.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -19,5 +20,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/Cod.php b/src/Pckg/Payment/Form/PlatformSettings/Cod.php index f151f70..e33031c 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/Cod.php +++ b/src/Pckg/Payment/Form/PlatformSettings/Cod.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -14,5 +15,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/CorvusPay.php b/src/Pckg/Payment/Form/PlatformSettings/CorvusPay.php index e916081..8084397 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/CorvusPay.php +++ b/src/Pckg/Payment/Form/PlatformSettings/CorvusPay.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -16,5 +17,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/Icepay.php b/src/Pckg/Payment/Form/PlatformSettings/Icepay.php index 341f547..49a97d9 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/Icepay.php +++ b/src/Pckg/Payment/Form/PlatformSettings/Icepay.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -16,5 +17,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/Leanpay.php b/src/Pckg/Payment/Form/PlatformSettings/Leanpay.php index 36886c4..d7afaf7 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/Leanpay.php +++ b/src/Pckg/Payment/Form/PlatformSettings/Leanpay.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -16,5 +17,4 @@ public function initFields() return $this; } - } diff --git a/src/Pckg/Payment/Form/PlatformSettings/Mollie.php b/src/Pckg/Payment/Form/PlatformSettings/Mollie.php index 3f7cd00..a1bb521 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/Mollie.php +++ b/src/Pckg/Payment/Form/PlatformSettings/Mollie.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -15,5 +16,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/Monri.php b/src/Pckg/Payment/Form/PlatformSettings/Monri.php index eea54cf..19473d5 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/Monri.php +++ b/src/Pckg/Payment/Form/PlatformSettings/Monri.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -16,5 +17,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/Paypal.php b/src/Pckg/Payment/Form/PlatformSettings/Paypal.php index dc79f5e..bb3f1a8 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/Paypal.php +++ b/src/Pckg/Payment/Form/PlatformSettings/Paypal.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -16,5 +17,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/RequireWhenEnabled.php b/src/Pckg/Payment/Form/PlatformSettings/RequireWhenEnabled.php index 2872cad..f059cf6 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/RequireWhenEnabled.php +++ b/src/Pckg/Payment/Form/PlatformSettings/RequireWhenEnabled.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -16,5 +17,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/Stripe.php b/src/Pckg/Payment/Form/PlatformSettings/Stripe.php index dccc6a6..c79af81 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/Stripe.php +++ b/src/Pckg/Payment/Form/PlatformSettings/Stripe.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -16,5 +17,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/Upn.php b/src/Pckg/Payment/Form/PlatformSettings/Upn.php index 2afb15d..719af24 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/Upn.php +++ b/src/Pckg/Payment/Form/PlatformSettings/Upn.php @@ -1,16 +1,16 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/Valu.php b/src/Pckg/Payment/Form/PlatformSettings/Valu.php index f1e1a04..ef09da6 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/Valu.php +++ b/src/Pckg/Payment/Form/PlatformSettings/Valu.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -15,5 +16,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/PlatformSettings/VivaWallet.php b/src/Pckg/Payment/Form/PlatformSettings/VivaWallet.php index e1b09d0..e1b0faf 100644 --- a/src/Pckg/Payment/Form/PlatformSettings/VivaWallet.php +++ b/src/Pckg/Payment/Form/PlatformSettings/VivaWallet.php @@ -1,11 +1,12 @@ -addDecorator($this->decoratorFactory->create(VueJS::class)); @@ -19,5 +20,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Form/Sofort.php b/src/Pckg/Payment/Form/Sofort.php index ea937c3..86c468b 100644 --- a/src/Pckg/Payment/Form/Sofort.php +++ b/src/Pckg/Payment/Form/Sofort.php @@ -1,4 +1,6 @@ -setDecoratorClasses([ @@ -25,5 +26,4 @@ public function initFields() return $this; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Handler.php b/src/Pckg/Payment/Handler.php new file mode 100644 index 0000000..279a41c --- /dev/null +++ b/src/Pckg/Payment/Handler.php @@ -0,0 +1,7 @@ +order = $order; - } - - public function setPaymentRecord($record) - { - $this->paymentRecord = $record; - - return $this; - } - - public function initHandler() - { - return $this; - } - - public function initPayment() - { - return []; - } - - public function setLogger(Log $log) - { - $this->log = $log; - - return $this; - } - - public function setEnvironment(Environment $environment) - { - $this->environment = $environment; - - return $this; - } - - public function log($data) - { - $this->log->log($data); - } - - public function getStart() - { - } - - public function getInfo() - { - } - - public function check() - { - } - - public function postStart() - { - } - - public function getPaymentRecord() - { - return $this->paymentRecord; - } - - public function success() - { - } - - public function error() - { - } - - public function waiting() - { - } - - public function postNotification() - { - throw new \Exception('Missing notification implementation'); - } - - public function getNotification() - { - return 'GET notification is not supported.'; - } - - public function cancel() - { - } - - public function getDownload() - { - - } - - public function postDownload() - { - - } - - public function postUploadFile() - { - - } - - public function getCompanySettings() - { - return []; - } - - public function refund(Payment $payment, $amount = null) - { - throw new \Exception('Refunds are not supported by selected payment method'); - } - - public function getTotal() - { - return number_format($this->order->getTotal(), 2, '.', ''); - } - - public function getTotalToPay() - { - return number_format($this->order->getTotalToPay(), 2, '.', ''); - } - - public function getDescription() - { - return $this->paymentRecord->getDescription(); - } - - public function setPaymentId($paymentId) - { - $this->paymentRecord->setAndSave(['payment_id' => $paymentId]); - } - - public function waitPayment($description, $log, $transactionId, $status = 'waiting') - { - $this->paymentRecord->addLog($status, $log); - - $this->order->getBills()->keyBy('order_id')->each(function(OrdersBill $ordersBill) use ($description) { - $order = $ordersBill->order; - /** - * Payment confirms order so stock is okay. - */ - $order->confirm(); - /** - * Payment status is set as waiting. - */ - $order->waitingForPayment(); - }); - - $this->paymentRecord->setAndSave([ - 'status' => $status, - 'transaction_id' => $transactionId, - ]); - } - - public function approvePayment($description, $log, $transactionId, $status = 'approved') - { - $this->paymentRecord->addLog($status, $log); - - $this->order->getBills()->each(function(OrdersBill $ordersBill) use ($description) { - $ordersBill->confirm($description); - }); - - $this->paymentRecord->setAndSave([ - 'status' => $status, - 'transaction_id' => $transactionId, - ]); - } - - public function approveRefund($description, $log, $transactionId) - { - $this->paymentRecord->addLog('completed', $log); - - $this->paymentRecord->setAndSave(['status' => 'refund', 'transaction_id' => $json->id]); - - $instalments = $this->paymentRecord->getBills(); - $order = $instalments->first()->order(); - - OrdersBill::create([ - 'order_id' => $order->id, - 'dt_added' => date('Y-m-d H:i:s'), - 'dt_confirmed' => date('Y-m-d H:i:s'), - 'dt_valid' => date('Y-m-d H:i:s'), - 'type' => 'refund', - 'price' => $amount, - 'payed' => $amount, - 'notes' => $description, - ]); - } - - public function errorPayment($data = null, $logStatus = 'error') - { - $this->paymentRecord->addLog($logStatus, $data); - $this->paymentRecord->setAndSave([ - 'status' => 'error', - ]); - } - - public function cancelPayment($data = null, $logStatus = 'canceled') - { - $this->paymentRecord->addLog($logStatus, $data); - $this->paymentRecord->setAndSave([ - 'status' => 'canceled', - ]); - } - - public function getCurrency() - { - return config('pckg.payment.currency'); - } - - public function getStartUrl() - { - return $this->environment->url('derive.payment.start', [ - // 'handler' => $this->handler, // ?needed? - 'payment' => $this->paymentRecord, - ]); - } - - public function getErrorUrl() - { - return $this->environment->url('derive.payment.error', [ - 'payment' => $this->paymentRecord, - ]); - } - - public function getWaitingUrl() - { - return $this->environment->url('derive.payment.waiting', [ - 'payment' => $this->paymentRecord, - ]); - } - - public function getSuccessUrl() - { - - return $this->environment->url('derive.payment.success', [ - 'payment' => $this->paymentRecord, - ]); - } - - public function getNotificationUrl() - { - return $this->environment->url('derive.payment.notification', [ - 'payment' => $this->paymentRecord, - ]); - } - - public function getCheckUrl() - { - return $this->environment->url('derive.payment.check', [ - 'payment' => $this->paymentRecord, - ]); - } - - public function getCancelUrl() - { - return $this->environment->url('derive.payment.cancel', [ - 'payment' => $this->paymentRecord, - ]); - } - - public function getDownloadUrl() - { - return $this->environment->url('derive.payment.download', [ - 'payment' => $this->paymentRecord, - ]); - } - -} +order = $order; + } + + public function setPaymentRecord($record) + { + $this->paymentRecord = $record; + return $this; + } + + public function initHandler() + { + return $this; + } + + public function initPayment() + { + return []; + } + + public function setLogger(Log $log) + { + $this->log = $log; + return $this; + } + + public function setEnvironment(Environment $environment) + { + $this->environment = $environment; + return $this; + } + + public function log($data) + { + $this->log->log($data); + } + + public function getStart() + { + } + + public function getInfo() + { + } + + public function check() + { + } + + public function postStart() + { + } + + public function getPaymentRecord() + { + return $this->paymentRecord; + } + + public function success() + { + } + + public function error() + { + } + + public function waiting() + { + } + + public function postNotification() + { + throw new \Exception('Missing notification implementation'); + } + + public function getNotification() + { + return 'GET notification is not supported.'; + } + + public function cancel() + { + } + + public function getDownload() + { + } + + public function postDownload() + { + } + + public function postUploadFile() + { + } + + public function getCompanySettings() + { + return []; + } + + public function refund(Payment $payment, $amount = null) + { + throw new \Exception('Refunds are not supported by selected payment method'); + } + + public function getTotal() + { + return number_format($this->order->getTotal(), 2, '.', ''); + } + + public function getTotalToPay() + { + return number_format($this->order->getTotalToPay(), 2, '.', ''); + } + + public function getDescription() + { + return $this->paymentRecord->getDescription(); + } + + public function setPaymentId($paymentId) + { + $this->paymentRecord->setAndSave(['payment_id' => $paymentId]); + } + + public function waitPayment($description, $log, $transactionId, $status = 'waiting') + { + $this->paymentRecord->addLog($status, $log); + $this->order->getBills()->keyBy('order_id')->each(function (OrdersBill $ordersBill) { + + $order = $ordersBill->order; + /** + * Payment confirms order so stock is okay. + */ + $order->confirm(); + /** + * Payment status is set as waiting. + */ + $order->waitingForPayment(); + }); + $this->paymentRecord->setAndSave([ + 'status' => $status, + 'transaction_id' => $transactionId, + ]); + } + + public function approvePayment($description, $log, $transactionId, $status = 'approved') + { + $this->paymentRecord->addLog($status, $log); + $this->order->getBills()->each(function (OrdersBill $ordersBill) use ($description) { + + $ordersBill->confirm($description); + }); + $this->paymentRecord->setAndSave([ + 'status' => $status, + 'transaction_id' => $transactionId, + ]); + } + + public function approveRefund($description, $log, $transactionId) + { + $this->paymentRecord->addLog('completed', $log); + $this->paymentRecord->setAndSave(['status' => 'refund', 'transaction_id' => $transactionId]); + $instalments = $this->paymentRecord->getBills(); + $order = $instalments->first()->order(); + OrdersBill::create([ + 'order_id' => $order->id, + 'dt_added' => date('Y-m-d H:i:s'), + 'dt_confirmed' => date('Y-m-d H:i:s'), + 'dt_valid' => date('Y-m-d H:i:s'), + 'type' => 'refund', + 'price' => $this->paymentRecord->price, + 'payed' => $this->paymentRecord->price, + 'notes' => $description, + ]); + } + + public function errorPayment($data = null, $logStatus = 'error') + { + $this->paymentRecord->addLog($logStatus, $data); + $this->paymentRecord->setAndSave([ + 'status' => 'error', + ]); + } + + public function cancelPayment($data = null, $logStatus = 'canceled') + { + $this->paymentRecord->addLog($logStatus, $data); + $this->paymentRecord->setAndSave([ + 'status' => 'canceled', + ]); + } + + public function getCurrency() + { + return config('pckg.payment.currency'); + } + + public function getStartUrl() + { + return $this->environment->url('derive.payment.start', [ + // 'handler' => $this->handler, // ?needed? + 'payment' => $this->paymentRecord, + ]); + } + + public function getErrorUrl() + { + return $this->environment->url('derive.payment.error', [ + 'payment' => $this->paymentRecord, + ]); + } + + public function getWaitingUrl() + { + return $this->environment->url('derive.payment.waiting', [ + 'payment' => $this->paymentRecord, + ]); + } + + public function getSuccessUrl() + { + + return $this->environment->url('derive.payment.success', [ + 'payment' => $this->paymentRecord, + ]); + } + + public function getNotificationUrl() + { + return $this->environment->url('derive.payment.notification', [ + 'payment' => $this->paymentRecord, + ]); + } + + public function getCheckUrl() + { + return $this->environment->url('derive.payment.check', [ + 'payment' => $this->paymentRecord, + ]); + } + + public function getCancelUrl() + { + return $this->environment->url('derive.payment.cancel', [ + 'payment' => $this->paymentRecord, + ]); + } + + public function getDownloadUrl() + { + return $this->environment->url('derive.payment.download', [ + 'payment' => $this->paymentRecord, + ]); + } +} diff --git a/src/Pckg/Payment/Handler/Axcess.php b/src/Pckg/Payment/Handler/Axcess.php index 0a1e448..e26dee4 100644 --- a/src/Pckg/Payment/Handler/Axcess.php +++ b/src/Pckg/Payment/Handler/Axcess.php @@ -1,10 +1,11 @@ -environment->redirect($this->getErrorUrl()); } } - } diff --git a/src/Pckg/Payment/Handler/BankTransfer.php b/src/Pckg/Payment/Handler/BankTransfer.php index 1ebe746..a2f0be9 100644 --- a/src/Pckg/Payment/Handler/BankTransfer.php +++ b/src/Pckg/Payment/Handler/BankTransfer.php @@ -1,10 +1,11 @@ - $finalName, ]; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Handler/Bankart.php b/src/Pckg/Payment/Handler/Bankart.php index d7f8cf2..d64cc6d 100644 --- a/src/Pckg/Payment/Handler/Bankart.php +++ b/src/Pckg/Payment/Handler/Bankart.php @@ -1,4 +1,6 @@ -environment->config($this->handler . '.url') === 'https://bankart.paymentsandbox.cloud/'; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Handler/BankartCC.php b/src/Pckg/Payment/Handler/BankartCC.php index 2887589..8448072 100644 --- a/src/Pckg/Payment/Handler/BankartCC.php +++ b/src/Pckg/Payment/Handler/BankartCC.php @@ -1,8 +1,8 @@ -environment->config('braintree.environment')); - Configuration::merchantId($this->environment->config('braintree.merchant')); - Configuration::publicKey($this->environment->config('braintree.public')); - Configuration::privateKey($this->environment->config('braintree.private')); - - return $this; - } - - /** - * @return array|AbstractHandler - */ - public function initPayment() - { - $token = null; - try { - $token = ClientToken::generate(); - } catch (Throwable $e) { - response()->unavailable('Braintree payments are not available at the moment: ' . $e->getMessage()); - } - - $this->paymentRecord->addLog('created', $token); - - return [ - 'token' => $token, - 'threeDSecure' => $this->transform3DS(), - ]; - } - - /** - * @param $string - * @return string|string[]|null - * https://stackoverflow.com/questions/1176904/php-how-to-remove-all-non-printable-characters-in-a-string - */ - public function cleanASCII($string) - { - return preg_replace('/[\x00-\x1F\x7F]/u', '', $string); - } - - public function transform3DS() - { - return [ - 'amount' => $this->getTotal(), - 'email' => $this->order->getCustomer()->getEmail(), - 'billingAddress' => $this->transformBillingAddress($this->order->getBillingOrDeliveryAddress()), - 'additionalInformation' => $this->transformAdditionalInformation(), - ]; - } - - public function transformBillingAddress(Address $address = null) - { - if (!$address) { - return []; - } - - return [ - 'givenName' => $this->cleanASCII($address->name), - 'surname' => $this->cleanASCII(''), // @T00D00 - 'phoneNumber' => $address->phone, - ] + $this->transformAddress($address); - } - - public function transformAdditionalInformation() - { - if (!$deliveryAddress) { - return []; - } - - $deliveryAddress = $this->order->getDeliveryAddress(); - - return [ - 'workPhoneNumber' => '', - 'shippingGivenName' => $this->cleanASCII($address->name), - 'shippingSurname' => '', - 'shippingPhone' => $deliveryAddress->phone, - 'shippingAddress' => $deliveryAddress ? $this->transformAddress($deliveryAddress) : [], - ]; - } - - public function transformAddress(Address $address) - { - return [ - 'streetAddress' => $address->address_line1, - 'extendedAddress' => $address->address_line2, - 'locality' => $address->city, - 'region' => '', // @T00D00 - some countries have states/regions/provinces - 'postalCode' => $address->postal, - 'countryCodeAlpha2' => $address->country ? $address->country->getISO2() : '', - ]; - } - - /** - * @return array|void - */ - public function postStart() - { - $braintreeNonce = request()->post('payment_method_nonce'); - - if (!$braintreeNonce) { - return [ - 'success' => false, - 'message' => 'Missing payment method nonce.', - ]; - } - - $this->getPaymentRecord()->addLog('submitted'); - - $result = $braintreeNonce == $this->paymentRecord->getJsonData('braintree_payment_method_nonce') ? Transaction::find($this->paymentRecord->transaction_id) : Transaction::sale([ - 'amount' => $this->getTotal(), - 'paymentMethodNonce' => $braintreeNonce, - 'options' => [ - 'submitForSettlement' => true, - ], - ]); - - $this->paymentRecord->setJsonData('braintree_payment_method_nonce', $braintreeNonce)->save(); - - /** - * No success. - */ - if (!$result->success) { - $this->errorPayment($result); - - return [ - 'success' => false, - 'message' => $result->message, - 'modal' => 'error', - ]; - } - - /** - * If everything went fine, we got a transaction object. - * Confirm payment when its submitted for settlement. - */ - $transaction = $result->transaction; - if ($transaction->status == Transaction::SUBMITTED_FOR_SETTLEMENT) { - $this->approvePayment("Braintree #" . $transaction->id, $result, $transaction->id); - - return [ - 'success' => true, - 'modal' => 'success', - ]; - } - - $this->errorPayment($transaction, $transaction->status); - - $message = 'Unknown payment error'; - if ($transaction->status == Transaction::PROCESSOR_DECLINED) { - $message = $transaction->processorResponseText; - } elseif ($transaction->status == Transaction::GATEWAY_REJECTED) { - $message = $transaction->gatewayRejectionReason; - } - - return [ - 'success' => false, - 'message' => $message, - 'modal' => 'error', - ]; - } - - public function refund(Payment $payment, $amount = null) - { - $refundPaymentRecord = Payment::createForRefund($payment, $amount); - - try { - - $result = Configuration::gateway()->transaction()->refund($payment->transaction_id, $amount); - - if ($result->success) { - $this->paymentRecord = $refundPaymentRecord; - $this->approveRefund('Refund Braintree #' . $result->transaction->id, $result, $refund->transaction->id); - - return [ - 'success' => true, - ]; - } - - $refundPaymentRecord->addLog('response:failed', $result); - } catch (Throwable $e) { - $refundPaymentRecord->addLog('response:exception'); - - return [ - 'success' => false, - 'message' => 'Refunds are not available at the moment.' . exception($e), - ]; - } - - return [ - 'success' => false, - 'message' => 'Refunds are not available at the moment', - ]; - } - -} +environment->config('braintree.environment')); + Configuration::merchantId($this->environment->config('braintree.merchant')); + Configuration::publicKey($this->environment->config('braintree.public')); + Configuration::privateKey($this->environment->config('braintree.private')); + return $this; + } + + /** + * @return array|AbstractHandler + */ + public function initPayment() + { + $token = null; + try { + $token = ClientToken::generate(); + } catch (Throwable $e) { + response()->unavailable('Braintree payments are not available at the moment: ' . $e->getMessage()); + } + + $this->paymentRecord->addLog('created', $token); + return [ + 'token' => $token, + 'threeDSecure' => $this->transform3DS(), + ]; + } + + /** + * @param $string + * @return string|string[]|null + * https://stackoverflow.com/questions/1176904/php-how-to-remove-all-non-printable-characters-in-a-string + */ + public function cleanASCII($string) + { + return preg_replace('/[\x00-\x1F\x7F]/u', '', $string); + } + + public function transform3DS() + { + return [ + 'amount' => $this->getTotal(), + 'email' => $this->order->getCustomer()->getEmail(), + 'billingAddress' => $this->transformBillingAddress($this->order->getBillingOrDeliveryAddress()), + 'additionalInformation' => $this->transformAdditionalInformation(), + ]; + } + + public function transformBillingAddress(Address $address = null) + { + if (!$address) { + return []; + } + + return [ + 'givenName' => $this->cleanASCII($address->name), + 'surname' => $this->cleanASCII(''), // @T00D00 + 'phoneNumber' => $address->phone, + ] + $this->transformAddress($address); + } + + public function transformAdditionalInformation() + { + $deliveryAddress = $this->order->getDeliveryAddress(); + if (!$deliveryAddress) { + return []; + } + + return [ + 'workPhoneNumber' => '', + 'shippingGivenName' => $this->cleanASCII($deliveryAddress->name), + 'shippingSurname' => '', + 'shippingPhone' => $deliveryAddress->phone, + 'shippingAddress' => $deliveryAddress ? $this->transformAddress($deliveryAddress) : [], + ]; + } + + public function transformAddress(Address $address) + { + return [ + 'streetAddress' => $address->address_line1, + 'extendedAddress' => $address->address_line2, + 'locality' => $address->city, + 'region' => '', // @T00D00 - some countries have states/regions/provinces + 'postalCode' => $address->postal, + 'countryCodeAlpha2' => $address->country ? $address->country->getISO2() : '', + ]; + } + + /** + * @return array|void + */ + public function postStart() + { + $braintreeNonce = request()->post('payment_method_nonce'); + if (!$braintreeNonce) { + return [ + 'success' => false, + 'message' => 'Missing payment method nonce.', + ]; + } + + $this->getPaymentRecord()->addLog('submitted'); + $result = $braintreeNonce == $this->paymentRecord->getJsonData('braintree_payment_method_nonce') ? Transaction::find($this->paymentRecord->transaction_id) : Transaction::sale([ + 'amount' => $this->getTotal(), + 'paymentMethodNonce' => $braintreeNonce, + 'options' => [ + 'submitForSettlement' => true, + ], + ]); + $this->paymentRecord->setJsonData('braintree_payment_method_nonce', $braintreeNonce)->save(); +/** + * No success. + */ + if (!$result->success) { + $this->errorPayment($result); + return [ + 'success' => false, + 'message' => $result->message, + 'modal' => 'error', + ]; + } + + /** + * If everything went fine, we got a transaction object. + * Confirm payment when its submitted for settlement. + */ + $transaction = $result->transaction; + if ($transaction->status == Transaction::SUBMITTED_FOR_SETTLEMENT) { + $this->approvePayment("Braintree #" . $transaction->id, $result, $transaction->id); + return [ + 'success' => true, + 'modal' => 'success', + ]; + } + + $this->errorPayment($transaction, $transaction->status); + $message = 'Unknown payment error'; + if ($transaction->status == Transaction::PROCESSOR_DECLINED) { + $message = $transaction->processorResponseText; + } elseif ($transaction->status == Transaction::GATEWAY_REJECTED) { + $message = $transaction->gatewayRejectionReason; + } + + return [ + 'success' => false, + 'message' => $message, + 'modal' => 'error', + ]; + } + + public function refund(Payment $payment, $amount = null) + { + $refundPaymentRecord = Payment::createForRefund($payment, $amount); + try { + $result = Configuration::gateway()->transaction()->refund($payment->transaction_id, $amount); + if ($result->success) { + $this->paymentRecord = $refundPaymentRecord; + $this->approveRefund('Refund Braintree #' . $result->transaction->id, $result, $result->transaction->id); + return [ + 'success' => true, + ]; + } + + $refundPaymentRecord->addLog('response:failed', $result); + } catch (Throwable $e) { + $refundPaymentRecord->addLog('response:exception'); + return [ + 'success' => false, + 'message' => 'Refunds are not available at the moment.' . exception($e), + ]; + } + + return [ + 'success' => false, + 'message' => 'Refunds are not available at the moment', + ]; + } +} diff --git a/src/Pckg/Payment/Handler/CheckoutPortal.php b/src/Pckg/Payment/Handler/CheckoutPortal.php index bcc3d88..5a45c81 100644 --- a/src/Pckg/Payment/Handler/CheckoutPortal.php +++ b/src/Pckg/Payment/Handler/CheckoutPortal.php @@ -1,235 +1,219 @@ -environment->config('checkout-portal.mode', null); - $username = $this->environment->config('checkout-portal.username', null); - $password = $this->environment->config('checkout-portal.password', null); - $merchantAccount = $this->environment->config('checkout-portal.maid', null); - $endpoint = $this->environment->config('checkout-portal.endpoint', null); - - $value = number_format($this->paymentRecord->price, 2); - $currency = config('pckg.payment.currency', null); - $firstName = auth()->user('name'); - $lastName = auth()->user('surname'); - $ancestor = 'https://' . server('HTTP_HOST', null); - - $transactionType = 'purchase'; // authorization - - $successUrl = $this->getSuccessUrl(); - $errorUrl = $this->getErrorUrl(); - $cancelUrl = $this->getCancelUrl(); - $defaultUrl = $this->getCheckUrl(); - $pendingUrl = $this->getCheckUrl(); - $notificationUrl = $this->getNotificationUrl(); - - $data = [ - 'payment' => [ - 'merchant-account-id' => [ - 'value' => $merchantAccount, - ], - 'request-id' => $this->paymentRecord->hash, - 'transaction-type' => $transactionType, - 'requested-amount' => [ - 'value' => $value, - 'currency' => $currency, - ], - 'account-holder' => [ - 'first-name' => $firstName, - 'last-name' => $lastName, - ], - 'redirect-url' => $defaultUrl, - 'pending-redirect-url' => $pendingUrl, - 'success-redirect-url' => $successUrl, - 'fail-redirect-url' => $errorUrl, - 'cancel-redirect-url' => $cancelUrl, - /*'three-d' => [ - 'attempt-three-d' => 'true', - ],*/ - 'notifications' => [ - 'format' => 'application/json-signed', - 'notification' => [ - [ - 'url' => $notificationUrl, - ], - ], - ], - ], - 'options' => [ - 'mode' => $mode, - 'frame-ancestor' => $ancestor, - ], - ]; - - if ($mode === 'seamless') { - $data['payment']['payment-methods'] = [ - 'payment-method' => [ - [ - 'name' => 'creditcard', - ], - ], - ]; - } - - $this->paymentRecord->addLog('requesting', $data); - - $request = $client->post($endpoint, [ - 'json' => $data, - 'headers' => [ - 'Content-Type' => 'application/json', - 'Authorization' => 'Basic ' . base64_encode($username . ':' . $password), - ], - ]); - - $response = json_decode($request->getBody()->getContents(), true); - - $this->paymentRecord->addLog('created', $response); - - return [ - 'mode' => $mode, - 'iframe' => $response['payment-redirect-url'], - ]; - } - - public function postNotification() - { - $response = $this->getIPNResponse(); - $state = $response['payment']['transaction-state'] ?? null; - $type = $response['payment']['transaction-type'] ?? null; - - if ($type !== 'purchase') { - parent::postNotification(); - } - - if ($state === 'success') { - if ($this->getPaymentRecord()->status === 'approved') { - return [ - 'success' => true, - 'message' => 'Already approved', - ]; - } - - $description = "CheckoutPortal " . $response['payment']['transaction-id']; - $this->approvePayment($description, $response, $response['payment']['transaction-id']); - - return [ - 'success' => true, - ]; - } - - if ($state === 'canceled') { - $this->getPaymentRecord()->addLog('canceled', $response); - - return [ - 'success' => false, - 'message' => 'Canceled', - ]; - } - - if ($state === 'error') { - $this->getPaymentRecord()->addLog('error', $response); - return [ - 'success' => false, - 'message' => 'Payment error', - ]; - } - - if ($state === 'failed') { - $this->getPaymentRecord()->addLog('failed', $response); - - return[ - 'success' => false, - 'message' => 'Payment failed', - ]; - } - - return parent::postNotification(); - } - - private function getIPNResponse() - { - $data = post()->all(); - - if (!isset($data['response-signature-base64']) || !isset($data['response-signature-algorithm']) || - !isset($data['response-base64'])) { - throw new Exception('Missing request data'); - } - - $secretKey = $this->environment->config('checkout-portal.secret'); - $sig = hash_hmac('sha256', $data['response-base64'], $secretKey, true); - - if (!hash_equals($sig, base64_decode($data['response-signature-base64']))) { - $this->getPaymentRecord()->addLog('missmatch', $data); - - throw new Exception('Signature missmatch'); - } - - $response = json_decode(base64_decode($data['response-base64']), true); - $requestId = $response['payment']['request-id'] ?? null; - - $this->getPaymentRecord()->addLog('notification', $response); - - if (strpos($requestId, $this->getPaymentRecord()->hash) === false) { // $hash, $hash-check-enrollment - throw new Exception('Payment id missmatch: ' . $requestId); - } - - return $response; - } - - public function postSuccess() - { - $response = $this->getIPNResponse(); - - $state = $response['payment']['transaction-state'] ?? null; - - if ($state != 'success') { - throw new Exception('Not successful state'); - } - - $ok = collect($response['payment']['statuses']['status'] ?? [])->has(function($status) { - return $status['code'] == '201.0000'; - }); - - if (!$ok) { - throw new Exception('No successful code'); - } - } - - public function postError() - { - $response = $this->getIPNResponse(); - } - - public function postCancel() - { - $response = $this->getIPNResponse(); - } - -} +environment->config('checkout-portal.mode', null); + $username = $this->environment->config('checkout-portal.username', null); + $password = $this->environment->config('checkout-portal.password', null); + $merchantAccount = $this->environment->config('checkout-portal.maid', null); + $endpoint = $this->environment->config('checkout-portal.endpoint', null); + $value = number_format($this->paymentRecord->price, 2); + $currency = config('pckg.payment.currency', null); + $firstName = auth()->user('name'); + $lastName = auth()->user('surname'); + $ancestor = 'https://' . server('HTTP_HOST', null); + $transactionType = 'purchase'; +// authorization + + $successUrl = $this->getSuccessUrl(); + $errorUrl = $this->getErrorUrl(); + $cancelUrl = $this->getCancelUrl(); + $defaultUrl = $this->getCheckUrl(); + $pendingUrl = $this->getCheckUrl(); + $notificationUrl = $this->getNotificationUrl(); + $data = [ + 'payment' => [ + 'merchant-account-id' => [ + 'value' => $merchantAccount, + ], + 'request-id' => $this->paymentRecord->hash, + 'transaction-type' => $transactionType, + 'requested-amount' => [ + 'value' => $value, + 'currency' => $currency, + ], + 'account-holder' => [ + 'first-name' => $firstName, + 'last-name' => $lastName, + ], + 'redirect-url' => $defaultUrl, + 'pending-redirect-url' => $pendingUrl, + 'success-redirect-url' => $successUrl, + 'fail-redirect-url' => $errorUrl, + 'cancel-redirect-url' => $cancelUrl, + /*'three-d' => [ + 'attempt-three-d' => 'true', + ],*/ + 'notifications' => [ + 'format' => 'application/json-signed', + 'notification' => [ + [ + 'url' => $notificationUrl, + ], + ], + ], + ], + 'options' => [ + 'mode' => $mode, + 'frame-ancestor' => $ancestor, + ], + ]; + if ($mode === 'seamless') { + $data['payment']['payment-methods'] = [ + 'payment-method' => [ + [ + 'name' => 'creditcard', + ], + ], + ]; + } + + $this->paymentRecord->addLog('requesting', $data); + $request = $client->post($endpoint, [ + 'json' => $data, + 'headers' => [ + 'Content-Type' => 'application/json', + 'Authorization' => 'Basic ' . base64_encode($username . ':' . $password), + ], + ]); + $response = json_decode($request->getBody()->getContents(), true); + $this->paymentRecord->addLog('created', $response); + return [ + 'mode' => $mode, + 'iframe' => $response['payment-redirect-url'], + ]; + } + + public function postNotification() + { + $response = $this->getIPNResponse(); + $state = $response['payment']['transaction-state'] ?? null; + $type = $response['payment']['transaction-type'] ?? null; + if ($type !== 'purchase') { + parent::postNotification(); + } + + if ($state === 'success') { + if ($this->getPaymentRecord()->status === 'approved') { + return [ + 'success' => true, + 'message' => 'Already approved', + ]; + } + + $description = "CheckoutPortal " . $response['payment']['transaction-id']; + $this->approvePayment($description, $response, $response['payment']['transaction-id']); + return [ + 'success' => true, + ]; + } + + if ($state === 'canceled') { + $this->getPaymentRecord()->addLog('canceled', $response); + return [ + 'success' => false, + 'message' => 'Canceled', + ]; + } + + if ($state === 'error') { + $this->getPaymentRecord()->addLog('error', $response); + return [ + 'success' => false, + 'message' => 'Payment error', + ]; + } + + if ($state === 'failed') { + $this->getPaymentRecord()->addLog('failed', $response); + return[ + 'success' => false, + 'message' => 'Payment failed', + ]; + } + + return parent::postNotification(); + } + + private function getIPNResponse() + { + $data = post()->all(); + + if ( + !isset($data['response-signature-base64']) || !isset($data['response-signature-algorithm']) || + !isset($data['response-base64']) + ) { + throw new Exception('Missing request data'); + } + + $secretKey = $this->environment->config('checkout-portal.secret'); + $sig = hash_hmac('sha256', $data['response-base64'], $secretKey, true); + if (!hash_equals($sig, base64_decode($data['response-signature-base64']))) { + $this->getPaymentRecord()->addLog('missmatch', $data); + throw new Exception('Signature missmatch'); + } + + $response = json_decode(base64_decode($data['response-base64']), true); + $requestId = $response['payment']['request-id'] ?? null; + $this->getPaymentRecord()->addLog('notification', $response); + if (strpos($requestId, $this->getPaymentRecord()->hash) === false) { + // $hash, $hash-check-enrollment + throw new Exception('Payment id missmatch: ' . $requestId); + } + + return $response; + } + + public function postSuccess() + { + $response = $this->getIPNResponse(); + $state = $response['payment']['transaction-state'] ?? null; + if ($state != 'success') { + throw new Exception('Not successful state'); + } + + $ok = collect($response['payment']['statuses']['status'] ?? [])->has(function ($status) { + + return $status['code'] == '201.0000'; + }); + if (!$ok) { + throw new Exception('No successful code'); + } + } + + public function postError() + { + $response = $this->getIPNResponse(); + } + + public function postCancel() + { + $response = $this->getIPNResponse(); + } +} diff --git a/src/Pckg/Payment/Handler/Cod.php b/src/Pckg/Payment/Handler/Cod.php index 1f6be7e..de4d21e 100644 --- a/src/Pckg/Payment/Handler/Cod.php +++ b/src/Pckg/Payment/Handler/Cod.php @@ -1,10 +1,11 @@ - $transactionId, ]); } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Handler/CommsWallet.php b/src/Pckg/Payment/Handler/CommsWallet.php index d0de6b3..1a0bf89 100644 --- a/src/Pckg/Payment/Handler/CommsWallet.php +++ b/src/Pckg/Payment/Handler/CommsWallet.php @@ -1,11 +1,12 @@ -errorPayment('Insufficient balance'); - + return [ 'success' => true, 'modal' => 'error', @@ -66,5 +67,4 @@ public function postStart() 'message' => 'Error making payment', ]; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Handler/Handler.php b/src/Pckg/Payment/Handler/Handler.php index 3c2520d..e44f055 100644 --- a/src/Pckg/Payment/Handler/Handler.php +++ b/src/Pckg/Payment/Handler/Handler.php @@ -1,50 +1,38 @@ -icepay = new Client(); - $this->icepay->setApiKey($this->environment->config('icepay.merchant')); - $this->icepay->setApiSecret($this->environment->config('icepay.secret')); - - $this->icepay->setCompletedURL(url('derive.payment.success', - ['handler' => $this->handler, 'order' => null], - true)); - $this->icepay->setErrorURL(url('derive.payment.error', ['handler' => $this->handler, 'order' => null], true)); - - return $this; - } - - protected function setUrls() - { - $this->icepay->setCompletedURL($this->getSuccessUrl()); - $this->icepay->setErrorURL($this->getErrorUrl()); - } - - private function getIcepayDefaultsData() - { - $order = $this->order->getOrder(); - $price = $this->getTotal(); - - $data = [ - 'Amount' => $price, - 'Currency' => config('pckg.payment.currency'), - 'Paymentmethod' => $this->paymentMethod, - 'Issuer' => $this->issuer, - 'Language' => 'EN', - 'Country' => '00', - 'Description' => $this->order->getDescription(), - 'OrderID' => $this->paymentRecord->id, - 'Reference' => $this->paymentRecord->id, - 'EndUserIP' => request()->clientIp(), - ]; - - return $data; - } - - public function getTotal() - { - return round($this->order->getTotal() * 100); - } - - public function getTotalToPay() - { - return round($this->order->getTotalToPay() * 100); - } - - protected function validatePostbackChecksum() - { - $calculatedChecksum = sha1(sprintf("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s", - $this->icepay->api_secret, - $this->icepay->api_key, - $this->environment->post('Status'), - $this->environment->post('StatusCode'), - $this->environment->post('OrderID'), - $this->environment->post('PaymentID'), - $this->environment->post('Reference'), - $this->environment->post('TransactionID'), - $this->environment->post('Amount'), - $this->environment->post('Currency'), - $this->environment->post('Duration'), - $this->environment->post('ConsumerIPAddress'))); - - $checksum = $this->environment->post('Checksum'); - - if ($checksum !== $calculatedChecksum) { - throw new Exception('Checksum missmatch!'); - } - } - - public function getPaymentMethods() - { - $response = $this->icepay->payment->getMyPaymentMethods(); - - return $response; - } - - public function getPaymentMethod($method) - { - return (new Collection($this->getPaymentMethods()->PaymentMethods))->first(function($paymentMethod) use ($method - ) { - return $paymentMethod->PaymentMethodCode == $method; - }); - } - - public function postNotification() - { - $this->validatePostbackChecksum(); - - $status = $this->environment->post('Status'); - $reference = $this->environment->post('Reference'); - - $bodyData = (array)$this->environment->post(null); - - $payment = Payment::getOrFail([ - 'id' => $reference, - ]); - - $this->setPaymentRecord($payment); - - if ($status == 'OK') { - $this->approvePayment('Icepay #' . $reference, $bodyData, $this->environment->post('TransactionID')); - - return [ - 'success' => true, - ]; - } - - $this->errorPayment($bodyData, $status); - - return [ - 'success' => false, - 'message' => 'Payment error', - ]; - } - - public function initPayment() - { - $config = $this->getPaymentMethod($this->paymentMethod); - - $countries = collect($config->Issuers[0]->Countries ?? [])->keyBy('CountryCode')->map('CountryCode'); - $issuers = collect($config->Issuers ?? [])->keyBy('IssuerKeyword')->map('Description'); - - return [ - 'countries' => $countries->all(), - 'issuers' => $issuers->all(), - 'formData' => [ - 'country' => $countries->keys()[0] ?? null, - 'issuer' => $issuers->keys()[0] ?? null, - ], - ]; - } - - public function postStart() - { - try { - /** - * Set completed and error url. - */ - $this->setUrls(); - - /** - * Log payment started. - */ - $this->paymentRecord->addLog('started'); - - /** - * Create payment request. - */ - $data = array_merge($this->getIcepayDefaultsData(), $this->getIcepayData()); - $payment = $this->icepay->payment->checkOut($data); - - /** - * Log payment submitted. - */ - $this->paymentRecord->addLog('submitted', $payment); - - /** - * Validate response. - */ - if (!isset($payment->ProviderTransactionID) || !isset($payment->PaymentID)) { - return [ - 'success' => false, - 'message' => 'Icepay payment provider error - ' . ($payment->Message ?? 'unknown error'), - ]; - } - - /** - * Set ids. - */ - $this->paymentRecord->setAndSave([ - 'transaction_id' => $payment->ProviderTransactionID, - 'payment_id' => $payment->PaymentID, - ]); - - /** - * Redirect to payment page. - */ - $this->paymentRecord->addLog('redirected', $payment->PaymentScreenURL); - - return [ - 'success' => true, - 'redirect' => $payment->PaymentScreenURL, - ]; - } catch (Throwable $e) { - $this->paymentRecord->addLog('error'); - - return [ - 'success' => false, - 'message' => 'Icepay payments are not available at the moment: ' . $e->getMessage(), - ]; - } - } - - public function getIcepayData() - { - return []; - } - - public function startIcepayPartialData($formClass, $handler, $fetch = []) - { - $form = resolve($formClass); - $form->setAction(url('derive.payment.postStartPartial', - [ - 'handler' => $handler, - 'order' => $this->order->getOrder(), - 'payment' => $this->paymentRecord, - ])); - - $config = $this->getPaymentMethod($this->paymentMethod); - if ($config) { - if (in_array('country', $fetch)) { - foreach ($config->Issuers[0]->Countries as $country) { - $form->country->addOption($country->CountryCode, $country->CountryCode); - } - } - - if (in_array('issuer', $fetch)) { - foreach ($config->Issuers as $issuer) { - $form->issuer->addOption($issuer->IssuerKeyword, $issuer->Description); - } - } - } - } - -} +icepay = new Client(); + $this->icepay->setApiKey($this->environment->config('icepay.merchant')); + $this->icepay->setApiSecret($this->environment->config('icepay.secret')); + + $this->icepay->setCompletedURL(url( + 'derive.payment.success', + ['handler' => $this->handler, 'order' => null], + true + )); + $this->icepay->setErrorURL(url('derive.payment.error', ['handler' => $this->handler, 'order' => null], true)); + return $this; + } + + protected function setUrls() + { + $this->icepay->setCompletedURL($this->getSuccessUrl()); + $this->icepay->setErrorURL($this->getErrorUrl()); + } + + private function getIcepayDefaultsData() + { + $order = $this->order->getOrder(); + $price = $this->getTotal(); + $data = [ + 'Amount' => $price, + 'Currency' => config('pckg.payment.currency'), + 'Paymentmethod' => $this->paymentMethod, + 'Issuer' => $this->issuer, + 'Language' => 'EN', + 'Country' => '00', + 'Description' => $this->order->getDescription(), + 'OrderID' => $this->paymentRecord->id, + 'Reference' => $this->paymentRecord->id, + 'EndUserIP' => request()->clientIp(), + ]; + return $data; + } + + public function getTotal() + { + return round($this->order->getTotal() * 100); + } + + public function getTotalToPay() + { + return round($this->order->getTotalToPay() * 100); + } + + protected function validatePostbackChecksum() + { + $calculatedChecksum = sha1(sprintf( + "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s", + $this->icepay->api_secret, + $this->icepay->api_key, + $this->environment->post('Status'), + $this->environment->post('StatusCode'), + $this->environment->post('OrderID'), + $this->environment->post('PaymentID'), + $this->environment->post('Reference'), + $this->environment->post('TransactionID'), + $this->environment->post('Amount'), + $this->environment->post('Currency'), + $this->environment->post('Duration'), + $this->environment->post('ConsumerIPAddress') + )); + $checksum = $this->environment->post('Checksum'); + if ($checksum !== $calculatedChecksum) { + throw new Exception('Checksum missmatch!'); + } + } + + public function getPaymentMethods() + { + $response = $this->icepay->payment->getMyPaymentMethods(); + return $response; + } + + public function getPaymentMethod($method) + { + return (new Collection($this->getPaymentMethods()->PaymentMethods))->first(function ($paymentMethod) use ($method) { + + return $paymentMethod->PaymentMethodCode == $method; + }); + } + + public function postNotification() + { + $this->validatePostbackChecksum(); + $status = $this->environment->post('Status'); + $reference = $this->environment->post('Reference'); + $bodyData = (array)$this->environment->post(null); + $payment = Payment::getOrFail([ + 'id' => $reference, + ]); + $this->setPaymentRecord($payment); + if ($status == 'OK') { + $this->approvePayment('Icepay #' . $reference, $bodyData, $this->environment->post('TransactionID')); + return [ + 'success' => true, + ]; + } + + $this->errorPayment($bodyData, $status); + return [ + 'success' => false, + 'message' => 'Payment error', + ]; + } + + public function initPayment() + { + $config = $this->getPaymentMethod($this->paymentMethod); + $countries = collect($config->Issuers[0]->Countries ?? [])->keyBy('CountryCode')->map('CountryCode'); + $issuers = collect($config->Issuers ?? [])->keyBy('IssuerKeyword')->map('Description'); + return [ + 'countries' => $countries->all(), + 'issuers' => $issuers->all(), + 'formData' => [ + 'country' => $countries->keys()[0] ?? null, + 'issuer' => $issuers->keys()[0] ?? null, + ], + ]; + } + + public function postStart() + { + try { +/** + * Set completed and error url. + */ + $this->setUrls(); +/** + * Log payment started. + */ + $this->paymentRecord->addLog('started'); +/** + * Create payment request. + */ + $data = array_merge($this->getIcepayDefaultsData(), $this->getIcepayData()); + $payment = $this->icepay->payment->checkOut($data); +/** + * Log payment submitted. + */ + $this->paymentRecord->addLog('submitted', $payment); +/** + * Validate response. + */ + if (!isset($payment->ProviderTransactionID) || !isset($payment->PaymentID)) { + return [ + 'success' => false, + 'message' => 'Icepay payment provider error - ' . ($payment->Message ?? 'unknown error'), + ]; + } + + /** + * Set ids. + */ + $this->paymentRecord->setAndSave([ + 'transaction_id' => $payment->ProviderTransactionID, + 'payment_id' => $payment->PaymentID, + ]); +/** + * Redirect to payment page. + */ + $this->paymentRecord->addLog('redirected', $payment->PaymentScreenURL); + return [ + 'success' => true, + 'redirect' => $payment->PaymentScreenURL, + ]; + } catch (Throwable $e) { + $this->paymentRecord->addLog('error'); + return [ + 'success' => false, + 'message' => 'Icepay payments are not available at the moment: ' . $e->getMessage(), + ]; + } + } + + public function getIcepayData() + { + return []; + } + + public function startIcepayPartialData($formClass, $handler, $fetch = []) + { + $form = resolve($formClass); + $form->setAction(url( + 'derive.payment.postStartPartial', + [ + 'handler' => $handler, + 'order' => $this->order->getOrder(), + 'payment' => $this->paymentRecord, + ] + )); + $config = $this->getPaymentMethod($this->paymentMethod); + if ($config) { + if (in_array('country', $fetch)) { + foreach ($config->Issuers[0]->Countries as $country) { + $form->country->addOption($country->CountryCode, $country->CountryCode); + } + } + + if (in_array('issuer', $fetch)) { + foreach ($config->Issuers as $issuer) { + $form->issuer->addOption($issuer->IssuerKeyword, $issuer->Description); + } + } + } + } +} diff --git a/src/Pckg/Payment/Handler/Icepay/Americanexpress.php b/src/Pckg/Payment/Handler/Icepay/Americanexpress.php index fb0ed8c..d6e2c2d 100644 --- a/src/Pckg/Payment/Handler/Icepay/Americanexpress.php +++ b/src/Pckg/Payment/Handler/Icepay/Americanexpress.php @@ -1,10 +1,9 @@ - post('country', null), - ]; - } - - public function startPartialData() - { - $this->startIcepayPartialData(BancontactForm::class, 'icepay-bancontact', ['country']); - - return []; - } - -} \ No newline at end of file + post('country', null), + ]; + } + + public function startPartialData() + { + $this->startIcepayPartialData(BancontactForm::class, 'icepay-bancontact', ['country']); + return []; + } +} diff --git a/src/Pckg/Payment/Handler/Icepay/CreditCard.php b/src/Pckg/Payment/Handler/Icepay/CreditCard.php index cf4fd8c..8b5c61c 100644 --- a/src/Pckg/Payment/Handler/Icepay/CreditCard.php +++ b/src/Pckg/Payment/Handler/Icepay/CreditCard.php @@ -1,15 +1,14 @@ -postStartPartial(); - } - -} \ No newline at end of file +postStartPartial(); + } +} diff --git a/src/Pckg/Payment/Handler/Icepay/Eps.php b/src/Pckg/Payment/Handler/Icepay/Eps.php index 634ac93..2c8426b 100644 --- a/src/Pckg/Payment/Handler/Icepay/Eps.php +++ b/src/Pckg/Payment/Handler/Icepay/Eps.php @@ -1,27 +1,24 @@ -postStartPartial(); - } - - public function getIcepayData() - { - return [ - 'Language' => 'DE', - 'Country' => 'DE', - ]; - } - -} \ No newline at end of file +postStartPartial(); + } + + public function getIcepayData() + { + return [ + 'Language' => 'DE', + 'Country' => 'DE', + ]; + } +} diff --git a/src/Pckg/Payment/Handler/Icepay/Giropay.php b/src/Pckg/Payment/Handler/Icepay/Giropay.php index e5cd020..048d5f2 100644 --- a/src/Pckg/Payment/Handler/Icepay/Giropay.php +++ b/src/Pckg/Payment/Handler/Icepay/Giropay.php @@ -1,27 +1,24 @@ -postStartPartial(); - } - - public function getIcepayData() - { - return [ - 'Language' => 'DE', - 'Country' => 'DE', - ]; - } - -} \ No newline at end of file +postStartPartial(); + } + + public function getIcepayData() + { + return [ + 'Language' => 'DE', + 'Country' => 'DE', + ]; + } +} diff --git a/src/Pckg/Payment/Handler/Icepay/Ideal.php b/src/Pckg/Payment/Handler/Icepay/Ideal.php index b24960d..bbc7c47 100644 --- a/src/Pckg/Payment/Handler/Icepay/Ideal.php +++ b/src/Pckg/Payment/Handler/Icepay/Ideal.php @@ -1,30 +1,26 @@ - 'NL', - 'Issuer' => post('issuer', null), - ]; - } - - public function startPartialData() - { - $this->startIcepayPartialData(IdealForm::class, 'icepay-ideal', ['issuer']); - - return []; - } - -} \ No newline at end of file + 'NL', + 'Issuer' => post('issuer', null), + ]; + } + + public function startPartialData() + { + $this->startIcepayPartialData(IdealForm::class, 'icepay-ideal', ['issuer']); + return []; + } +} diff --git a/src/Pckg/Payment/Handler/Icepay/Mastercard.php b/src/Pckg/Payment/Handler/Icepay/Mastercard.php index 966212a..b64d587 100644 --- a/src/Pckg/Payment/Handler/Icepay/Mastercard.php +++ b/src/Pckg/Payment/Handler/Icepay/Mastercard.php @@ -1,10 +1,9 @@ - post('country', null), - ]; - } - - public function startPartialData() - { - $this->startIcepayPartialData(SofortForm::class, 'icepay-sofort', ['country']); - - return []; - } - -} \ No newline at end of file + post('country', null), + ]; + } + + public function startPartialData() + { + $this->startIcepayPartialData(SofortForm::class, 'icepay-sofort', ['country']); + return []; + } +} diff --git a/src/Pckg/Payment/Handler/Icepay/Visa.php b/src/Pckg/Payment/Handler/Icepay/Visa.php index a3c3b52..1916846 100644 --- a/src/Pckg/Payment/Handler/Icepay/Visa.php +++ b/src/Pckg/Payment/Handler/Icepay/Visa.php @@ -1,10 +1,9 @@ -mollie = new \Mollie\Api\MollieApiClient(); - $this->mollie->setApiKey(config('pckg.payment.provider.mollie.apiKey')); - - return $this; - } - - public function getCompanySettings() - { - $paymentMethods = collect($this->mollie->methods->allActive(['resource' => 'orders']))->keyBy('id')->map('description')->all(); - - return [ - 'paymentMethods' => $paymentMethods, - ]; - } - - private function getMolliePaymentData() - { - return [ - 'amount' => [ - 'currency' => $this->order->getCurrency(), - 'value' => (string)number_format($this->order->getTotal(), 2, '.', ''), - ], - 'description' => $this->getDescription(), - 'redirectUrl' => $this->getCheckUrl(), - 'webhookUrl' => $this->getNotificationUrl(), - 'method' => substr($this->handler, strpos($this->handler, '-') + 1), - ]; - } - - public function postStart() - { - try { - /** - * Send payment request to Mollie API. - */ - $paymentData = $this->getMolliePaymentData(); - $payment = $this->mollie->payments->create($paymentData); - - /** - * Save created payment id for future references. - */ - $this->setPaymentId($payment->id); - - /** - * Redirect to URL in Mollie response. - */ - $url = $payment->getCheckoutUrl(); - $this->paymentRecord->addLog('redirected', $url); - - return [ - 'success' => true, - 'redirect' => $url, - ]; - - } catch (ApiException $e) { - /** - * Catch Mollie payments exception. - */ - $this->paymentRecord->addLog('error', $e->getMessage()); - - return [ - 'success' => false, - 'message' => 'Mollie payments not available: ' . $e->getMessage(), - ]; - } catch (Throwable $e) { - /** - * Catch all other exceptions. - */ - $this->paymentRecord->addLog('error', $e->getMessage()); - - return [ - 'success' => false, - 'message' => 'System error:' . $e->getMessage(), - ]; - } - } - - public function getTotal() - { - return round($this->order->getTotal() * 100); - } - - public function getTotalToPay() - { - return round($this->order->getTotalToPay() * 100); - } - - public function getPaymentMethods() - { - ddd('getting payment methods'); - $response = $this->icepay->payment->getMyPaymentMethods(); - - return $response; - } - - public function getPaymentMethod($method) - { - ddd('get payment method'); - - return (new Collection($this->getPaymentMethods()->PaymentMethods))->first(function($paymentMethod) use ($method - ) { - return $paymentMethod->PaymentMethodCode == $method; - }); - } - - public function check() - { - try { - $payment = $this->mollie->payments->get($this->paymentRecord->payment_id); - - if ($payment->isPaid() && !$payment->hasRefunds() && !$payment->hasChargebacks()) { - return $this->environment->redirect($this->getSuccessUrl()); - } - - if ($payment->isFailed() || $payment->isExpired() || $payment->hasRefunds() || $payment->hasChargebacks()) { - return $this->environment->redirect($this->getErrorUrl()); - } - - if ($payment->isCanceled()) { - return $this->environment->redirect($this->getCancelUrl()); - } - - sleep(5); - return $this->environment->redirect($this->getWaitingUrl()); - } catch (Throwable $e) { - throw $e; - } - } - - public function postNotification() - { - try { - /** - * Get payment record from Mollie payments. - */ - $payment = $this->mollie->payments->get($this->paymentRecord->payment_id); - - /** - * Start processing info. - */ - if ($payment->isPaid() && !$payment->hasRefunds() && !$payment->hasChargebacks()) { - /** - * Log successful payment, change payment status, trigger events. - */ - $this->approvePayment("Mollie " . $payment->method . " #" . $payment->id, $payment, $payment->id); - - return [ - 'success' => true, - ]; - } elseif ($payment->isOpen()) { - } elseif ($payment->isPending()) { - } elseif ($payment->isFailed()) { - } elseif ($payment->isExpired()) { - } elseif ($payment->isCanceled()) { - } elseif ($payment->hasRefunds()) { - } elseif ($payment->hasChargebacks()) { - } - } catch (\Mollie\Api\Exceptions\ApiException $e) { - throw $e; - } catch (Throwable $e) { - throw $e; - } - } - -} +mollie = new \Mollie\Api\MollieApiClient(); + $this->mollie->setApiKey(config('pckg.payment.provider.mollie.apiKey')); + return $this; + } + + public function getCompanySettings() + { + $paymentMethods = collect($this->mollie->methods->allActive(['resource' => 'orders']))->keyBy('id')->map('description')->all(); + return [ + 'paymentMethods' => $paymentMethods, + ]; + } + + private function getMolliePaymentData() + { + return [ + 'amount' => [ + 'currency' => $this->order->getCurrency(), + 'value' => (string)number_format($this->order->getTotal(), 2, '.', ''), + ], + 'description' => $this->getDescription(), + 'redirectUrl' => $this->getCheckUrl(), + 'webhookUrl' => $this->getNotificationUrl(), + 'method' => substr($this->handler, strpos($this->handler, '-') + 1), + ]; + } + + public function postStart() + { + try { +/** + * Send payment request to Mollie API. + */ + $paymentData = $this->getMolliePaymentData(); + $payment = $this->mollie->payments->create($paymentData); +/** + * Save created payment id for future references. + */ + $this->setPaymentId($payment->id); +/** + * Redirect to URL in Mollie response. + */ + $url = $payment->getCheckoutUrl(); + $this->paymentRecord->addLog('redirected', $url); + return [ + 'success' => true, + 'redirect' => $url, + ]; + } catch (ApiException $e) { + /** + * Catch Mollie payments exception. + */ + $this->paymentRecord->addLog('error', $e->getMessage()); + return [ + 'success' => false, + 'message' => 'Mollie payments not available: ' . $e->getMessage(), + ]; + } catch (Throwable $e) { + /** + * Catch all other exceptions. + */ + $this->paymentRecord->addLog('error', $e->getMessage()); + return [ + 'success' => false, + 'message' => 'System error:' . $e->getMessage(), + ]; + } + } + + public function getTotal() + { + return round($this->order->getTotal() * 100); + } + + public function getTotalToPay() + { + return round($this->order->getTotalToPay() * 100); + } + + public function getPaymentMethods() + { + ddd('getting payment methods'); + } + + public function getPaymentMethod($method) + { + ddd('get payment method'); + } + + public function check() + { + try { + $payment = $this->mollie->payments->get($this->paymentRecord->payment_id); + if ($payment->isPaid() && !$payment->hasRefunds() && !$payment->hasChargebacks()) { + return $this->environment->redirect($this->getSuccessUrl()); + } + + if ($payment->isFailed() || $payment->isExpired() || $payment->hasRefunds() || $payment->hasChargebacks()) { + return $this->environment->redirect($this->getErrorUrl()); + } + + if ($payment->isCanceled()) { + return $this->environment->redirect($this->getCancelUrl()); + } + + sleep(5); + return $this->environment->redirect($this->getWaitingUrl()); + } catch (Throwable $e) { + throw $e; + } + } + + public function postNotification() + { + try { +/** + * Get payment record from Mollie payments. + */ + $payment = $this->mollie->payments->get($this->paymentRecord->payment_id); +/** + * Start processing info. + */ + if ($payment->isPaid() && !$payment->hasRefunds() && !$payment->hasChargebacks()) { +/** + * Log successful payment, change payment status, trigger events. + */ + $this->approvePayment("Mollie " . $payment->method . " #" . $payment->id, $payment, $payment->id); + return [ + 'success' => true, + ]; + } elseif ($payment->isOpen()) { + } elseif ($payment->isPending()) { + } elseif ($payment->isFailed()) { + } elseif ($payment->isExpired()) { + } elseif ($payment->isCanceled()) { + } elseif ($payment->hasRefunds()) { + } elseif ($payment->hasChargebacks()) { + } + } catch (\Mollie\Api\Exceptions\ApiException $e) { + throw $e; + } catch (Throwable $e) { + throw $e; + } + } +} diff --git a/src/Pckg/Payment/Handler/Mollie/Bancontact.php b/src/Pckg/Payment/Handler/Mollie/Bancontact.php index 5618c32..8126e88 100644 --- a/src/Pckg/Payment/Handler/Mollie/Bancontact.php +++ b/src/Pckg/Payment/Handler/Mollie/Bancontact.php @@ -1,12 +1,12 @@ -completePurchase(); } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Handler/Omnipay/Revolut.php b/src/Pckg/Payment/Handler/Omnipay/Revolut.php index 7ec6e82..9da066c 100644 --- a/src/Pckg/Payment/Handler/Omnipay/Revolut.php +++ b/src/Pckg/Payment/Handler/Omnipay/Revolut.php @@ -1,4 +1,6 @@ - $events, ])->isSuccessful(); } -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Handler/Paymill.php b/src/Pckg/Payment/Handler/Paymill.php index aa672a7..29116f4 100644 --- a/src/Pckg/Payment/Handler/Paymill.php +++ b/src/Pckg/Payment/Handler/Paymill.php @@ -1,117 +1,106 @@ - 'required', - 'number' => 'required', - 'exp_month' => 'required', - 'exp_year' => 'required', - 'cvc' => 'required', - 'amount_int' => 'required', - ]; - - if (!$this->environment->validates($request, $rules)) { - return $this->environment->errorJsonResponse(); - } - - return [ - 'success' => true, - ]; - } - - public function initHandler() - { - $this->config = [ - 'private_key' => $this->environment->config('paymill.private_key'), - 'public_key' => $this->environment->config('paymill.public_key'), - ]; - - $this->paymill = new Request($this->config['private_key']); - - return $this; - } - - public function getTotal() - { - return round($this->order->getTotal() * 100); - } - - public function getTotalToPay() - { - return round($this->order->getTotalToPay() * 100); - } - - public function getPublicKey() - { - return $this->config['public_key']; - } - - public function start() - { - $payment = new Payment(); - $payment->setToken($this->environment->request('token')); - $payment->setClient($this->order->getCustomer()); - - $response = null; - try { - $this->log($payment); - $response = $this->paymill->create($payment); - $this->log($response); - - } catch (Throwable $e) { - $this->log($e); - throw $e; - - } finally { - if ($paymentId = $response->getId()) { - return $this->makeTransaction($paymentId); - } - } - } - - protected function makeTransaction($paymentId) - { - $transaction = new Transaction(); - $transaction->setAmount($this->getTotalToPay()) - ->setCurrency($this->order->getCurrency()) - ->setPayment($paymentId) - ->setDescription($this->order->getDescription()); - - $response = null; - try { - $this->log($transaction); - $response = $this->paymill->create($transaction); - $this->log($response); - } catch (Throwable $e) { - $this->log($e); - throw $e; - - } finally { - if ($response->getStatus() == 'closed') { - $this->order->setPaid(); - - return true; - } - - } - } - - protected function handleTransactionResponse($response) - { - if ($response->getStatus() == 'closed') { - $this->order->setPaid(); - } - } - -} \ No newline at end of file + 'required', + 'number' => 'required', + 'exp_month' => 'required', + 'exp_year' => 'required', + 'cvc' => 'required', + 'amount_int' => 'required', + ]; + if (!$this->environment->validates($request, $rules)) { + return $this->environment->errorJsonResponse(); + } + + return [ + 'success' => true, + ]; + } + + public function initHandler() + { + $this->config = [ + 'private_key' => $this->environment->config('paymill.private_key'), + 'public_key' => $this->environment->config('paymill.public_key'), + ]; + $this->paymill = new Request($this->config['private_key']); + return $this; + } + + public function getTotal() + { + return round($this->order->getTotal() * 100); + } + + public function getTotalToPay() + { + return round($this->order->getTotalToPay() * 100); + } + + public function getPublicKey() + { + return $this->config['public_key']; + } + + public function start() + { + $payment = new Payment(); + $payment->setToken($this->environment->request('token')); + $payment->setClient($this->order->getCustomer()); + $response = null; + try { + $this->log($payment); + $response = $this->paymill->create($payment); + $this->log($response); + } catch (Throwable $e) { + $this->log($e); + throw $e; + } finally { + if ($paymentId = $response->getId()) { + return $this->makeTransaction($paymentId); + } + } + } + + protected function makeTransaction($paymentId) + { + $transaction = new Transaction(); + $transaction->setAmount($this->getTotalToPay()) + ->setCurrency($this->order->getCurrency()) + ->setPayment($paymentId) + ->setDescription($this->order->getDescription()); + $response = null; + try { + $this->log($transaction); + $response = $this->paymill->create($transaction); + $this->log($response); + } catch (Throwable $e) { + $this->log($e); + throw $e; + } finally { + if ($response->getStatus() == 'closed') { + $this->order->setPaid(); + return true; + } + } + } + + protected function handleTransactionResponse($response) + { + if ($response->getStatus() == 'closed') { + $this->order->setPaid(); + } + } +} diff --git a/src/Pckg/Payment/Handler/Paymill/Paypal.php b/src/Pckg/Payment/Handler/Paymill/Paypal.php index 8816b72..d73f5b5 100644 --- a/src/Pckg/Payment/Handler/Paymill/Paypal.php +++ b/src/Pckg/Payment/Handler/Paymill/Paypal.php @@ -1,83 +1,67 @@ - true, - 'checksum' => $this->getChecksum(), - ]; - } - - public function getChecksum() - { - $checksum = new Checksum(); - $checksum->setChecksumType(Checksum::TYPE_PAYPAL) - ->setAmount($this->getTotalToPay()) - ->setCurrency(config('pckg.payment.currency')) - ->setDescription('Description') - ->setReturnUrl($this->getReturnUrl()) - ->setCancelUrl($this->getCancelUrl()); - - $response = $this->paymill->create($checksum); - - return $response->getId(); - } - - private function getReturnUrl() - { - return $this->environment->fullUrl( - $this->environment->config('paymill-paypal.url_return'), - [ - 'handler' => 'paymill-paypal', - 'listing' => $this->order->getOrder(), - ] - ); - } - - private function getCancelUrl() - { - return $this->environment->fullUrl( - $this->environment->config('paymill-paypal.url_cancel'), - [ - 'handler' => 'paymill-paypal', - 'listing' => $this->order->getOrder(), - ] - ); - } - - public function success() - { - $transaction = new Transaction(); - $transaction->setId($this->environment->request('paymill_trx_id')); - - $response = $this->paymill->getOne($transaction); - - if ($response->getStatus() == 'closed') { - $this->order->setPaid(); - } - } - - public function getValidateUrl() - { - return $this->environment->url( - 'payment.validate', - ['handler' => 'paymill-paypal', 'order' => $this->order->getOrder()] - ); - } - - public function getStartUrl() - { - return $this->environment->url( - 'payment.start', - ['handler' => 'paymill-paypal', 'order' => $this->order->getOrder()] - ); - } - -} \ No newline at end of file + true, + 'checksum' => $this->getChecksum(), + ]; + } + + public function getChecksum() + { + $checksum = new Checksum(); + $checksum->setChecksumType(Checksum::TYPE_PAYPAL) + ->setAmount($this->getTotalToPay()) + ->setCurrency(config('pckg.payment.currency')) + ->setDescription('Description') + ->setReturnUrl($this->getReturnUrl()) + ->setCancelUrl($this->getCancelUrl()); + $response = $this->paymill->create($checksum); + return $response->getId(); + } + + public function getReturnUrl() + { + return $this->environment->fullUrl($this->environment->config('paymill-paypal.url_return'), [ + 'handler' => 'paymill-paypal', + 'listing' => $this->order->getOrder(), + ]); + } + + public function getCancelUrl() + { + return $this->environment->fullUrl($this->environment->config('paymill-paypal.url_cancel'), [ + 'handler' => 'paymill-paypal', + 'listing' => $this->order->getOrder(), + ]); + } + + public function success() + { + $transaction = new Transaction(); + $transaction->setId($this->environment->request('paymill_trx_id')); + $response = $this->paymill->getOne($transaction); + if ($response->getStatus() == 'closed') { + $this->order->setPaid(); + } + } + + public function getValidateUrl() + { + return $this->environment->url('payment.validate', ['handler' => 'paymill-paypal', 'order' => $this->order->getOrder()]); + } + + public function getStartUrl() + { + return $this->environment->url('payment.start', ['handler' => 'paymill-paypal', 'order' => $this->order->getOrder()]); + } +} diff --git a/src/Pckg/Payment/Handler/Paymill/Sepa.php b/src/Pckg/Payment/Handler/Paymill/Sepa.php index 3e6ba66..428472f 100644 --- a/src/Pckg/Payment/Handler/Paymill/Sepa.php +++ b/src/Pckg/Payment/Handler/Paymill/Sepa.php @@ -1,41 +1,34 @@ - 'required', - 'iban' => 'required', - 'bic' => 'required', - ]; - - if (!$this->environment->validates($request, $rules)) { - return $this->environment->errorJsonResponse(); - } - - return [ - 'success' => true, - ]; - } - - public function getValidateUrl() - { - return $this->environment->url( - 'payment.validate', - ['handler' => 'paymill-sepa', 'order' => $this->order->getOrder()] - ); - } - - public function getStartUrl() - { - return $this->environment->url( - 'payment.start', - ['handler' => 'paymill-sepa', 'order' => $this->order->getOrder()] - ); - } - -} \ No newline at end of file + 'required', + 'iban' => 'required', + 'bic' => 'required', + ]; + if (!$this->environment->validates($request, $rules)) { + return $this->environment->errorJsonResponse(); + } + + return [ + 'success' => true, + ]; + } + + public function getValidateUrl() + { + return $this->environment->url('payment.validate', ['handler' => 'paymill-sepa', 'order' => $this->order->getOrder()]); + } + + public function getStartUrl() + { + return $this->environment->url('payment.start', ['handler' => 'paymill-sepa', 'order' => $this->order->getOrder()]); + } +} diff --git a/src/Pckg/Payment/Handler/Paypal.php b/src/Pckg/Payment/Handler/Paypal.php index ef21557..a506c01 100644 --- a/src/Pckg/Payment/Handler/Paypal.php +++ b/src/Pckg/Payment/Handler/Paypal.php @@ -1,199 +1,177 @@ -config = [ - 'username' => $this->environment->config('paypal.username'), - 'password' => $this->environment->config('paypal.password'), - 'signature' => $this->environment->config('paypal.signature'), - 'url' => $this->environment->config('paypal.url'), - 'url_token' => $this->environment->config('paypal.url_token'), - 'url_return' => $this->environment->config('paypal.url_return'), - 'url_cancel' => $this->environment->config('paypal.url_cancel'), - ]; - - return $this; - } - - public function start() - { - $fields = [ - 'METHOD' => 'SetExpressCheckout', - 'RETURNURL' => $this->environment->url( - $this->config['url_return'], - ['handler' => 'paypal', 'order' => $this->order->getOrder()] - ), - 'CANCELURL' => $this->environment->url( - $this->config['url_cancel'], - ['handler' => 'paypal', 'order' => $this->order->getOrder()] - ), - 'NOSHIPPING' => '1', - 'ALLOWNOTE' => '0', - 'ADDROVERRIDE' => '0', - ]; - - $fields = array_merge($fields, $this->fetchOrderData()); - - $response = $this->makeRequest($fields); - - if ($response['ACK'] == static::ACK_SUCCESS) { - $url = str_replace('[token]', $response['TOKEN'], $this->config['url_token']); - $this->environment->redirect($url); - } - - return $response; - } - - public function fetchOrderData() - { - $total = $this->order->getTotal(); - $productsSum = 0.0; - $products = []; - foreach ($this->order->getProducts() as $product) { - $productsSum += $product->getTotal(); - $products[] = [ - 'NAME' => $product->getName(), - 'AMT' => $product->getPrice(), - 'QTY' => $product->getQuantity(), - ]; - } - - if ($deliveryPrice = $this->order->getDelivery()) { - $products[] = [ - 'NAME' => 'Delivery', - 'AMT' => $deliveryPrice, - 'QTY' => 1, - ]; - $productsSum += $deliveryPrice; - } - - if ($discount = round($productsSum - $total)) { - $products[] = [ - 'NAME' => 'Discount', - 'AMT' => 0 - $discount, - 'QTY' => 1, - ]; - $productsSum -= $discount; - } - - $fields = [ - 'PAYMENTREQUEST_0_PAYMENTACTION' => static::PAYMENTACTION, - 'PAYMENTREQUEST_0_AMT' => $total, - 'PAYMENTREQEUST_0_CURRENCYCODE' => $this->order->getCurrency(), - 'PAYMENTREQEUST_0_ITEMAMT' => $productsSum, - ]; - - foreach ($products as $i => $product) { - $fields['L_PAYMENTREQUEST_0_NAME' . $i] = $product['NAME']; - $fields['L_PAYMENTREQUEST_0_AMT' . $i] = $product['AMT']; - $fields['L_PAYMENTREQUEST_0_QTY' . $i] = $product['QTY']; - } - - return $fields; - } - - public function makeRequest($fields) - { - $fields = array_merge($fields, $this->getApiCredentials()); - $postFields = $this->stringifyFields($fields); - - $options = [ - CURLOPT_URL => $this->config['url'], - CURLOPT_HEADER => false, - CURLOPT_VERBOSE => false, - CURLOPT_SSL_VERIFYPEER => false, - CURLOPT_SSL_VERIFYHOST => false, - CURLOPT_FAILONERROR => false, - CURLOPT_FOLLOWLOCATION => false, - CURLOPT_RETURNTRANSFER => true, - CURLOPT_POST => true, - CURLOPT_POSTFIELDS => $postFields, - CURLOPT_TIMEOUT => 30, - CURLOPT_CONNECTTIMEOUT => 30, - ]; - - $ch = curl_init(); - curl_setopt_array($ch, $options); - $response = curl_exec($ch); - $error = curl_error($ch); - curl_close($ch); - - if (!$response) { - throw new Exception("Request has failed! ($error)"); - } - - $responseArray = explode('&', $response); - $response = []; - foreach ($responseArray as $val) { - list($key, $val) = explode('=', $val, 2); - $response[$key] = urldecode($val); - } - - return $response; - } - - public function getApiCredentials() - { - return [ - 'VERSION' => '64.0', - 'USER' => $this->config['username'], - 'PWD' => $this->config['password'], - 'SIGNATURE' => $this->config['signature'], - ]; - } - - public function stringifyFields($fields) - { - $postFields = []; - foreach ($fields as $key => $val) { - $postFields[] = $key . '=' . urlencode($val); - } - - return implode('&', $postFields); - } - - public function success() - { - $token = $this->environment->request('token'); - $fields = [ - 'METHOD' => 'GetExpressCheckoutDetails', - 'TOKEN' => $token, - ]; - - $response = $this->makeRequest($fields); - - if ($response['CHECKOUTSTATUS'] == static::CHECKOUTSTATUS_PAYMENT_ACTION_NOT_INITIATED && isset($response['PAYERID'])) { - $fields = [ - 'METHOD' => 'DoExpressCheckoutPayment', - 'TOKEN' => $token, - 'PAYMENTACTION' => static::PAYMENTACTION, - 'PAYERID' => $response['PAYERID'], - 'AMT' => $response['AMT'], - 'CURRENCYCODE' => $response['CURRENCYCODE'], - ]; - - $response = $this->makeRequest($fields); - - if ($response['ACK'] == static::ACK_SUCCESS) { - $this->order->setPaid(); - } - } - } - - public function error() - { - - } - -} \ No newline at end of file +config = [ + 'username' => $this->environment->config('paypal.username'), + 'password' => $this->environment->config('paypal.password'), + 'signature' => $this->environment->config('paypal.signature'), + 'url' => $this->environment->config('paypal.url'), + 'url_token' => $this->environment->config('paypal.url_token'), + 'url_return' => $this->environment->config('paypal.url_return'), + 'url_cancel' => $this->environment->config('paypal.url_cancel'), + ]; + return $this; + } + + public function start() + { + $fields = [ + 'METHOD' => 'SetExpressCheckout', + 'RETURNURL' => $this->environment->url($this->config['url_return'], ['handler' => 'paypal', 'order' => $this->order->getOrder()]), + 'CANCELURL' => $this->environment->url($this->config['url_cancel'], ['handler' => 'paypal', 'order' => $this->order->getOrder()]), + 'NOSHIPPING' => '1', + 'ALLOWNOTE' => '0', + 'ADDROVERRIDE' => '0', + ]; + $fields = array_merge($fields, $this->fetchOrderData()); + $response = $this->makeRequest($fields); + if ($response['ACK'] == static::ACK_SUCCESS) { + $url = str_replace('[token]', $response['TOKEN'], $this->config['url_token']); + $this->environment->redirect($url); + } + + return $response; + } + + public function fetchOrderData() + { + $total = $this->order->getTotal(); + $productsSum = 0.0; + $products = []; + foreach ($this->order->getProducts() as $product) { + $productsSum += $product->getTotal(); + $products[] = [ + 'NAME' => $product->getName(), + 'AMT' => $product->getPrice(), + 'QTY' => $product->getQuantity(), + ]; + } + + if ($deliveryPrice = $this->order->getDelivery()) { + $products[] = [ + 'NAME' => 'Delivery', + 'AMT' => $deliveryPrice, + 'QTY' => 1, + ]; + $productsSum += $deliveryPrice; + } + + if ($discount = round($productsSum - $total)) { + $products[] = [ + 'NAME' => 'Discount', + 'AMT' => 0 - $discount, + 'QTY' => 1, + ]; + $productsSum -= $discount; + } + + $fields = [ + 'PAYMENTREQUEST_0_PAYMENTACTION' => static::PAYMENTACTION, + 'PAYMENTREQUEST_0_AMT' => $total, + 'PAYMENTREQEUST_0_CURRENCYCODE' => $this->order->getCurrency(), + 'PAYMENTREQEUST_0_ITEMAMT' => $productsSum, + ]; + foreach ($products as $i => $product) { + $fields['L_PAYMENTREQUEST_0_NAME' . $i] = $product['NAME']; + $fields['L_PAYMENTREQUEST_0_AMT' . $i] = $product['AMT']; + $fields['L_PAYMENTREQUEST_0_QTY' . $i] = $product['QTY']; + } + + return $fields; + } + + public function makeRequest($fields) + { + $fields = array_merge($fields, $this->getApiCredentials()); + $postFields = $this->stringifyFields($fields); + $options = [ + CURLOPT_URL => $this->config['url'], + CURLOPT_HEADER => false, + CURLOPT_VERBOSE => false, + CURLOPT_SSL_VERIFYPEER => false, + CURLOPT_SSL_VERIFYHOST => false, + CURLOPT_FAILONERROR => false, + CURLOPT_FOLLOWLOCATION => false, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => $postFields, + CURLOPT_TIMEOUT => 30, + CURLOPT_CONNECTTIMEOUT => 30, + ]; + $ch = curl_init(); + curl_setopt_array($ch, $options); + $response = curl_exec($ch); + $error = curl_error($ch); + curl_close($ch); + if (!$response) { + throw new Exception("Request has failed! ($error)"); + } + + $responseArray = explode('&', $response); + $response = []; + foreach ($responseArray as $val) { + list($key, $val) = explode('=', $val, 2); + $response[$key] = urldecode($val); + } + + return $response; + } + + public function getApiCredentials() + { + return [ + 'VERSION' => '64.0', + 'USER' => $this->config['username'], + 'PWD' => $this->config['password'], + 'SIGNATURE' => $this->config['signature'], + ]; + } + + public function stringifyFields($fields) + { + $postFields = []; + foreach ($fields as $key => $val) { + $postFields[] = $key . '=' . urlencode($val); + } + + return implode('&', $postFields); + } + + public function success() + { + $token = $this->environment->request('token'); + $fields = [ + 'METHOD' => 'GetExpressCheckoutDetails', + 'TOKEN' => $token, + ]; + $response = $this->makeRequest($fields); + if ($response['CHECKOUTSTATUS'] == static::CHECKOUTSTATUS_PAYMENT_ACTION_NOT_INITIATED && isset($response['PAYERID'])) { + $fields = [ + 'METHOD' => 'DoExpressCheckoutPayment', + 'TOKEN' => $token, + 'PAYMENTACTION' => static::PAYMENTACTION, + 'PAYERID' => $response['PAYERID'], + 'AMT' => $response['AMT'], + 'CURRENCYCODE' => $response['CURRENCYCODE'], + ]; + $response = $this->makeRequest($fields); + if ($response['ACK'] == static::ACK_SUCCESS) { + $this->order->setPaid(); + } + } + } + + public function error() + { + } +} diff --git a/src/Pckg/Payment/Handler/PaypalGnp.php b/src/Pckg/Payment/Handler/PaypalGnp.php index 60d38d8..ef0af24 100644 --- a/src/Pckg/Payment/Handler/PaypalGnp.php +++ b/src/Pckg/Payment/Handler/PaypalGnp.php @@ -1,292 +1,251 @@ -config = [ - 'endpoint' => $this->environment->config('paypal.endpoint'), - 'client' => $this->environment->config('paypal.client'), - 'secret' => $this->environment->config('paypal.secret'), - ]; - - return $this; - } - - protected function getAccessToken() - { - $ch = curl_init(); - - curl_setopt($ch, CURLOPT_URL, "https://" . $this->config['endpoint'] . "/v1/oauth2/token"); - curl_setopt($ch, CURLOPT_HEADER, false); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_USERPWD, $this->config['client'] . ":" . $this->config['secret']); - curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); - - $result = curl_exec($ch); - - curl_close($ch); - - if (empty($result)) { - return false; - } else { - $json = json_decode($result); - - return $json->access_token; - } - } - - public function postStart() - { - $price = $this->getTotal(); - $accessToken = $this->getAccessToken(); - - $arrData = [ - "intent" => "sale", - "redirect_urls" => [ - "return_url" => $this->getCheckUrl(), - "cancel_url" => $this->getCancelUrl(), - ], - "payer" => [ - "payment_method" => "paypal", - ], - "transactions" => [ - [ - "amount" => [ - "total" => $price, - "currency" => $this->getCurrency(), - ], - "description" => $this->getDescription(), - ], - ], - ]; - $this->paymentRecord->addLog('requesting', $arrData); - - $ch = curl_init(); - - curl_setopt($ch, CURLOPT_URL, "https://" . $this->config['endpoint'] . "/v1/payments/payment"); - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - "Authorization: Bearer " . $accessToken, - "Content-Type: application/json", - ]); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($arrData)); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - - $result = curl_exec($ch); - curl_close($ch); - - if (!$result) { - return [ - 'success' => false, - 'message' => 'Paypal payments are not available at the moment.', - ]; - } - - $json = json_decode($result); - - if (isset($json->state) && $json->state == "created") { - $this->paymentRecord->addLog('redirect', $result); - $this->paymentRecord->setAndSave(['payment_id' => $json->id]); - - return [ - 'success' => true, - 'redirect' => $json->links[1]->href, - ]; - } - - $this->paymentRecord->addLog('error', $result); - - return [ - 'success' => false, - 'message' => $json->info->message ?? 'Unknown paypal error', - 'info' => $json, - ]; - } - - public function check() - { - $accessToken = $this->getAccessToken(); - - $arrData = [ - "payer_id" => get('PayerID'), - ]; - - $ch = curl_init(); - - curl_setopt($ch, CURLOPT_URL, "https://" . $this->config['endpoint'] . "/v1/payments/payment/" . - $this->paymentRecord->payment_id . "/execute/"); - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - "Authorization: Bearer " . $accessToken, - "Content-Type: application/json", - ]); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($arrData)); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - - $result = curl_exec($ch); - curl_close($ch); - - if (!$result) { - throw new Exception(__('error_title_cannot_execute_order')); - } - - $json = json_decode($result); - - $this->log($json); - - if (!isset($json->state)) { // unknown error - if ($json->name == 'PAYMENT_ALREADY_DONE') { - } - - return $this->environment->redirect($this->getErrorUrl()); - } - - /** - * Handle successful payment. - */ - if ($json->state == "approved") { - $transaction = end($json->transactions); - $resource = end($transaction->related_resources); - $this->approvePayment("Paypal " . $resource->sale->id, $json, $json->id); - $this->environment->redirect($this->getSuccessUrl()); - - return; - } - - $this->paymentRecord->setAndSave([ - "status" => $json->state, - "transaction_id" => $json->id, - ]); - - if ($json->state == "pending") { - $this->environment->redirect($this->getWaitingUrl()); - - return; - } - - /** - * Redirect on error. - */ - return $this->environment->redirect($this->getErrorUrl()); - } - - public function refund(Payment $payment, $amount = null) - { - /** - * Transaction ID is needed for refund transaction. - */ - $transactionId = $payment->finalTransactionId; - - if ($transactionId && $payment->payment_id && $payment->transaction_id && $payment->transaction_id == $payment->payment_id) { - $payment->setAndSave(['transaction_id' => $transactionId]); - } - - if (!$transactionId) { - throw new Exception('Transaction ID not found'); - } - - /** - * We will issue transaction, create new payment record. - */ - $refundPaymentRecord = Payment::createForRefund($payment, $amount); - - $arrData = [ - 'amount' => [ - 'total' => $amount, - 'currency' => $this->getCurrency(), - ], - 'description' => 'Refund transaction #' . $payment->id, - ]; - - /** - * Save log. - */ - $refundPaymentRecord->addLog('request:refund', $arrData); - - /** - * Make request to paypal. - */ - $result = $this->makeCurlRequest("/v1/payments/sale/" . $transactionId . "/refund", $arrData); - - /** - * Handle empty result. - */ - if (!$result) { - $refundPaymentRecord->addLog('response:empty'); - - return [ - 'success' => false, - 'message' => 'Paypal payments are not available at the moment.', - ]; - } - - $json = json_decode($result); - - /** - * Check for proper completed status. - */ - if (isset($json->state) && $json->state == "completed") { - $this->paymentRecord = $refundPaymentRecord; - $this->approveRefund('Refund Paypal #' . $json->id, $json, $json->id); - - return [ - 'success' => true, - ]; - } - - /** - * Add error log. - */ - $payment->addLog($json->state ?? 'error', $json); - - return [ - 'success' => false, - 'message' => 'Paypal error: ' . ($json->message ?? 'unknown error'), - 'info' => $json, - ]; - } - - protected function makeCurlRequest($endpoint, $arrData) - { - $accessToken = $this->getAccessToken(); - - $ch = curl_init(); - - $headers = [ - "Authorization: Bearer " . $accessToken, - "Content-Type: application/json", - ]; - $url = "https://" . $this->config['endpoint'] . $endpoint; - - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($arrData)); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - - $result = curl_exec($ch); - curl_close($ch); - - return $result; - } - -} \ No newline at end of file +config = [ + 'endpoint' => $this->environment->config('paypal.endpoint'), + 'client' => $this->environment->config('paypal.client'), + 'secret' => $this->environment->config('paypal.secret'), + ]; + return $this; + } + + protected function getAccessToken() + { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, "https://" . $this->config['endpoint'] . "/v1/oauth2/token"); + curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_USERPWD, $this->config['client'] . ":" . $this->config['secret']); + curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); + $result = curl_exec($ch); + curl_close($ch); + if (empty($result)) { + return false; + } else { + $json = json_decode($result); + return $json->access_token; + } + } + + public function postStart() + { + $price = $this->getTotal(); + $accessToken = $this->getAccessToken(); + $arrData = [ + "intent" => "sale", + "redirect_urls" => [ + "return_url" => $this->getCheckUrl(), + "cancel_url" => $this->getCancelUrl(), + ], + "payer" => [ + "payment_method" => "paypal", + ], + "transactions" => [ + [ + "amount" => [ + "total" => $price, + "currency" => $this->getCurrency(), + ], + "description" => $this->getDescription(), + ], + ], + ]; + $this->paymentRecord->addLog('requesting', $arrData); + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, "https://" . $this->config['endpoint'] . "/v1/payments/payment"); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + "Authorization: Bearer " . $accessToken, + "Content-Type: application/json", + ]); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($arrData)); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + $result = curl_exec($ch); + curl_close($ch); + if (!$result) { + return [ + 'success' => false, + 'message' => 'Paypal payments are not available at the moment.', + ]; + } + + $json = json_decode($result); + if (isset($json->state) && $json->state == "created") { + $this->paymentRecord->addLog('redirect', $result); + $this->paymentRecord->setAndSave(['payment_id' => $json->id]); + return [ + 'success' => true, + 'redirect' => $json->links[1]->href, + ]; + } + + $this->paymentRecord->addLog('error', $result); + return [ + 'success' => false, + 'message' => $json->info->message ?? 'Unknown paypal error', + 'info' => $json, + ]; + } + + public function check() + { + $accessToken = $this->getAccessToken(); + $arrData = [ + "payer_id" => get('PayerID'), + ]; + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, "https://" . $this->config['endpoint'] . "/v1/payments/payment/" . + $this->paymentRecord->payment_id . "/execute/"); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + "Authorization: Bearer " . $accessToken, + "Content-Type: application/json", + ]); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($arrData)); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + $result = curl_exec($ch); + curl_close($ch); + if (!$result) { + throw new Exception(__('error_title_cannot_execute_order')); + } + + $json = json_decode($result); + $this->log($json); + if (!isset($json->state)) { + // unknown error + if ($json->name == 'PAYMENT_ALREADY_DONE') { + } + + return $this->environment->redirect($this->getErrorUrl()); + } + + /** + * Handle successful payment. + */ + if ($json->state == "approved") { + $transaction = end($json->transactions); + $resource = end($transaction->related_resources); + $this->approvePayment("Paypal " . $resource->sale->id, $json, $json->id); + $this->environment->redirect($this->getSuccessUrl()); + return; + } + + $this->paymentRecord->setAndSave([ + "status" => $json->state, + "transaction_id" => $json->id, + ]); + if ($json->state == "pending") { + $this->environment->redirect($this->getWaitingUrl()); + return; + } + + /** + * Redirect on error. + */ + return $this->environment->redirect($this->getErrorUrl()); + } + + public function refund(Payment $payment, $amount = null) + { + /** + * Transaction ID is needed for refund transaction. + */ + $transactionId = $payment->finalTransactionId; + if ($transactionId && $payment->payment_id && $payment->transaction_id && $payment->transaction_id == $payment->payment_id) { + $payment->setAndSave(['transaction_id' => $transactionId]); + } + + if (!$transactionId) { + throw new Exception('Transaction ID not found'); + } + + /** + * We will issue transaction, create new payment record. + */ + $refundPaymentRecord = Payment::createForRefund($payment, $amount); + $arrData = [ + 'amount' => [ + 'total' => $amount, + 'currency' => $this->getCurrency(), + ], + 'description' => 'Refund transaction #' . $payment->id, + ]; +/** + * Save log. + */ + $refundPaymentRecord->addLog('request:refund', $arrData); +/** + * Make request to paypal. + */ + $result = $this->makeCurlRequest("/v1/payments/sale/" . $transactionId . "/refund", $arrData); +/** + * Handle empty result. + */ + if (!$result) { + $refundPaymentRecord->addLog('response:empty'); + return [ + 'success' => false, + 'message' => 'Paypal payments are not available at the moment.', + ]; + } + + $json = json_decode($result); +/** + * Check for proper completed status. + */ + if (isset($json->state) && $json->state == "completed") { + $this->paymentRecord = $refundPaymentRecord; + $this->approveRefund('Refund Paypal #' . $json->id, $json, $json->id); + return [ + 'success' => true, + ]; + } + + /** + * Add error log. + */ + $payment->addLog($json->state ?? 'error', $json); + return [ + 'success' => false, + 'message' => 'Paypal error: ' . ($json->message ?? 'unknown error'), + 'info' => $json, + ]; + } + + protected function makeCurlRequest($endpoint, $arrData) + { + $accessToken = $this->getAccessToken(); + $ch = curl_init(); + $headers = [ + "Authorization: Bearer " . $accessToken, + "Content-Type: application/json", + ]; + $url = "https://" . $this->config['endpoint'] . $endpoint; + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($arrData)); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + $result = curl_exec($ch); + curl_close($ch); + return $result; + } +} diff --git a/src/Pckg/Payment/Handler/PaypalRest.php b/src/Pckg/Payment/Handler/PaypalRest.php index af077b6..ae74b05 100644 --- a/src/Pckg/Payment/Handler/PaypalRest.php +++ b/src/Pckg/Payment/Handler/PaypalRest.php @@ -1,176 +1,144 @@ -config = [ - 'id' => config('payment.paypalRest.id'), - 'secret' => config('payment.paypalRest.secret'), - 'mode' => config('payment.paypalRest.mode'), - 'log_enabled' => config('payment.paypalRest.log.enabled'), - 'log_level' => config('payment.paypalRest.log.level'), - 'url_return' => config('payment.paypalRest.url_return'), - 'url_cancel' => config('payment.paypalRest.url_cancel'), - ]; - - $this->paypal = new ApiContext( - new OAuthTokenCredential( - $this->config['id'], - $this->config['secret'] - ) - ); - - $this->paypal->setConfig( - [ - 'mode' => $this->config['mode'], - 'log.LogEnabled' => $this->config['log_enabled'], - 'log.LogLevel' => $this->config['log_level'], - 'cache.enabled' => true, - ] - ); - - return $this; - } - - public function start() - { - $payer = new Payer(); - $payer->setPaymentMethod('paypal'); - - $itemList = new ItemList(); - $productsSum = 0.0; - foreach ($this->order->getProducts() as $product) { - $item = new Item(); - $item->setName($product->getName()) - ->setCurrency($this->order->getCurrency()) - ->setQuantity($product->getQuantity()) - ->setSku($product->getSku()) - ->setPrice($product->getPrice()); - $itemList->addItem($item); - $productsSum += $product->getTotal(); - } - - $details = new Details(); - $details->setSubtotal($productsSum); - $total = $productsSum; - if ($delivery = $this->order->getDelivery()) { - $details->setShipping($delivery); - $total += $delivery; - } - - if ($vat = $this->order->getVat()) { - $details->setTax($vat); - $total += $vat; - } - - $amount = new Amount(); - $amount->setCurrency($this->order->getCurrency()) - ->setTotal($total) - ->setDetails($details); - - $transaction = new Transaction(); - $transaction->setAmount($amount) - ->setItemList($itemList) - ->setDescription($this->order->getDescription()) - ->setInvoiceNumber(uniqid()); - - $redirectUrls = new RedirectUrls(); - $redirectUrls->setReturnUrl( - env('DOMAIN') . url( - $this->config['url_return'], - ['paypalRest', $this->order->getOrder()] - ) - ) - ->setCancelUrl( - env('DOMAIN') . url($this->config['url_cancel'], ['paypalRest', $this->order->getOrder()]) - ); - - $payment = new Payment(); - $payment->setIntent('sale') - ->setPayer($payer) - ->setRedirectUrls($redirectUrls) - ->setTransactions([$transaction]); - - try { - $this->log($payment); - $payment->create($this->paypal); - $this->log($payment); - } catch (Throwable $e) { - $this->log($e); - throw $e; - } finally { - redirect()->away($payment->getApprovalLink())->send(); - } - } - - public function success() - { - $paymentId = request('paymentId'); - $payment = Payment::get($paymentId, $this->paypal); - - $execution = new PaymentExecution(); - $execution->setPayerId(request('PayerID')); - - $transaction = new Transaction(); - $amount = new Amount(); - $details = new Details(); - - $productsSum = 0.0; - foreach ($this->order->getProducts() as $product) { - $productsSum += $product->getTotal(); - } - - $details->setSubtotal($productsSum); - $total = $productsSum; - if ($delivery = $this->order->getDelivery()) { - $details->setShipping($delivery); - $total += $delivery; - } - - if ($vat = $this->order->getVat()) { - $details->setTax($vat); - $total += $vat; - } - - $amount->setCurrency($this->order->getCurrency()) - ->setTotal($total) - ->setDetails($details); - - $transaction->setAmount($amount); - - $execution->addTransaction($transaction); - - try { - $payment->execute($execution, $this->paypal); - } catch (Throwable $e) { - $this->log($e); - throw $e; - } finally { - Payment::get($paymentId, $this->paypal); - } - } - -} \ No newline at end of file +config = [ + 'id' => config('payment.paypalRest.id'), + 'secret' => config('payment.paypalRest.secret'), + 'mode' => config('payment.paypalRest.mode'), + 'log_enabled' => config('payment.paypalRest.log.enabled'), + 'log_level' => config('payment.paypalRest.log.level'), + 'url_return' => config('payment.paypalRest.url_return'), + 'url_cancel' => config('payment.paypalRest.url_cancel'), + ]; + $this->paypal = new ApiContext(new OAuthTokenCredential($this->config['id'], $this->config['secret'])); + $this->paypal->setConfig([ + 'mode' => $this->config['mode'], + 'log.LogEnabled' => $this->config['log_enabled'], + 'log.LogLevel' => $this->config['log_level'], + 'cache.enabled' => true, + ]); + return $this; + } + + public function start() + { + $payer = new Payer(); + $payer->setPaymentMethod('paypal'); + $itemList = new ItemList(); + $productsSum = 0.0; + foreach ($this->order->getProducts() as $product) { + $item = new Item(); + $item->setName($product->getName()) + ->setCurrency($this->order->getCurrency()) + ->setQuantity($product->getQuantity()) + ->setSku($product->getSku()) + ->setPrice($product->getPrice()); + $itemList->addItem($item); + $productsSum += $product->getTotal(); + } + + $details = new Details(); + $details->setSubtotal($productsSum); + $total = $productsSum; + if ($delivery = $this->order->getDelivery()) { + $details->setShipping($delivery); + $total += $delivery; + } + + if ($vat = $this->order->getVat()) { + $details->setTax($vat); + $total += $vat; + } + + $amount = new Amount(); + $amount->setCurrency($this->order->getCurrency()) + ->setTotal($total) + ->setDetails($details); + $transaction = new Transaction(); + $transaction->setAmount($amount) + ->setItemList($itemList) + ->setDescription($this->order->getDescription()) + ->setInvoiceNumber(uniqid()); + $redirectUrls = new RedirectUrls(); + $redirectUrls->setReturnUrl(env('DOMAIN') . url($this->config['url_return'], ['paypalRest', $this->order->getOrder()])) + ->setCancelUrl(env('DOMAIN') . url($this->config['url_cancel'], ['paypalRest', $this->order->getOrder()])); + $payment = new Payment(); + $payment->setIntent('sale') + ->setPayer($payer) + ->setRedirectUrls($redirectUrls) + ->setTransactions([$transaction]); + try { + $this->log($payment); + $payment->create($this->paypal); + $this->log($payment); + } catch (Throwable $e) { + $this->log($e); + throw $e; + } finally { + redirect()->away($payment->getApprovalLink())->send(); + } + } + + public function success() + { + $paymentId = request('paymentId'); + $payment = Payment::get($paymentId, $this->paypal); + $execution = new PaymentExecution(); + $execution->setPayerId(request('PayerID')); + $transaction = new Transaction(); + $amount = new Amount(); + $details = new Details(); + $productsSum = 0.0; + foreach ($this->order->getProducts() as $product) { + $productsSum += $product->getTotal(); + } + + $details->setSubtotal($productsSum); + $total = $productsSum; + if ($delivery = $this->order->getDelivery()) { + $details->setShipping($delivery); + $total += $delivery; + } + + if ($vat = $this->order->getVat()) { + $details->setTax($vat); + $total += $vat; + } + + $amount->setCurrency($this->order->getCurrency()) + ->setTotal($total) + ->setDetails($details); + $transaction->setAmount($amount); + $execution->addTransaction($transaction); + try { + $payment->execute($execution, $this->paypal); + } catch (Throwable $e) { + $this->log($e); + throw $e; + } finally { + Payment::get($paymentId, $this->paypal); + } + } +} diff --git a/src/Pckg/Payment/Handler/Proforma.php b/src/Pckg/Payment/Handler/Proforma.php index c11732b..0b38dbc 100644 --- a/src/Pckg/Payment/Handler/Proforma.php +++ b/src/Pckg/Payment/Handler/Proforma.php @@ -1,107 +1,95 @@ -config = [ - 'url_waiting' => $this->environment->config('proforma.url_waiting'), - ]; - } - - public function getDownload() - { - assetManager()->addAssets(path('apps') . 'derive/public/less/pages/upnsepa.less', 'blank'); - - return view($this->downloadView, [ - 'bills' => $this->order->getBills(), - 'order' => $this->order->getBills()->first()->order, - 'payment' => $this->paymentRecord, - 'iban' => $this->environment->config($this->downloadFolder . '.iban'), - 'swiftbic' => $this->environment->config($this->downloadFolder . '.swiftbic'), - ]); - } - - public function downloadFile() - { - $original = path('private') . $this->downloadFolder . '/' . $this->paymentRecord->hash . '.pdf'; - - return response()->download($original, strtoupper($this->downloadFolder) . ' payment.pdf'); - } - - protected function generateDownload() - { - $url = $this->getDownloadUrl(); - $outputDir = path('private') . $this->downloadFolder . '/'; - $outputFile = $this->paymentRecord->hash . '.pdf'; - $pdf = Pdf::make($url, $outputDir, $outputFile); - - return $outputFile; - } - - /** - * Triggered when user submitts "Pay now" button in payment popup. - * - * @return array|void - */ - public function postStart() - { - $download = !post('nodownload'); - - if (!$download) { - $this->waitPayment('Bank Transfer #' . $this->paymentRecord->id, null, $this->paymentRecord->id); - - return [ - 'success' => true, - 'modal' => 'success', - ]; - } - - $this->generateDownload(); - - return [ - 'success' => true, - 'redirect' => '/payment/' . $this->paymentRecord->hash . '/download-file', - ]; - } - - public function getQrAction() - { - $qrGenerator = new QRCodeGenerator(); - - $company = $this->paymentRecord->getOrdersAttribute()[0]->company; - - $qrGenerator->setAmount($this->paymentRecord->price); - $qrGenerator->setDueDate(new \DateTime($this->paymentRecord->getBills()[0]->dt_valid)); - $qrGenerator->setPayerAddress(''); - $qrGenerator->setPayerName(''); - $qrGenerator->setPayerPost(''); - $qrGenerator->setCode('COST'); - $qrGenerator->setPurpose($this->paymentRecord->id); - $qrGenerator->setReceiverName($company->short_name); - $qrGenerator->setReceiverIban(str_replace(' ', '', config('pckg.payment.provider.bank-transfer.iban', null))); - $qrGenerator->setReceiverAddress($company->address_line1); - $qrGenerator->setReceiverPost(explode(' ', $company->address_line2)[0]); - $qrGenerator->setReference('00-' . str_pad($this->paymentRecord->id, 8, '0', STR_PAD_LEFT)); - - $path = path('private') . 'qr-payment/'; - $file = $this->paymentRecord->id . '.png'; - - $qr = QR::make($path, $file, $qrGenerator->getQRCodeText(), function ($options) { - $options['version'] = 15; - return $options; - }); - - response()->printFile($path . $file, $file); - } - -} \ No newline at end of file +config = [ + 'url_waiting' => $this->environment->config('proforma.url_waiting'), + ]; + } + + public function getDownload() + { + assetManager()->addAssets(path('apps') . 'derive/public/less/pages/upnsepa.less', 'blank'); + return view($this->downloadView, [ + 'bills' => $this->order->getBills(), + 'order' => $this->order->getBills()->first()->order, + 'payment' => $this->paymentRecord, + 'iban' => $this->environment->config($this->downloadFolder . '.iban'), + 'swiftbic' => $this->environment->config($this->downloadFolder . '.swiftbic'), + ]); + } + + public function downloadFile() + { + $original = path('private') . $this->downloadFolder . '/' . $this->paymentRecord->hash . '.pdf'; + return response()->download($original, strtoupper($this->downloadFolder) . ' payment.pdf'); + } + + protected function generateDownload() + { + $url = $this->getDownloadUrl(); + $outputDir = path('private') . $this->downloadFolder . '/'; + $outputFile = $this->paymentRecord->hash . '.pdf'; + $pdf = Pdf::make($url, $outputDir, $outputFile); + return $outputFile; + } + + /** + * Triggered when user submitts "Pay now" button in payment popup. + * + * @return array|void + */ + public function postStart() + { + $download = !post('nodownload'); + if (!$download) { + $this->waitPayment('Bank Transfer #' . $this->paymentRecord->id, null, $this->paymentRecord->id); + return [ + 'success' => true, + 'modal' => 'success', + ]; + } + + $this->generateDownload(); + return [ + 'success' => true, + 'redirect' => '/payment/' . $this->paymentRecord->hash . '/download-file', + ]; + } + + public function getQrAction() + { + $qrGenerator = new QRCodeGenerator(); + $company = $this->paymentRecord->getOrdersAttribute()[0]->company; + $qrGenerator->setAmount($this->paymentRecord->price); + $qrGenerator->setDueDate(new \DateTime($this->paymentRecord->getBills()[0]->dt_valid)); + $qrGenerator->setPayerAddress(''); + $qrGenerator->setPayerName(''); + $qrGenerator->setPayerPost(''); + $qrGenerator->setCode('COST'); + $qrGenerator->setPurpose($this->paymentRecord->id); + $qrGenerator->setReceiverName($company->short_name); + $qrGenerator->setReceiverIban(str_replace(' ', '', config('pckg.payment.provider.bank-transfer.iban', null))); + $qrGenerator->setReceiverAddress($company->address_line1); + $qrGenerator->setReceiverPost(explode(' ', $company->address_line2)[0]); + $qrGenerator->setReference('00-' . str_pad($this->paymentRecord->id, 8, '0', STR_PAD_LEFT)); + $path = path('private') . 'qr-payment/'; + $file = $this->paymentRecord->id . '.png'; + $qr = QR::make($path, $file, $qrGenerator->getQRCodeText(), function ($options) { + + $options['version'] = 15; + return $options; + }); + response()->printFile($path . $file, $file); + } +} diff --git a/src/Pckg/Payment/Handler/Stripe.php b/src/Pckg/Payment/Handler/Stripe.php index dae3ec6..9b3a556 100644 --- a/src/Pckg/Payment/Handler/Stripe.php +++ b/src/Pckg/Payment/Handler/Stripe.php @@ -1,4 +1,6 @@ - 'Unexpected value', ]; } catch (\Stripe\Exception\SignatureVerificationException $e) { - throw $e; + response()->code(400); + + return [ + 'success' => false, + 'error' => true, + 'message' => 'Invalid signature', + ]; } catch (Throwable $e) { throw $e; } @@ -159,5 +166,4 @@ public function refund(Payment $payment, $amount = null) 'message' => 'Refunds are not available at the moment', ]; } - } diff --git a/src/Pckg/Payment/Handler/Upn.php b/src/Pckg/Payment/Handler/Upn.php index 82c285f..297c191 100644 --- a/src/Pckg/Payment/Handler/Upn.php +++ b/src/Pckg/Payment/Handler/Upn.php @@ -1,8 +1,9 @@ -config = [ @@ -77,7 +73,7 @@ public function postStart() $sXMLData = ' - + '; /** @@ -184,7 +180,6 @@ public function getNotification() $this->approvePayment('Moneta #' . $sConfirmationID, null, $sConfirmationID); $this->paymentRecord->updateLog('valu:purchasestatus', 'potrjeno'); - } else { $this->errorPayment(); @@ -196,5 +191,4 @@ public function getNotification() die($sOutput); } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Handler/Valu/CMoneta.php b/src/Pckg/Payment/Handler/Valu/CMoneta.php deleted file mode 100644 index 03231f8..0000000 --- a/src/Pckg/Payment/Handler/Valu/CMoneta.php +++ /dev/null @@ -1,74 +0,0 @@ -where('confirmationid', $confirmationId)->oneOrFail(); - - $moneta->purchasestatus = $status; - $moneta->save(); - } - - public function ConfirmPurchase($status, $confirmationId, $confirmationSignature, $tarifficationError) - { - $moneta = (new Moneta())->where('confirmationid', $confirmationId)->oneOrFail(); - - $moneta->set( - [ - 'purchasestatus' => $status, - 'confirmationsignature' => $confirmationSignature, - 'tarifficationerror' => $tarifficationError, - 'confirmdate' => Carbon::now(), - ] - )->save(); - } - - public function AddRefreshCounter($confirmationId) - { - $moneta = (new Moneta())->where('confirmationid', $confirmationId)->oneOrFail(); - $moneta->refreshcounter = $moneta->refreshcounter + 1; - $moneta->save(); - } - - public function FindConfirmationID($confirmationId) - { - $moneta = (new Moneta())->where('confirmationid', $confirmationId)->oneOrFail(); - - $this->m_nRefreshCounter = $moneta->refreshcounter; - $this->m_sPurchaseStatus = $moneta->purchasestatus; - $this->m_sProviderData = $moneta->providerdata; - - return true; - } - - public function Get_RefreshCounter() - { - return intval($this->m_nRefreshCounter); - } - - public function Get_PurchaseStatus() - { - return $this->m_sPurchaseStatus; - } - - public function Get_ProviderData() - { - return $this->m_sProviderData; - } - - public function MakeUniqueConfirmationID() - { - return "" . gmdate("dmYHis"); - } - - public function Close() - { - return true; - } -} diff --git a/src/Pckg/Payment/Handler/Valu/ValuHelper.php b/src/Pckg/Payment/Handler/Valu/ValuHelper.php index 0f1302f..69d84ac 100644 --- a/src/Pckg/Payment/Handler/Valu/ValuHelper.php +++ b/src/Pckg/Payment/Handler/Valu/ValuHelper.php @@ -1,13 +1,13 @@ -" . $EOL . "\">"; return $sXML; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Handler/VivaWallet.php b/src/Pckg/Payment/Handler/VivaWallet.php index e00db93..64ca1aa 100644 --- a/src/Pckg/Payment/Handler/VivaWallet.php +++ b/src/Pckg/Payment/Handler/VivaWallet.php @@ -1,185 +1,178 @@ -environment->config('viva-wallet.url'); - $this->config = [ - 'url' => $url, - 'merchantId' => $this->environment->config('viva-wallet.merchantId'), - 'apiKey' => $this->environment->config('viva-wallet.apiKey'), - 'apiCode' => $this->environment->config('viva-wallet.apiCode'), - 'clientId' => $this->environment->config('viva-wallet.clientId'), - 'clientSecret' => $this->environment->config('viva-wallet.clientSecret'), - 'tokenUrl' => strpos($url, 'demo') - ? 'https://demo-accounts.vivapayments.com/' - : 'https://accounts.vivapayments.com/', - ]; - - $this->client = new Client([ - 'headers' => [ - 'Accept' => 'application/json' - ], - ]); - - return $this; - } - - public function getBearer() - { - $basic = base64_encode($this->config['clientId'] . ':' . $this->config['clientSecret']); - $response = $this->client->post($this->config['tokenUrl'] . 'connect/token', ['headers' => [ - 'Authorization' => 'Basic ' . $basic, - 'Content-Type' => 'application/x-www-form-urlencoded' - ], 'form_params' => ['grant_type' => 'client_credentials']]); - $decoded = json_decode($response->getBody()->getContents(), true); - return $decoded['access_token'] ?? null; - } - - public function getToken() - { - return base64_encode($this->config['merchantId'] . ':' . $this->config['apiKey']); - } - - public function getTotalToPay() - { - return round(parent::getTotalToPay() * 100); - } - - public function postStart() - { - $currency = $this->getCurrency(); - - $currencyCode = null; - switch ($currency_code) { - case 'EUR': - $currencyCode = 978; - break; - case 'GBP': - $currencyCode = 826; - break; - case 'BGN': - $currencyCode = 975; - break; - case 'RON': - $currencyCode = 946; - break; - } - - if (!$currency) { - return [ - 'success' => false, - 'message' => $currency . ' is supported as currency' - ]; - } - - $customer = $this->order->getCustomer(); - - $data = [ - 'email' => $customer->getEmail(), - 'phone' => '070443244', - 'fullName' => $customer->getFullName(), - 'requestLang' => 'EN', - 'allowRecurring' => false, - 'isPreAuth' => false, - 'amount' => $this->getTotalToPay(), - 'currencyCode' => $currencyCode, - 'merchantTrns' => $this->paymentRecord->hash, - 'customerTrns' => $this->getDescription(), - 'disableCash' => true, - 'sourceCode' => $this->config['apiCode'], - ]; - - $url = $this->config['url'] . 'api/orders'; - $bearer = $this->getToken(); - $response = $this->client->post($url, [ - 'json' => $data, - 'headers' => [ - 'Accept' => 'application/json', - 'Content-Type' => 'application/json', - 'Authorization' => 'Basic ' . $bearer - ] - ]); - $code = $response->getStatusCode(); - if ($code !== 200) { - return [ - 'error' => true, - 'modal' => 'error', - 'message' => 'Error initiating payment', - ]; - } - $content = $response->getBody()->getContents(); - $decoded = json_decode($content, true); - if ($decoded['ErrorCode'] === 0) { - $this->paymentRecord->addLog('started', $decoded); - $this->paymentRecord->setAndSave(['payment_id' => $decoded['OrderCode']]); - - return [ - 'redirect' => $this->config['url'] . 'web/checkout?ref=' . $decoded['OrderCode'], - 'success' => true, - ]; - } - - return [ - 'success' => false, - 'message' => 'VivaWallet error', - 'json' => $decoded, - ]; - } - - public function getCompanyNotification() - { - $url = $this->config['url'] . 'api/messages/config/token'; - $bearer = $this->getToken(); - $response = $this->client->get($url, [ - 'headers' => [ - 'Accept' => 'application/json', - 'Content-Type' => 'application/json', - 'Authorization' => 'Basic ' . $bearer - ] - ]); - - return json_decode($response->getBody()->getContents(), true); - } - - public function postCompanyNotification() - { - $this->paymentRecord->addLog('postCompanyNotification', post()->all()); - - $eventTypeId = post('EventTypeId', null); - if ($eventTypeId === 1796) { - $transactionId = post('EventData.TransactionId', null); - $this->approvePayment('VivaWallet #' . $transactionId, post()->all(), $transactionId); - - return [ - 'success' => true - ]; - } elseif ($eventTypeId === 1797) { - /** - * Refund a transaction? - */ - - return [ - 'success' => true, - ]; - } - - throw new Exception('Notification method event not supported.'); - } - -} \ No newline at end of file +environment->config('viva-wallet.url'); + $this->config = [ + 'url' => $url, + 'merchantId' => $this->environment->config('viva-wallet.merchantId'), + 'apiKey' => $this->environment->config('viva-wallet.apiKey'), + 'apiCode' => $this->environment->config('viva-wallet.apiCode'), + 'clientId' => $this->environment->config('viva-wallet.clientId'), + 'clientSecret' => $this->environment->config('viva-wallet.clientSecret'), + 'tokenUrl' => strpos($url, 'demo') + ? 'https://demo-accounts.vivapayments.com/' + : 'https://accounts.vivapayments.com/', + ]; + $this->client = new Client([ + 'headers' => [ + 'Accept' => 'application/json' + ], + ]); + return $this; + } + + public function getBearer() + { + $basic = base64_encode($this->config['clientId'] . ':' . $this->config['clientSecret']); + $response = $this->client->post($this->config['tokenUrl'] . 'connect/token', ['headers' => [ + 'Authorization' => 'Basic ' . $basic, + 'Content-Type' => 'application/x-www-form-urlencoded' + ], 'form_params' => ['grant_type' => 'client_credentials']]); + $decoded = json_decode($response->getBody()->getContents(), true); + return $decoded['access_token'] ?? null; + } + + public function getToken() + { + return base64_encode($this->config['merchantId'] . ':' . $this->config['apiKey']); + } + + public function getTotalToPay() + { + return round(parent::getTotalToPay() * 100); + } + + public function postStart() + { + $currency = $this->getCurrency(); + $currencyCode = null; + switch ($currency) { + case 'EUR': + $currencyCode = 978; + + break; + case 'GBP': + $currencyCode = 826; + + break; + case 'BGN': + $currencyCode = 975; + + break; + case 'RON': + $currencyCode = 946; + + break; + } + + if (!$currency) { + return [ + 'success' => false, + 'message' => $currency . ' is supported as currency' + ]; + } + + $customer = $this->order->getCustomer(); + $data = [ + 'email' => $customer->getEmail(), + 'phone' => '070443244', + 'fullName' => $customer->getFullName(), + 'requestLang' => 'EN', + 'allowRecurring' => false, + 'isPreAuth' => false, + 'amount' => $this->getTotalToPay(), + 'currencyCode' => $currencyCode, + 'merchantTrns' => $this->paymentRecord->hash, + 'customerTrns' => $this->getDescription(), + 'disableCash' => true, + 'sourceCode' => $this->config['apiCode'], + ]; + $url = $this->config['url'] . 'api/orders'; + $bearer = $this->getToken(); + $response = $this->client->post($url, [ + 'json' => $data, + 'headers' => [ + 'Accept' => 'application/json', + 'Content-Type' => 'application/json', + 'Authorization' => 'Basic ' . $bearer + ] + ]); + $code = $response->getStatusCode(); + if ($code !== 200) { + return [ + 'error' => true, + 'modal' => 'error', + 'message' => 'Error initiating payment', + ]; + } + $content = $response->getBody()->getContents(); + $decoded = json_decode($content, true); + if ($decoded['ErrorCode'] === 0) { + $this->paymentRecord->addLog('started', $decoded); + $this->paymentRecord->setAndSave(['payment_id' => $decoded['OrderCode']]); + return [ + 'redirect' => $this->config['url'] . 'web/checkout?ref=' . $decoded['OrderCode'], + 'success' => true, + ]; + } + + return [ + 'success' => false, + 'message' => 'VivaWallet error', + 'json' => $decoded, + ]; + } + + public function getCompanyNotification() + { + $url = $this->config['url'] . 'api/messages/config/token'; + $bearer = $this->getToken(); + $response = $this->client->get($url, [ + 'headers' => [ + 'Accept' => 'application/json', + 'Content-Type' => 'application/json', + 'Authorization' => 'Basic ' . $bearer + ] + ]); + return json_decode($response->getBody()->getContents(), true); + } + + public function postCompanyNotification() + { + $this->paymentRecord->addLog('postCompanyNotification', post()->all()); + $eventTypeId = post('EventTypeId', null); + if ($eventTypeId === 1796) { + $transactionId = post('EventData.TransactionId', null); + $this->approvePayment('VivaWallet #' . $transactionId, post()->all(), $transactionId); + return [ + 'success' => true + ]; + } elseif ($eventTypeId === 1797) { + /** + * Refund a transaction? + */ + + return [ + 'success' => true, + ]; + } + + throw new Exception('Notification method event not supported.'); + } +} diff --git a/src/Pckg/Payment/Provider/Payment.php b/src/Pckg/Payment/Provider/Payment.php index 2092595..e80e15b 100644 --- a/src/Pckg/Payment/Provider/Payment.php +++ b/src/Pckg/Payment/Provider/Payment.php @@ -1,11 +1,12 @@ - 'api.paymentMethods', 'tags' => ['group:admin'], ], [ - '.company' => route('/[paymentMethod]/companies/[company]/settings', - 'companySettings')->resolvers([ + '.company' => route( + '/[paymentMethod]/companies/[company]/settings', + 'companySettings' + )->resolvers([ 'company' => Company::class, ]), ]), ]; } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Record/Address.php b/src/Pckg/Payment/Record/Address.php new file mode 100644 index 0000000..5e0ece5 --- /dev/null +++ b/src/Pckg/Payment/Record/Address.php @@ -0,0 +1,23 @@ +address_line1, $this->address_line2, $this->address_line3]))->removeEmpty() + ->implode($separator); + } + + public function getFullInfoAttribute() + { + return $this->short_name . '; ' . $this->getAddressAttribute(', ') . '; VAT: ' . $this->vat_number . '; BN: ' . + $this->business_number; + } + + public function getHeaderInfoAttribute() + { + return collect([ + $this->long_name ?? $this->short_name, + $this->address_line1, + $this->address_line2, + $this->address_line3, + $this->country->title, + $this->vat_number || $this->business_number ? ' ' : null, + $this->vat_number ? __('document.bill.label.vatNumber') . ': ' . $this->vat_number : null, + $this->business_number ? __('document.bill.label.businessNumber') . ': ' . $this->business_number : null, + $this->vat_number || $this->business_number ? ' ' : null, + $this->note1, + $this->note2, + ])->trim()->removeEmpty()->implode('
') . '
'; + } + + public function applyConfig() + { + (new SettingsMorphs())->where('morph_id', Companies::class) + ->where('poly_id', $this->id) + ->withSetting() + ->all()->each->registerToConfig(); + } + + public function getFiscalizationHandler() + { + return $this->country->getFiscalizationHandler(); + } +} diff --git a/src/Pckg/Payment/Record/Country.php b/src/Pckg/Payment/Record/Country.php new file mode 100644 index 0000000..e202f39 --- /dev/null +++ b/src/Pckg/Payment/Record/Country.php @@ -0,0 +1,60 @@ + TW + } + + /** + * @return array + */ + public function getAlpha23Mapper(): array + { + return array_flip($this->getAlpha32Mapper()); // TW => THR + } + + /** + * @return array + */ + public function getEUCountries(): array + { + return config('static.countries.eu', []); // CO => Title + } + + /** + * @return bool + */ + public function isEU(): bool + { + return in_array($this->getISO2(), array_keys($this->getEUCountries())); + } + + public function getISO2() + { + $code = strtoupper($this->code ?? ''); + + return $this->getAlpha32Mapper()[$code] ?? substr($code, 0, 2); + } + + public function getISO3() + { + $code = strtoupper($this->code ?? ''); + + return $this->getAlpha23Mapper()[$code] ?? substr($code, 0, 3); + } +} diff --git a/src/Pckg/Payment/Record/Payment.php b/src/Pckg/Payment/Record/Payment.php index b6a149e..3faf28b 100644 --- a/src/Pckg/Payment/Record/Payment.php +++ b/src/Pckg/Payment/Record/Payment.php @@ -1,4 +1,6 @@ -getBills(); - return __('order_payment') . '#' . $instalments->map('order')->map(function(\Derive\Orders\Record\Order $order - ) { + return __('order_payment') . '#' . $instalments->map('order')->map(function (\Derive\Orders\Record\Order $order) { return '#' . $order->id . '(' . $order->num . ')'; - })->implode(',') . ' - ' . $instalments->map('id')->implode(',') . ')'; + })->implode(',') . ' - ' . $instalments->map('id')->implode(',') . ')'; } public function addGtm() { - } public function getFinalTransactionIdAttribute() @@ -204,12 +208,12 @@ public function getFinalTransactionIdAttribute() return $this->transaction_id; } - $log = $this->logs->first(function(PaymentLog $paymentLog){ + $log = $this->logs->first(function (PaymentLog $paymentLog) { return in_array($paymentLog->status, ['approved', 'payed']); }); if (!$log) { - $instalments = $this->getBills()->filter(function(OrdersBill $ordersBill) { + $instalments = $this->getBills()->filter(function (OrdersBill $ordersBill) { return strpos($ordersBill->notes, 'Paypal ') !== false; }); @@ -222,13 +226,13 @@ public function getFinalTransactionIdAttribute() if (!$transactionEndSpace && !$transactionEndLine) { return substr($notes, $transactionStart); } - + $length = ($transactionEndSpace && $transactionEndLine ? ($transactionEndSpace < $transactionEndSpace ? $transactionEndSpace : $transactionEndLine) : ($transactionEndSpace ? $transactionEndSpace : $transactionEndLine)) - $transactionStart; $transactionId = substr($notes, $transactionStart, $length); - + return $transactionId; } @@ -253,5 +257,4 @@ public function getHandler() return Reflect::create($handlerClass); } - -} \ No newline at end of file +} diff --git a/src/Pckg/Payment/Record/PaymentLog.php b/src/Pckg/Payment/Record/PaymentLog.php index 9a89b41..de6e2e7 100644 --- a/src/Pckg/Payment/Record/PaymentLog.php +++ b/src/Pckg/Payment/Record/PaymentLog.php @@ -1,4 +1,6 @@ -handler = $handler; - - return $this; - } - - /** - * @return Handler|AbstractHandler - */ - public function getHandler() - { - return $this->handler; - } - - public function fullInitHandler(Handler $handler) - { - $this->handler = $handler; - $this->handler->setEnvironment($this->environment); - $this->handler->initHandler(); - - return $this; - } - - /** - * @param $handler - * @return $this - * @throws \Exception - */ - public function useHandler($handler) - { - if (class_exists($handler)) { - return $this->fullInitHandler(new $handler($this->order)); - } - - $useHandlermethod = 'use' . ucfirst(Convention::toCamel($handler)) . 'Handler'; - if (method_exists($this, $useHandlermethod)) { - $this->{$useHandlermethod}(); - - return $this; - } - - $classes = []; - if (strpos($handler, '-')) { - list($mainHandler, $subhandler) = explode('-', $handler); - $classes[] = \Pckg\Payment\Handler::class . '\\' . ucfirst($mainHandler) . '\\' . ucfirst($subhandler); - $classes[] = \Pckg\Payment\Handler::class . '\\' . ucfirst($mainHandler); - $classes[] = \Pckg\Payment\Handler::class . '\\' . str_replace(' ', '', Convention::toPascal(str_replace('-', ' ', $handler))); - } else { - $classes[] = \Pckg\Payment\Handler::class . '\\' . ucfirst($handler); - } - - foreach ($classes as $class) { - if (!class_exists($class)) { - continue; - } - - return $this->fullInitHandler(new $class($this->order)); - } - - throw new \Exception('No handler defined for ' . $handler); - } - - public function useBraintreeHandler() - { - return $this->fullInitHandler(new Braintree($this->order)); - } - - public function usePaymillHandler() - { - return $this->fullInitHandler(new Paymill($this->order)); - } - - public function usePaymillSepaHandler() - { - return $this->fullInitHandler(new Paymill\Sepa($this->order)); - } - - public function usePaymillPaypalHandler() - { - return $this->fullInitHandler(new Paymill\Paypal($this->order)); - } - - public function usePaypalHandler() - { - return $this->fullInitHandler(new PaypalGnp($this->order)); - } - - public function usePaypalRestHandler() - { - return $this->fullInitHandler(new PaypalRest($this->order)); - } - - public function useProformaHandler() - { - return $this->fullInitHandler(new Proforma($this->order)); - } - - public function useUpnHandler() - { - return $this->fullInitHandler(new Proforma($this->order)); - } - - public function useValuHandler() - { - return $this->fullInitHandler(new Valu($this->order)); - } - - public function useBankartHandler() - { - return $this->fullInitHandler(new Bankart($this->order)); - } - - public function useBankartCCHandler() - { - return $this->fullInitHandler(new BankartCC($this->order)); - } - - public function useCorvusPayHandler() - { - return $this->fullInitHandler(new CorvusPay($this->order)); - } - - public function useMonriHandler() - { - return $this->fullInitHandler(new Monri($this->order)); - } - - public function useIcePayHandler() - { - return $this->fullInitHandler(new Icepay($this->order)); - } - - public function useAxcessHandler() - { - return $this->fullInitHandler(new Axcess($this->order)); - } - - public function useMojcentHandler() - { - return $this->fullInitHandler(new MojCent($this->order)); - } - - public function useVivaWalletHandler() - { - return $this->fullInitHandler(new VivaWallet($this->order)); - } - - public function useBankTransferHandler() - { - return $this->fullInitHandler(new BankTransfer($this->order)); - } - - public function useMollieHandler() - { - return $this->fullInitHandler(new Mollie($this->order)); - } - - public function useRevolutHandler() - { - return $this->fullInitHandler(new Revolut($this->order)); - } -} \ No newline at end of file +handler = $handler; + return $this; + } + + /** + * @return Handler|AbstractHandler + */ + public function getHandler() + { + return $this->handler; + } + + public function fullInitHandler(Handler $handler) + { + $this->handler = $handler; + $this->handler->setEnvironment($this->environment); + $this->handler->initHandler(); + return $this; + } + + /** + * @param $handler + * @return $this + * @throws \Exception + */ + public function useHandler($handler) + { + if (class_exists($handler)) { + return $this->fullInitHandler(new $handler($this->order)); + } + + $useHandlermethod = 'use' . ucfirst(Convention::toCamel($handler)) . 'Handler'; + if (method_exists($this, $useHandlermethod)) { + $this->{$useHandlermethod}(); + return $this; + } + + $classes = []; + if (strpos($handler, '-')) { + list($mainHandler, $subhandler) = explode('-', $handler); + $classes[] = HandlerAlias::class . '\\' . ucfirst($mainHandler) . '\\' . ucfirst($subhandler); + $classes[] = HandlerAlias::class . '\\' . ucfirst($mainHandler); + $classes[] = HandlerAlias::class . '\\' . str_replace(' ', '', Convention::toPascal(str_replace('-', ' ', $handler))); + } else { + $classes[] = HandlerAlias::class . '\\' . ucfirst($handler); + } + + foreach ($classes as $class) { + if (!class_exists($class)) { + continue; + } + + return $this->fullInitHandler(new $class($this->order)); + } + + throw new \Exception('No handler defined for ' . $handler); + } + + public function useBraintreeHandler() + { + return $this->fullInitHandler(new Braintree($this->order)); + } + + public function usePaymillHandler() + { + return $this->fullInitHandler(new Paymill($this->order)); + } + + public function usePaymillSepaHandler() + { + return $this->fullInitHandler(new Paymill\Sepa($this->order)); + } + + public function usePaymillPaypalHandler() + { + return $this->fullInitHandler(new Paymill\Paypal($this->order)); + } + + public function usePaypalHandler() + { + return $this->fullInitHandler(new PaypalGnp($this->order)); + } + + public function usePaypalRestHandler() + { + return $this->fullInitHandler(new PaypalRest($this->order)); + } + + public function useProformaHandler() + { + return $this->fullInitHandler(new Proforma($this->order)); + } + + public function useUpnHandler() + { + return $this->fullInitHandler(new Proforma($this->order)); + } + + public function useValuHandler() + { + return $this->fullInitHandler(new Valu($this->order)); + } + + public function useBankartHandler() + { + return $this->fullInitHandler(new Bankart($this->order)); + } + + public function useBankartCCHandler() + { + return $this->fullInitHandler(new BankartCC($this->order)); + } + + public function useCorvusPayHandler() + { + return $this->fullInitHandler(new CorvusPay($this->order)); + } + + public function useMonriHandler() + { + return $this->fullInitHandler(new Monri($this->order)); + } + + public function useIcePayHandler() + { + return $this->fullInitHandler(new Icepay($this->order)); + } + + public function useAxcessHandler() + { + return $this->fullInitHandler(new Axcess($this->order)); + } + + public function useMojcentHandler() + { + return $this->fullInitHandler(new MojCent($this->order)); + } + + public function useVivaWalletHandler() + { + return $this->fullInitHandler(new VivaWallet($this->order)); + } + + public function useBankTransferHandler() + { + return $this->fullInitHandler(new BankTransfer($this->order)); + } + + public function useMollieHandler() + { + return $this->fullInitHandler(new Mollie($this->order)); + } + + public function useRevolutHandler() + { + return $this->fullInitHandler(new Revolut($this->order)); + } +} diff --git a/src/Pckg/Payment/Service/LaravelPayment.php b/src/Pckg/Payment/Service/LaravelPayment.php deleted file mode 100644 index 0af9de8..0000000 --- a/src/Pckg/Payment/Service/LaravelPayment.php +++ /dev/null @@ -1,16 +0,0 @@ -setEnvironment(new Laravel()); - - return $payment; - } - -} \ No newline at end of file diff --git a/src/Pckg/Payment/Service/Payment.php b/src/Pckg/Payment/Service/Payment.php index 22e8df6..35cf964 100644 --- a/src/Pckg/Payment/Service/Payment.php +++ b/src/Pckg/Payment/Service/Payment.php @@ -1,108 +1,104 @@ -order = $order; - - return $this; - } - - public function setEnvironment(Environment $environment) - { - $this->environment = $environment; - - return $this; - } - - public function getTotalWithCurrency() - { - return number_format($this->getTotal(), 2) . ' ' . $this->getCurrency(); - } - - public function getTotalToPayWithCurrency() - { - return number_format($this->getTotalToPay(), 2) . ' ' . $this->getCurrency(); - } - - public function getTotal() - { - return $this->order->getTotal(); - } - - public function getTotalToPay() - { - return $this->order->getTotalToPay(); - } - - public function getCurrency() - { - return $this->order->getCurrency(); - } - - public function getUrl($action, $handler) - { - return $this->environment->url('payment.' . $action, [$handler, $this->order->getOrder()]); - } - - public function has($handler) - { - return $this->environment->config($handler . '.enabled'); - } - - public function prepare(Order $order = null, $handler, Log $logger) - { - $this->setOrder($order); - $this->useHandler($handler); - $handler = $this->getHandler(); - $handler->setLogger($logger)->setEnvironment($this->environment); - - return $this; - } - - public function getPaymentMethods() - { - $methods = []; - foreach (config('pckg.payment.provider') as $method => $config) { - /** - * Skip disabled methods. - * @T00D00 - show sandbox to admin only? - */ - if (!config('pckg.payment.provider.' . $method . '.enabled')) { - continue; - } - - $submethods = []; - foreach (config('pckg.payment.provider.' . $method . '.methods', []) as $submethod) { - $submethods[$submethod] = [ - 'url' => url('derive.payment.startPartial', ['handler' => $method . '-' . $submethod]), - 'img' => '/img/payment/' . $submethod . '.png', - 'vueComponent' => 'derive-payment-handler-' . $method . '-' . $submethod, - ]; - } - - $methods[$method] = [ - 'url' => url('derive.payment.startPartial', ['handler' => $method]), - 'methods' => $submethods, - 'img' => '/img/payment/' . $method . '.png', - 'vueComponent' => 'derive-payment-handler-' . $method, - 'group' => $config['group'] ?? false, - ]; - } - - return $methods; - } - -} \ No newline at end of file +order = $order; + return $this; + } + + public function setEnvironment(Environment $environment) + { + $this->environment = $environment; + return $this; + } + + public function getTotalWithCurrency() + { + return number_format($this->getTotal(), 2) . ' ' . $this->getCurrency(); + } + + public function getTotalToPayWithCurrency() + { + return number_format($this->getTotalToPay(), 2) . ' ' . $this->getCurrency(); + } + + public function getTotal() + { + return $this->order->getTotal(); + } + + public function getTotalToPay() + { + return $this->order->getTotalToPay(); + } + + public function getCurrency() + { + return $this->order->getCurrency(); + } + + public function getUrl($action, $handler) + { + return $this->environment->url('payment.' . $action, [$handler, $this->order->getOrder()]); + } + + public function has($handler) + { + return $this->environment->config($handler . '.enabled'); + } + + public function prepare(Order $order = null, $handler, Log $logger) + { + $this->setOrder($order); + $this->useHandler($handler); + $handler = $this->getHandler(); + $handler->setLogger($logger)->setEnvironment($this->environment); + return $this; + } + + public function getPaymentMethods() + { + $methods = []; + foreach (config('pckg.payment.provider') as $method => $config) { + /** + * Skip disabled methods. + * @T00D00 - show sandbox to admin only? + */ + if (!config('pckg.payment.provider.' . $method . '.enabled')) { + continue; + } + + $submethods = []; + foreach (config('pckg.payment.provider.' . $method . '.methods', []) as $submethod) { + $submethods[$submethod] = [ + 'url' => url('derive.payment.startPartial', ['handler' => $method . '-' . $submethod]), + 'img' => '/img/payment/' . $submethod . '.png', + 'vueComponent' => 'derive-payment-handler-' . $method . '-' . $submethod, + ]; + } + + $methods[$method] = [ + 'url' => url('derive.payment.startPartial', ['handler' => $method]), + 'methods' => $submethods, + 'img' => '/img/payment/' . $method . '.png', + 'vueComponent' => 'derive-payment-handler-' . $method, + 'group' => $config['group'] ?? false, + ]; + } + + return $methods; + } +} diff --git a/src/Pckg/Payment/Service/PckgPayment.php b/src/Pckg/Payment/Service/PckgPayment.php index d985b2a..9fbfa72 100644 --- a/src/Pckg/Payment/Service/PckgPayment.php +++ b/src/Pckg/Payment/Service/PckgPayment.php @@ -1,18 +1,16 @@ -setEnvironment(new Pckg()); - - context()->bind(Payment::class, $payment); - - return $payment; - } - -} \ No newline at end of file +setEnvironment(new Pckg()); + context()->bind(Payment::class, $payment); + return $payment; + } +} From e0308ccc7a56434a8cc2e802efa566025b897940 Mon Sep 17 00:00:00 2001 From: Bojan Rajh Date: Fri, 22 Apr 2022 21:35:34 +0200 Subject: [PATCH 3/3] Tests --- composer.json | 4 ++-- src/Pckg/Payment/Handler/Valu/ValuHelper.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index 64f4986..4c5495f 100644 --- a/composer.json +++ b/composer.json @@ -63,8 +63,8 @@ "true || vendor/bin/phpunit --help --stop-on-defect", "true || vendor/bin/phpcloc cloc src/", "vendor/bin/phpstan analyse src/ --level=1 || true", - "true || vendor/bin/phpcs --extensions=php --warning-severity=8 --error-severity=1 --standard=PSR12 --parallel=2 -p src/", - "true || vendor/bin/codecept run" + "vendor/bin/phpcs --extensions=php --warning-severity=8 --error-severity=1 --standard=PSR12 --parallel=2 -p src/", + "vendor/bin/codecept run" ], "autofix": [ "vendor/bin/phpcs --extensions=php --report-diff=phpcs.diff --warning-severity=8 --error-severity=1 --standard=PSR12 --parallel=2 -p src/" diff --git a/src/Pckg/Payment/Handler/Valu/ValuHelper.php b/src/Pckg/Payment/Handler/Valu/ValuHelper.php index 69d84ac..d8d4d63 100644 --- a/src/Pckg/Payment/Handler/Valu/ValuHelper.php +++ b/src/Pckg/Payment/Handler/Valu/ValuHelper.php @@ -1,5 +1,5 @@