From 70487b39255e584fc52195eaaa7ddcd7f65da415 Mon Sep 17 00:00:00 2001 From: Mehmet Korkmaz Date: Thu, 3 Jan 2019 16:17:40 +0300 Subject: [PATCH] first commit --- .gitignore | 2 + bin/selami | 6 + composer.json | 80 + composer.lock | 5366 +++++++++++++++++ config/autoload/console/commands.global.php | 13 + .../autoload/console/dependencies.global.php | 13 + config/autoload/global.php | 25 + config/autoload/web/view.local.php.dist | 26 + src/Application/.gittrack | 0 src/Domain/Exception/.gittrack | 0 src/Domain/Interfaces/.gittrack | 0 src/Infrastructure/Persistence/.gittrack | 0 src/Infrastructure/Service/.gittrack | 0 .../Ui/Console/Command/Cache/ClearAll.php | 43 + .../Ui/Console/Command/Cache/ClearConfig.php | 46 + .../Cache/ClearRouteDispatcherData.php | 47 + .../Console/Command/Cache/ClearViewData.php | 56 + .../Ui/Console/Command/Info.php | 39 + .../Ui/Console/Command/Server/ServerRun.php | 64 + src/Infrastructure/Ui/Console/config.php | 18 + src/Infrastructure/Ui/Console/console.php | 17 + .../Ui/Factory/RouterFactory.php | 22 + .../Ui/Factory/SelamiViewTwigFactory.php | 42 + .../Ui/Factory/ServerRequestFactory.php | 17 + src/Infrastructure/Ui/Factory/TwigFactory.php | 25 + .../Ui/Views/Application/_default.twig | 60 + .../Application/contents/camel_case.twig | 4 + .../Views/Application/contents/category.twig | 7 + .../Ui/Views/Application/contents/custom.twig | 4 + .../Ui/Views/Application/contents/main.twig | 5 + .../Application/contents/redirected.twig | 5 + .../Ui/Views/Application/contents/text.twig | 2 + .../Ui/Views/Application/error_handler.twig | 5 + .../Ui/Views/Authentication/_default.twig | 60 + .../Authentication/contents/camel_case.twig | 4 + .../Authentication/contents/category.twig | 7 + .../Views/Authentication/contents/custom.twig | 4 + .../Views/Authentication/contents/main.twig | 6 + .../Authentication/contents/redirected.twig | 5 + .../Views/Authentication/contents/text.twig | 2 + .../Views/Authentication/error_handler.twig | 5 + .../Application/Controller/Application.php | 25 + .../Controller/Contents/CamelCase.php | 20 + .../Controller/Contents/Category.php | 22 + .../Contents/ContentsController.php | 24 + .../Controller/Contents/Custom.php | 28 + .../Controller/Contents/Download.php | 19 + .../Application/Controller/Contents/Main.php | 21 + .../Application/Controller/Contents/Post.php | 24 + .../Controller/Contents/Redirect.php | 15 + .../Controller/Contents/Redirected.php | 21 + .../Application/Controller/Contents/Text.php | 20 + .../Web/Middleware/Application/Middleware.php | 12 + .../middleware-main-application-config.php | 47 + .../ApplicationMiddlewareAbstract.php | 46 + .../Authentication/Controller/Application.php | 25 + .../Controller/Contents/CamelCase.php | 20 + .../Controller/Contents/Category.php | 22 + .../Contents/ContentsController.php | 24 + .../Controller/Contents/Custom.php | 28 + .../Controller/Contents/Download.php | 19 + .../Controller/Contents/Main.php | 21 + .../Controller/Contents/Post.php | 24 + .../Controller/Contents/Redirect.php | 15 + .../Controller/Contents/Redirected.php | 21 + .../Controller/Contents/Text.php | 20 + .../Middleware/Authentication/Middleware.php | 12 + .../middleware-authentication-config.php | 48 + .../Ui/Web/Middleware/ErrorHandler.php | 33 + src/Infrastructure/Ui/Web/bootstrap.php | 33 + src/Infrastructure/Ui/Web/config.php | 29 + src/Infrastructure/Ui/Web/container.php | 12 + src/Infrastructure/Ui/Web/pipeline.php | 37 + src/Infrastructure/Ui/Web/public/index.php | 6 + src/Infrastructure/Ui/Web/public/logo.png | Bin 0 -> 4429 bytes 75 files changed, 6945 insertions(+) create mode 100644 .gitignore create mode 100755 bin/selami create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/autoload/console/commands.global.php create mode 100644 config/autoload/console/dependencies.global.php create mode 100644 config/autoload/global.php create mode 100644 config/autoload/web/view.local.php.dist create mode 100644 src/Application/.gittrack create mode 100644 src/Domain/Exception/.gittrack create mode 100644 src/Domain/Interfaces/.gittrack create mode 100644 src/Infrastructure/Persistence/.gittrack create mode 100644 src/Infrastructure/Service/.gittrack create mode 100644 src/Infrastructure/Ui/Console/Command/Cache/ClearAll.php create mode 100644 src/Infrastructure/Ui/Console/Command/Cache/ClearConfig.php create mode 100644 src/Infrastructure/Ui/Console/Command/Cache/ClearRouteDispatcherData.php create mode 100644 src/Infrastructure/Ui/Console/Command/Cache/ClearViewData.php create mode 100644 src/Infrastructure/Ui/Console/Command/Info.php create mode 100644 src/Infrastructure/Ui/Console/Command/Server/ServerRun.php create mode 100644 src/Infrastructure/Ui/Console/config.php create mode 100644 src/Infrastructure/Ui/Console/console.php create mode 100644 src/Infrastructure/Ui/Factory/RouterFactory.php create mode 100644 src/Infrastructure/Ui/Factory/SelamiViewTwigFactory.php create mode 100644 src/Infrastructure/Ui/Factory/ServerRequestFactory.php create mode 100644 src/Infrastructure/Ui/Factory/TwigFactory.php create mode 100644 src/Infrastructure/Ui/Views/Application/_default.twig create mode 100644 src/Infrastructure/Ui/Views/Application/contents/camel_case.twig create mode 100644 src/Infrastructure/Ui/Views/Application/contents/category.twig create mode 100644 src/Infrastructure/Ui/Views/Application/contents/custom.twig create mode 100644 src/Infrastructure/Ui/Views/Application/contents/main.twig create mode 100644 src/Infrastructure/Ui/Views/Application/contents/redirected.twig create mode 100644 src/Infrastructure/Ui/Views/Application/contents/text.twig create mode 100644 src/Infrastructure/Ui/Views/Application/error_handler.twig create mode 100644 src/Infrastructure/Ui/Views/Authentication/_default.twig create mode 100644 src/Infrastructure/Ui/Views/Authentication/contents/camel_case.twig create mode 100644 src/Infrastructure/Ui/Views/Authentication/contents/category.twig create mode 100644 src/Infrastructure/Ui/Views/Authentication/contents/custom.twig create mode 100644 src/Infrastructure/Ui/Views/Authentication/contents/main.twig create mode 100644 src/Infrastructure/Ui/Views/Authentication/contents/redirected.twig create mode 100644 src/Infrastructure/Ui/Views/Authentication/contents/text.twig create mode 100644 src/Infrastructure/Ui/Views/Authentication/error_handler.twig create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Controller/Application.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/CamelCase.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Category.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/ContentsController.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Custom.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Download.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Main.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Post.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Redirect.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Redirected.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Text.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/Middleware.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Application/middleware-main-application-config.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/ApplicationMiddlewareAbstract.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Application.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/CamelCase.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Category.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/ContentsController.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Custom.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Download.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Main.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Post.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Redirect.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Redirected.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Text.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/Middleware.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/Authentication/middleware-authentication-config.php create mode 100644 src/Infrastructure/Ui/Web/Middleware/ErrorHandler.php create mode 100644 src/Infrastructure/Ui/Web/bootstrap.php create mode 100644 src/Infrastructure/Ui/Web/config.php create mode 100644 src/Infrastructure/Ui/Web/container.php create mode 100644 src/Infrastructure/Ui/Web/pipeline.php create mode 100644 src/Infrastructure/Ui/Web/public/index.php create mode 100644 src/Infrastructure/Ui/Web/public/logo.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b44d4eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +vendor/ +.env \ No newline at end of file diff --git a/bin/selami b/bin/selami new file mode 100755 index 0000000..83e4663 --- /dev/null +++ b/bin/selami @@ -0,0 +1,6 @@ +#!/usr/bin/env php +> .env", + "composer dump-autoload -a" + ], + "unit-tests": "vendor/bin/phpunit --coverage-clover ./build/logs/clover.xml --configuration ./phpunit.xml", + "phpstan": "vendor/bin/phpstan analyse -l 7 src test/resources/app", + "phpstan-test": "vendor/bin/phpstan analyse -l 7 -c phpstan.test.neon test/SelamiTests", + "phpcs": "vendor/bin/phpcs --standard=PSR2 src test test/resources/app/Contents", + "phpcbf": "vendor/bin/phpcbf --standard=PSR2 src test test/resources/app/Contents" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..4209700 --- /dev/null +++ b/composer.lock @@ -0,0 +1,5366 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "a23fe1f39bddaf4527120081118ce9a2", + "packages": [ + { + "name": "container-interop/container-interop", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "shasum": "" + }, + "require": { + "psr/container": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "homepage": "https://github.com/container-interop/container-interop", + "time": "2017-02-14T19:40:03+00:00" + }, + { + "name": "fig/http-message-util", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "35b19404371b31b3a43823c755398c48c9966db4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/35b19404371b31b3a43823c755398c48c9966db4", + "reference": "35b19404371b31b3a43823c755398c48c9966db4", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2018-11-19T16:19:58+00:00" + }, + { + "name": "nikic/fast-route", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/FastRoute.git", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35|~5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "FastRoute\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Fast request router for PHP", + "keywords": [ + "router", + "routing" + ], + "time": "2018-02-13T20:26:39+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "378bfe27931ecc54ff824a20d6f6bfc303bbd04c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/378bfe27931ecc54ff824a20d6f6bfc303bbd04c", + "reference": "378bfe27931ecc54ff824a20d6f6bfc303bbd04c", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "time": "2018-07-30T21:54:04+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/http-server-handler", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", + "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side request handler", + "keywords": [ + "handler", + "http", + "http-interop", + "psr", + "psr-15", + "psr-7", + "request", + "response", + "server" + ], + "time": "2018-10-30T16:46:14+00:00" + }, + { + "name": "psr/http-server-middleware", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-middleware.git", + "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", + "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side middleware", + "keywords": [ + "http", + "http-interop", + "middleware", + "psr", + "psr-15", + "psr-7", + "request", + "response" + ], + "time": "2018-10-30T17:12:04+00:00" + }, + { + "name": "psr/log", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2018-11-20T15:27:04+00:00" + }, + { + "name": "selami/console", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/selamiphp/console.git", + "reference": "0d77aa2d6f99cc635ee699eed274260e0868285a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/selamiphp/console/zipball/0d77aa2d6f99cc635ee699eed274260e0868285a", + "reference": "0d77aa2d6f99cc635ee699eed274260e0868285a", + "shasum": "" + }, + "require": { + "php": "^7.2", + "psr/container": "^1.0", + "selami/stdlib": "^1.7", + "symfony/console": "^4.2" + }, + "require-dev": { + "codeception/codeception": "^2.5", + "object-calisthenics/phpcs-calisthenics-rules": "^3.4", + "php-coveralls/php-coveralls": "^2.1", + "roave/security-advisories": "dev-master", + "squizlabs/php_codesniffer": "^3.3", + "zendframework/zend-servicemanager": "^3.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Selami\\Console\\": "src/Console" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mehmet Korkmaz", + "email": "mehmet@mkorkmaz.com" + } + ], + "description": "Symfony Console application factory that autowires dependecies", + "time": "2018-11-30T20:08:07+00:00" + }, + { + "name": "selami/foundation", + "version": "0.13", + "source": { + "type": "git", + "url": "https://github.com/selamiphp/foundation.git", + "reference": "aa26784f34a312ce61509cb702aa7566fe72c9fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/selamiphp/foundation/zipball/aa26784f34a312ce61509cb702aa7566fe72c9fc", + "reference": "aa26784f34a312ce61509cb702aa7566fe72c9fc", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.2", + "php": "^7.2", + "psr/container": "^1.0", + "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0", + "selami/router": "^1.1", + "selami/stdlib": "^1.8", + "selami/views": "^0.9", + "zendframework/zend-config": "^3.2", + "zendframework/zend-diactoros": "^2.1" + }, + "require-dev": { + "codeception/codeception": "^2.5", + "php-coveralls/php-coveralls": "^2.1", + "phpstan/phpstan": "^0.10.6", + "roave/security-advisories": "dev-master", + "squizlabs/php_codesniffer": "^3.4", + "symfony/http-foundation": "^4.2", + "twig/extensions": "^1.5", + "twig/twig": "^2.6", + "vlucas/phpdotenv": "^2.5", + "zendframework/zend-httphandlerrunner": "^1.0", + "zendframework/zend-servicemanager": "^3.3", + "zendframework/zend-stdlib": "^3.2", + "zendframework/zend-stratigility": "^3.0" + }, + "type": "framework", + "autoload": { + "psr-4": { + "Selami\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mehmet Korkmaz", + "email": "mehmet@mkorkmaz.com", + "homepage": "https://mkorkmaz.com" + } + ], + "description": "A No-framework Framework for Selamis written in PHP 7", + "homepage": "https://github.com/selamiphp/core", + "keywords": [ + "diactoros", + "framework", + "micro framework", + "twig" + ], + "time": "2019-01-03T08:00:46+00:00" + }, + { + "name": "selami/router", + "version": "1.2", + "source": { + "type": "git", + "url": "https://github.com/selamiphp/router.git", + "reference": "c8e25a5f97a603eb813a62eb8cd4588b14e59893" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/selamiphp/router/zipball/c8e25a5f97a603eb813a62eb8cd4588b14e59893", + "reference": "c8e25a5f97a603eb813a62eb8cd4588b14e59893", + "shasum": "" + }, + "require": { + "nikic/fast-route": "^1.3", + "php": "^7.2" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^1.1", + "phpstan/phpstan": "^0.10.6", + "phpunit/phpcov": "^5.0", + "phpunit/phpunit": "^7.5", + "roave/security-advisories": "dev-master", + "squizlabs/php_codesniffer": "^3.3", + "zendframework/zend-diactoros": "^1.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Selami\\Router\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mehmet Korkmaz", + "email": "mehmet@mkorkmaz.com", + "homepage": "https://mkorkmaz.com" + } + ], + "description": "Router and Dispatcher built on top nikic/FastRoute that returns controller class name to be instantiated.", + "homepage": "https://github.com/selamiphp/router", + "keywords": [ + "FastRoute", + "Selami", + "router" + ], + "time": "2019-01-03T12:52:59+00:00" + }, + { + "name": "selami/stdlib", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/selamiphp/stdlib.git", + "reference": "7bb0113e4d722fd4026f3cede2bc1596373de21e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/selamiphp/stdlib/zipball/7bb0113e4d722fd4026f3cede2bc1596373de21e", + "reference": "7bb0113e4d722fd4026f3cede2bc1596373de21e", + "shasum": "" + }, + "require": { + "php": "^7.2" + }, + "require-dev": { + "codeception/codeception": "^2.5", + "php-coveralls/php-coveralls": "^2.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Selami\\Stdlib\\": "src/", + "Selami\\Stdlib\\Exception\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mehmet Korkmaz", + "email": "mehmet@mkorkmaz.com" + } + ], + "description": "Standard Library for Selami libraries.", + "time": "2018-12-03T12:54:14+00:00" + }, + { + "name": "selami/views", + "version": "0.9", + "source": { + "type": "git", + "url": "https://github.com/selamiphp/views.git", + "reference": "31353b9ea9ee084aff81e6433c8a48609279306e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/selamiphp/views/zipball/31353b9ea9ee084aff81e6433c8a48609279306e", + "reference": "31353b9ea9ee084aff81e6433c8a48609279306e", + "shasum": "" + }, + "require": { + "php": "^7.2", + "psr/container": "^1.0", + "selami/stdlib": "^1.8" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpcov": "^5.0", + "phpunit/phpunit": "^7.5", + "twig/extensions": "^1.5", + "twig/twig": "^2.6", + "zendframework/zend-servicemanager": "~3.3" + }, + "suggest": { + "twig/twig": "If you use Twig as a templating engine" + }, + "type": "library", + "autoload": { + "psr-4": { + "Selami\\View\\": "src/", + "Selami\\View\\Twig\\": "src/Twig/", + "Selami\\View\\Twig\\Functions\\": "src/Twig/Functions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mehmet Korkmaz", + "email": "mehmet@mkorkmaz.com", + "homepage": "https://mkorkmaz.com" + } + ], + "description": "Templating engines collection.", + "homepage": "https://github.com/selamiphp/router", + "keywords": [ + "Selami", + "latte", + "mustache", + "plates", + "smarty", + "twig", + "view" + ], + "time": "2018-12-20T13:57:22+00:00" + }, + { + "name": "symfony/console", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "4dff24e5d01e713818805c1862d2e3f901ee7dd0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/4dff24e5d01e713818805c1862d2e3f901ee7dd0", + "reference": "4dff24e5d01e713818805c1862d2e3f901ee7dd0", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/contracts": "^1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "psr/log-implementation": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-11-27T07:40:44+00:00" + }, + { + "name": "symfony/contracts", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/contracts.git", + "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", + "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "require-dev": { + "psr/cache": "^1.0", + "psr/container": "^1.0" + }, + "suggest": { + "psr/cache": "When using the Cache contracts", + "psr/container": "When using the Service contracts", + "symfony/cache-contracts-implementation": "", + "symfony/service-contracts-implementation": "", + "symfony/translation-contracts-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\": "" + }, + "exclude-from-classmap": [ + "**/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A set of abstractions extracted out of the Symfony components", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2018-12-05T08:06:11+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "1b31f3017fadd8cb05cf2c8aebdbf3b12a943851" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1b31f3017fadd8cb05cf2c8aebdbf3b12a943851", + "reference": "1b31f3017fadd8cb05cf2c8aebdbf3b12a943851", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.1" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/expression-language": "~3.4|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "https://symfony.com", + "time": "2018-11-26T10:55:26+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2018-09-21T13:07:52+00:00" + }, + { + "name": "symfony/process", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "2b341009ccec76837a7f46f59641b431e4d4c2b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/2b341009ccec76837a7f46f59641b431e4d4c2b0", + "reference": "2b341009ccec76837a7f46f59641b431e4d4c2b0", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2018-11-20T16:22:05+00:00" + }, + { + "name": "twig/extensions", + "version": "v1.5.4", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig-extensions.git", + "reference": "57873c8b0c1be51caa47df2cdb824490beb16202" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/57873c8b0c1be51caa47df2cdb824490beb16202", + "reference": "57873c8b0c1be51caa47df2cdb824490beb16202", + "shasum": "" + }, + "require": { + "twig/twig": "^1.27|^2.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3.4", + "symfony/translation": "^2.7|^3.4" + }, + "suggest": { + "symfony/translation": "Allow the time_diff output to be translated" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_Extensions_": "lib/" + }, + "psr-4": { + "Twig\\Extensions\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Common additional features for Twig that do not directly belong in core", + "keywords": [ + "i18n", + "text" + ], + "time": "2018-12-05T18:34:18+00:00" + }, + { + "name": "twig/twig", + "version": "v2.6.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "a11dd39f5b6589e14f0ff3b36675d06047c589b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a11dd39f5b6589e14f0ff3b36675d06047c589b1", + "reference": "a11dd39f5b6589e14f0ff3b36675d06047c589b1", + "shasum": "" + }, + "require": { + "php": "^7.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-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": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://twig.symfony.com/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "time": "2018-12-16T10:36:48+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "cfd5dc225767ca154853752abc93aeec040fcf36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/cfd5dc225767ca154853752abc93aeec040fcf36", + "reference": "cfd5dc225767ca154853752abc93aeec040fcf36", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "http://www.vancelucas.com" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "time": "2018-10-30T17:29:25+00:00" + }, + { + "name": "zendframework/zend-config", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-config.git", + "reference": "6796f5dcba52c84ef2501d7313618989b5ef3023" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-config/zipball/6796f5dcba52c84ef2501d7313618989b5ef3023", + "reference": "6796f5dcba52c84ef2501d7313618989b5ef3023", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^5.6 || ^7.0", + "psr/container": "^1.0", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1" + }, + "conflict": { + "container-interop/container-interop": "<1.2.0" + }, + "require-dev": { + "malukenho/docheader": "^0.1.6", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-filter": "^2.7.2", + "zendframework/zend-i18n": "^2.7.4", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.3" + }, + "suggest": { + "zendframework/zend-filter": "^2.7.2; install if you want to use the Filter processor", + "zendframework/zend-i18n": "^2.7.4; install if you want to use the Translator processor", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.3; if you need an extensible plugin manager for use with the Config Factory" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Config\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a nested object property based user interface for accessing this configuration data within application code", + "keywords": [ + "ZendFramework", + "config", + "zf" + ], + "time": "2018-04-24T19:26:44+00:00" + }, + { + "name": "zendframework/zend-diactoros", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-diactoros.git", + "reference": "f8c3cb729c6d416343a855e8b4be9f02356c6d7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/f8c3cb729c6d416343a855e8b4be9f02356c6d7a", + "reference": "f8c3cb729c6d416343a855e8b4be9f02356c6d7a", + "shasum": "" + }, + "require": { + "php": "^7.1", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-dom": "*", + "ext-libxml": "*", + "http-interop/http-factory-tests": "^0.5.0", + "php-http/psr7-integration-tests": "dev-master", + "phpunit/phpunit": "^7.0.2", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev", + "dev-develop": "2.2.x-dev", + "dev-release-1.8": "1.8.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php" + ], + "psr-4": { + "Zend\\Diactoros\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "PSR HTTP Message implementations", + "keywords": [ + "http", + "psr", + "psr-7" + ], + "time": "2018-12-20T16:57:16+00:00" + }, + { + "name": "zendframework/zend-escaper", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-escaper.git", + "reference": "31d8aafae982f9568287cb4dce987e6aff8fd074" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/31d8aafae982f9568287cb4dce987e6aff8fd074", + "reference": "31d8aafae982f9568287cb4dce987e6aff8fd074", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev", + "dev-develop": "2.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Escaper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", + "keywords": [ + "ZendFramework", + "escaper", + "zf" + ], + "time": "2018-04-25T15:48:53+00:00" + }, + { + "name": "zendframework/zend-httphandlerrunner", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-httphandlerrunner.git", + "reference": "5e4c1e82a8bb1585020eafd32c49ece5a6ee98df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-httphandlerrunner/zipball/5e4c1e82a8bb1585020eafd32c49ece5a6ee98df", + "reference": "5e4c1e82a8bb1585020eafd32c49ece5a6ee98df", + "shasum": "" + }, + "require": { + "php": "^7.1", + "psr/http-message": "^1.0", + "psr/http-message-implementation": "^1.0", + "psr/http-server-handler": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-diactoros": "^1.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "zf": { + "config-provider": "Zend\\HttpHandlerRunner\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\HttpHandlerRunner\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Execute PSR-15 RequestHandlerInterface instances and emit responses they generate.", + "keywords": [ + "ZendFramework", + "components", + "expressive", + "psr-15", + "psr-7", + "zf" + ], + "time": "2018-02-21T20:33:02+00:00" + }, + { + "name": "zendframework/zend-servicemanager", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-servicemanager.git", + "reference": "a1ed6140d0d3ee803fec96582593ed024950067b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/a1ed6140d0d3ee803fec96582593ed024950067b", + "reference": "a1ed6140d0d3ee803fec96582593ed024950067b", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.2", + "php": "^5.6 || ^7.0", + "psr/container": "^1.0", + "zendframework/zend-stdlib": "^3.2.1" + }, + "provide": { + "container-interop/container-interop-implementation": "^1.2", + "psr/container-implementation": "^1.0" + }, + "require-dev": { + "mikey179/vfsstream": "^1.6.5", + "ocramius/proxy-manager": "^1.0 || ^2.0", + "phpbench/phpbench": "^0.13.0", + "phpunit/phpunit": "^5.7.25 || ^6.4.4", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "suggest": { + "ocramius/proxy-manager": "ProxyManager 1.* to handle lazy initialization of services", + "zendframework/zend-stdlib": "zend-stdlib ^2.5 if you wish to use the MergeReplaceKey or MergeRemoveKey features in Config instances" + }, + "bin": [ + "bin/generate-deps-for-config-factory", + "bin/generate-factory-for-class" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev", + "dev-develop": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\ServiceManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Factory-Driven Dependency Injection Container", + "keywords": [ + "PSR-11", + "ZendFramework", + "dependency-injection", + "di", + "dic", + "service-manager", + "servicemanager", + "zf" + ], + "time": "2018-12-22T06:05:09+00:00" + }, + { + "name": "zendframework/zend-stdlib", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-stdlib.git", + "reference": "66536006722aff9e62d1b331025089b7ec71c065" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/66536006722aff9e62d1b331025089b7ec71c065", + "reference": "66536006722aff9e62d1b331025089b7ec71c065", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpbench/phpbench": "^0.13", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Stdlib\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "SPL extensions, array utilities, error handlers, and more", + "keywords": [ + "ZendFramework", + "stdlib", + "zf" + ], + "time": "2018-08-28T21:34:05+00:00" + }, + { + "name": "zendframework/zend-stratigility", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-stratigility.git", + "reference": "75b64558201807514734a9f46386816f2900d7f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-stratigility/zipball/75b64558201807514734a9f46386816f2900d7f7", + "reference": "75b64558201807514734a9f46386816f2900d7f7", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1", + "php": "^7.1", + "psr/http-message": "^1.0", + "psr/http-server-middleware": "^1.0", + "zendframework/zend-escaper": "^2.3" + }, + "conflict": { + "zendframework/zend-diactoros": "<1.7.1" + }, + "require-dev": { + "malukenho/docheader": "^0.1.6", + "phpunit/phpunit": "^7.0.1", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-diactoros": "^1.7.1" + }, + "suggest": { + "psr/http-message-implementation": "Please install a psr/http-message-implementation to consume Stratigility; e.g., zendframework/zend-diactoros" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev", + "dev-develop": "3.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions/double-pass-middleware.php", + "src/functions/host.php", + "src/functions/middleware.php", + "src/functions/path.php" + ], + "psr-4": { + "Zend\\Stratigility\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "PSR-7 middleware foundation for building and dispatching middleware pipelines", + "keywords": [ + "ZendFramework", + "http", + "middleware", + "psr-15", + "psr-7", + "zf" + ], + "time": "2018-07-24T20:39:18+00:00" + } + ], + "packages-dev": [ + { + "name": "behat/gherkin", + "version": "v4.5.1", + "source": { + "type": "git", + "url": "https://github.com/Behat/Gherkin.git", + "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a", + "reference": "74ac03d52c5e23ad8abd5c5cce4ab0e8dc1b530a", + "shasum": "" + }, + "require": { + "php": ">=5.3.1" + }, + "require-dev": { + "phpunit/phpunit": "~4.5|~5", + "symfony/phpunit-bridge": "~2.7|~3", + "symfony/yaml": "~2.3|~3" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" + ], + "time": "2017-08-30T11:04:43+00:00" + }, + { + "name": "codeception/codeception", + "version": "2.5.2", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Codeception.git", + "reference": "4f89de32929fef53ca6d83b159fe329b6d484c1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/4f89de32929fef53ca6d83b159fe329b6d484c1c", + "reference": "4f89de32929fef53ca6d83b159fe329b6d484c1c", + "shasum": "" + }, + "require": { + "behat/gherkin": "^4.4.0", + "codeception/phpunit-wrapper": "^6.0.9|^7.0.6", + "codeception/stub": "^2.0", + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "facebook/webdriver": ">=1.1.3 <2.0", + "guzzlehttp/guzzle": ">=4.1.4 <7.0", + "guzzlehttp/psr7": "~1.0", + "php": ">=5.6.0 <8.0", + "symfony/browser-kit": ">=2.7 <5.0", + "symfony/console": ">=2.7 <5.0", + "symfony/css-selector": ">=2.7 <5.0", + "symfony/dom-crawler": ">=2.7 <5.0", + "symfony/event-dispatcher": ">=2.7 <5.0", + "symfony/finder": ">=2.7 <5.0", + "symfony/yaml": ">=2.7 <5.0" + }, + "require-dev": { + "codeception/specify": "~0.3", + "facebook/graph-sdk": "~5.3", + "flow/jsonpath": "~0.2", + "monolog/monolog": "~1.8", + "pda/pheanstalk": "~3.0", + "php-amqplib/php-amqplib": "~2.4", + "predis/predis": "^1.0", + "squizlabs/php_codesniffer": "~2.0", + "symfony/process": ">=2.7 <5.0", + "vlucas/phpdotenv": "^2.4.0" + }, + "suggest": { + "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module", + "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests", + "codeception/specify": "BDD-style code blocks", + "codeception/verify": "BDD-style assertions", + "flow/jsonpath": "For using JSONPath in REST module", + "league/factory-muffin": "For DataFactory module", + "league/factory-muffin-faker": "For Faker support in DataFactory module", + "phpseclib/phpseclib": "for SFTP option in FTP Module", + "stecman/symfony-console-completion": "For BASH autocompletion", + "symfony/phpunit-bridge": "For phpunit-bridge support" + }, + "bin": [ + "codecept" + ], + "type": "library", + "extra": { + "branch-alias": [] + }, + "autoload": { + "psr-4": { + "Codeception\\": "src/Codeception", + "Codeception\\Extension\\": "ext" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert@mail.ua", + "homepage": "http://codegyre.com" + } + ], + "description": "BDD-style testing framework", + "homepage": "http://codeception.com/", + "keywords": [ + "BDD", + "TDD", + "acceptance testing", + "functional testing", + "unit testing" + ], + "time": "2019-01-01T19:55:00+00:00" + }, + { + "name": "codeception/phpunit-wrapper", + "version": "7.6.0", + "source": { + "type": "git", + "url": "https://github.com/Codeception/phpunit-wrapper.git", + "reference": "7c95e2022cbde2f013d52cc87ae878f1b996ed4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7c95e2022cbde2f013d52cc87ae878f1b996ed4d", + "reference": "7c95e2022cbde2f013d52cc87ae878f1b996ed4d", + "shasum": "" + }, + "require": { + "phpunit/php-code-coverage": "^6.0", + "phpunit/phpunit": ">=7.1 <7.6", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0" + }, + "require-dev": { + "codeception/specify": "*", + "vlucas/phpdotenv": "^2.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\PHPUnit\\": "src\\" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Davert", + "email": "davert.php@resend.cc" + } + ], + "description": "PHPUnit classes used by Codeception", + "time": "2018-12-31T10:33:06+00:00" + }, + { + "name": "codeception/stub", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Stub.git", + "reference": "f50bc271f392a2836ff80690ce0c058efe1ae03e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/f50bc271f392a2836ff80690ce0c058efe1ae03e", + "reference": "f50bc271f392a2836ff80690ce0c058efe1ae03e", + "shasum": "" + }, + "require": { + "phpunit/phpunit": ">=4.8 <8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", + "time": "2018-07-26T11:55:37+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "dc523135366eb68f22268d069ea7749486458562" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/dc523135366eb68f22268d069ea7749486458562", + "reference": "dc523135366eb68f22268d069ea7749486458562", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2018-11-29T10:59:02+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, + { + "name": "facebook/webdriver", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/facebook/php-webdriver.git", + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/bd8c740097eb9f2fc3735250fc1912bc811a954e", + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-zip": "*", + "php": "^5.6 || ~7.0", + "symfony/process": "^2.8 || ^3.1 || ^4.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "php-coveralls/php-coveralls": "^2.0", + "php-mock/php-mock-phpunit": "^1.1", + "phpunit/phpunit": "^5.7", + "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", + "squizlabs/php_codesniffer": "^2.6", + "symfony/var-dumper": "^3.3 || ^4.0" + }, + "suggest": { + "ext-SimpleXML": "For Firefox profile creation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-community": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Facebook\\WebDriver\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "A PHP client for Selenium WebDriver", + "homepage": "https://github.com/facebook/php-webdriver", + "keywords": [ + "facebook", + "php", + "selenium", + "webdriver" + ], + "time": "2018-05-16T17:37:13+00:00" + }, + { + "name": "filp/whoops", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "bc0fd11bc455cc20ee4b5edabc63ebbf859324c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/bc0fd11bc455cc20ee4b5edabc63ebbf859324c7", + "reference": "bc0fd11bc455cc20ee4b5edabc63ebbf859324c7", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0", + "psr/log": "^1.0.1" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0" + }, + "suggest": { + "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": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "time": "2018-10-23T09:00:00+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2018-04-22T15:46:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "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" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.5.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "9f83dded91781a01c63574e387eaa769be769115" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", + "reference": "9f83dded91781a01c63574e387eaa769be769115", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-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" + ], + "time": "2018-12-04T20:46:45+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "1.2", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/75c7effcf3f77501d0e0caa75111aff4daa0dd48", + "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48", + "shasum": "" + }, + "require": { + "ocramius/package-versions": "^1.2.0", + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A wrapper for ocramius/package-versions to get pretty versions strings", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "time": "2018-06-13T13:22:40+00:00" + }, + { + "name": "middlewares/utils", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/middlewares/utils.git", + "reference": "8e3f2720fa462443e1566c9e3ab78169adcb0468" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/middlewares/utils/zipball/8e3f2720fa462443e1566c9e3ab78169adcb0468", + "reference": "8e3f2720fa462443e1566c9e3ab78169adcb0468", + "shasum": "" + }, + "require": { + "php": "^7.0", + "psr/container": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "psr/http-server-middleware": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0", + "guzzlehttp/psr7": "^1.3", + "phpunit/phpunit": "^6.0|^7.0", + "slim/slim": "^3.5", + "squizlabs/php_codesniffer": "^3.0", + "zendframework/zend-diactoros": "^1.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Middlewares\\Utils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Common utils to create PSR-15 middleware packages", + "homepage": "https://github.com/middlewares/utils", + "keywords": [ + "PSR-11", + "http", + "middleware", + "psr-15", + "psr-17", + "psr-7" + ], + "time": "2018-08-11T07:23:25+00:00" + }, + { + "name": "middlewares/whoops", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/middlewares/whoops.git", + "reference": "4bd8e6553edfc1eba757947c86bc358bd723b40e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/middlewares/whoops/zipball/4bd8e6553edfc1eba757947c86bc358bd723b40e", + "reference": "4bd8e6553edfc1eba757947c86bc358bd723b40e", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.1", + "middlewares/utils": "^2.1", + "php": "^7.0", + "psr/container": "^1.0", + "psr/http-server-middleware": "^1.0" + }, + "require-dev": { + "eloquent/phony-phpunit": "^3.0|^4.0", + "friendsofphp/php-cs-fixer": "^2.0", + "phpunit/phpunit": "^6.0|^7.0", + "squizlabs/php_codesniffer": "^3.0", + "zendframework/zend-diactoros": "^1.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Middlewares\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Middleware to use Whoops as error handler", + "homepage": "https://github.com/middlewares/whoops", + "keywords": [ + "error", + "http", + "middleware", + "psr-15", + "psr-7", + "server", + "whoops" + ], + "time": "2018-08-04T10:41:55+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2018-06-11T23:09:50+00:00" + }, + { + "name": "nette/bootstrap", + "version": "v2.4.6", + "source": { + "type": "git", + "url": "https://github.com/nette/bootstrap.git", + "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/bootstrap/zipball/268816e3f1bb7426c3a4ceec2bd38a036b532543", + "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543", + "shasum": "" + }, + "require": { + "nette/di": "~2.4.7", + "nette/utils": "~2.4", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "latte/latte": "~2.2", + "nette/application": "~2.3", + "nette/caching": "~2.3", + "nette/database": "~2.3", + "nette/forms": "~2.3", + "nette/http": "~2.4.0", + "nette/mail": "~2.3", + "nette/robot-loader": "^2.4.2 || ^3.0", + "nette/safe-stream": "~2.2", + "nette/security": "~2.3", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4.1" + }, + "suggest": { + "nette/robot-loader": "to use Configurator::createRobotLoader()", + "tracy/tracy": "to use Configurator::enableTracy()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.", + "homepage": "https://nette.org", + "keywords": [ + "bootstrapping", + "configurator", + "nette" + ], + "time": "2018-05-17T12:52:20+00:00" + }, + { + "name": "nette/di", + "version": "v2.4.14", + "source": { + "type": "git", + "url": "https://github.com/nette/di.git", + "reference": "923da3e2c0aa53162ef455472c0ac7787b096c5a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/di/zipball/923da3e2c0aa53162ef455472c0ac7787b096c5a", + "reference": "923da3e2c0aa53162ef455472c0ac7787b096c5a", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "nette/neon": "^2.3.3 || ~3.0.0", + "nette/php-generator": "^2.6.1 || ~3.0.0", + "nette/utils": "^2.4.3 || ~3.0.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/bootstrap": "<2.4", + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.", + "homepage": "https://nette.org", + "keywords": [ + "compiled", + "di", + "dic", + "factory", + "ioc", + "nette", + "static" + ], + "time": "2018-09-17T15:47:40+00:00" + }, + { + "name": "nette/finder", + "version": "v2.4.2", + "source": { + "type": "git", + "url": "https://github.com/nette/finder.git", + "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/finder/zipball/ee951a656cb8ac622e5dd33474a01fd2470505a0", + "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0", + "shasum": "" + }, + "require": { + "nette/utils": "~2.4", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🔍 Nette Finder: find files and directories with an intuitive API.", + "homepage": "https://nette.org", + "keywords": [ + "filesystem", + "glob", + "iterator", + "nette" + ], + "time": "2018-06-28T11:49:23+00:00" + }, + { + "name": "nette/neon", + "version": "v2.4.3", + "source": { + "type": "git", + "url": "https://github.com/nette/neon.git", + "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/neon/zipball/5e72b1dd3e2d34f0863c5561139a19df6a1ef398", + "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "ext-json": "*", + "php": ">=5.6.0" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🍸 Nette NEON: encodes and decodes NEON file format.", + "homepage": "http://ne-on.org", + "keywords": [ + "export", + "import", + "neon", + "nette", + "yaml" + ], + "time": "2018-03-21T12:12:21+00:00" + }, + { + "name": "nette/php-generator", + "version": "v3.0.5", + "source": { + "type": "git", + "url": "https://github.com/nette/php-generator.git", + "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/php-generator/zipball/ea90209c2e8a7cd087b2742ca553c047a8df5eff", + "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff", + "shasum": "" + }, + "require": { + "nette/utils": "^2.4.2 || ~3.0.0", + "php": ">=7.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.2 features.", + "homepage": "https://nette.org", + "keywords": [ + "code", + "nette", + "php", + "scaffolding" + ], + "time": "2018-08-09T14:32:27+00:00" + }, + { + "name": "nette/robot-loader", + "version": "v3.1.0", + "source": { + "type": "git", + "url": "https://github.com/nette/robot-loader.git", + "reference": "fc76c70e740b10f091e502b2e393d0be912f38d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/robot-loader/zipball/fc76c70e740b10f091e502b2e393d0be912f38d4", + "reference": "fc76c70e740b10f091e502b2e393d0be912f38d4", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "nette/finder": "^2.3 || ^3.0", + "nette/utils": "^2.4 || ^3.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🍀 Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.", + "homepage": "https://nette.org", + "keywords": [ + "autoload", + "class", + "interface", + "nette", + "trait" + ], + "time": "2018-08-13T14:19:06+00:00" + }, + { + "name": "nette/utils", + "version": "v2.5.3", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/17b9f76f2abd0c943adfb556e56f2165460b15ce", + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize() and toAscii()", + "ext-intl": "for script transliteration in Strings::webalize() and toAscii()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/loader.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "time": "2018-09-18T10:22:16+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.1.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "8aae5b59b83bb4d0dbf07b0a835f2680a658f610" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8aae5b59b83bb4d0dbf07b0a835f2680a658f610", + "reference": "8aae5b59b83bb4d0dbf07b0a835f2680a658f610", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.5 || ^7.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-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" + ], + "time": "2018-12-26T11:32:39+00:00" + }, + { + "name": "ocramius/package-versions", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/PackageVersions.git", + "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f", + "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0.0", + "php": "^7.1.0" + }, + "require-dev": { + "composer/composer": "^1.6.3", + "ext-zip": "*", + "infection/infection": "^0.7.1", + "phpunit/phpunit": "^7.0.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "time": "2018-02-05T13:05:30+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.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", + "time": "2018-07-08T19:19:57+00:00" + }, + { + "name": "php-coveralls/php-coveralls", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-coveralls/php-coveralls.git", + "reference": "3b00c229726f892bfdadeaf01ea430ffd04a939d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/3b00c229726f892bfdadeaf01ea430ffd04a939d", + "reference": "3b00c229726f892bfdadeaf01ea430ffd04a939d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-simplexml": "*", + "guzzlehttp/guzzle": "^6.0", + "php": "^5.5 || ^7.0", + "psr/log": "^1.0", + "symfony/config": "^2.1 || ^3.0 || ^4.0", + "symfony/console": "^2.1 || ^3.0 || ^4.0", + "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0", + "symfony/yaml": "^2.0 || ^3.0 || ^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0" + }, + "suggest": { + "symfony/http-kernel": "Allows Symfony integration" + }, + "bin": [ + "bin/php-coveralls" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "PhpCoveralls\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kitamura Satoshi", + "email": "with.no.parachute@gmail.com", + "homepage": "https://www.facebook.com/satooshi.jp", + "role": "Original creator" + }, + { + "name": "Takashi Matsuo", + "email": "tmatsuo@google.com" + }, + { + "name": "Google Inc" + }, + { + "name": "Dariusz Ruminski", + "email": "dariusz.ruminski@gmail.com", + "homepage": "https://github.com/keradus" + }, + { + "name": "Contributors", + "homepage": "https://github.com/php-coveralls/php-coveralls/graphs/contributors" + } + ], + "description": "PHP client library for Coveralls API", + "homepage": "https://github.com/php-coveralls/php-coveralls", + "keywords": [ + "ci", + "coverage", + "github", + "test" + ], + "time": "2018-05-22T23:11:08+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.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" + ], + "time": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-30T07:14:17+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.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" + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "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" + ], + "time": "2018-08-05T17:53:17+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "0.3", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "ed3223362174b8067729930439e139794e9e514a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ed3223362174b8067729930439e139794e9e514a", + "reference": "ed3223362174b8067729930439e139794e9e514a", + "shasum": "" + }, + "require": { + "php": "~7.1" + }, + "require-dev": { + "consistence/coding-standard": "^2.0.0", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "phing/phing": "^2.16.0", + "phpstan/phpstan": "^0.10@dev", + "phpunit/phpunit": "^6.3", + "slevomat/coding-standard": "^3.3.0", + "symfony/process": "^3.4 || ^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.3-dev" + } + }, + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "time": "2018-06-20T17:48:01+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "0.10.7", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "b7a70043d9a933c9d1575df49a7b141dbc3c469f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b7a70043d9a933c9d1575df49a7b141dbc3c469f", + "reference": "b7a70043d9a933c9d1575df49a7b141dbc3c469f", + "shasum": "" + }, + "require": { + "composer/xdebug-handler": "^1.3.0", + "jean85/pretty-package-versions": "^1.0.3", + "nette/bootstrap": "^2.4 || ^3.0", + "nette/di": "^2.4.7 || ^3.0", + "nette/robot-loader": "^3.0.1", + "nette/utils": "^2.4.5 || ^3.0", + "nikic/php-parser": "^4.0.2", + "php": "~7.1", + "phpstan/phpdoc-parser": "^0.3", + "symfony/console": "~3.2 || ~4.0", + "symfony/finder": "~3.2 || ~4.0" + }, + "conflict": { + "symfony/console": "3.4.16 || 4.1.5" + }, + "require-dev": { + "brianium/paratest": "^2.0", + "consistence/coding-standard": "^3.5", + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4", + "ext-gd": "*", + "ext-intl": "*", + "ext-mysqli": "*", + "ext-zip": "*", + "jakub-onderka/php-parallel-lint": "^1.0", + "localheinz/composer-normalize": "~0.9.0", + "phing/phing": "^2.16.0", + "phpstan/phpstan-deprecation-rules": "^0.10.2", + "phpstan/phpstan-php-parser": "^0.10", + "phpstan/phpstan-phpunit": "^0.10", + "phpstan/phpstan-strict-rules": "^0.10", + "phpunit/phpunit": "^7.0", + "slevomat/coding-standard": "^4.7.2", + "squizlabs/php_codesniffer": "^3.3.2" + }, + "bin": [ + "bin/phpstan" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.10-dev" + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": [ + "src/", + "build/PHPStan" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "time": "2018-12-28T13:47:37+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "6.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "ext-xdebug": "^2.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "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" + ], + "time": "2018-10-31T16:06:48+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "050bedf145a257b1ff02746c31894800e5122946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "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": "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" + ], + "time": "2018-09-13T20:33:42+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f", + "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2018-02-01T13:07:23+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c99e3be9d3e85f60646f152f9002d46ed7770d18", + "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2018-10-30T05:52:18+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "7.5.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "c23d78776ad415d5506e0679723cb461d71f488f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c23d78776ad415d5506e0679723cb461d71f488f", + "reference": "c23d78776ad415d5506e0679723cb461d71f488f", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.0", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.5-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": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2018-12-12T07:20:32+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7.0", + "satooshi/php-coveralls": ">=1.0" + }, + "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.", + "time": "2016-02-11T07:05:27+00:00" + }, + { + "name": "roave/security-advisories", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "5f3e0c82ada2d16fdd637b24e095888f4abac43f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/5f3e0c82ada2d16fdd637b24e095888f4abac43f", + "reference": "5f3e0c82ada2d16fdd637b24e095888f4abac43f", + "shasum": "" + }, + "conflict": { + "3f/pygmentize": "<1.2", + "adodb/adodb-php": "<5.20.12", + "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", + "amphp/artax": "<1.0.6|>=2,<2.0.6", + "amphp/http": "<1.0.1", + "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", + "aws/aws-sdk-php": ">=3,<3.2.1", + "brightlocal/phpwhois": "<=4.2.5", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.0.15|>=3.1,<3.1.4|>=3.4,<3.4.14|>=3.5,<3.5.17|>=3.6,<3.6.4", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<=2.1.6", + "codeigniter/framework": "<=3.0.6", + "composer/composer": "<=1.0.0-alpha11", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/core": ">=2,<3.5.35", + "contao/core-bundle": ">=4,<4.4.18|>=4.5,<4.5.8", + "contao/listing-bundle": ">=4,<4.4.8", + "contao/newsletter-bundle": ">=4,<4.1", + "david-garcia/phpwhois": "<=4.3.1", + "doctrine/annotations": ">=1,<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<=0.7.1", + "doctrine/mongodb-odm": ">=1,<1.0.2", + "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", + "dompdf/dompdf": ">=0.6,<0.6.2", + "drupal/core": ">=7,<7.60|>=8,<8.5.8|>=8.6,<8.6.2", + "drupal/drupal": ">=7,<7.60|>=8,<8.5.8|>=8.6,<8.6.2", + "erusev/parsedown": "<1.7", + "ezsystems/ezplatform": "<1.7.8.1|>=1.8,<1.13.4.1|>=2,<2.2.3.1|>=2.3,<2.3.2.1", + "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.13.1|>=6,<6.7.9.1|>=6.8,<6.13.5.1|>=7,<7.2.4.1|>=7.3,<7.3.2.1", + "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.12.3|>=2011,<2017.12.4.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1", + "ezyang/htmlpurifier": "<4.1.1", + "firebase/php-jwt": "<2", + "fooman/tcpdf": "<6.2.22", + "fossar/tcpdf-parser": "<6.2.22", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "fuel/core": "<1.8.1", + "gree/jose": "<=2.2", + "gregwar/rst": "<1.0.3", + "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", + "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", + "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", + "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", + "ivankristianto/phpwhois": "<=4.3", + "james-heinrich/getid3": "<1.9.9", + "joomla/session": "<1.3.1", + "jsmitty12/phpwhois": "<5.1", + "kazist/phpwhois": "<=4.2.6", + "kreait/firebase-php": ">=3.2,<3.8.1", + "la-haute-societe/tcpdf": "<6.2.22", + "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", + "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", + "league/commonmark": ">=0.15.6,<0.18.1", + "magento/magento1ce": "<1.9.4", + "magento/magento1ee": ">=1.9,<1.14.4", + "magento/product-community-edition": ">=2,<2.2.7", + "monolog/monolog": ">=1.8,<1.12", + "namshi/jose": "<2.2", + "onelogin/php-saml": "<2.10.4", + "openid/php-openid": "<2.3", + "oro/crm": ">=1.7,<1.7.4", + "oro/platform": ">=1.7,<1.7.4", + "padraic/humbug_get_contents": "<1.1.2", + "pagarme/pagarme-php": ">=0,<3", + "paragonie/random_compat": "<2", + "paypal/merchant-sdk-php": "<3.12", + "phpmailer/phpmailer": ">=5,<5.2.27|>=6,<6.0.6", + "phpoffice/phpexcel": "<=1.8.1", + "phpoffice/phpspreadsheet": "<=1.5", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpwhois/phpwhois": "<=4.2.5", + "phpxmlrpc/extras": "<0.6.1", + "propel/propel": ">=2.0.0-alpha1,<=2.0.0-alpha7", + "propel/propel1": ">=1,<=1.7.1", + "pusher/pusher-php-server": "<2.2.1", + "robrichards/xmlseclibs": ">=1,<3.0.2", + "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", + "sensiolabs/connect": "<4.2.3", + "serluck/phpwhois": "<=4.2.6", + "shopware/shopware": "<5.3.7", + "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": ">=3,<3.3", + "silverstripe/userforms": "<3", + "simple-updates/phpwhois": "<=1", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", + "simplesamlphp/simplesamlphp": "<1.16.3", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "slim/slim": "<2.6", + "smarty/smarty": "<3.1.33", + "socalnick/scn-social-auth": "<1.15.2", + "spoonity/tcpdf": "<6.2.22", + "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", + "stormpath/sdk": ">=0,<9.9.99", + "swiftmailer/swiftmailer": ">=4,<5.4.5", + "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "sylius/sylius": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "symfony/dependency-injection": ">=2,<2.0.17", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", + "symfony/http-foundation": ">=2,<2.7.49|>=2.8,<2.8.44|>=3,<3.3.18|>=3.4,<3.4.14|>=4,<4.0.14|>=4.1,<4.1.3", + "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", + "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/polyfill": ">=1,<1.10", + "symfony/polyfill-php55": ">=1,<1.10", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.19|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7", + "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/serializer": ">=2,<2.0.11", + "symfony/symfony": ">=2,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/translation": ">=2,<2.0.17", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", + "tecnickcom/tcpdf": "<6.2.22", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1,<2.1.2|>=2.1.0-beta1,<2.1.3", + "theonedemon/phpwhois": "<=4.2.5", + "titon/framework": ">=0,<9.9.99", + "truckersmp/phpwhois": "<=4.3.1", + "twig/twig": "<1.20", + "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.21|>=9,<9.5.2", + "typo3/cms-core": ">=8,<8.7.21|>=9,<9.5.2", + "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", + "ua-parser/uap-php": "<3.8", + "wallabag/tcpdf": "<6.2.22", + "willdurand/js-translation-bundle": "<2.1.1", + "yiisoft/yii": ">=1.1.14,<1.1.15", + "yiisoft/yii2": "<2.0.15", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.15", + "yiisoft/yii2-elasticsearch": "<2.0.5", + "yiisoft/yii2-gii": "<2.0.4", + "yiisoft/yii2-jui": "<2.0.4", + "yiisoft/yii2-redis": "<2.0.8", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-diactoros": ">=1,<1.8.4", + "zendframework/zend-feed": ">=1,<2.10.3", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": ">=1,<2.8.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": "<2.5.1", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": ">=2,<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zetacomponents/mail": "<1.8.2", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "time": "2018-12-30T13:00:21+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "shasum": "" + }, + "require": { + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "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": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-07-12T15:12:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "366541b989927187c4ca70490a35615d3fef2dce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/366541b989927187c4ca70490a35615d3fef2dce", + "reference": "366541b989927187c4ca70490a35615d3fef2dce", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0", + "symfony/process": "^2 || ^3.3 || ^4" + }, + "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": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "time": "2018-06-10T07:54:39+00:00" + }, + { + "name": "sebastian/environment", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "febd209a219cea7b56ad799b30ebbea34b71eb8f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/febd209a219cea7b56ad799b30ebbea34b71eb8f", + "reference": "febd209a219cea7b56ad799b30ebbea34b71eb8f", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2018-11-25T09:31:21+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2017-04-03T13:19:02+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "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": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "379deb987e26c7cd103a7b387aea178baec96e48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/379deb987e26c7cd103a7b387aea178baec96e48", + "reference": "379deb987e26c7cd103a7b387aea178baec96e48", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2018-12-19T23:57:18+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "db7e59fec9c82d45e745eb500e6ede2d96f4a6e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/db7e59fec9c82d45e745eb500e6ede2d96f4a6e9", + "reference": "db7e59fec9c82d45e745eb500e6ede2d96f4a6e9", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/dom-crawler": "~3.4|~4.0" + }, + "require-dev": { + "symfony/css-selector": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony BrowserKit Component", + "homepage": "https://symfony.com", + "time": "2018-11-26T11:49:31+00:00" + }, + { + "name": "symfony/config", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "005d9a083d03f588677d15391a716b1ac9b887c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/005d9a083d03f588677d15391a716b1ac9b887c0", + "reference": "005d9a083d03f588677d15391a716b1ac9b887c0", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/filesystem": "~3.4|~4.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<3.4" + }, + "require-dev": { + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2018-11-30T22:21:14+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "aa9fa526ba1b2ec087ffdfb32753803d999fcfcd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/aa9fa526ba1b2ec087ffdfb32753803d999fcfcd", + "reference": "aa9fa526ba1b2ec087ffdfb32753803d999fcfcd", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "time": "2018-11-11T19:52:12+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "7438a32108fdd555295f443605d6de2cce473159" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/7438a32108fdd555295f443605d6de2cce473159", + "reference": "7438a32108fdd555295f443605d6de2cce473159", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "symfony/css-selector": "~3.4|~4.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DomCrawler Component", + "homepage": "https://symfony.com", + "time": "2018-11-26T10:55:26+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "921f49c3158a276d27c0d770a5a347a3b718b328" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/921f49c3158a276d27c0d770a5a347a3b718b328", + "reference": "921f49c3158a276d27c0d770a5a347a3b718b328", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/contracts": "^1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2018-12-01T08:52:38+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "2f4c8b999b3b7cadb2a69390b01af70886753710" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/2f4c8b999b3b7cadb2a69390b01af70886753710", + "reference": "2f4c8b999b3b7cadb2a69390b01af70886753710", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2018-11-11T19:52:12+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "e53d477d7b5c4982d0e1bfd2298dbee63d01441d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/e53d477d7b5c4982d0e1bfd2298dbee63d01441d", + "reference": "e53d477d7b5c4982d0e1bfd2298dbee63d01441d", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2018-11-11T19:52:12+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "ec076716412274e51f8a7ea675d9515e5c311123" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/ec076716412274e51f8a7ea675d9515e5c311123", + "reference": "ec076716412274e51f8a7ea675d9515e5c311123", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/contracts": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2018-11-11T19:52:12+00:00" + }, + { + "name": "symfony/yaml", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "c41175c801e3edfda90f32e292619d10c27103d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c41175c801e3edfda90f32e292619d10c27103d7", + "reference": "c41175c801e3edfda90f32e292619d10c27103d7", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-11-11T19:52:12+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2018-12-25T11:19:39+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "roave/security-advisories": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/config/autoload/console/commands.global.php b/config/autoload/console/commands.global.php new file mode 100644 index 0000000..d718da4 --- /dev/null +++ b/config/autoload/console/commands.global.php @@ -0,0 +1,13 @@ + [ + Console\Command\Server\ServerRun::class, + Console\Command\Cache\ClearConfig::class, + Console\Command\Cache\ClearRouteDispatcherData::class, + Console\Command\Cache\ClearViewData::class, + Console\Command\Cache\ClearAll::class, + Console\Command\Info::class, + ] +]; \ No newline at end of file diff --git a/config/autoload/console/dependencies.global.php b/config/autoload/console/dependencies.global.php new file mode 100644 index 0000000..6e5605e --- /dev/null +++ b/config/autoload/console/dependencies.global.php @@ -0,0 +1,13 @@ + [ + 'factories' => [ + ] + ] +]; diff --git a/config/autoload/global.php b/config/autoload/global.php new file mode 100644 index 0000000..6e23617 --- /dev/null +++ b/config/autoload/global.php @@ -0,0 +1,25 @@ + [ + 'app_namespace' => 'MyApp', + 'environment' => getenv('SELAMI_ENVIRONMENT'), + 'cache_dir' => './cache', + 'config_cache_enabled' => getenv('SELAMI_ENVIRONMENT') === 'prod' ?? false, // enable on production + 'router_cache_enabled' => getenv('SELAMI_ENVIRONMENT') === 'prod' ?? false, + 'view_cache_enabled' => getenv('SELAMI_ENVIRONMENT') === 'prod' ?? false, // change to a valid file path to enable caching on production + ], + 'dependencies' => [ + 'factories' => [ + ServerRequestInterface::class => Web\Factory\ServerRequestFactory::class, + Router::class => Web\Factory\RouterFactory::class, + Twig_Environment::class => Web\Factory\TwigFactory::class, + ViewInterface::class => Web\Factory\SelamiViewTwigFactory::class, + ] + ], +]; diff --git a/config/autoload/web/view.local.php.dist b/config/autoload/web/view.local.php.dist new file mode 100644 index 0000000..4d5ce0c --- /dev/null +++ b/config/autoload/web/view.local.php.dist @@ -0,0 +1,26 @@ + true, // disable on production + 'strict_variables' => true, // disable on production + 'autoescape' => 'html', + 'auto_reload' => true, // disable on production + 'optimizations' => -1 // change to -1 on production +]; + +if(getenv('SELAMI_ENVIRONMENT') === 'prod') { + $twigConfig = [ + 'debug' => false, // disable on production + 'strict_variables' => false, // disable on production + 'autoescape' => 'html', + 'auto_reload' => false, // disable on production + 'optimizations' => -1 // change to -1 on production + ]; +} + +return [ + 'view' => [ + 'twig' => $twigConfig + ] +]; diff --git a/src/Application/.gittrack b/src/Application/.gittrack new file mode 100644 index 0000000..e69de29 diff --git a/src/Domain/Exception/.gittrack b/src/Domain/Exception/.gittrack new file mode 100644 index 0000000..e69de29 diff --git a/src/Domain/Interfaces/.gittrack b/src/Domain/Interfaces/.gittrack new file mode 100644 index 0000000..e69de29 diff --git a/src/Infrastructure/Persistence/.gittrack b/src/Infrastructure/Persistence/.gittrack new file mode 100644 index 0000000..e69de29 diff --git a/src/Infrastructure/Service/.gittrack b/src/Infrastructure/Service/.gittrack new file mode 100644 index 0000000..e69de29 diff --git a/src/Infrastructure/Ui/Console/Command/Cache/ClearAll.php b/src/Infrastructure/Ui/Console/Command/Cache/ClearAll.php new file mode 100644 index 0000000..13d09b4 --- /dev/null +++ b/src/Infrastructure/Ui/Console/Command/Cache/ClearAll.php @@ -0,0 +1,43 @@ +setName('cache:clear-all') + ->setDescription('Clear all cached.'); + } + + /** + * @inheritdoc + * @throws CommandNotFoundException + * @throws \Exception + */ + protected function execute(InputInterface $input, OutputInterface $output) : void + { + foreach (self::$availableCommands as $clearCommand) { + $command = $this->getApplication()->find($clearCommand); + $command->run(new ArrayInput(['command'=> $clearCommand]), $output); + } + } +} diff --git a/src/Infrastructure/Ui/Console/Command/Cache/ClearConfig.php b/src/Infrastructure/Ui/Console/Command/Cache/ClearConfig.php new file mode 100644 index 0000000..6dfedcb --- /dev/null +++ b/src/Infrastructure/Ui/Console/Command/Cache/ClearConfig.php @@ -0,0 +1,46 @@ +cacheDir = $config->get('app')->get('cache_dir', './cache'); + parent::__construct($name); + } + + /** + * @inheritdoc + * @throws InvalidArgumentException + */ + protected function configure() : void + { + $this + ->setName('cache:clear-config') + ->setDescription('Clears generated config file.'); + } + + /** + * @inheritdoc + */ + protected function execute(InputInterface $input, OutputInterface $output) : void + { + $output->writeln(' Config cache files under ' . $this->cacheDir. ' will be deleted.'); + foreach (glob($this->cacheDir . '/*config.php') as $cachedConfigFile) { + $unlinkResult = file_exists($cachedConfigFile) + ? (unlink($cachedConfigFile) === true) ? 'deleted.' : 'could\'t deleted' + :' file does not exist'; + $output->writeln(' '.$cachedConfigFile . ' ' . $unlinkResult); + } + } +} diff --git a/src/Infrastructure/Ui/Console/Command/Cache/ClearRouteDispatcherData.php b/src/Infrastructure/Ui/Console/Command/Cache/ClearRouteDispatcherData.php new file mode 100644 index 0000000..f04b949 --- /dev/null +++ b/src/Infrastructure/Ui/Console/Command/Cache/ClearRouteDispatcherData.php @@ -0,0 +1,47 @@ +cacheDir = $config->get('app')->get('cache_dir'); + parent::__construct($name); + } + /** + * @inheritdoc + * @throws InvalidArgumentException + */ + protected function configure() : void + { + $this + ->setName('cache:clear-routes') + ->setDescription('Clears generated routes data cache file.'); + } + + /** + * @inheritdoc + */ + protected function execute(InputInterface $input, OutputInterface $output) : void + { + $files = glob($this->cacheDir . '/*fastroute.cache'); + $output->writeln(' FastRoute cache files under ./cache will be deleted.'); + foreach ($files as $file) { + $unlinkResult = file_exists($file) + ? (unlink($file) === true) ? 'deleted.' : 'could\'t deleted' + : ' file does not exist'; + $output->writeln(' ' . $file . ' ' . $unlinkResult); + } + } +} diff --git a/src/Infrastructure/Ui/Console/Command/Cache/ClearViewData.php b/src/Infrastructure/Ui/Console/Command/Cache/ClearViewData.php new file mode 100644 index 0000000..3fd9e4d --- /dev/null +++ b/src/Infrastructure/Ui/Console/Command/Cache/ClearViewData.php @@ -0,0 +1,56 @@ +get('app')->toArray(); + $this->viewCacheDir = $config['cache_dir'] . '/view'; + parent::__construct($name); + } + + /** + * @inheritdoc + * @throws InvalidArgumentException + */ + protected function configure() : void + { + $this + ->setName('cache:clear-view-data') + ->setDescription('Clears generated cache file.'); + } + + /** + * @inheritdoc + */ + protected function execute(InputInterface $input, OutputInterface $output) : void + { + $output->writeln(' Files under ' . $this->viewCacheDir . ' will be deleted.'); + if ($this->viewCacheDir !== '/view') { + foreach (glob( $this->viewCacheDir . '/*') as $folder) { + $files = glob($folder . '/*'); + $output->writeln(' Files under ' . $folder . ' will be deleted.'); + foreach ($files as $file) { + $unlinkResult = file_exists($file) + ? (unlink($file) === true) ? 'deleted.' : 'could\'t deleted' + : ' file does not exist'; + $output->writeln(' ' .$file . ' ' . $unlinkResult); + } + rmdir($folder); + $output->writeln(' ' . $folder . ' emptied.'); + } + } + $output->writeln(' ' .$this->viewCacheDir .' emptied.'); + } +} diff --git a/src/Infrastructure/Ui/Console/Command/Info.php b/src/Infrastructure/Ui/Console/Command/Info.php new file mode 100644 index 0000000..87a1c61 --- /dev/null +++ b/src/Infrastructure/Ui/Console/Command/Info.php @@ -0,0 +1,39 @@ +config = $config->toArray(); + parent::__construct($name); + } + + /** + * @inheritdoc + * @throws InvalidArgumentException + */ + protected function configure() : void + { + $this + ->setName('info') + ->setDescription('Displays configuration.'); + } + + /** + * @inheritdoc + */ + protected function execute(InputInterface $input, OutputInterface $output) : void + { + $output->writeln(json_encode($this->config, JSON_PRETTY_PRINT)); + } +} diff --git a/src/Infrastructure/Ui/Console/Command/Server/ServerRun.php b/src/Infrastructure/Ui/Console/Command/Server/ServerRun.php new file mode 100644 index 0000000..311a483 --- /dev/null +++ b/src/Infrastructure/Ui/Console/Command/Server/ServerRun.php @@ -0,0 +1,64 @@ +setName('server:run') + ->setAliases(['serve']) + ->addUsage('--host=127.0.0.1 --port=8080 --public=./webroot') + ->addOption('host', null, InputOption::VALUE_OPTIONAL, 'Hostname of the site', '127.0.0.1') + ->addOption('port', null, InputOption::VALUE_OPTIONAL, 'Web port', '8080') + ->addOption('public', null, InputOption::VALUE_OPTIONAL, 'Public web root.', './src/Infrastructure/Ui/Web/public') + ->setDescription('Run development web server locally'); + } + + protected function execute(InputInterface $input, OutputInterface $output) : void + { + $io = new SymfonyStyle($input, $output); + $io->title('SELAMI DEVELOPMENT SERVER'); + $io->section('Clearing previously generated cache files.'); + $command = $this->getApplication()->find('cache:clear-all'); + $command->run(new ArrayInput(['command'=> 'cache:clear-all']), $output); + $output->writeln(' '); + $io->section('Starting Selami local development web server.'); + $hostName = $input->getOption('host'); + $port = $input->getOption('port'); + $publicFolder = $input->getOption('public'); + $output->writeln( + sprintf( + " Host: %s\n Port: %s\n Public Folder: %s", + $hostName, + $port, + $publicFolder + ) + ); + $output->writeln(' '); + $io->success(' Development server started. You can stop web server anytime by pressing Ctrl+C on keyboard.'); + $process = new Process('php -S ' . $hostName . ':' . $port . ' -t ' . $publicFolder); + $process->setTimeout(null); + $process->run(); + if (!$process->isSuccessful()) { + throw new ProcessFailedException($process); + } + $output->writeln($process->getOutput()); + } +} diff --git a/src/Infrastructure/Ui/Console/config.php b/src/Infrastructure/Ui/Console/config.php new file mode 100644 index 0000000..4e141c4 --- /dev/null +++ b/src/Infrastructure/Ui/Console/config.php @@ -0,0 +1,18 @@ +load(); +$config = []; +foreach (Glob::glob ( + './config/autoload/{console/{,*.}global,console/{,*.}local,{,*.}global,{,*.}local}.php', + Glob::GLOB_BRACE + ) as $file) { + $config = ArrayUtils::merge($config, include $file); +} + +return $config; diff --git a/src/Infrastructure/Ui/Console/console.php b/src/Infrastructure/Ui/Console/console.php new file mode 100644 index 0000000..29c692e --- /dev/null +++ b/src/Infrastructure/Ui/Console/console.php @@ -0,0 +1,17 @@ +setService(Config::class, new Config($config)); +$container->setService( + 'commands', $config['commands'] +); +$cli = ApplicationFactory::makeApplication($container); +$cli->run(); \ No newline at end of file diff --git a/src/Infrastructure/Ui/Factory/RouterFactory.php b/src/Infrastructure/Ui/Factory/RouterFactory.php new file mode 100644 index 0000000..060c41b --- /dev/null +++ b/src/Infrastructure/Ui/Factory/RouterFactory.php @@ -0,0 +1,22 @@ +get(ServerRequestInterface::class); + return Router::createWithServerRequestInterface( + Router::HTML, + $request + ); + + } +} diff --git a/src/Infrastructure/Ui/Factory/SelamiViewTwigFactory.php b/src/Infrastructure/Ui/Factory/SelamiViewTwigFactory.php new file mode 100644 index 0000000..a59ac8e --- /dev/null +++ b/src/Infrastructure/Ui/Factory/SelamiViewTwigFactory.php @@ -0,0 +1,42 @@ +get(Config::class); + $viewConfig = $container->get('view-config')->toArray(); + $request = $container->get(ServerRequestInterface::class); + if ($config->get('app')->get('view_cache_enabled', false) === true) { + $viewConfig['cache'] = './cache/view'; + } + $viewConfig['runtime']['QueryParameters'] = self::getParams($request); + $viewConfig['runtime']['BaseUrl'] = $config['app']['base_url']; + $viewConfig['runtime']['base_url'] = $config['app']['base_url']; // To keep BC + $viewConfig['runtime']['RuntimeConfig'] = $config; + $viewConfig['runtime']['Request'] = $request; + $twig = $container->get(Twig_Environment::class); + return new SelamiTwig($twig, $viewConfig); + } + + public static function getParams(ServerRequestInterface $request) : array + { + $params = $request->getQueryParams(); + $postParams = $request->getParsedBody(); + if ($postParams) { + $params = array_merge($params, (array)$postParams); + } + return $params; + } +} diff --git a/src/Infrastructure/Ui/Factory/ServerRequestFactory.php b/src/Infrastructure/Ui/Factory/ServerRequestFactory.php new file mode 100644 index 0000000..d7c07a0 --- /dev/null +++ b/src/Infrastructure/Ui/Factory/ServerRequestFactory.php @@ -0,0 +1,17 @@ +get(Config::class); + $twigConfig = $container->get('view-config')->toArray(); + + if ($config->get('app')->get('config_cache_enabled') === true) { + $twigConfig['cache'] = $config->get('app')->get('cache_dir').'/view'; + } + $loader = new FilesystemLoader($twigConfig['templates_path']); + return new Environment($loader, $twigConfig); + } +} diff --git a/src/Infrastructure/Ui/Views/Application/_default.twig b/src/Infrastructure/Ui/Views/Application/_default.twig new file mode 100644 index 0000000..5bcd7da --- /dev/null +++ b/src/Infrastructure/Ui/Views/Application/_default.twig @@ -0,0 +1,60 @@ + + + + + Selami + + + + + + + +
+

+

Selami

+

Yet another no-framework framework!

+

+ {% block content %}{% endblock %} +

+
+ + + + + + + diff --git a/src/Infrastructure/Ui/Views/Application/contents/camel_case.twig b/src/Infrastructure/Ui/Views/Application/contents/camel_case.twig new file mode 100644 index 0000000..0221de4 --- /dev/null +++ b/src/Infrastructure/Ui/Views/Application/contents/camel_case.twig @@ -0,0 +1,4 @@ +{% extends '_default.twig' %} +{% block content %} + {{ t }} +{% endblock %} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Application/contents/category.twig b/src/Infrastructure/Ui/Views/Application/contents/category.twig new file mode 100644 index 0000000..e5a66b5 --- /dev/null +++ b/src/Infrastructure/Ui/Views/Application/contents/category.twig @@ -0,0 +1,7 @@ +{% extends '_default.twig' %} +{% block content %} +

{{ t }}

+

Router pattern: /category/{category}

+

uriParameter is : {{ uriParameter }}

+ +{% endblock %} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Application/contents/custom.twig b/src/Infrastructure/Ui/Views/Application/contents/custom.twig new file mode 100644 index 0000000..968ad6d --- /dev/null +++ b/src/Infrastructure/Ui/Views/Application/contents/custom.twig @@ -0,0 +1,4 @@ +{{ t }} id,first name, last name, age +1,john,doe,20 +2,jane,doe,20 +3,{{ name }},{{ last_name }},{{ age }} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Application/contents/main.twig b/src/Infrastructure/Ui/Views/Application/contents/main.twig new file mode 100644 index 0000000..b617303 --- /dev/null +++ b/src/Infrastructure/Ui/Views/Application/contents/main.twig @@ -0,0 +1,5 @@ +{% extends '_default.twig' %} +{% block content %} + {{ t }} +

Authorization: {{ auth }}

+{% endblock %} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Application/contents/redirected.twig b/src/Infrastructure/Ui/Views/Application/contents/redirected.twig new file mode 100644 index 0000000..1f524ba --- /dev/null +++ b/src/Infrastructure/Ui/Views/Application/contents/redirected.twig @@ -0,0 +1,5 @@ +{% extends '_default.twig' %} +{% block content %} +

{{ t }}

+

Referer: {{ referer }}

+{% endblock %} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Application/contents/text.twig b/src/Infrastructure/Ui/Views/Application/contents/text.twig new file mode 100644 index 0000000..5446165 --- /dev/null +++ b/src/Infrastructure/Ui/Views/Application/contents/text.twig @@ -0,0 +1,2 @@ +---------- PLAIN TEXT FILE ------------- +Data[t]: {{ t }} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Application/error_handler.twig b/src/Infrastructure/Ui/Views/Application/error_handler.twig new file mode 100644 index 0000000..745d200 --- /dev/null +++ b/src/Infrastructure/Ui/Views/Application/error_handler.twig @@ -0,0 +1,5 @@ +{% extends '_default.twig' %} +{% block content %} +

{{ status }}

+

{{ message }}

+{% endblock %} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Authentication/_default.twig b/src/Infrastructure/Ui/Views/Authentication/_default.twig new file mode 100644 index 0000000..4612452 --- /dev/null +++ b/src/Infrastructure/Ui/Views/Authentication/_default.twig @@ -0,0 +1,60 @@ + + + + + Selami + + + + + + + +
+

+

Selami

+

Yet another no-framework framework!

+

+ {% block content %}{% endblock %} +

+
+ + + + + + + diff --git a/src/Infrastructure/Ui/Views/Authentication/contents/camel_case.twig b/src/Infrastructure/Ui/Views/Authentication/contents/camel_case.twig new file mode 100644 index 0000000..0221de4 --- /dev/null +++ b/src/Infrastructure/Ui/Views/Authentication/contents/camel_case.twig @@ -0,0 +1,4 @@ +{% extends '_default.twig' %} +{% block content %} + {{ t }} +{% endblock %} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Authentication/contents/category.twig b/src/Infrastructure/Ui/Views/Authentication/contents/category.twig new file mode 100644 index 0000000..e5a66b5 --- /dev/null +++ b/src/Infrastructure/Ui/Views/Authentication/contents/category.twig @@ -0,0 +1,7 @@ +{% extends '_default.twig' %} +{% block content %} +

{{ t }}

+

Router pattern: /category/{category}

+

uriParameter is : {{ uriParameter }}

+ +{% endblock %} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Authentication/contents/custom.twig b/src/Infrastructure/Ui/Views/Authentication/contents/custom.twig new file mode 100644 index 0000000..968ad6d --- /dev/null +++ b/src/Infrastructure/Ui/Views/Authentication/contents/custom.twig @@ -0,0 +1,4 @@ +{{ t }} id,first name, last name, age +1,john,doe,20 +2,jane,doe,20 +3,{{ name }},{{ last_name }},{{ age }} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Authentication/contents/main.twig b/src/Infrastructure/Ui/Views/Authentication/contents/main.twig new file mode 100644 index 0000000..89d09e7 --- /dev/null +++ b/src/Infrastructure/Ui/Views/Authentication/contents/main.twig @@ -0,0 +1,6 @@ +{% extends '_default.twig' %} +{% block content %} +

Middleware: Authentication

+

{{ t }}

+

Authorization: {{ auth }}

+{% endblock %} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Authentication/contents/redirected.twig b/src/Infrastructure/Ui/Views/Authentication/contents/redirected.twig new file mode 100644 index 0000000..1f524ba --- /dev/null +++ b/src/Infrastructure/Ui/Views/Authentication/contents/redirected.twig @@ -0,0 +1,5 @@ +{% extends '_default.twig' %} +{% block content %} +

{{ t }}

+

Referer: {{ referer }}

+{% endblock %} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Authentication/contents/text.twig b/src/Infrastructure/Ui/Views/Authentication/contents/text.twig new file mode 100644 index 0000000..5446165 --- /dev/null +++ b/src/Infrastructure/Ui/Views/Authentication/contents/text.twig @@ -0,0 +1,2 @@ +---------- PLAIN TEXT FILE ------------- +Data[t]: {{ t }} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Views/Authentication/error_handler.twig b/src/Infrastructure/Ui/Views/Authentication/error_handler.twig new file mode 100644 index 0000000..745d200 --- /dev/null +++ b/src/Infrastructure/Ui/Views/Authentication/error_handler.twig @@ -0,0 +1,5 @@ +{% extends '_default.twig' %} +{% block content %} +

{{ status }}

+

{{ message }}

+{% endblock %} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Application.php b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Application.php new file mode 100644 index 0000000..5943263 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Application.php @@ -0,0 +1,25 @@ + self::class + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Category.php b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Category.php new file mode 100644 index 0000000..6a742c6 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Category.php @@ -0,0 +1,22 @@ + self::class, + 'uriParameter' => $this->uriParameters['category'] + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/ContentsController.php b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/ContentsController.php new file mode 100644 index 0000000..a7d4533 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/ContentsController.php @@ -0,0 +1,24 @@ +request = $request; + $this->uriParameters = $uriParameters; + $this->config = $config; + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Custom.php b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Custom.php new file mode 100644 index 0000000..b586402 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Custom.php @@ -0,0 +1,28 @@ + 'Custom', + 'name' => 'Mırmır', + 'last_name' => 'Kedigil', + 'age' => 10 + ], + [], + [ + 'Content-Type' => 'text/csv', + 'Content-Disposition' => 'attachment; filename=custom.csv' + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Download.php b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Download.php new file mode 100644 index 0000000..ef8eb35 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Download.php @@ -0,0 +1,19 @@ + self::class, + 'auth' => json_encode($this->request->getAttributes()) + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Post.php b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Post.php new file mode 100644 index 0000000..7aff974 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Post.php @@ -0,0 +1,24 @@ + self::class, + 'uri-parameters' => $this->uriParameters, + 'session-count-value' => $count, + 'data' => $this->request->getAttributes() + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Redirect.php b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Redirect.php new file mode 100644 index 0000000..e37205e --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Redirect.php @@ -0,0 +1,15 @@ + self::class, + 'referer' => $this->request->getServerParams()['HTTP_REFERER'] + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Text.php b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Text.php new file mode 100644 index 0000000..6d685a8 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Application/Controller/Contents/Text.php @@ -0,0 +1,20 @@ + self::class + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Application/Middleware.php b/src/Infrastructure/Ui/Web/Middleware/Application/Middleware.php new file mode 100644 index 0000000..72b302e --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Application/Middleware.php @@ -0,0 +1,12 @@ + true, // disable on production + 'strict_variables' => true, // disable on production + 'autoescape' => 'html', + 'auto_reload' => true, // disable on production + 'optimizations' => -1 // change to -1 on production +]; + +if(getenv('SELAMI_ENVIRONMENT') === 'prod') { + $twigConfig = [ + 'debug' => false, // disable on production + 'strict_variables' => false, // disable on production + 'autoescape' => 'html', + 'auto_reload' => false, // disable on production + 'optimizations' => -1 // change to -1 on production + ]; +} + + +return [ + 'app' => [ + 'http-error-handler' => Web\Middleware\ErrorHandler::class, + ], + 'routes' => [ + 'middleware-main-application' =>[ + [Router::GET, '/', Web\Application\Controller\Contents\Main::class, Router::HTML, 'home'], + [Router::GET, '/category/{category}', Web\Application\Controller\Contents\Category::class, Router::HTML, 'category'], + [Router::GET, '/{year}/{month}/{slug}', Web\Application\Controller\Contents\Post::class, Router::JSON, 'post'], + [Router::GET, '/download', Web\Application\Controller\Contents\Download::class, Router::DOWNLOAD], + [Router::GET, '/text', Web\Application\Controller\Contents\Text::class, Router::TEXT], + [Router::GET, '/custom', Web\Application\Controller\Contents\Custom::class, Router::CUSTOM], + [Router::GET, '/redirect', Web\Application\Controller\Contents\Redirect::class, Router::REDIRECT], + [Router::GET, '/redirected', Web\Application\Controller\Contents\Redirected::class, Router::HTML], + [Router::POST, '/405', Web\Application\Controller\Contents\NotFound::class, Router::JSON] + ] + ], + 'view' => [ + 'type' => 'twig', + 'templates_path' => './src/Infrastructure/Ui/Views/Application', + 'template_file_extension' => 'twig' + ] +]; diff --git a/src/Infrastructure/Ui/Web/Middleware/ApplicationMiddlewareAbstract.php b/src/Infrastructure/Ui/Web/Middleware/ApplicationMiddlewareAbstract.php new file mode 100644 index 0000000..89be49d --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/ApplicationMiddlewareAbstract.php @@ -0,0 +1,46 @@ +container = $container; + $config = require static::$middlewarePath . '/' . static::$id . '-config.php'; + $this->config = new Config($config); + } + + public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface + { + $this->container->setService('view-config', $this->config->get('view')); + $config = $this->config->merge($this->container->get(Config::class)); + $router = Router::createWithServerRequestInterface( + Router::HTML, + $request + ); + $selamiApp = new Application( + static::$id, + $this->container, + $router, + $config + ); + return $selamiApp($request, new Response()); + } +} \ No newline at end of file diff --git a/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Application.php b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Application.php new file mode 100644 index 0000000..abe2bd0 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Application.php @@ -0,0 +1,25 @@ + self::class + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Category.php b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Category.php new file mode 100644 index 0000000..3764f7d --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Category.php @@ -0,0 +1,22 @@ + self::class, + 'uriParameter' => $this->uriParameters['category'] + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/ContentsController.php b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/ContentsController.php new file mode 100644 index 0000000..9055ff9 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/ContentsController.php @@ -0,0 +1,24 @@ +request = $request; + $this->uriParameters = $uriParameters; + $this->config = $config; + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Custom.php b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Custom.php new file mode 100644 index 0000000..0b32ec7 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Custom.php @@ -0,0 +1,28 @@ + 'Custom', + 'name' => 'Mırmır', + 'last_name' => 'Kedigil', + 'age' => 10 + ], + [], + [ + 'Content-Type' => 'text/csv', + 'Content-Disposition' => 'attachment; filename=custom.csv' + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Download.php b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Download.php new file mode 100644 index 0000000..fc276cd --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Download.php @@ -0,0 +1,19 @@ + self::class, + 'auth' => json_encode($this->request->getAttributes()) + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Post.php b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Post.php new file mode 100644 index 0000000..4000fe3 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Post.php @@ -0,0 +1,24 @@ + self::class, + 'uri-parameters' => $this->uriParameters, + 'session-count-value' => $count, + 'data' => $this->request->getAttributes() + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Redirect.php b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Redirect.php new file mode 100644 index 0000000..bc1c55c --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Redirect.php @@ -0,0 +1,15 @@ + self::class, + 'referer' => $this->request->getServerParams()['HTTP_REFERER'] + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Text.php b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Text.php new file mode 100644 index 0000000..a754a97 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Authentication/Controller/Contents/Text.php @@ -0,0 +1,20 @@ + self::class + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/Middleware/Authentication/Middleware.php b/src/Infrastructure/Ui/Web/Middleware/Authentication/Middleware.php new file mode 100644 index 0000000..cf7106d --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/Authentication/Middleware.php @@ -0,0 +1,12 @@ + true, // disable on production + 'strict_variables' => true, // disable on production + 'autoescape' => 'html', + 'auto_reload' => true, // disable on production + 'optimizations' => -1 // change to -1 on production +]; + +if(getenv('SELAMI_ENVIRONMENT') === 'prod') { + $twigConfig = [ + 'debug' => false, // disable on production + 'strict_variables' => false, // disable on production + 'autoescape' => 'html', + 'auto_reload' => false, // disable on production + 'optimizations' => -1 // change to -1 on production + ]; +} + + +return [ + 'app' => [ + 'http-error-handler' => Web\Middleware\ErrorHandler::class, + ], + 'routes' => [ + 'middleware-authentication' =>[ + [Router::GET, '', Web\Authentication\Controller\Contents\Main::class, Router::HTML, 'home'], + [Router::GET, '/', Web\Authentication\Controller\Contents\Main::class, Router::HTML, 'home'], + [Router::GET, '/category/{category}', Web\Authentication\Controller\Contents\Category::class, Router::HTML, 'category'], + [Router::GET, '/{year}/{month}/{slug}', Web\Authentication\Controller\Contents\Post::class, Router::JSON, 'post'], + [Router::GET, '/download', Web\Authentication\Controller\Contents\Download::class, Router::DOWNLOAD], + [Router::GET, '/text', Web\Authentication\Controller\Contents\Text::class, Router::TEXT], + [Router::GET, '/custom', Web\Authentication\Controller\Contents\Custom::class, Router::CUSTOM], + [Router::GET, '/redirect', Web\Authentication\Controller\Contents\Redirect::class, Router::REDIRECT], + [Router::GET, '/redirected', Web\Authentication\Controller\Contents\Redirected::class, Router::HTML], + [Router::POST, '/405', Web\Authentication\Controller\Contents\NotFound::class, Router::JSON] + ] + ], + 'view' => [ + 'type' => 'twig', + 'templates_path' => './src/Infrastructure/Ui/Views/Authentication', + 'template_file_extension' => 'twig' + ] +]; diff --git a/src/Infrastructure/Ui/Web/Middleware/ErrorHandler.php b/src/Infrastructure/Ui/Web/Middleware/ErrorHandler.php new file mode 100644 index 0000000..5b112b7 --- /dev/null +++ b/src/Infrastructure/Ui/Web/Middleware/ErrorHandler.php @@ -0,0 +1,33 @@ +status = $status; + $this->message = $message; + } + + public function __invoke(): ControllerResponse + { + return ControllerResponse::HTML( + $this->status, + [ + 'status' => $this->status, + 'message' => $this->message, + ], + [ + 'layout' => 'error_handler' + ] + ); + } +} diff --git a/src/Infrastructure/Ui/Web/bootstrap.php b/src/Infrastructure/Ui/Web/bootstrap.php new file mode 100644 index 0000000..faca673 --- /dev/null +++ b/src/Infrastructure/Ui/Web/bootstrap.php @@ -0,0 +1,33 @@ +push(new SapiEmitter()); +$serverRequestFactory = function() use ($container) { + return $container->get(ServerRequestInterface::class); +}; +$errorResponseGenerator = function (Throwable $e) { + $generator = new ErrorResponseGenerator(); + return $generator($e, new ServerRequest(), new Response()); +}; +$runner = new RequestHandlerRunner( + $application, + $stack, + $serverRequestFactory, + $errorResponseGenerator +); + +$runner->run(); diff --git a/src/Infrastructure/Ui/Web/config.php b/src/Infrastructure/Ui/Web/config.php new file mode 100644 index 0000000..46b0337 --- /dev/null +++ b/src/Infrastructure/Ui/Web/config.php @@ -0,0 +1,29 @@ +load(); +foreach (Glob::glob('./config/autoload/{{,*.}global,{,*.}local,web/{,*.}global,web/{,*.}local}.php', Glob::GLOB_BRACE) as $file) { + $config = ArrayUtils::merge($config, include $file); +} +if ((array_key_exists('config_cache_enabled', $config['app']) && $config['app']['config_cache_enabled'] === true) + || + (isset($config['app']['environment']) && $config['app']['environment'] === 'prod') +) { + file_put_contents( + $cachedConfigFile, + 'setService(Config::class, new Config($config)); +return $container; diff --git a/src/Infrastructure/Ui/Web/pipeline.php b/src/Infrastructure/Ui/Web/pipeline.php new file mode 100644 index 0000000..1baab74 --- /dev/null +++ b/src/Infrastructure/Ui/Web/pipeline.php @@ -0,0 +1,37 @@ +pipe(new Middlewares\Whoops()); +} + +$app->pipe(new CallableMiddlewareDecorator(function (ServerRequestInterface $request, RequestHandlerInterface $handler) { + $request = $request->withAttribute('session', ['data' => ['key' => 'value']]); + return $handler->handle($request)->withHeader('X-Session', 'x-value'); +})); + +$app->pipe(new CallableMiddlewareDecorator(function (ServerRequestInterface $request, RequestHandlerInterface $handler) { + $request = $request->withAttribute('cookie', ['data' => ['key' => 'value']]); + return $handler->handle($request)->withHeader('Y-Session', 'y-value');; +})); + +$app->pipe(new CallableMiddlewareDecorator(function (ServerRequestInterface $request, RequestHandlerInterface $handler) { + $request = $request->withAttribute('authorization', 'passed'); + return $handler->handle($request); +})); + +$app->pipe(path('/auth', new Web\Middleware\Authentication\Middleware($container))); + +$app->pipe(new Web\Middleware\Application\Middleware($container)); + + +return $app; \ No newline at end of file diff --git a/src/Infrastructure/Ui/Web/public/index.php b/src/Infrastructure/Ui/Web/public/index.php new file mode 100644 index 0000000..575c382 --- /dev/null +++ b/src/Infrastructure/Ui/Web/public/index.php @@ -0,0 +1,6 @@ +000pbNklQ}m(?hqhAR7~)JL~sOoh#-#`83-7XC@hEFS#@@17g^jLW^j28cm_m* zx<_Z0b&;^?zz>mmbqKk0jBngf5%CaU2_rEd(n&op;*v1g9;j_A`O7zy?C+ zA;RzG9o*)cca|MWX8u}8d!fr_Y{=(g!V$s~wK0x) zv1Zqbrc~P`MOrv59&<{b9nVH!EjaDdc#p%HYI~$$JAx4igz9-Ktf}3(@?fg%iAUNA zU0$@Vh-KJyyf^D!Qi6L`uYiGe60fnXo%MppHov<1sph2TpX?0FXI0K8*>2)< z-2IZBcRIkf`Y!_ri>r4m-KM~%$KP@yX-{`FoVD%22>2O61AZ- z9rPjk5`C&ynz{*12SajPqxDKJ(?MUNPxVSqmzNqitSPu1Yr(>${B78E1;>1Ac>dJS zkDsjjOlwk_g~1mT5ay3%>e#i>(6MnFTd4I#h~}!h`z@3yvQeOK(Z^cT(NuNg`((bK zdl9L!wc24Kg_SEP95k_2%lmBARX5HI>Emab`2Ox}wP~2hhi&n; zA5-L{L44g8eXjO?RV5lH^079{N7vgNuXG3Jpz-181T_;5Rh4L*t!av!e9-6Udo}ke z78>VW|Iy=b)HRYqie$eZA2J~~&4;nRR#AJ*;B?ca6j)4RBI3)^Z{Gzoi$_AgzAi=gCeli}L<>Te zqTH_1KgSJ^&A$(drwoTpKd*=5C%;mYj4JTKdz9oo^MO0#3M>Z8GH~xbLuu)M=Qp3i zueTk5a3pyT>4@Psz(0O>DhwXzRhNJuNUpq;Y@->CJM?2!xqf9Ce0$oRT9T2?fc|}; za!m!46pv6Oa!;_@#9HYYVt0X&<2!RFz@-*Hym#PaqGV;0<*>r4AI_4jW-+?{&AwysyQ5#wD7!Nd0+-Vc zLvGB0v7_?g!6}6#61T^_ci;dI{FtP_YJCj^LlNEVE}Arq28&W)4`%QCC*b!d&V#R` zD?y6VT1nOy6~*ggvBBAjW_@Bn^H1L|0;kg!_j`=OpWe6~j-9xmB-yxNb+_^dB{Z@Y zWB*4d;nn}zPr6ef(QB~F^~B>-VZs>kZ9}m8wc)4ll3t9U$!6rvVR`TqQd3w&HZ;EC z55h~Y?13Zy_l4{qk3lpys~8FTef~gdL8o86Uc?HY}pSrJH>ZuoIU+6nDyXD zrKbJ~d{BP;!xH-Y<8kS-AC|AJf-ldvsYzZ^E9veP%cyRYzH0WtvoG$Xr6nGDgR)`8 zKhLE7UZsq_YY6NrwRk!m zpos^z|L89)(P~Jfm2~$CAihd6IeDg;v^90Kw8R4gH>}2#l8-rcH81{;?za> z_g~b@F3Hz|_x<$MJ@EPIi*dilxM10nGhpgO@h0P1FkX53sfXb15jTnCDZopc_rO_F z6RIVVR?=~bmEvyC zB9RykSZ*NyHs!wC;mPk6(b6n7;uRp`uBqG(7cX^aHJ5@_DZZSUJmGda27N7P1`bfk+@}A9bEJ=~Cs-R*{%jYlSvs4xvGKqt z8prk3fDh7tytYq^iQkYwE9qcNfF^yc=&lYcfA%gM`dGIlDJb&uL}YZD5q#G8M;auB zMS@DT;2;P-M7q7s6_~S9UrPsLoY0_;72R}~yj`@q(u0mGUGVgC+u`8HlD|I9_rGf5|rbmT?aS*%1E(STv5f_W(zh4mC8lfz(_w_|PlTdE#AR7= z@{?Vny9-JRh*LlL-mdZ$-b`9U^HGa zYqaPn+O=TG-SggYcMaEWz{EqhmSVV(rgs$rH*~oyH-q`!n7Oej*555YmBS?Ia4r5Xs@`3eFXvj>(}b94tX8!} zCWfFy6WKzCnb=Eghn{10CR#u(VjT0L?Ca%T`1bDAXCV-(S7(-q?hq|%cCBcVd%2<+ zp1c*-u$`gwSUs1)pa!UgqI;BFT)T7SLDtu0*wMEp@<0tx3q|)R&4d^D)r>!6cC}Ij z`W`hbP-mC$%f z3)>ldOU=C|>Or5YIU$GMt2Wb)Y;Gaj;%`@bzlk!?*XVP#_p3f@@XWEgP~ng%0kBzS znnxBI3loe0d!_4NcI;TSUv(N#O#xQhWqbPc$EdB6w`` z>Cv|)hJe0BA8SrWYXaTp8Vie=P{bTD)0u9c3X8R#9gXPHxZ;WBg*Q*j7o0X@_O8fK zIA7Om)jOB3*CQ?6&am?2<}PAeJ3rPdy-Wvvi9XdUJzY0+oweZQp*DYD5AV&&*E8Kr zgY|Vah272vcD%mmjBaV_l@Nl432v^O7^>Uiyi5aqhd$I(WSXv?i6J$wFFDFsm@>9K zplW}HOa^_1zC$1Cowi|nahI09FqspC8a~^Za6eI#ZjoaQQ?`BkQq_YZlIa_fD1rtv zR<^{f#uI}+LSGprGR?!NgpsPM9~~g=%?u1KjLfGugT6r@p|6b0Cn?7$&}iJ(`6i#^ z)NMb+>jAbka3t(?&C@&Zikp|w86fyWyaW1A;x7AtX^xa|z9m}^SGvAb)fKy)nd@j=w-pc2=rU@BxBsG22*xFf- zFDUdFyH=ckvNP;SMbWw^1-or6-`|~`N;`~(ZSl7;q43jHdsqKks%%L4nO4PfE4`lf z*k<14ctq(2v*`}b@xtjpI5VVf+j3t@ZAoS3Jt-~OIK~-oZR}D5PRYgD znmCb9?Hn(?Njry@7p*H|8Fn4-&AOL&*^|;M&9DT<1!hgD=3mh+6w(OWivM9b1`9wVBzMF5|H#=GCLQUuLiYrBIK=al z@n~Io>M9<{$@2rdkMR>6L?r9gbD^x?oF+qetdHQ%_2glR;E;yEK^xsAS76RE7H9~0 zY#%s-gBzuG4a$bcSFGogtV)X9%Xy8G