├── .gitignore ├── README.md ├── Vagrantfile ├── composer.json ├── composer.lock ├── provision.yml ├── weight.php └── weight.png /.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | .vagrant/ 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Lightweight PHP 2 | =============== 3 | 4 | ![Lightweight PHP](weight.png) 5 | 6 | List of lightweight PHP libraries. 7 | 8 | - [Frameworks](#frameworks) 9 | - [Dependency Injection](#dependency-injection) 10 | - [Events](#events) 11 | - [Routing](#routing) 12 | - [Templating](#templating) 13 | - [HTTP](#http) 14 | - [Middleware](#middleware) 15 | - [Log](#log) 16 | - [Validation and Filtering](#validation-and-filtering) 17 | - [Graphics](#graphics) 18 | 19 | ## Frameworks 20 | 21 | * [Lime](https://github.com/aheinze/Lime) - Micro framework for quickly creating web applications with minimal effort 22 | 23 | ## Database 24 | 25 | * [Medoo](https://github.com/catfan/Medoo) - The Lightest PHP database framework to accelerate development 26 | * [bephp/activerecord](https://github.com/bephp/activerecord) - Micro activerecord library in PHP 27 | * [MongoLite](https://github.com/agentejo/mongo-lite) - Schemaless database on top of SqLite 28 | 29 | ## Dependency Injection 30 | 31 | * [Pimple](https://github.com/fabpot/Pimple) - A small PHP 5.3 dependency injection container 32 | * [Auryn](https://github.com/rdlowrey/Auryn) - IoC dependency injector 33 | * [Orno\Di](https://github.com/orno/di) - A fast and powerful dependency injection container 34 | * [Containers](https://github.com/chevronphp/containers) - An implementation of the registry pattern 35 | * [Dice](https://github.com/Level-2/Dice) - A minimalist Dependency injection container (DIC) for PHP 36 | 37 | ## Events 38 | 39 | * [Événement](https://github.com/igorw/evenement) - Very simple event dispatching library 40 | * [Sabre Event](https://github.com/fruux/sabre-event) - A library for lightweight event-based programming 41 | 42 | ## Routing 43 | 44 | * [FastRoute](https://github.com/nikic/FastRoute) - Fast request router for PHP 45 | * [Walkway](https://github.com/mindplay-dk/walkway) - Elegant, modular router for PHP 46 | * [Aura.Router](https://github.com/auraphp/Aura.Router) - A web router implementation for PHP 47 | * [bephp/router](https://github.com/bephp/router) - A barebones router for PHP 48 | 49 | ## Templating 50 | 51 | * [php-view](https://github.com/rkrx/php-view) - More secure and easy to use templating system for php5.4+ 52 | * [date-formatter](https://github.com/indieweb/date-formatter-php) - Render dates and date ranges in a human-readable format 53 | * [parsedown](https://github.com/erusev/parsedown) - Better Markdown Parser in PHP 54 | 55 | ## HTTP 56 | 57 | * [Httpful](https://github.com/nategood/httpful) - A chainable, REST friendly, PHP HTTP client 58 | * [Negotiation](https://github.com/willdurand/Negotiation) - Content negotiation tools for PHP 59 | * [HTTPlug](https://github.com/php-http/httplug) - HTTP client abstraction for PHP 60 | * [Unirest](https://github.com/Mashape/unirest-php) - Simplified, lightweight HTTP client library 61 | * [Httpstatus](https://github.com/lukasoppermann/http-status) - A minimal package for working with HTTP statuses 62 | * [HttpMessage](https://github.com/kambo-1st/HttpMessage) - Just another PHP implementation of PSR-7 63 | * [p3k-http](https://github.com/aaronpk/p3k-http) - A simple wrapper API around the PHP curl functions 64 | 65 | ## Middleware 66 | 67 | * [Tari-PHP](https://github.com/ircmaxell/Tari-PHP) - A middleware proposal for PHP 68 | * [Relay](https://github.com/relayphp/Relay.Relay) - A PSR-7 middleware dispatcher 69 | * [Sirius](https://github.com/siriusphp/middleware) - Lightweight middleware implementation 70 | 71 | ## Log 72 | 73 | * [APIx Log](https://github.com/frqnck/apix-log) - A thin (and fast) PSR-3 logger 74 | 75 | ## Validation and Filtering 76 | 77 | * [Valitron](https://github.com/vlucas/valitron) - A simple, elegant, stand-alone validation library 78 | * [Filterus](https://github.com/ircmaxell/filterus) - A simple filtering library for PHP 79 | * [Plan](https://github.com/guide42/plan) - Fast and simple validation for PHP 80 | 81 | ## Graphics 82 | 83 | * [PieChart](https://github.com/SamChristy/PieChart) - A simple class for drawing pie charts 84 | * [Zebra_Image](https://github.com/stefangabos/Zebra_Image) - A compact and lightweight library for image manipulation 85 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby sw=2 ts=2 : 3 | 4 | Vagrant.configure("2") do |config| 5 | config.vm.box = "ubuntu/xenial64" 6 | 7 | config.vm.define "lightweight-php" do |vm| 8 | vm.vm.hostname = "lightweight-php" 9 | vm.vm.network "private_network", ip: "192.168.23.23" 10 | end 11 | 12 | config.vm.provider "virtualbox" do |v| 13 | v.memory = 768 14 | end 15 | 16 | config.vm.provision "ansible" do |ansible| 17 | ansible.playbook = "provision.yml" 18 | ansible.extra_vars = { ansible_ssh_user: "vagrant", ansible_become: "yes" } 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "minimum-stability": "dev", 3 | "require": { 4 | "lime/lime": "dev-master", 5 | "catfan/medoo": "dev-master", 6 | "bephp/activerecord": "dev-master", 7 | "agentejo/mongo-lite": "dev-master", 8 | "pimple/pimple": "dev-master", 9 | "rdlowrey/auryn": "dev-master", 10 | "chevron/containers": "dev-master", 11 | "level-2/dice": "dev-master", 12 | "evenement/evenement": "dev-master", 13 | "sabre/event": "dev-master", 14 | "nikic/fast-route": "dev-master", 15 | "mindplay/walkway": "dev-master", 16 | "aura/router": "3.x-dev", 17 | "bephp/router": "dev-master", 18 | "rkr/view": "dev-master", 19 | "indieweb/date-formatter": "dev-master", 20 | "erusev/parsedown": "dev-master", 21 | "nategood/httpful": "dev-master", 22 | "willdurand/negotiation": "dev-master", 23 | "php-http/httplug": "dev-master", 24 | "mashape/unirest-php": "dev-master", 25 | "lukasoppermann/http-status": "dev-master", 26 | "kambo/httpmessage": "dev-master", 27 | "p3k/http": "dev-master", 28 | "ircmaxell/tari-php": "dev-master", 29 | "relay/relay": "2.x-dev", 30 | "siriusphp/middleware": "dev-master", 31 | "apix/log": "dev-master", 32 | "vlucas/valitron": "dev-master", 33 | "ircmaxell/filterus": "dev-master", 34 | "guide42/plan": "dev-master", 35 | "samchristy/piechart": "dev-master", 36 | "stefangabos/zebra_image": "dev-master" 37 | }, 38 | "require-dev": { 39 | "phploc/phploc": "*" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "779dcada3b86708e468220be18e9fc85", 8 | "packages": [ 9 | { 10 | "name": "agentejo/mongo-lite", 11 | "version": "dev-master", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/agentejo/mongo-lite.git", 15 | "reference": "917039685a1ef5d2777e03a118947a4d2a9d4616" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/agentejo/mongo-lite/zipball/917039685a1ef5d2777e03a118947a4d2a9d4616", 20 | "reference": "917039685a1ef5d2777e03a118947a4d2a9d4616", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": ">=5.4.2" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "3.7.*" 28 | }, 29 | "type": "library", 30 | "autoload": { 31 | "psr-0": { 32 | "MongoLite": "src/" 33 | } 34 | }, 35 | "notification-url": "https://packagist.org/downloads/", 36 | "license": [ 37 | "MIT" 38 | ], 39 | "authors": [ 40 | { 41 | "name": "Artur Heinze", 42 | "email": "artur@agentejo.com", 43 | "homepage": "http://agentejo.com" 44 | } 45 | ], 46 | "description": "Schemaless database on top of SqLite", 47 | "homepage": "https://github.com/aheinze/MongoLite", 48 | "keywords": [ 49 | "database", 50 | "no-sql", 51 | "pdo", 52 | "schemaless", 53 | "sqlite" 54 | ], 55 | "time": "2019-10-29T23:33:12+00:00" 56 | }, 57 | { 58 | "name": "apix/log", 59 | "version": "dev-master", 60 | "source": { 61 | "type": "git", 62 | "url": "https://github.com/apix/log.git", 63 | "reference": "d94aaefcc6e900535317b25e213fa59a0a555215" 64 | }, 65 | "dist": { 66 | "type": "zip", 67 | "url": "https://api.github.com/repos/apix/log/zipball/d94aaefcc6e900535317b25e213fa59a0a555215", 68 | "reference": "d94aaefcc6e900535317b25e213fa59a0a555215", 69 | "shasum": "" 70 | }, 71 | "require": { 72 | "php": ">=5.3", 73 | "psr/log": "~1.0" 74 | }, 75 | "provide": { 76 | "psr/log-implementation": "^1.0" 77 | }, 78 | "require-dev": { 79 | "phpunit/phpunit": "^4.0|^5.0", 80 | "satooshi/php-coveralls": "~0.7.1" 81 | }, 82 | "suggest": { 83 | "PHPMailer/apix-log-phpmailer": "Allow sending log messages via PHPMailer", 84 | "apix/log-tracker": "Allow sending log messages to logger/tracker such as Google Analytics, Dashbot, etc.", 85 | "jspalink/apix-log-pushover": "Allow sending log messages via Pushover" 86 | }, 87 | "type": "library", 88 | "autoload": { 89 | "psr-4": { 90 | "Apix\\Log\\": "src/" 91 | } 92 | }, 93 | "notification-url": "https://packagist.org/downloads/", 94 | "license": [ 95 | "BSD-3-Clause" 96 | ], 97 | "authors": [ 98 | { 99 | "name": "Franck Cassedanne", 100 | "email": "franck@ouarz.net" 101 | }, 102 | { 103 | "name": "Apix Log Community", 104 | "homepage": "https://github.com/apix/log/contributors" 105 | } 106 | ], 107 | "description": "Minimalist, thin and fast PSR-3 compliant (multi-bucket) logger.", 108 | "homepage": "https://github.com/frqnck/apix-log", 109 | "keywords": [ 110 | "apix", 111 | "log", 112 | "logger", 113 | "logging", 114 | "psr", 115 | "psr-3", 116 | "psr-log", 117 | "tracker", 118 | "tracking" 119 | ], 120 | "time": "2019-10-31T22:43:30+00:00" 121 | }, 122 | { 123 | "name": "aura/router", 124 | "version": "3.x-dev", 125 | "source": { 126 | "type": "git", 127 | "url": "https://github.com/auraphp/Aura.Router.git", 128 | "reference": "9167a38a8a9e9ec96667d939e3eaa4b2e7bd5333" 129 | }, 130 | "dist": { 131 | "type": "zip", 132 | "url": "https://api.github.com/repos/auraphp/Aura.Router/zipball/9167a38a8a9e9ec96667d939e3eaa4b2e7bd5333", 133 | "reference": "9167a38a8a9e9ec96667d939e3eaa4b2e7bd5333", 134 | "shasum": "" 135 | }, 136 | "require": { 137 | "php": ">=5.5.0", 138 | "psr/http-message": "~1.0", 139 | "psr/log": "~1.0" 140 | }, 141 | "require-dev": { 142 | "phpunit/phpunit": "~5.7 || ~4.8", 143 | "zendframework/zend-diactoros": "~1.0" 144 | }, 145 | "type": "library", 146 | "autoload": { 147 | "psr-4": { 148 | "Aura\\Router\\": "src/" 149 | } 150 | }, 151 | "notification-url": "https://packagist.org/downloads/", 152 | "license": [ 153 | "MIT" 154 | ], 155 | "authors": [ 156 | { 157 | "name": "Aura.Router Contributors", 158 | "homepage": "https://github.com/auraphp/Aura.Router/contributors" 159 | } 160 | ], 161 | "description": "Powerful, flexible web routing for PSR-7 requests.", 162 | "homepage": "https://github.com/auraphp/Aura.Router", 163 | "keywords": [ 164 | "psr-7", 165 | "route", 166 | "router", 167 | "routing" 168 | ], 169 | "time": "2018-11-06T02:14:29+00:00" 170 | }, 171 | { 172 | "name": "bephp/activerecord", 173 | "version": "dev-master", 174 | "source": { 175 | "type": "git", 176 | "url": "https://github.com/bephp/activerecord.git", 177 | "reference": "2a022a65c28f41c20d1c6954903d5e8379d63205" 178 | }, 179 | "dist": { 180 | "type": "zip", 181 | "url": "https://api.github.com/repos/bephp/activerecord/zipball/2a022a65c28f41c20d1c6954903d5e8379d63205", 182 | "reference": "2a022a65c28f41c20d1c6954903d5e8379d63205", 183 | "shasum": "" 184 | }, 185 | "require": { 186 | "php": ">=5.3.0" 187 | }, 188 | "require-dev": { 189 | "phpdocumentor/phpdocumentor": "^2.8", 190 | "phpunit/phpunit": "*", 191 | "satooshi/php-coveralls": "*" 192 | }, 193 | "type": "library", 194 | "autoload": { 195 | "files": [ 196 | "ActiveRecord.php" 197 | ] 198 | }, 199 | "notification-url": "https://packagist.org/downloads/", 200 | "license": [ 201 | "MIT" 202 | ], 203 | "description": "micro activerecord library in PHP(only 400 lines with comments), support chain calls and relations(HAS_ONE, HAS_MANY, BELONGS_TO).", 204 | "homepage": "http://lloydzhou.github.io/activerecord/", 205 | "keywords": [ 206 | "activerecord", 207 | "database", 208 | "micro", 209 | "orm", 210 | "pdo", 211 | "relation" 212 | ], 213 | "time": "2018-03-01T09:46:33+00:00" 214 | }, 215 | { 216 | "name": "bephp/router", 217 | "version": "dev-master", 218 | "source": { 219 | "type": "git", 220 | "url": "https://github.com/bephp/router.git", 221 | "reference": "066d9162b9d33c7bc00b40a758e920a4fe00aaa6" 222 | }, 223 | "dist": { 224 | "type": "zip", 225 | "url": "https://api.github.com/repos/bephp/router/zipball/066d9162b9d33c7bc00b40a758e920a4fe00aaa6", 226 | "reference": "066d9162b9d33c7bc00b40a758e920a4fe00aaa6", 227 | "shasum": "" 228 | }, 229 | "require": { 230 | "php": ">=5.3.0" 231 | }, 232 | "require-dev": { 233 | "bephp/request": "*", 234 | "phpunit/phpunit": "*", 235 | "satooshi/php-coveralls": "*" 236 | }, 237 | "type": "library", 238 | "autoload": { 239 | "files": [ 240 | "crouter.php" 241 | ] 242 | }, 243 | "notification-url": "https://packagist.org/downloads/", 244 | "license": [ 245 | "MIT" 246 | ], 247 | "description": "A fast router for PHP. It matches urls and executes PHP functions. automatic get variable based on handler function parameter list. Suport to compile router callback handlers into plain array source code.", 248 | "homepage": "https://github.com/lloydzhou/router", 249 | "keywords": [ 250 | "fast", 251 | "library", 252 | "micro", 253 | "router" 254 | ], 255 | "time": "2017-05-27T11:13:21+00:00" 256 | }, 257 | { 258 | "name": "catfan/medoo", 259 | "version": "dev-master", 260 | "source": { 261 | "type": "git", 262 | "url": "https://github.com/catfan/Medoo.git", 263 | "reference": "2d675f73e23f63bbaeb9a8aa33318659a3d3c32f" 264 | }, 265 | "dist": { 266 | "type": "zip", 267 | "url": "https://api.github.com/repos/catfan/Medoo/zipball/2d675f73e23f63bbaeb9a8aa33318659a3d3c32f", 268 | "reference": "2d675f73e23f63bbaeb9a8aa33318659a3d3c32f", 269 | "shasum": "" 270 | }, 271 | "require": { 272 | "ext-pdo": "*", 273 | "php": ">=5.4" 274 | }, 275 | "suggest": { 276 | "ext-pdo_dblib": "For MSSQL or Sybase database on Linux/UNIX platform", 277 | "ext-pdo_mysql": "For MySQL or MariaDB database", 278 | "ext-pdo_oci": "For Oracle database", 279 | "ext-pdo_oci8": "For Oracle version 8 database", 280 | "ext-pdo_pqsql": "For PostgreSQL database", 281 | "ext-pdo_sqlite": "For SQLite database", 282 | "ext-pdo_sqlsrv": "For MSSQL database on both Window/Liunx platform" 283 | }, 284 | "type": "framework", 285 | "autoload": { 286 | "psr-4": { 287 | "Medoo\\": "/src" 288 | } 289 | }, 290 | "notification-url": "https://packagist.org/downloads/", 291 | "license": [ 292 | "MIT" 293 | ], 294 | "authors": [ 295 | { 296 | "name": "Angel Lai", 297 | "email": "angel@catfan.me" 298 | } 299 | ], 300 | "description": "The lightweight PHP database framework to accelerate development", 301 | "homepage": "https://medoo.in", 302 | "keywords": [ 303 | "database", 304 | "database library", 305 | "lightweight", 306 | "mariadb", 307 | "mssql", 308 | "mysql", 309 | "oracle", 310 | "php framework", 311 | "postgresql", 312 | "sql", 313 | "sqlite" 314 | ], 315 | "time": "2020-02-11T08:20:42+00:00" 316 | }, 317 | { 318 | "name": "chevron/containers", 319 | "version": "dev-master", 320 | "source": { 321 | "type": "git", 322 | "url": "https://github.com/chevronphp/containers.git", 323 | "reference": "9e80bc0b99eec8f3f892d2c578ee424c4dc30e53" 324 | }, 325 | "dist": { 326 | "type": "zip", 327 | "url": "https://api.github.com/repos/chevronphp/containers/zipball/9e80bc0b99eec8f3f892d2c578ee424c4dc30e53", 328 | "reference": "9e80bc0b99eec8f3f892d2c578ee424c4dc30e53", 329 | "shasum": "" 330 | }, 331 | "require": { 332 | "chevron/objectloader": "~1.0", 333 | "php": ">=5.4.0" 334 | }, 335 | "require-dev": { 336 | "phpunit/phpunit": "~4.0" 337 | }, 338 | "type": "library", 339 | "autoload": { 340 | "psr-4": { 341 | "Chevron\\Containers\\": "src/" 342 | } 343 | }, 344 | "notification-url": "https://packagist.org/downloads/", 345 | "license": [ 346 | "BSD-3-Clause" 347 | ], 348 | "authors": [ 349 | { 350 | "name": "Jon Henderson", 351 | "homepage": "http://github.com/henderjon", 352 | "role": "Developer" 353 | } 354 | ], 355 | "description": "an implementation of the registry pattern for fun and profit", 356 | "homepage": "http://github.com/chevronphp/containers", 357 | "time": "2016-08-09T13:33:57+00:00" 358 | }, 359 | { 360 | "name": "chevron/objectloader", 361 | "version": "v1.3.0", 362 | "source": { 363 | "type": "git", 364 | "url": "https://github.com/chevronphp/objectloader.git", 365 | "reference": "b18ec0ad73cb1b8797a8e27469d1bfad7717e39c" 366 | }, 367 | "dist": { 368 | "type": "zip", 369 | "url": "https://api.github.com/repos/chevronphp/objectloader/zipball/b18ec0ad73cb1b8797a8e27469d1bfad7717e39c", 370 | "reference": "b18ec0ad73cb1b8797a8e27469d1bfad7717e39c", 371 | "shasum": "" 372 | }, 373 | "require": { 374 | "php": ">=5.4.0" 375 | }, 376 | "require-dev": { 377 | "phpunit/phpunit": "~4.0" 378 | }, 379 | "type": "library", 380 | "autoload": { 381 | "psr-4": { 382 | "Chevron\\ObjectLoader\\": "src/" 383 | } 384 | }, 385 | "notification-url": "https://packagist.org/downloads/", 386 | "license": [ 387 | "BSD-3-Clause" 388 | ], 389 | "authors": [ 390 | { 391 | "name": "Jon Henderson", 392 | "homepage": "http://github.com/henderjon", 393 | "role": "Developer" 394 | } 395 | ], 396 | "description": "populate an object by recursively loading files", 397 | "homepage": "http://github.com/chevronphp/objectloader", 398 | "time": "2014-08-31T04:03:27+00:00" 399 | }, 400 | { 401 | "name": "erusev/parsedown", 402 | "version": "dev-master", 403 | "source": { 404 | "type": "git", 405 | "url": "https://github.com/erusev/parsedown.git", 406 | "reference": "1610e4747c88a53676f94f752b447f4eff03c28d" 407 | }, 408 | "dist": { 409 | "type": "zip", 410 | "url": "https://api.github.com/repos/erusev/parsedown/zipball/1610e4747c88a53676f94f752b447f4eff03c28d", 411 | "reference": "1610e4747c88a53676f94f752b447f4eff03c28d", 412 | "shasum": "" 413 | }, 414 | "require": { 415 | "ext-mbstring": "*", 416 | "php": ">=5.3.0" 417 | }, 418 | "require-dev": { 419 | "phpunit/phpunit": "^4.8.35" 420 | }, 421 | "type": "library", 422 | "autoload": { 423 | "psr-0": { 424 | "Parsedown": "" 425 | } 426 | }, 427 | "notification-url": "https://packagist.org/downloads/", 428 | "license": [ 429 | "MIT" 430 | ], 431 | "authors": [ 432 | { 433 | "name": "Emanuil Rusev", 434 | "email": "hello@erusev.com", 435 | "homepage": "http://erusev.com" 436 | } 437 | ], 438 | "description": "Parser for Markdown.", 439 | "homepage": "http://parsedown.org", 440 | "keywords": [ 441 | "markdown", 442 | "parser" 443 | ], 444 | "time": "2020-02-18T10:38:52+00:00" 445 | }, 446 | { 447 | "name": "evenement/evenement", 448 | "version": "dev-master", 449 | "source": { 450 | "type": "git", 451 | "url": "https://github.com/igorw/evenement.git", 452 | "reference": "db9b6035f219660e23aba8f4192ea008bc54d03c" 453 | }, 454 | "dist": { 455 | "type": "zip", 456 | "url": "https://api.github.com/repos/igorw/evenement/zipball/db9b6035f219660e23aba8f4192ea008bc54d03c", 457 | "reference": "db9b6035f219660e23aba8f4192ea008bc54d03c", 458 | "shasum": "" 459 | }, 460 | "require": { 461 | "php": ">=7.0" 462 | }, 463 | "require-dev": { 464 | "phpunit/phpunit": "^6.0" 465 | }, 466 | "type": "library", 467 | "autoload": { 468 | "psr-0": { 469 | "Evenement": "src" 470 | } 471 | }, 472 | "notification-url": "https://packagist.org/downloads/", 473 | "license": [ 474 | "MIT" 475 | ], 476 | "authors": [ 477 | { 478 | "name": "Igor Wiedler", 479 | "email": "igor@wiedler.ch" 480 | } 481 | ], 482 | "description": "Événement is a very simple event dispatching library for PHP", 483 | "keywords": [ 484 | "event-dispatcher", 485 | "event-emitter" 486 | ], 487 | "time": "2019-10-08T16:16:20+00:00" 488 | }, 489 | { 490 | "name": "guide42/plan", 491 | "version": "dev-master", 492 | "source": { 493 | "type": "git", 494 | "url": "https://github.com/guide42/plan.git", 495 | "reference": "f1b23687fedaff5dcca11bda774613a0a6117d7e" 496 | }, 497 | "dist": { 498 | "type": "zip", 499 | "url": "https://api.github.com/repos/guide42/plan/zipball/f1b23687fedaff5dcca11bda774613a0a6117d7e", 500 | "reference": "f1b23687fedaff5dcca11bda774613a0a6117d7e", 501 | "shasum": "" 502 | }, 503 | "require": { 504 | "php": ">=7.2" 505 | }, 506 | "require-dev": { 507 | "kahlan/kahlan": "@stable" 508 | }, 509 | "type": "library", 510 | "autoload": { 511 | "files": [ 512 | "library/functions.php", 513 | "library/assert.php", 514 | "library/filter.php", 515 | "library/util.php" 516 | ], 517 | "psr-4": { 518 | "plan\\": "library/" 519 | } 520 | }, 521 | "notification-url": "https://packagist.org/downloads/", 522 | "license": [ 523 | "ISC" 524 | ], 525 | "authors": [ 526 | { 527 | "name": "Juan M", 528 | "email": "jm@guide42.com" 529 | } 530 | ], 531 | "description": "Fast and simple validation library", 532 | "keywords": [ 533 | "filter", 534 | "security", 535 | "validation", 536 | "validator" 537 | ], 538 | "time": "2019-02-21T13:53:56+00:00" 539 | }, 540 | { 541 | "name": "indieweb/date-formatter", 542 | "version": "dev-master", 543 | "source": { 544 | "type": "git", 545 | "url": "https://github.com/indieweb/date-formatter-php.git", 546 | "reference": "282946ebae0efa5f9c00be88553d76d7a39824ab" 547 | }, 548 | "dist": { 549 | "type": "zip", 550 | "url": "https://api.github.com/repos/indieweb/date-formatter-php/zipball/282946ebae0efa5f9c00be88553d76d7a39824ab", 551 | "reference": "282946ebae0efa5f9c00be88553d76d7a39824ab", 552 | "shasum": "" 553 | }, 554 | "require": { 555 | "php": ">=5.3.0" 556 | }, 557 | "require-dev": { 558 | "mf2/mf2": ">=0.2.12", 559 | "phpunit/phpunit": "~4.0" 560 | }, 561 | "type": "library", 562 | "autoload": { 563 | "psr-0": { 564 | "IndieWeb": "src/" 565 | } 566 | }, 567 | "notification-url": "https://packagist.org/downloads/", 568 | "license": [ 569 | "Apache-2.0" 570 | ], 571 | "authors": [ 572 | { 573 | "name": "Aaron Parecki", 574 | "homepage": "http://aaronparecki.com" 575 | } 576 | ], 577 | "description": "Render dates and date ranges in a human-readable format, including proper microformats-2 markup", 578 | "homepage": "https://github.com/indieweb/date-formatter-php", 579 | "keywords": [ 580 | "date", 581 | "format", 582 | "microformats", 583 | "microformats2" 584 | ], 585 | "time": "2016-04-05T15:13:00+00:00" 586 | }, 587 | { 588 | "name": "indieweb/link-rel-parser", 589 | "version": "0.1.3", 590 | "source": { 591 | "type": "git", 592 | "url": "https://github.com/indieweb/link-rel-parser-php.git", 593 | "reference": "295420e4f16d9a9d262a3c25a7a583794428f055" 594 | }, 595 | "dist": { 596 | "type": "zip", 597 | "url": "https://api.github.com/repos/indieweb/link-rel-parser-php/zipball/295420e4f16d9a9d262a3c25a7a583794428f055", 598 | "reference": "295420e4f16d9a9d262a3c25a7a583794428f055", 599 | "shasum": "" 600 | }, 601 | "require": { 602 | "php": ">=5.3.0" 603 | }, 604 | "type": "library", 605 | "autoload": { 606 | "files": [ 607 | "src/IndieWeb/link_rel_parser.php" 608 | ] 609 | }, 610 | "notification-url": "https://packagist.org/downloads/", 611 | "license": [ 612 | "Apache-2.0" 613 | ], 614 | "authors": [ 615 | { 616 | "name": "Aaron Parecki", 617 | "homepage": "http://aaronparecki.com" 618 | }, 619 | { 620 | "name": "Tantek Çelik", 621 | "homepage": "http://tantek.com" 622 | } 623 | ], 624 | "description": "Parse rel values from HTTP headers", 625 | "homepage": "https://github.com/indieweb/link-rel-parser-php", 626 | "keywords": [ 627 | "http", 628 | "indieweb", 629 | "microformats2" 630 | ], 631 | "time": "2017-01-11T17:14:49+00:00" 632 | }, 633 | { 634 | "name": "ircmaxell/filterus", 635 | "version": "dev-master", 636 | "source": { 637 | "type": "git", 638 | "url": "https://github.com/ircmaxell/filterus.git", 639 | "reference": "3c4f59285654201d3ecec6b4d64d3cf0b38622dd" 640 | }, 641 | "dist": { 642 | "type": "zip", 643 | "url": "https://api.github.com/repos/ircmaxell/filterus/zipball/3c4f59285654201d3ecec6b4d64d3cf0b38622dd", 644 | "reference": "3c4f59285654201d3ecec6b4d64d3cf0b38622dd", 645 | "shasum": "" 646 | }, 647 | "require": { 648 | "php": ">=5.3.0" 649 | }, 650 | "require-dev": { 651 | "phpunit/phpunit": "^5" 652 | }, 653 | "type": "library", 654 | "autoload": { 655 | "files": [ 656 | "lib/Filterus/functions.php" 657 | ], 658 | "psr-0": { 659 | "Filterus": "lib" 660 | } 661 | }, 662 | "notification-url": "https://packagist.org/downloads/", 663 | "license": [ 664 | "MIT" 665 | ], 666 | "authors": [ 667 | { 668 | "name": "Anthony Ferrara", 669 | "email": "ircmaxell@php.net", 670 | "homepage": "http://blog.ircmaxell.com" 671 | } 672 | ], 673 | "description": "A library for filtering variables in PHP", 674 | "homepage": "https://github.com/ircmaxell/filterus", 675 | "keywords": [ 676 | "filter", 677 | "security" 678 | ], 679 | "time": "2018-11-21T21:48:10+00:00" 680 | }, 681 | { 682 | "name": "ircmaxell/tari-php", 683 | "version": "dev-master", 684 | "source": { 685 | "type": "git", 686 | "url": "https://github.com/ircmaxell/Tari-PHP.git", 687 | "reference": "9d9512c767db557febc2a264f8390daf6b3c6517" 688 | }, 689 | "dist": { 690 | "type": "zip", 691 | "url": "https://api.github.com/repos/ircmaxell/Tari-PHP/zipball/9d9512c767db557febc2a264f8390daf6b3c6517", 692 | "reference": "9d9512c767db557febc2a264f8390daf6b3c6517", 693 | "shasum": "" 694 | }, 695 | "require": { 696 | "php": "^7", 697 | "psr/http-message": "^1.0" 698 | }, 699 | "require-dev": { 700 | "guzzlehttp/psr7": "^1.3", 701 | "phpunit/phpunit": "^5.3" 702 | }, 703 | "type": "library", 704 | "autoload": { 705 | "psr-4": { 706 | "Tari\\": [ 707 | "lib/", 708 | "spec/" 709 | ] 710 | } 711 | }, 712 | "notification-url": "https://packagist.org/downloads/", 713 | "license": [ 714 | "MIT" 715 | ], 716 | "authors": [ 717 | { 718 | "name": "Anthony Ferrara", 719 | "email": "ircmaxell@gmail.com" 720 | } 721 | ], 722 | "description": "A Middleware Proof-Of-Concept Library For PHP", 723 | "time": "2016-05-21T13:21:07+00:00" 724 | }, 725 | { 726 | "name": "kambo/httpmessage", 727 | "version": "dev-master", 728 | "source": { 729 | "type": "git", 730 | "url": "https://github.com/kambo-1st/HttpMessage.git", 731 | "reference": "38877b9d895f279fdd5bdf957d8f23f9808a940a" 732 | }, 733 | "dist": { 734 | "type": "zip", 735 | "url": "https://api.github.com/repos/kambo-1st/HttpMessage/zipball/38877b9d895f279fdd5bdf957d8f23f9808a940a", 736 | "reference": "38877b9d895f279fdd5bdf957d8f23f9808a940a", 737 | "shasum": "" 738 | }, 739 | "require": { 740 | "php": ">=5.5", 741 | "psr/http-message": "*" 742 | }, 743 | "provide": { 744 | "psr/http-message-implementation": "1.0" 745 | }, 746 | "require-dev": { 747 | "mikey179/vfsstream": "~1", 748 | "phpunit/phpunit": "4.6.10" 749 | }, 750 | "type": "library", 751 | "autoload": { 752 | "psr-4": { 753 | "Kambo\\Http\\Message\\": "src" 754 | } 755 | }, 756 | "notification-url": "https://packagist.org/downloads/", 757 | "license": [ 758 | "MIT" 759 | ], 760 | "authors": [ 761 | { 762 | "name": "Bohuslav Simek", 763 | "email": "bohuslav@simek.si" 764 | } 765 | ], 766 | "description": "Kambo httpmessage a PSR-7 implementation", 767 | "keywords": [ 768 | "http", 769 | "httpmessage", 770 | "psr-7" 771 | ], 772 | "time": "2018-01-24T22:45:05+00:00" 773 | }, 774 | { 775 | "name": "level-2/dice", 776 | "version": "dev-master", 777 | "source": { 778 | "type": "git", 779 | "url": "https://github.com/Level-2/Dice.git", 780 | "reference": "b9336d9200d0165c31e982374dc5d8d2552807bc" 781 | }, 782 | "dist": { 783 | "type": "zip", 784 | "url": "https://api.github.com/repos/Level-2/Dice/zipball/b9336d9200d0165c31e982374dc5d8d2552807bc", 785 | "reference": "b9336d9200d0165c31e982374dc5d8d2552807bc", 786 | "shasum": "" 787 | }, 788 | "require": { 789 | "php": ">=7.0.0" 790 | }, 791 | "require-dev": { 792 | "phpunit/phpunit": "^6.5" 793 | }, 794 | "type": "library", 795 | "autoload": { 796 | "psr-4": { 797 | "Dice\\": "./" 798 | } 799 | }, 800 | "notification-url": "https://packagist.org/downloads/", 801 | "license": [ 802 | "BSD-2-Clause" 803 | ], 804 | "authors": [ 805 | { 806 | "name": "Tom Butler", 807 | "email": "tom@r.je" 808 | } 809 | ], 810 | "description": "A minimalist Dependency injection container (DIC) for PHP. Please note: 3.0+ is only compatible with PHP 7.0. The 2.0 branch is compatbile with PHP 5.6.", 811 | "homepage": "http://r.je/dice.html", 812 | "keywords": [ 813 | "dependency injection", 814 | "dependency injection container", 815 | "di", 816 | "ioc" 817 | ], 818 | "time": "2020-01-28T13:47:49+00:00" 819 | }, 820 | { 821 | "name": "lime/lime", 822 | "version": "dev-master", 823 | "source": { 824 | "type": "git", 825 | "url": "https://github.com/agentejo/lime.git", 826 | "reference": "c3ad87a89c2466e0a6e17d8b40f22dc2bc550cd8" 827 | }, 828 | "dist": { 829 | "type": "zip", 830 | "url": "https://api.github.com/repos/agentejo/lime/zipball/c3ad87a89c2466e0a6e17d8b40f22dc2bc550cd8", 831 | "reference": "c3ad87a89c2466e0a6e17d8b40f22dc2bc550cd8", 832 | "shasum": "" 833 | }, 834 | "require": { 835 | "php": ">=5.6.0" 836 | }, 837 | "type": "library", 838 | "autoload": { 839 | "psr-0": { 840 | "Lime": "src/" 841 | } 842 | }, 843 | "notification-url": "https://packagist.org/downloads/", 844 | "license": [ 845 | "MIT" 846 | ], 847 | "authors": [ 848 | { 849 | "name": "Artur Heinze", 850 | "email": "faulancer@gmail.com", 851 | "homepage": "http://agentejo.com/", 852 | "role": "Developer" 853 | } 854 | ], 855 | "description": "The PHP micro-framework", 856 | "homepage": "https://github.com/aheinze/Lime", 857 | "keywords": [ 858 | "lime", 859 | "micro-framework", 860 | "microframework", 861 | "php" 862 | ], 863 | "time": "2019-01-31T12:47:32+00:00" 864 | }, 865 | { 866 | "name": "lukasoppermann/http-status", 867 | "version": "dev-master", 868 | "source": { 869 | "type": "git", 870 | "url": "https://github.com/lukasoppermann/http-status.git", 871 | "reference": "c123b3844d1dafb94ef6efc08ea6a14c27a02cc4" 872 | }, 873 | "dist": { 874 | "type": "zip", 875 | "url": "https://api.github.com/repos/lukasoppermann/http-status/zipball/c123b3844d1dafb94ef6efc08ea6a14c27a02cc4", 876 | "reference": "c123b3844d1dafb94ef6efc08ea6a14c27a02cc4", 877 | "shasum": "" 878 | }, 879 | "require": { 880 | "php": ">=5.3.0" 881 | }, 882 | "require-dev": { 883 | "fabpot/php-cs-fixer": "^1.10", 884 | "league/csv": "^7.1", 885 | "phpunit/phpunit": "~4.0", 886 | "satooshi/php-coveralls": "^0.6.1" 887 | }, 888 | "type": "library", 889 | "extra": { 890 | "branch-alias": { 891 | "dev-master": "1.0-dev" 892 | } 893 | }, 894 | "autoload": { 895 | "psr-4": { 896 | "Lukasoppermann\\Httpstatus\\": "src" 897 | } 898 | }, 899 | "notification-url": "https://packagist.org/downloads/", 900 | "license": [ 901 | "MIT" 902 | ], 903 | "authors": [ 904 | { 905 | "name": "Lukas Oppermann", 906 | "email": "lukas@vea.re", 907 | "homepage": "http://vea.re", 908 | "role": "Developer" 909 | } 910 | ], 911 | "description": "A minimal package for working with HTTP statuses.", 912 | "homepage": "https://github.com/lukasoppermann/http-status", 913 | "keywords": [ 914 | "httpstatus", 915 | "status codes" 916 | ], 917 | "time": "2016-10-19T09:02:03+00:00" 918 | }, 919 | { 920 | "name": "mashape/unirest-php", 921 | "version": "dev-master", 922 | "source": { 923 | "type": "git", 924 | "url": "https://github.com/Mashape/unirest-php.git", 925 | "reference": "14aa9aa6919e4b70c59cd20722ac113c0ffeb45b" 926 | }, 927 | "dist": { 928 | "type": "zip", 929 | "url": "https://api.github.com/repos/Mashape/unirest-php/zipball/14aa9aa6919e4b70c59cd20722ac113c0ffeb45b", 930 | "reference": "14aa9aa6919e4b70c59cd20722ac113c0ffeb45b", 931 | "shasum": "" 932 | }, 933 | "require": { 934 | "ext-curl": "*", 935 | "php": ">=5.4.0" 936 | }, 937 | "require-dev": { 938 | "codeclimate/php-test-reporter": "0.1.*", 939 | "phpunit/phpunit": "~4.4" 940 | }, 941 | "suggest": { 942 | "ext-json": "Allows using JSON Bodies for sending and parsing requests" 943 | }, 944 | "type": "library", 945 | "autoload": { 946 | "psr-0": { 947 | "Unirest\\": "src/" 948 | } 949 | }, 950 | "notification-url": "https://packagist.org/downloads/", 951 | "license": [ 952 | "MIT" 953 | ], 954 | "description": "Unirest PHP", 955 | "homepage": "https://github.com/Mashape/unirest-php", 956 | "keywords": [ 957 | "client", 958 | "curl", 959 | "http", 960 | "https", 961 | "rest" 962 | ], 963 | "time": "2017-02-24T17:06:01+00:00" 964 | }, 965 | { 966 | "name": "mf2/mf2", 967 | "version": "dev-master", 968 | "source": { 969 | "type": "git", 970 | "url": "https://github.com/microformats/php-mf2.git", 971 | "reference": "18ca68808f4dd3437470924f77ba49655edca636" 972 | }, 973 | "dist": { 974 | "type": "zip", 975 | "url": "https://api.github.com/repos/microformats/php-mf2/zipball/18ca68808f4dd3437470924f77ba49655edca636", 976 | "reference": "18ca68808f4dd3437470924f77ba49655edca636", 977 | "shasum": "" 978 | }, 979 | "require": { 980 | "php": ">=5.4.0" 981 | }, 982 | "require-dev": { 983 | "mf2/tests": "@dev", 984 | "phpdocumentor/phpdocumentor": "v2.8.4", 985 | "phpunit/phpunit": "4.8.*" 986 | }, 987 | "suggest": { 988 | "barnabywalters/mf-cleaner": "To more easily handle the canonical data php-mf2 gives you", 989 | "masterminds/html5": "Alternative HTML parser for PHP, for better HTML5 support." 990 | }, 991 | "bin": [ 992 | "bin/fetch-mf2", 993 | "bin/parse-mf2" 994 | ], 995 | "type": "library", 996 | "autoload": { 997 | "files": [ 998 | "Mf2/Parser.php" 999 | ] 1000 | }, 1001 | "notification-url": "https://packagist.org/downloads/", 1002 | "license": [ 1003 | "CC0-1.0" 1004 | ], 1005 | "authors": [ 1006 | { 1007 | "name": "Barnaby Walters", 1008 | "homepage": "http://waterpigs.co.uk" 1009 | } 1010 | ], 1011 | "description": "A pure, generic microformats2 parser — makes HTML as easy to consume as a JSON API", 1012 | "keywords": [ 1013 | "html", 1014 | "microformats", 1015 | "microformats 2", 1016 | "parser", 1017 | "semantic" 1018 | ], 1019 | "time": "2019-12-07T05:17:30+00:00" 1020 | }, 1021 | { 1022 | "name": "mindplay/walkway", 1023 | "version": "dev-master", 1024 | "source": { 1025 | "type": "git", 1026 | "url": "https://github.com/mindplay-dk/walkway.git", 1027 | "reference": "4259d998abf4d070d38fdcf25e37c646156c43fa" 1028 | }, 1029 | "dist": { 1030 | "type": "zip", 1031 | "url": "https://api.github.com/repos/mindplay-dk/walkway/zipball/4259d998abf4d070d38fdcf25e37c646156c43fa", 1032 | "reference": "4259d998abf4d070d38fdcf25e37c646156c43fa", 1033 | "shasum": "" 1034 | }, 1035 | "require": { 1036 | "php": ">=5.3.0" 1037 | }, 1038 | "require-dev": { 1039 | "container-interop/container-interop": "^1.1", 1040 | "mindplay/testies": "^0.2.0", 1041 | "phpunit/php-code-coverage": "2.*@dev" 1042 | }, 1043 | "suggest": { 1044 | "container-interop/container-interop": "provides interop with various DI containers (via InteropInvoker)" 1045 | }, 1046 | "type": "library", 1047 | "autoload": { 1048 | "psr-4": { 1049 | "mindplay\\walkway\\": "src/" 1050 | } 1051 | }, 1052 | "notification-url": "https://packagist.org/downloads/", 1053 | "license": [ 1054 | "LGPL-3.0+" 1055 | ], 1056 | "authors": [ 1057 | { 1058 | "name": "Rasmus Schultz", 1059 | "email": "rasmus@mindplay.dk" 1060 | } 1061 | ], 1062 | "description": "Elegant, modular router for PHP", 1063 | "time": "2016-10-17T18:37:07+00:00" 1064 | }, 1065 | { 1066 | "name": "nategood/httpful", 1067 | "version": "dev-master", 1068 | "source": { 1069 | "type": "git", 1070 | "url": "https://github.com/nategood/httpful.git", 1071 | "reference": "0cded3ea97ba905600de9ceb9ef13f3ab681587c" 1072 | }, 1073 | "dist": { 1074 | "type": "zip", 1075 | "url": "https://api.github.com/repos/nategood/httpful/zipball/0cded3ea97ba905600de9ceb9ef13f3ab681587c", 1076 | "reference": "0cded3ea97ba905600de9ceb9ef13f3ab681587c", 1077 | "shasum": "" 1078 | }, 1079 | "require": { 1080 | "ext-curl": "*", 1081 | "php": ">=7.2" 1082 | }, 1083 | "require-dev": { 1084 | "phpunit/phpunit": "*" 1085 | }, 1086 | "type": "library", 1087 | "autoload": { 1088 | "psr-0": { 1089 | "Httpful": "src/" 1090 | } 1091 | }, 1092 | "notification-url": "https://packagist.org/downloads/", 1093 | "license": [ 1094 | "MIT" 1095 | ], 1096 | "authors": [ 1097 | { 1098 | "name": "Nate Good", 1099 | "email": "me@nategood.com", 1100 | "homepage": "http://nategood.com" 1101 | } 1102 | ], 1103 | "description": "A Readable, Chainable, REST friendly, PHP HTTP Client", 1104 | "homepage": "http://github.com/nategood/httpful", 1105 | "keywords": [ 1106 | "api", 1107 | "curl", 1108 | "http", 1109 | "requests", 1110 | "rest", 1111 | "restful" 1112 | ], 1113 | "time": "2020-01-25T01:13:13+00:00" 1114 | }, 1115 | { 1116 | "name": "nikic/fast-route", 1117 | "version": "dev-master", 1118 | "source": { 1119 | "type": "git", 1120 | "url": "https://github.com/nikic/FastRoute.git", 1121 | "reference": "611ca10f2ba45c708099068b849d05e62d969e82" 1122 | }, 1123 | "dist": { 1124 | "type": "zip", 1125 | "url": "https://api.github.com/repos/nikic/FastRoute/zipball/611ca10f2ba45c708099068b849d05e62d969e82", 1126 | "reference": "611ca10f2ba45c708099068b849d05e62d969e82", 1127 | "shasum": "" 1128 | }, 1129 | "require": { 1130 | "php": ">=7.1.0" 1131 | }, 1132 | "require-dev": { 1133 | "doctrine/coding-standard": "^6.0 || ^7.0", 1134 | "phpbench/phpbench": "^0.16.9", 1135 | "phpstan/extension-installer": "^1.0", 1136 | "phpstan/phpstan": "^0.12", 1137 | "phpstan/phpstan-deprecation-rules": "^0.12", 1138 | "phpstan/phpstan-phpunit": "^0.12", 1139 | "phpstan/phpstan-strict-rules": "^0.12", 1140 | "phpunit/phpunit": "^7.5 || ^8.5" 1141 | }, 1142 | "type": "library", 1143 | "extra": { 1144 | "branch-alias": { 1145 | "dev-master": "2.0-dev" 1146 | } 1147 | }, 1148 | "autoload": { 1149 | "psr-4": { 1150 | "FastRoute\\": "src/" 1151 | }, 1152 | "files": [ 1153 | "src/functions.php" 1154 | ] 1155 | }, 1156 | "notification-url": "https://packagist.org/downloads/", 1157 | "license": [ 1158 | "BSD-3-Clause" 1159 | ], 1160 | "authors": [ 1161 | { 1162 | "name": "Nikita Popov", 1163 | "email": "nikic@php.net" 1164 | } 1165 | ], 1166 | "description": "Fast request router for PHP", 1167 | "keywords": [ 1168 | "router", 1169 | "routing" 1170 | ], 1171 | "time": "2019-12-20T19:35:11+00:00" 1172 | }, 1173 | { 1174 | "name": "p3k/http", 1175 | "version": "dev-master", 1176 | "source": { 1177 | "type": "git", 1178 | "url": "https://github.com/aaronpk/p3k-http.git", 1179 | "reference": "24d28287e0c5606aa45b23c6e3c17628d89468f7" 1180 | }, 1181 | "dist": { 1182 | "type": "zip", 1183 | "url": "https://api.github.com/repos/aaronpk/p3k-http/zipball/24d28287e0c5606aa45b23c6e3c17628d89468f7", 1184 | "reference": "24d28287e0c5606aa45b23c6e3c17628d89468f7", 1185 | "shasum": "" 1186 | }, 1187 | "require": { 1188 | "indieweb/link-rel-parser": "0.1.*", 1189 | "mf2/mf2": ">=0.3.2" 1190 | }, 1191 | "type": "library", 1192 | "autoload": { 1193 | "psr-4": { 1194 | "p3k\\": "src/p3k" 1195 | } 1196 | }, 1197 | "notification-url": "https://packagist.org/downloads/", 1198 | "license": [ 1199 | "MIT" 1200 | ], 1201 | "authors": [ 1202 | { 1203 | "name": "Aaron Parecki", 1204 | "homepage": "https://aaronparecki.com" 1205 | } 1206 | ], 1207 | "description": "A simple wrapper API around the PHP curl functions", 1208 | "homepage": "https://github.com/aaronpk/p3k-http", 1209 | "time": "2020-02-19T03:00:09+00:00" 1210 | }, 1211 | { 1212 | "name": "php-http/httplug", 1213 | "version": "dev-master", 1214 | "source": { 1215 | "type": "git", 1216 | "url": "https://github.com/php-http/httplug.git", 1217 | "reference": "c9b242499399ba82700bcd563b7497272cc90459" 1218 | }, 1219 | "dist": { 1220 | "type": "zip", 1221 | "url": "https://api.github.com/repos/php-http/httplug/zipball/c9b242499399ba82700bcd563b7497272cc90459", 1222 | "reference": "c9b242499399ba82700bcd563b7497272cc90459", 1223 | "shasum": "" 1224 | }, 1225 | "require": { 1226 | "php": "^7.0", 1227 | "php-http/promise": "^1.0", 1228 | "psr/http-client": "^1.0", 1229 | "psr/http-message": "^1.0" 1230 | }, 1231 | "require-dev": { 1232 | "friends-of-phpspec/phpspec-code-coverage": "^4.1", 1233 | "phpspec/phpspec": "^4.3.4|^5.0|^6.0" 1234 | }, 1235 | "type": "library", 1236 | "extra": { 1237 | "branch-alias": { 1238 | "dev-master": "2.x-dev" 1239 | } 1240 | }, 1241 | "autoload": { 1242 | "psr-4": { 1243 | "Http\\Client\\": "src/" 1244 | } 1245 | }, 1246 | "notification-url": "https://packagist.org/downloads/", 1247 | "license": [ 1248 | "MIT" 1249 | ], 1250 | "authors": [ 1251 | { 1252 | "name": "Eric GELOEN", 1253 | "email": "geloen.eric@gmail.com" 1254 | }, 1255 | { 1256 | "name": "Márk Sági-Kazár", 1257 | "email": "mark.sagikazar@gmail.com" 1258 | } 1259 | ], 1260 | "description": "HTTPlug, the HTTP client abstraction for PHP", 1261 | "homepage": "http://httplug.io", 1262 | "keywords": [ 1263 | "client", 1264 | "http" 1265 | ], 1266 | "time": "2019-12-30T13:13:12+00:00" 1267 | }, 1268 | { 1269 | "name": "php-http/promise", 1270 | "version": "dev-master", 1271 | "source": { 1272 | "type": "git", 1273 | "url": "https://github.com/php-http/promise.git", 1274 | "reference": "02ee67f2346b4eec3861afec741c656f5ff717ab" 1275 | }, 1276 | "dist": { 1277 | "type": "zip", 1278 | "url": "https://api.github.com/repos/php-http/promise/zipball/02ee67f2346b4eec3861afec741c656f5ff717ab", 1279 | "reference": "02ee67f2346b4eec3861afec741c656f5ff717ab", 1280 | "shasum": "" 1281 | }, 1282 | "require": { 1283 | "php": "^7.1" 1284 | }, 1285 | "require-dev": { 1286 | "henrikbjorn/phpspec-code-coverage": "^1.0", 1287 | "phpspec/phpspec": "^2.4" 1288 | }, 1289 | "type": "library", 1290 | "extra": { 1291 | "branch-alias": { 1292 | "dev-master": "1.1-dev" 1293 | } 1294 | }, 1295 | "autoload": { 1296 | "psr-4": { 1297 | "Http\\Promise\\": "src/" 1298 | } 1299 | }, 1300 | "notification-url": "https://packagist.org/downloads/", 1301 | "license": [ 1302 | "MIT" 1303 | ], 1304 | "authors": [ 1305 | { 1306 | "name": "Joel Wurtz", 1307 | "email": "joel.wurtz@gmail.com" 1308 | }, 1309 | { 1310 | "name": "Márk Sági-Kazár", 1311 | "email": "mark.sagikazar@gmail.com" 1312 | } 1313 | ], 1314 | "description": "Promise used for asynchronous HTTP requests", 1315 | "homepage": "http://httplug.io", 1316 | "keywords": [ 1317 | "promise" 1318 | ], 1319 | "time": "2019-12-20T11:48:16+00:00" 1320 | }, 1321 | { 1322 | "name": "pimple/pimple", 1323 | "version": "dev-master", 1324 | "source": { 1325 | "type": "git", 1326 | "url": "https://github.com/silexphp/Pimple.git", 1327 | "reference": "e5a1a5b45965ec84f12db8aa87a4b82932459e33" 1328 | }, 1329 | "dist": { 1330 | "type": "zip", 1331 | "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e5a1a5b45965ec84f12db8aa87a4b82932459e33", 1332 | "reference": "e5a1a5b45965ec84f12db8aa87a4b82932459e33", 1333 | "shasum": "" 1334 | }, 1335 | "require": { 1336 | "php": "^7.2.5", 1337 | "psr/container": "^1.0" 1338 | }, 1339 | "require-dev": { 1340 | "symfony/phpunit-bridge": "^5.0" 1341 | }, 1342 | "type": "library", 1343 | "extra": { 1344 | "branch-alias": { 1345 | "dev-master": "3.3.x-dev" 1346 | } 1347 | }, 1348 | "autoload": { 1349 | "psr-0": { 1350 | "Pimple": "src/" 1351 | } 1352 | }, 1353 | "notification-url": "https://packagist.org/downloads/", 1354 | "license": [ 1355 | "MIT" 1356 | ], 1357 | "authors": [ 1358 | { 1359 | "name": "Fabien Potencier", 1360 | "email": "fabien@symfony.com" 1361 | } 1362 | ], 1363 | "description": "Pimple, a simple Dependency Injection Container", 1364 | "homepage": "https://pimple.symfony.com", 1365 | "keywords": [ 1366 | "container", 1367 | "dependency injection" 1368 | ], 1369 | "time": "2020-03-03T10:25:02+00:00" 1370 | }, 1371 | { 1372 | "name": "psr/container", 1373 | "version": "dev-master", 1374 | "source": { 1375 | "type": "git", 1376 | "url": "https://github.com/php-fig/container.git", 1377 | "reference": "fc1bc363ecf887921e3897c7b1dad3587ae154eb" 1378 | }, 1379 | "dist": { 1380 | "type": "zip", 1381 | "url": "https://api.github.com/repos/php-fig/container/zipball/fc1bc363ecf887921e3897c7b1dad3587ae154eb", 1382 | "reference": "fc1bc363ecf887921e3897c7b1dad3587ae154eb", 1383 | "shasum": "" 1384 | }, 1385 | "require": { 1386 | "php": ">=5.3.0" 1387 | }, 1388 | "type": "library", 1389 | "extra": { 1390 | "branch-alias": { 1391 | "dev-master": "1.0.x-dev" 1392 | } 1393 | }, 1394 | "autoload": { 1395 | "psr-4": { 1396 | "Psr\\Container\\": "src/" 1397 | } 1398 | }, 1399 | "notification-url": "https://packagist.org/downloads/", 1400 | "license": [ 1401 | "MIT" 1402 | ], 1403 | "authors": [ 1404 | { 1405 | "name": "PHP-FIG", 1406 | "homepage": "http://www.php-fig.org/" 1407 | } 1408 | ], 1409 | "description": "Common Container Interface (PHP FIG PSR-11)", 1410 | "homepage": "https://github.com/php-fig/container", 1411 | "keywords": [ 1412 | "PSR-11", 1413 | "container", 1414 | "container-interface", 1415 | "container-interop", 1416 | "psr" 1417 | ], 1418 | "time": "2019-10-04T14:07:35+00:00" 1419 | }, 1420 | { 1421 | "name": "psr/http-client", 1422 | "version": "dev-master", 1423 | "source": { 1424 | "type": "git", 1425 | "url": "https://github.com/php-fig/http-client.git", 1426 | "reference": "fd5d37ae5a76ee3c5301a762faf66bf9519132ef" 1427 | }, 1428 | "dist": { 1429 | "type": "zip", 1430 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/fd5d37ae5a76ee3c5301a762faf66bf9519132ef", 1431 | "reference": "fd5d37ae5a76ee3c5301a762faf66bf9519132ef", 1432 | "shasum": "" 1433 | }, 1434 | "require": { 1435 | "php": "^7.0", 1436 | "psr/http-message": "^1.0" 1437 | }, 1438 | "type": "library", 1439 | "extra": { 1440 | "branch-alias": { 1441 | "dev-master": "1.0.x-dev" 1442 | } 1443 | }, 1444 | "autoload": { 1445 | "psr-4": { 1446 | "Psr\\Http\\Client\\": "src/" 1447 | } 1448 | }, 1449 | "notification-url": "https://packagist.org/downloads/", 1450 | "license": [ 1451 | "MIT" 1452 | ], 1453 | "authors": [ 1454 | { 1455 | "name": "PHP-FIG", 1456 | "homepage": "http://www.php-fig.org/" 1457 | } 1458 | ], 1459 | "description": "Common interface for HTTP clients", 1460 | "homepage": "https://github.com/php-fig/http-client", 1461 | "keywords": [ 1462 | "http", 1463 | "http-client", 1464 | "psr", 1465 | "psr-18" 1466 | ], 1467 | "time": "2019-09-04T06:46:09+00:00" 1468 | }, 1469 | { 1470 | "name": "psr/http-message", 1471 | "version": "dev-master", 1472 | "source": { 1473 | "type": "git", 1474 | "url": "https://github.com/php-fig/http-message.git", 1475 | "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4" 1476 | }, 1477 | "dist": { 1478 | "type": "zip", 1479 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/efd67d1dc14a7ef4fc4e518e7dee91c271d524e4", 1480 | "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4", 1481 | "shasum": "" 1482 | }, 1483 | "require": { 1484 | "php": ">=5.3.0" 1485 | }, 1486 | "type": "library", 1487 | "extra": { 1488 | "branch-alias": { 1489 | "dev-master": "1.0.x-dev" 1490 | } 1491 | }, 1492 | "autoload": { 1493 | "psr-4": { 1494 | "Psr\\Http\\Message\\": "src/" 1495 | } 1496 | }, 1497 | "notification-url": "https://packagist.org/downloads/", 1498 | "license": [ 1499 | "MIT" 1500 | ], 1501 | "authors": [ 1502 | { 1503 | "name": "PHP-FIG", 1504 | "homepage": "http://www.php-fig.org/" 1505 | } 1506 | ], 1507 | "description": "Common interface for HTTP messages", 1508 | "homepage": "https://github.com/php-fig/http-message", 1509 | "keywords": [ 1510 | "http", 1511 | "http-message", 1512 | "psr", 1513 | "psr-7", 1514 | "request", 1515 | "response" 1516 | ], 1517 | "time": "2019-08-29T13:16:46+00:00" 1518 | }, 1519 | { 1520 | "name": "psr/http-server-handler", 1521 | "version": "dev-master", 1522 | "source": { 1523 | "type": "git", 1524 | "url": "https://github.com/php-fig/http-server-handler.git", 1525 | "reference": "f981eec4f9870ace3ee8ada18c88a59461080cba" 1526 | }, 1527 | "dist": { 1528 | "type": "zip", 1529 | "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/f981eec4f9870ace3ee8ada18c88a59461080cba", 1530 | "reference": "f981eec4f9870ace3ee8ada18c88a59461080cba", 1531 | "shasum": "" 1532 | }, 1533 | "require": { 1534 | "php": ">=7.0", 1535 | "psr/http-message": "^1.0" 1536 | }, 1537 | "type": "library", 1538 | "extra": { 1539 | "branch-alias": { 1540 | "dev-master": "1.0.x-dev" 1541 | } 1542 | }, 1543 | "autoload": { 1544 | "psr-4": { 1545 | "Psr\\Http\\Server\\": "src/" 1546 | } 1547 | }, 1548 | "notification-url": "https://packagist.org/downloads/", 1549 | "license": [ 1550 | "MIT" 1551 | ], 1552 | "authors": [ 1553 | { 1554 | "name": "PHP-FIG", 1555 | "homepage": "http://www.php-fig.org/" 1556 | } 1557 | ], 1558 | "description": "Common interface for HTTP server-side request handler", 1559 | "keywords": [ 1560 | "handler", 1561 | "http", 1562 | "http-interop", 1563 | "psr", 1564 | "psr-15", 1565 | "psr-7", 1566 | "request", 1567 | "response", 1568 | "server" 1569 | ], 1570 | "time": "2019-06-07T16:00:12+00:00" 1571 | }, 1572 | { 1573 | "name": "psr/http-server-middleware", 1574 | "version": "dev-master", 1575 | "source": { 1576 | "type": "git", 1577 | "url": "https://github.com/php-fig/http-server-middleware.git", 1578 | "reference": "780c6808074df604f30fc72bb6aaa889f1ff10e9" 1579 | }, 1580 | "dist": { 1581 | "type": "zip", 1582 | "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/780c6808074df604f30fc72bb6aaa889f1ff10e9", 1583 | "reference": "780c6808074df604f30fc72bb6aaa889f1ff10e9", 1584 | "shasum": "" 1585 | }, 1586 | "require": { 1587 | "php": ">=7.0", 1588 | "psr/http-message": "^1.0", 1589 | "psr/http-server-handler": "^1.0" 1590 | }, 1591 | "type": "library", 1592 | "extra": { 1593 | "branch-alias": { 1594 | "dev-master": "1.0.x-dev" 1595 | } 1596 | }, 1597 | "autoload": { 1598 | "psr-4": { 1599 | "Psr\\Http\\Server\\": "src/" 1600 | } 1601 | }, 1602 | "notification-url": "https://packagist.org/downloads/", 1603 | "license": [ 1604 | "MIT" 1605 | ], 1606 | "authors": [ 1607 | { 1608 | "name": "PHP-FIG", 1609 | "homepage": "http://www.php-fig.org/" 1610 | } 1611 | ], 1612 | "description": "Common interface for HTTP server-side middleware", 1613 | "keywords": [ 1614 | "http", 1615 | "http-interop", 1616 | "middleware", 1617 | "psr", 1618 | "psr-15", 1619 | "psr-7", 1620 | "request", 1621 | "response" 1622 | ], 1623 | "time": "2019-05-23T18:10:42+00:00" 1624 | }, 1625 | { 1626 | "name": "psr/log", 1627 | "version": "dev-master", 1628 | "source": { 1629 | "type": "git", 1630 | "url": "https://github.com/php-fig/log.git", 1631 | "reference": "e1cb6eca27ccfd46567a2837eeba62bc5fecdee2" 1632 | }, 1633 | "dist": { 1634 | "type": "zip", 1635 | "url": "https://api.github.com/repos/php-fig/log/zipball/e1cb6eca27ccfd46567a2837eeba62bc5fecdee2", 1636 | "reference": "e1cb6eca27ccfd46567a2837eeba62bc5fecdee2", 1637 | "shasum": "" 1638 | }, 1639 | "require": { 1640 | "php": ">=5.3.0" 1641 | }, 1642 | "type": "library", 1643 | "extra": { 1644 | "branch-alias": { 1645 | "dev-master": "1.1.x-dev" 1646 | } 1647 | }, 1648 | "autoload": { 1649 | "psr-4": { 1650 | "Psr\\Log\\": "Psr/Log/" 1651 | } 1652 | }, 1653 | "notification-url": "https://packagist.org/downloads/", 1654 | "license": [ 1655 | "MIT" 1656 | ], 1657 | "authors": [ 1658 | { 1659 | "name": "PHP-FIG", 1660 | "homepage": "http://www.php-fig.org/" 1661 | } 1662 | ], 1663 | "description": "Common interface for logging libraries", 1664 | "homepage": "https://github.com/php-fig/log", 1665 | "keywords": [ 1666 | "log", 1667 | "psr", 1668 | "psr-3" 1669 | ], 1670 | "time": "2020-02-28T08:38:25+00:00" 1671 | }, 1672 | { 1673 | "name": "rdlowrey/auryn", 1674 | "version": "dev-master", 1675 | "source": { 1676 | "type": "git", 1677 | "url": "https://github.com/rdlowrey/auryn.git", 1678 | "reference": "f48890ba64c3cf696d9c950f508c73c451f8778f" 1679 | }, 1680 | "dist": { 1681 | "type": "zip", 1682 | "url": "https://api.github.com/repos/rdlowrey/auryn/zipball/f48890ba64c3cf696d9c950f508c73c451f8778f", 1683 | "reference": "f48890ba64c3cf696d9c950f508c73c451f8778f", 1684 | "shasum": "" 1685 | }, 1686 | "require": { 1687 | "php": ">=5.3.0" 1688 | }, 1689 | "require-dev": { 1690 | "athletic/athletic": "~0.1", 1691 | "fabpot/php-cs-fixer": "~1.9", 1692 | "phpunit/phpunit": "^4.8" 1693 | }, 1694 | "type": "library", 1695 | "autoload": { 1696 | "psr-4": { 1697 | "Auryn\\": "lib/" 1698 | } 1699 | }, 1700 | "notification-url": "https://packagist.org/downloads/", 1701 | "license": [ 1702 | "MIT" 1703 | ], 1704 | "authors": [ 1705 | { 1706 | "name": "Dan Ackroyd", 1707 | "email": "Danack@basereality.com", 1708 | "homepage": "http://www.basereality.com", 1709 | "role": "Developer" 1710 | }, 1711 | { 1712 | "name": "Levi Morrison", 1713 | "email": "levim@php.net", 1714 | "homepage": "http://morrisonlevi.github.com/", 1715 | "role": "Developer" 1716 | }, 1717 | { 1718 | "name": "Daniel Lowrey", 1719 | "email": "rdlowrey@gmail.com", 1720 | "homepage": "https://github.com/rdlowrey", 1721 | "role": "Creator / Main Developer" 1722 | } 1723 | ], 1724 | "description": "Auryn is a dependency injector for bootstrapping object-oriented PHP applications.", 1725 | "homepage": "https://github.com/rdlowrey/auryn", 1726 | "keywords": [ 1727 | "dependency injection", 1728 | "dic", 1729 | "ioc" 1730 | ], 1731 | "time": "2019-02-19T17:25:32+00:00" 1732 | }, 1733 | { 1734 | "name": "relay/relay", 1735 | "version": "2.x-dev", 1736 | "source": { 1737 | "type": "git", 1738 | "url": "https://github.com/relayphp/Relay.Relay.git", 1739 | "reference": "17354227bdc9292d7e42d8a73a3b6b4f2ca49c63" 1740 | }, 1741 | "dist": { 1742 | "type": "zip", 1743 | "url": "https://api.github.com/repos/relayphp/Relay.Relay/zipball/17354227bdc9292d7e42d8a73a3b6b4f2ca49c63", 1744 | "reference": "17354227bdc9292d7e42d8a73a3b6b4f2ca49c63", 1745 | "shasum": "" 1746 | }, 1747 | "require": { 1748 | "php": ">=7.1", 1749 | "psr/http-message": "~1.0", 1750 | "psr/http-server-handler": "~1.0", 1751 | "psr/http-server-middleware": "^1.0" 1752 | }, 1753 | "provide": { 1754 | "psr/http-server-handler-implementation": "1.0" 1755 | }, 1756 | "require-dev": { 1757 | "phpunit/phpunit": "~7.0", 1758 | "zendframework/zend-diactoros": "~1.0" 1759 | }, 1760 | "type": "library", 1761 | "autoload": { 1762 | "psr-4": { 1763 | "Relay\\": "src/" 1764 | } 1765 | }, 1766 | "notification-url": "https://packagist.org/downloads/", 1767 | "license": [ 1768 | "MIT" 1769 | ], 1770 | "authors": [ 1771 | { 1772 | "name": "Relay.Relay Contributors", 1773 | "homepage": "https://github.com/relayphp/Relay.Relay/contributors" 1774 | } 1775 | ], 1776 | "description": "A PSR-15 server request handler.", 1777 | "homepage": "https://github.com/relayphp/Relay.Relay", 1778 | "keywords": [ 1779 | "middleware", 1780 | "psr-15", 1781 | "psr-7" 1782 | ], 1783 | "time": "2019-11-13T20:59:21+00:00" 1784 | }, 1785 | { 1786 | "name": "rkr/view", 1787 | "version": "dev-master", 1788 | "source": { 1789 | "type": "git", 1790 | "url": "https://github.com/rkrx/php-view.git", 1791 | "reference": "5a635fea66393cf2b92c5b0e67e1d810697cf006" 1792 | }, 1793 | "dist": { 1794 | "type": "zip", 1795 | "url": "https://api.github.com/repos/rkrx/php-view/zipball/5a635fea66393cf2b92c5b0e67e1d810697cf006", 1796 | "reference": "5a635fea66393cf2b92c5b0e67e1d810697cf006", 1797 | "shasum": "" 1798 | }, 1799 | "require": { 1800 | "php": ">=5.4" 1801 | }, 1802 | "require-dev": { 1803 | "phpunit/phpunit": "~3.7@stable" 1804 | }, 1805 | "type": "library", 1806 | "autoload": { 1807 | "psr-4": { 1808 | "View\\": "src/" 1809 | } 1810 | }, 1811 | "notification-url": "https://packagist.org/downloads/", 1812 | "license": [ 1813 | "MIT" 1814 | ], 1815 | "description": "More secure and easy to use templating system for php5.4+", 1816 | "time": "2017-03-02T23:02:13+00:00" 1817 | }, 1818 | { 1819 | "name": "sabre/event", 1820 | "version": "dev-master", 1821 | "source": { 1822 | "type": "git", 1823 | "url": "https://github.com/sabre-io/event.git", 1824 | "reference": "775425e0a93ed96a6655d28ecbd9467c0d3856d5" 1825 | }, 1826 | "dist": { 1827 | "type": "zip", 1828 | "url": "https://api.github.com/repos/sabre-io/event/zipball/775425e0a93ed96a6655d28ecbd9467c0d3856d5", 1829 | "reference": "775425e0a93ed96a6655d28ecbd9467c0d3856d5", 1830 | "shasum": "" 1831 | }, 1832 | "require": { 1833 | "php": "^7.1" 1834 | }, 1835 | "require-dev": { 1836 | "friendsofphp/php-cs-fixer": "~2.16.1", 1837 | "phpstan/phpstan": "^0.12", 1838 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.0" 1839 | }, 1840 | "type": "library", 1841 | "autoload": { 1842 | "psr-4": { 1843 | "Sabre\\Event\\": "lib/" 1844 | }, 1845 | "files": [ 1846 | "lib/coroutine.php", 1847 | "lib/Loop/functions.php", 1848 | "lib/Promise/functions.php" 1849 | ] 1850 | }, 1851 | "notification-url": "https://packagist.org/downloads/", 1852 | "license": [ 1853 | "BSD-3-Clause" 1854 | ], 1855 | "authors": [ 1856 | { 1857 | "name": "Evert Pot", 1858 | "email": "me@evertpot.com", 1859 | "homepage": "http://evertpot.com/", 1860 | "role": "Developer" 1861 | } 1862 | ], 1863 | "description": "sabre/event is a library for lightweight event-based programming", 1864 | "homepage": "http://sabre.io/event/", 1865 | "keywords": [ 1866 | "EventEmitter", 1867 | "async", 1868 | "coroutine", 1869 | "eventloop", 1870 | "events", 1871 | "hooks", 1872 | "plugin", 1873 | "promise", 1874 | "reactor", 1875 | "signal" 1876 | ], 1877 | "time": "2020-02-10T08:02:09+00:00" 1878 | }, 1879 | { 1880 | "name": "samchristy/piechart", 1881 | "version": "dev-master", 1882 | "source": { 1883 | "type": "git", 1884 | "url": "https://github.com/SamChristy/PieChart.git", 1885 | "reference": "98b3f01526f5d24c072b2b2228762133bc5dd069" 1886 | }, 1887 | "dist": { 1888 | "type": "zip", 1889 | "url": "https://api.github.com/repos/SamChristy/PieChart/zipball/98b3f01526f5d24c072b2b2228762133bc5dd069", 1890 | "reference": "98b3f01526f5d24c072b2b2228762133bc5dd069", 1891 | "shasum": "" 1892 | }, 1893 | "require": { 1894 | "php": ">=5.3.0" 1895 | }, 1896 | "type": "library", 1897 | "autoload": { 1898 | "psr-0": { 1899 | "SamChristy\\PieChart\\": "src/" 1900 | } 1901 | }, 1902 | "notification-url": "https://packagist.org/downloads/", 1903 | "license": [ 1904 | "GPL-2.0+" 1905 | ], 1906 | "authors": [ 1907 | { 1908 | "name": "Sam Christy", 1909 | "email": "sam_christy@hotmail.co.uk", 1910 | "homepage": "https://github.com/SamChristy" 1911 | } 1912 | ], 1913 | "description": "A simple class for drawing pie charts with ImageMagick or GD in PHP.", 1914 | "homepage": "https://github.com/SamChristy/PieChart", 1915 | "keywords": [ 1916 | "chart", 1917 | "graphics", 1918 | "pie" 1919 | ], 1920 | "time": "2018-08-05T09:21:33+00:00" 1921 | }, 1922 | { 1923 | "name": "siriusphp/middleware", 1924 | "version": "dev-master", 1925 | "source": { 1926 | "type": "git", 1927 | "url": "https://github.com/siriusphp/middleware.git", 1928 | "reference": "e6805639982d2c0ae01dc9e9a1583915b7873782" 1929 | }, 1930 | "dist": { 1931 | "type": "zip", 1932 | "url": "https://api.github.com/repos/siriusphp/middleware/zipball/e6805639982d2c0ae01dc9e9a1583915b7873782", 1933 | "reference": "e6805639982d2c0ae01dc9e9a1583915b7873782", 1934 | "shasum": "" 1935 | }, 1936 | "require": { 1937 | "php": ">=5.4", 1938 | "psr/http-message": "^1.0" 1939 | }, 1940 | "require-dev": { 1941 | "phpunit/phpunit": "~4.8", 1942 | "squizlabs/php_codesniffer": "^2.6", 1943 | "zendframework/zend-diactoros": "^1.3" 1944 | }, 1945 | "suggest": { 1946 | "zendframework/zend-diactoros": "*" 1947 | }, 1948 | "type": "library", 1949 | "autoload": { 1950 | "psr-4": { 1951 | "Sirius\\Middleware\\": "src/" 1952 | } 1953 | }, 1954 | "notification-url": "https://packagist.org/downloads/", 1955 | "license": [ 1956 | "MIT" 1957 | ], 1958 | "authors": [ 1959 | { 1960 | "name": "Adrian Miu", 1961 | "email": "adrian@adrianmiu.ro" 1962 | } 1963 | ], 1964 | "description": "Lightweight middleware implementation. 1 class, ", 1965 | "homepage": "https://github.com/sirius/middleware", 1966 | "keywords": [ 1967 | "http", 1968 | "middleware", 1969 | "psr", 1970 | "psr-7", 1971 | "request", 1972 | "response", 1973 | "zend-diactoros" 1974 | ], 1975 | "time": "2016-06-21T11:33:37+00:00" 1976 | }, 1977 | { 1978 | "name": "stefangabos/zebra_image", 1979 | "version": "dev-master", 1980 | "source": { 1981 | "type": "git", 1982 | "url": "https://github.com/stefangabos/Zebra_Image.git", 1983 | "reference": "c0b6705311221a7102d499806a524a82f375c326" 1984 | }, 1985 | "dist": { 1986 | "type": "zip", 1987 | "url": "https://api.github.com/repos/stefangabos/Zebra_Image/zipball/c0b6705311221a7102d499806a524a82f375c326", 1988 | "reference": "c0b6705311221a7102d499806a524a82f375c326", 1989 | "shasum": "" 1990 | }, 1991 | "require": { 1992 | "php": ">=5.0.0" 1993 | }, 1994 | "type": "library", 1995 | "autoload": { 1996 | "classmap": [ 1997 | "Zebra_Image.php" 1998 | ] 1999 | }, 2000 | "notification-url": "https://packagist.org/downloads/", 2001 | "license": [ 2002 | "LGPL-3.0" 2003 | ], 2004 | "authors": [ 2005 | { 2006 | "name": "Stefan Gabos", 2007 | "email": "contact@stefangabos.ro", 2008 | "homepage": "https://github.com/stefangabos/", 2009 | "role": "Developer" 2010 | } 2011 | ], 2012 | "description": "A compact (one-file only), lightweight, image manipulation PHP library", 2013 | "homepage": "https://github.com/stefangabos/Zebra_Image/", 2014 | "keywords": [ 2015 | "crop", 2016 | "filters", 2017 | "gd", 2018 | "image", 2019 | "php", 2020 | "resize", 2021 | "thumbnail" 2022 | ], 2023 | "time": "2020-02-16T16:34:44+00:00" 2024 | }, 2025 | { 2026 | "name": "vlucas/valitron", 2027 | "version": "dev-master", 2028 | "source": { 2029 | "type": "git", 2030 | "url": "https://github.com/vlucas/valitron.git", 2031 | "reference": "87f830e5540f0d548dd5188913417ddd265da4e8" 2032 | }, 2033 | "dist": { 2034 | "type": "zip", 2035 | "url": "https://api.github.com/repos/vlucas/valitron/zipball/87f830e5540f0d548dd5188913417ddd265da4e8", 2036 | "reference": "87f830e5540f0d548dd5188913417ddd265da4e8", 2037 | "shasum": "" 2038 | }, 2039 | "require": { 2040 | "php": ">=5.3.2" 2041 | }, 2042 | "require-dev": { 2043 | "phpunit/phpunit": "^4.8.35 || ^5.5 || ^6.5" 2044 | }, 2045 | "suggest": { 2046 | "ext-mbstring": "It can support the multiple bytes string length." 2047 | }, 2048 | "type": "library", 2049 | "autoload": { 2050 | "psr-4": { 2051 | "Valitron\\": "src/Valitron" 2052 | } 2053 | }, 2054 | "notification-url": "https://packagist.org/downloads/", 2055 | "license": [ 2056 | "BSD-3-Clause" 2057 | ], 2058 | "authors": [ 2059 | { 2060 | "name": "Vance Lucas", 2061 | "email": "vance@vancelucas.com", 2062 | "homepage": "http://www.vancelucas.com" 2063 | } 2064 | ], 2065 | "description": "Simple, elegant, stand-alone validation library with NO dependencies", 2066 | "homepage": "http://github.com/vlucas/valitron", 2067 | "keywords": [ 2068 | "valid", 2069 | "validation", 2070 | "validator" 2071 | ], 2072 | "time": "2020-02-14T14:19:19+00:00" 2073 | }, 2074 | { 2075 | "name": "willdurand/negotiation", 2076 | "version": "dev-master", 2077 | "source": { 2078 | "type": "git", 2079 | "url": "https://github.com/willdurand/Negotiation.git", 2080 | "reference": "d8c86d51f01de65c1ca41dfbb842105d42906229" 2081 | }, 2082 | "dist": { 2083 | "type": "zip", 2084 | "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/d8c86d51f01de65c1ca41dfbb842105d42906229", 2085 | "reference": "d8c86d51f01de65c1ca41dfbb842105d42906229", 2086 | "shasum": "" 2087 | }, 2088 | "require": { 2089 | "php": ">=7.0.0" 2090 | }, 2091 | "require-dev": { 2092 | "phpunit/phpunit": "^6.5" 2093 | }, 2094 | "type": "library", 2095 | "extra": { 2096 | "branch-alias": { 2097 | "dev-master": "3.0-dev" 2098 | } 2099 | }, 2100 | "autoload": { 2101 | "psr-4": { 2102 | "Negotiation\\": "src/Negotiation" 2103 | } 2104 | }, 2105 | "notification-url": "https://packagist.org/downloads/", 2106 | "license": [ 2107 | "MIT" 2108 | ], 2109 | "authors": [ 2110 | { 2111 | "name": "William Durand", 2112 | "email": "will+git@drnd.me" 2113 | } 2114 | ], 2115 | "description": "Content Negotiation tools for PHP provided as a standalone library.", 2116 | "homepage": "http://williamdurand.fr/Negotiation/", 2117 | "keywords": [ 2118 | "accept", 2119 | "content", 2120 | "format", 2121 | "header", 2122 | "negotiation" 2123 | ], 2124 | "time": "2019-04-20T08:59:25+00:00" 2125 | } 2126 | ], 2127 | "packages-dev": [ 2128 | { 2129 | "name": "phploc/phploc", 2130 | "version": "dev-master", 2131 | "source": { 2132 | "type": "git", 2133 | "url": "https://github.com/sebastianbergmann/phploc.git", 2134 | "reference": "00e3bade7b22a6f23b17c3bf2fa4dba24ead8a29" 2135 | }, 2136 | "dist": { 2137 | "type": "zip", 2138 | "url": "https://api.github.com/repos/sebastianbergmann/phploc/zipball/00e3bade7b22a6f23b17c3bf2fa4dba24ead8a29", 2139 | "reference": "00e3bade7b22a6f23b17c3bf2fa4dba24ead8a29", 2140 | "shasum": "" 2141 | }, 2142 | "require": { 2143 | "ext-dom": "*", 2144 | "ext-json": "*", 2145 | "php": "^7.3", 2146 | "sebastian/finder-facade": "^2.0", 2147 | "sebastian/version": "^3.0", 2148 | "symfony/console": "^4.0 || ^5.0" 2149 | }, 2150 | "bin": [ 2151 | "phploc" 2152 | ], 2153 | "type": "library", 2154 | "extra": { 2155 | "branch-alias": { 2156 | "dev-master": "6.0-dev" 2157 | } 2158 | }, 2159 | "autoload": { 2160 | "classmap": [ 2161 | "src/" 2162 | ] 2163 | }, 2164 | "notification-url": "https://packagist.org/downloads/", 2165 | "license": [ 2166 | "BSD-3-Clause" 2167 | ], 2168 | "authors": [ 2169 | { 2170 | "name": "Sebastian Bergmann", 2171 | "email": "sebastian@phpunit.de", 2172 | "role": "lead" 2173 | } 2174 | ], 2175 | "description": "A tool for quickly measuring the size of a PHP project.", 2176 | "homepage": "https://github.com/sebastianbergmann/phploc", 2177 | "time": "2020-02-28T05:42:22+00:00" 2178 | }, 2179 | { 2180 | "name": "sebastian/finder-facade", 2181 | "version": "dev-master", 2182 | "source": { 2183 | "type": "git", 2184 | "url": "https://github.com/sebastianbergmann/finder-facade.git", 2185 | "reference": "9d3e74b845a2ce50e19b25b5f0c2718e153bee6c" 2186 | }, 2187 | "dist": { 2188 | "type": "zip", 2189 | "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/9d3e74b845a2ce50e19b25b5f0c2718e153bee6c", 2190 | "reference": "9d3e74b845a2ce50e19b25b5f0c2718e153bee6c", 2191 | "shasum": "" 2192 | }, 2193 | "require": { 2194 | "ext-ctype": "*", 2195 | "php": "^7.3", 2196 | "symfony/finder": "^4.1|^5.0", 2197 | "theseer/fdomdocument": "^1.6" 2198 | }, 2199 | "type": "library", 2200 | "extra": { 2201 | "branch-alias": { 2202 | "dev-master": "2.0-dev" 2203 | } 2204 | }, 2205 | "autoload": { 2206 | "classmap": [ 2207 | "src/" 2208 | ] 2209 | }, 2210 | "notification-url": "https://packagist.org/downloads/", 2211 | "license": [ 2212 | "BSD-3-Clause" 2213 | ], 2214 | "authors": [ 2215 | { 2216 | "name": "Sebastian Bergmann", 2217 | "email": "sebastian@phpunit.de", 2218 | "role": "lead" 2219 | } 2220 | ], 2221 | "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.", 2222 | "homepage": "https://github.com/sebastianbergmann/finder-facade", 2223 | "time": "2020-02-08T06:07:58+00:00" 2224 | }, 2225 | { 2226 | "name": "sebastian/version", 2227 | "version": "dev-master", 2228 | "source": { 2229 | "type": "git", 2230 | "url": "https://github.com/sebastianbergmann/version.git", 2231 | "reference": "0411bde656dce64202b39c2f4473993a9081d39e" 2232 | }, 2233 | "dist": { 2234 | "type": "zip", 2235 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/0411bde656dce64202b39c2f4473993a9081d39e", 2236 | "reference": "0411bde656dce64202b39c2f4473993a9081d39e", 2237 | "shasum": "" 2238 | }, 2239 | "require": { 2240 | "php": "^7.3" 2241 | }, 2242 | "type": "library", 2243 | "extra": { 2244 | "branch-alias": { 2245 | "dev-master": "3.0-dev" 2246 | } 2247 | }, 2248 | "autoload": { 2249 | "classmap": [ 2250 | "src/" 2251 | ] 2252 | }, 2253 | "notification-url": "https://packagist.org/downloads/", 2254 | "license": [ 2255 | "BSD-3-Clause" 2256 | ], 2257 | "authors": [ 2258 | { 2259 | "name": "Sebastian Bergmann", 2260 | "email": "sebastian@phpunit.de", 2261 | "role": "lead" 2262 | } 2263 | ], 2264 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2265 | "homepage": "https://github.com/sebastianbergmann/version", 2266 | "time": "2020-01-21T06:36:37+00:00" 2267 | }, 2268 | { 2269 | "name": "symfony/console", 2270 | "version": "dev-master", 2271 | "source": { 2272 | "type": "git", 2273 | "url": "https://github.com/symfony/console.git", 2274 | "reference": "d487d68fd7e85e2d3fc5cc69e41d66edd15cec1e" 2275 | }, 2276 | "dist": { 2277 | "type": "zip", 2278 | "url": "https://api.github.com/repos/symfony/console/zipball/d487d68fd7e85e2d3fc5cc69e41d66edd15cec1e", 2279 | "reference": "d487d68fd7e85e2d3fc5cc69e41d66edd15cec1e", 2280 | "shasum": "" 2281 | }, 2282 | "require": { 2283 | "php": "^7.2.5", 2284 | "symfony/polyfill-mbstring": "~1.0", 2285 | "symfony/polyfill-php73": "^1.8", 2286 | "symfony/service-contracts": "^1.1|^2", 2287 | "symfony/string": "^5.1" 2288 | }, 2289 | "conflict": { 2290 | "symfony/dependency-injection": "<4.4", 2291 | "symfony/dotenv": "<5.1", 2292 | "symfony/event-dispatcher": "<4.4", 2293 | "symfony/lock": "<4.4", 2294 | "symfony/process": "<4.4" 2295 | }, 2296 | "provide": { 2297 | "psr/log-implementation": "1.0" 2298 | }, 2299 | "require-dev": { 2300 | "psr/log": "~1.0", 2301 | "symfony/config": "^4.4|^5.0", 2302 | "symfony/dependency-injection": "^4.4|^5.0", 2303 | "symfony/event-dispatcher": "^4.4|^5.0", 2304 | "symfony/lock": "^4.4|^5.0", 2305 | "symfony/process": "^4.4|^5.0", 2306 | "symfony/var-dumper": "^4.4|^5.0" 2307 | }, 2308 | "suggest": { 2309 | "psr/log": "For using the console logger", 2310 | "symfony/event-dispatcher": "", 2311 | "symfony/lock": "", 2312 | "symfony/process": "" 2313 | }, 2314 | "type": "library", 2315 | "extra": { 2316 | "branch-alias": { 2317 | "dev-master": "5.1-dev" 2318 | } 2319 | }, 2320 | "autoload": { 2321 | "psr-4": { 2322 | "Symfony\\Component\\Console\\": "" 2323 | }, 2324 | "exclude-from-classmap": [ 2325 | "/Tests/" 2326 | ] 2327 | }, 2328 | "notification-url": "https://packagist.org/downloads/", 2329 | "license": [ 2330 | "MIT" 2331 | ], 2332 | "authors": [ 2333 | { 2334 | "name": "Fabien Potencier", 2335 | "email": "fabien@symfony.com" 2336 | }, 2337 | { 2338 | "name": "Symfony Community", 2339 | "homepage": "https://symfony.com/contributors" 2340 | } 2341 | ], 2342 | "description": "Symfony Console Component", 2343 | "homepage": "https://symfony.com", 2344 | "time": "2020-02-24T15:14:17+00:00" 2345 | }, 2346 | { 2347 | "name": "symfony/finder", 2348 | "version": "dev-master", 2349 | "source": { 2350 | "type": "git", 2351 | "url": "https://github.com/symfony/finder.git", 2352 | "reference": "008b6cc6da7141baf1766d72d2731b0e6f78b45b" 2353 | }, 2354 | "dist": { 2355 | "type": "zip", 2356 | "url": "https://api.github.com/repos/symfony/finder/zipball/008b6cc6da7141baf1766d72d2731b0e6f78b45b", 2357 | "reference": "008b6cc6da7141baf1766d72d2731b0e6f78b45b", 2358 | "shasum": "" 2359 | }, 2360 | "require": { 2361 | "php": "^7.2.5" 2362 | }, 2363 | "type": "library", 2364 | "extra": { 2365 | "branch-alias": { 2366 | "dev-master": "5.1-dev" 2367 | } 2368 | }, 2369 | "autoload": { 2370 | "psr-4": { 2371 | "Symfony\\Component\\Finder\\": "" 2372 | }, 2373 | "exclude-from-classmap": [ 2374 | "/Tests/" 2375 | ] 2376 | }, 2377 | "notification-url": "https://packagist.org/downloads/", 2378 | "license": [ 2379 | "MIT" 2380 | ], 2381 | "authors": [ 2382 | { 2383 | "name": "Fabien Potencier", 2384 | "email": "fabien@symfony.com" 2385 | }, 2386 | { 2387 | "name": "Symfony Community", 2388 | "homepage": "https://symfony.com/contributors" 2389 | } 2390 | ], 2391 | "description": "Symfony Finder Component", 2392 | "homepage": "https://symfony.com", 2393 | "time": "2020-02-14T07:43:15+00:00" 2394 | }, 2395 | { 2396 | "name": "symfony/polyfill-intl-grapheme", 2397 | "version": "dev-master", 2398 | "source": { 2399 | "type": "git", 2400 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 2401 | "reference": "f801c1bec10d53698f339f3023272a801a81af2e" 2402 | }, 2403 | "dist": { 2404 | "type": "zip", 2405 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/f801c1bec10d53698f339f3023272a801a81af2e", 2406 | "reference": "f801c1bec10d53698f339f3023272a801a81af2e", 2407 | "shasum": "" 2408 | }, 2409 | "require": { 2410 | "php": ">=5.3.3" 2411 | }, 2412 | "suggest": { 2413 | "ext-intl": "For best performance" 2414 | }, 2415 | "type": "library", 2416 | "extra": { 2417 | "branch-alias": { 2418 | "dev-master": "1.15-dev" 2419 | } 2420 | }, 2421 | "autoload": { 2422 | "psr-4": { 2423 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 2424 | }, 2425 | "files": [ 2426 | "bootstrap.php" 2427 | ] 2428 | }, 2429 | "notification-url": "https://packagist.org/downloads/", 2430 | "license": [ 2431 | "MIT" 2432 | ], 2433 | "authors": [ 2434 | { 2435 | "name": "Nicolas Grekas", 2436 | "email": "p@tchwork.com" 2437 | }, 2438 | { 2439 | "name": "Symfony Community", 2440 | "homepage": "https://symfony.com/contributors" 2441 | } 2442 | ], 2443 | "description": "Symfony polyfill for intl's grapheme_* functions", 2444 | "homepage": "https://symfony.com", 2445 | "keywords": [ 2446 | "compatibility", 2447 | "grapheme", 2448 | "intl", 2449 | "polyfill", 2450 | "portable", 2451 | "shim" 2452 | ], 2453 | "time": "2020-02-27T09:26:54+00:00" 2454 | }, 2455 | { 2456 | "name": "symfony/polyfill-intl-normalizer", 2457 | "version": "dev-master", 2458 | "source": { 2459 | "type": "git", 2460 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 2461 | "reference": "e62715f03f90dd8d2f3eb5daa21b4d19d71aebde" 2462 | }, 2463 | "dist": { 2464 | "type": "zip", 2465 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/e62715f03f90dd8d2f3eb5daa21b4d19d71aebde", 2466 | "reference": "e62715f03f90dd8d2f3eb5daa21b4d19d71aebde", 2467 | "shasum": "" 2468 | }, 2469 | "require": { 2470 | "php": ">=5.3.3" 2471 | }, 2472 | "suggest": { 2473 | "ext-intl": "For best performance" 2474 | }, 2475 | "type": "library", 2476 | "extra": { 2477 | "branch-alias": { 2478 | "dev-master": "1.15-dev" 2479 | } 2480 | }, 2481 | "autoload": { 2482 | "psr-4": { 2483 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 2484 | }, 2485 | "files": [ 2486 | "bootstrap.php" 2487 | ], 2488 | "classmap": [ 2489 | "Resources/stubs" 2490 | ] 2491 | }, 2492 | "notification-url": "https://packagist.org/downloads/", 2493 | "license": [ 2494 | "MIT" 2495 | ], 2496 | "authors": [ 2497 | { 2498 | "name": "Nicolas Grekas", 2499 | "email": "p@tchwork.com" 2500 | }, 2501 | { 2502 | "name": "Symfony Community", 2503 | "homepage": "https://symfony.com/contributors" 2504 | } 2505 | ], 2506 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 2507 | "homepage": "https://symfony.com", 2508 | "keywords": [ 2509 | "compatibility", 2510 | "intl", 2511 | "normalizer", 2512 | "polyfill", 2513 | "portable", 2514 | "shim" 2515 | ], 2516 | "time": "2020-02-27T09:26:54+00:00" 2517 | }, 2518 | { 2519 | "name": "symfony/polyfill-mbstring", 2520 | "version": "dev-master", 2521 | "source": { 2522 | "type": "git", 2523 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2524 | "reference": "766ee47e656529b352da69c0ff29da928a9629e7" 2525 | }, 2526 | "dist": { 2527 | "type": "zip", 2528 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/766ee47e656529b352da69c0ff29da928a9629e7", 2529 | "reference": "766ee47e656529b352da69c0ff29da928a9629e7", 2530 | "shasum": "" 2531 | }, 2532 | "require": { 2533 | "php": ">=5.3.3" 2534 | }, 2535 | "suggest": { 2536 | "ext-mbstring": "For best performance" 2537 | }, 2538 | "type": "library", 2539 | "extra": { 2540 | "branch-alias": { 2541 | "dev-master": "1.15-dev" 2542 | } 2543 | }, 2544 | "autoload": { 2545 | "psr-4": { 2546 | "Symfony\\Polyfill\\Mbstring\\": "" 2547 | }, 2548 | "files": [ 2549 | "bootstrap.php" 2550 | ] 2551 | }, 2552 | "notification-url": "https://packagist.org/downloads/", 2553 | "license": [ 2554 | "MIT" 2555 | ], 2556 | "authors": [ 2557 | { 2558 | "name": "Nicolas Grekas", 2559 | "email": "p@tchwork.com" 2560 | }, 2561 | { 2562 | "name": "Symfony Community", 2563 | "homepage": "https://symfony.com/contributors" 2564 | } 2565 | ], 2566 | "description": "Symfony polyfill for the Mbstring extension", 2567 | "homepage": "https://symfony.com", 2568 | "keywords": [ 2569 | "compatibility", 2570 | "mbstring", 2571 | "polyfill", 2572 | "portable", 2573 | "shim" 2574 | ], 2575 | "time": "2020-02-27T09:26:54+00:00" 2576 | }, 2577 | { 2578 | "name": "symfony/polyfill-php73", 2579 | "version": "dev-master", 2580 | "source": { 2581 | "type": "git", 2582 | "url": "https://github.com/symfony/polyfill-php73.git", 2583 | "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7" 2584 | }, 2585 | "dist": { 2586 | "type": "zip", 2587 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", 2588 | "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", 2589 | "shasum": "" 2590 | }, 2591 | "require": { 2592 | "php": ">=5.3.3" 2593 | }, 2594 | "type": "library", 2595 | "extra": { 2596 | "branch-alias": { 2597 | "dev-master": "1.15-dev" 2598 | } 2599 | }, 2600 | "autoload": { 2601 | "psr-4": { 2602 | "Symfony\\Polyfill\\Php73\\": "" 2603 | }, 2604 | "files": [ 2605 | "bootstrap.php" 2606 | ], 2607 | "classmap": [ 2608 | "Resources/stubs" 2609 | ] 2610 | }, 2611 | "notification-url": "https://packagist.org/downloads/", 2612 | "license": [ 2613 | "MIT" 2614 | ], 2615 | "authors": [ 2616 | { 2617 | "name": "Nicolas Grekas", 2618 | "email": "p@tchwork.com" 2619 | }, 2620 | { 2621 | "name": "Symfony Community", 2622 | "homepage": "https://symfony.com/contributors" 2623 | } 2624 | ], 2625 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 2626 | "homepage": "https://symfony.com", 2627 | "keywords": [ 2628 | "compatibility", 2629 | "polyfill", 2630 | "portable", 2631 | "shim" 2632 | ], 2633 | "time": "2020-02-27T09:26:54+00:00" 2634 | }, 2635 | { 2636 | "name": "symfony/service-contracts", 2637 | "version": "dev-master", 2638 | "source": { 2639 | "type": "git", 2640 | "url": "https://github.com/symfony/service-contracts.git", 2641 | "reference": "1d69dad232b9d88e495766b7b6cb857627d6bedc" 2642 | }, 2643 | "dist": { 2644 | "type": "zip", 2645 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1d69dad232b9d88e495766b7b6cb857627d6bedc", 2646 | "reference": "1d69dad232b9d88e495766b7b6cb857627d6bedc", 2647 | "shasum": "" 2648 | }, 2649 | "require": { 2650 | "php": "^7.2.5", 2651 | "psr/container": "^1.0" 2652 | }, 2653 | "suggest": { 2654 | "symfony/service-implementation": "" 2655 | }, 2656 | "type": "library", 2657 | "extra": { 2658 | "branch-alias": { 2659 | "dev-master": "2.0-dev" 2660 | } 2661 | }, 2662 | "autoload": { 2663 | "psr-4": { 2664 | "Symfony\\Contracts\\Service\\": "" 2665 | } 2666 | }, 2667 | "notification-url": "https://packagist.org/downloads/", 2668 | "license": [ 2669 | "MIT" 2670 | ], 2671 | "authors": [ 2672 | { 2673 | "name": "Nicolas Grekas", 2674 | "email": "p@tchwork.com" 2675 | }, 2676 | { 2677 | "name": "Symfony Community", 2678 | "homepage": "https://symfony.com/contributors" 2679 | } 2680 | ], 2681 | "description": "Generic abstractions related to writing services", 2682 | "homepage": "https://symfony.com", 2683 | "keywords": [ 2684 | "abstractions", 2685 | "contracts", 2686 | "decoupling", 2687 | "interfaces", 2688 | "interoperability", 2689 | "standards" 2690 | ], 2691 | "time": "2020-02-14T07:31:56+00:00" 2692 | }, 2693 | { 2694 | "name": "symfony/string", 2695 | "version": "dev-master", 2696 | "source": { 2697 | "type": "git", 2698 | "url": "https://github.com/symfony/string.git", 2699 | "reference": "f409400099502de2393ed7463e46e674adf72ca3" 2700 | }, 2701 | "dist": { 2702 | "type": "zip", 2703 | "url": "https://api.github.com/repos/symfony/string/zipball/f409400099502de2393ed7463e46e674adf72ca3", 2704 | "reference": "f409400099502de2393ed7463e46e674adf72ca3", 2705 | "shasum": "" 2706 | }, 2707 | "require": { 2708 | "php": "^7.2.5", 2709 | "symfony/polyfill-intl-grapheme": "~1.0", 2710 | "symfony/polyfill-intl-normalizer": "~1.0", 2711 | "symfony/polyfill-mbstring": "~1.0" 2712 | }, 2713 | "require-dev": { 2714 | "symfony/error-handler": "^4.4|^5.0", 2715 | "symfony/http-client": "^4.4|^5.0", 2716 | "symfony/translation-contracts": "^1.1|^2", 2717 | "symfony/var-exporter": "^4.4|^5.0" 2718 | }, 2719 | "type": "library", 2720 | "extra": { 2721 | "branch-alias": { 2722 | "dev-master": "5.1-dev" 2723 | } 2724 | }, 2725 | "autoload": { 2726 | "psr-4": { 2727 | "Symfony\\Component\\String\\": "" 2728 | }, 2729 | "files": [ 2730 | "Resources/functions.php" 2731 | ], 2732 | "exclude-from-classmap": [ 2733 | "/Tests/" 2734 | ] 2735 | }, 2736 | "notification-url": "https://packagist.org/downloads/", 2737 | "license": [ 2738 | "MIT" 2739 | ], 2740 | "authors": [ 2741 | { 2742 | "name": "Nicolas Grekas", 2743 | "email": "p@tchwork.com" 2744 | }, 2745 | { 2746 | "name": "Symfony Community", 2747 | "homepage": "https://symfony.com/contributors" 2748 | } 2749 | ], 2750 | "description": "Symfony String component", 2751 | "homepage": "https://symfony.com", 2752 | "keywords": [ 2753 | "grapheme", 2754 | "i18n", 2755 | "string", 2756 | "unicode", 2757 | "utf-8", 2758 | "utf8" 2759 | ], 2760 | "time": "2020-03-03T21:05:19+00:00" 2761 | }, 2762 | { 2763 | "name": "theseer/fdomdocument", 2764 | "version": "1.6.6", 2765 | "source": { 2766 | "type": "git", 2767 | "url": "https://github.com/theseer/fDOMDocument.git", 2768 | "reference": "6e8203e40a32a9c770bcb62fe37e68b948da6dca" 2769 | }, 2770 | "dist": { 2771 | "type": "zip", 2772 | "url": "https://api.github.com/repos/theseer/fDOMDocument/zipball/6e8203e40a32a9c770bcb62fe37e68b948da6dca", 2773 | "reference": "6e8203e40a32a9c770bcb62fe37e68b948da6dca", 2774 | "shasum": "" 2775 | }, 2776 | "require": { 2777 | "ext-dom": "*", 2778 | "lib-libxml": "*", 2779 | "php": ">=5.3.3" 2780 | }, 2781 | "type": "library", 2782 | "autoload": { 2783 | "classmap": [ 2784 | "src/" 2785 | ] 2786 | }, 2787 | "notification-url": "https://packagist.org/downloads/", 2788 | "license": [ 2789 | "BSD-3-Clause" 2790 | ], 2791 | "authors": [ 2792 | { 2793 | "name": "Arne Blankerts", 2794 | "email": "arne@blankerts.de", 2795 | "role": "lead" 2796 | } 2797 | ], 2798 | "description": "The classes contained within this repository extend the standard DOM to use exceptions at all occasions of errors instead of PHP warnings or notices. They also add various custom methods and shortcuts for convenience and to simplify the usage of DOM.", 2799 | "homepage": "https://github.com/theseer/fDOMDocument", 2800 | "time": "2017-06-30T11:53:12+00:00" 2801 | } 2802 | ], 2803 | "aliases": [], 2804 | "minimum-stability": "dev", 2805 | "stability-flags": { 2806 | "lime/lime": 20, 2807 | "catfan/medoo": 20, 2808 | "bephp/activerecord": 20, 2809 | "agentejo/mongo-lite": 20, 2810 | "pimple/pimple": 20, 2811 | "rdlowrey/auryn": 20, 2812 | "chevron/containers": 20, 2813 | "level-2/dice": 20, 2814 | "evenement/evenement": 20, 2815 | "sabre/event": 20, 2816 | "nikic/fast-route": 20, 2817 | "mindplay/walkway": 20, 2818 | "aura/router": 20, 2819 | "bephp/router": 20, 2820 | "rkr/view": 20, 2821 | "indieweb/date-formatter": 20, 2822 | "erusev/parsedown": 20, 2823 | "nategood/httpful": 20, 2824 | "willdurand/negotiation": 20, 2825 | "php-http/httplug": 20, 2826 | "mashape/unirest-php": 20, 2827 | "lukasoppermann/http-status": 20, 2828 | "kambo/httpmessage": 20, 2829 | "p3k/http": 20, 2830 | "ircmaxell/tari-php": 20, 2831 | "relay/relay": 20, 2832 | "siriusphp/middleware": 20, 2833 | "apix/log": 20, 2834 | "vlucas/valitron": 20, 2835 | "ircmaxell/filterus": 20, 2836 | "guide42/plan": 20, 2837 | "samchristy/piechart": 20, 2838 | "stefangabos/zebra_image": 20 2839 | }, 2840 | "prefer-stable": false, 2841 | "prefer-lowest": false, 2842 | "platform": [], 2843 | "platform-dev": [] 2844 | } 2845 | -------------------------------------------------------------------------------- /provision.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | - hosts: all 4 | vars: 5 | packages: 6 | - git 7 | - curl 8 | - unzip 9 | - php7.2-cli 10 | - php7.2-gd 11 | - php7.2-curl 12 | - php7.2-dom 13 | php_ini: 14 | "default_charset": "UTF-8" 15 | "date.timezone": "UTC" 16 | phars: 17 | composer: https://getcomposer.org/composer.phar 18 | tasks: 19 | - apt_repository: repo="ppa:ondrej/php" update_cache=yes state=present 20 | environment: {LC_ALL: C.UTF-8} 21 | - apt: name={{ packages }} update_cache=yes state=latest 22 | - lineinfile: dest=/etc/php/7.2/cli/php.ini regexp="^{{ item.key }}" line="{{ item.key }}={{ item.value }}" state=present 23 | with_dict: "{{ php_ini }}" 24 | - get_url: url={{ item.value }} dest=/usr/local/bin/{{ item.key }} mode=0755 25 | with_dict: "{{ phars }}" 26 | -------------------------------------------------------------------------------- /weight.php: -------------------------------------------------------------------------------- 1 | 1) { 12 | $dir = realpath($argv[1]); 13 | } else { 14 | $dir = getcwd(); 15 | } 16 | 17 | if (!file_exists($dir . '/composer.json') || 18 | !file_exists($dir . '/composer.lock') 19 | ) { 20 | echo "Directory does not contain composer.json and composer.lock\n"; 21 | exit(1); 22 | } 23 | 24 | $weight = new Weight($dir); 25 | $title = 'Lightweight PHP (by Logical Lines of Code)' 26 | . ' (generated ' . date('Y/m/d') . ')'; 27 | 28 | list($counts, $extras) = $weight->run(); 29 | 30 | $char = new Chart($counts, $title, $extras); 31 | $char->draw(888, 580); 32 | $char->save('weight.png'); 33 | } 34 | 35 | class Weight 36 | { 37 | protected $root; /* root directory where composer.json is found */ 38 | protected $vendor; /* name of the vendor folder */ 39 | protected $packages; /* all package information from composer.lock */ 40 | protected $weight; /* weight cache for names packages */ 41 | 42 | public function __construct($root) 43 | { 44 | $this->root = $root; 45 | } 46 | 47 | protected function parse($root) 48 | { 49 | $data = json_decode(file_get_contents($root . '/composer.json'), true); 50 | $lock = json_decode(file_get_contents($root . '/composer.lock'), true); 51 | 52 | $this->vendor = @$data['config']['vendor-dir'] ?: 'vendor'; 53 | 54 | foreach ($lock['packages'] as $package) { 55 | $this->packages[$package['name']] = $package; 56 | } 57 | 58 | return $data; 59 | } 60 | 61 | protected function weightPackage($name) 62 | { 63 | if (substr(strtolower($name), 0, 4) === 'ext-' || 64 | substr(strtolower($name), 0, 4) === 'lib-' 65 | ) { 66 | return 0; 67 | } 68 | 69 | if (isset($this->weight[$name])) { 70 | return $this->weight[$name]; 71 | } 72 | 73 | $package = $this->packages[$name]; 74 | $autoload = (array) @$package['autoload']; 75 | 76 | $paths = array(); 77 | array_walk_recursive($autoload, function ($path, $_) use (&$paths) 78 | { 79 | $paths[] = $path; 80 | }); 81 | 82 | $weight = 0; 83 | foreach ($paths as $path) { 84 | $fullpath = $this->root . '/' . $this->vendor . '/' 85 | . $name . '/' . $path; 86 | 87 | if (is_file($fullpath)) { 88 | $weight += $this->weightFile($fullpath); 89 | } else { 90 | $weight += $this->weightDir($fullpath); 91 | } 92 | } 93 | 94 | if (empty($package['require'])) { 95 | return $this->weight[$name] = $weight; 96 | } 97 | 98 | foreach ($package['require'] as $reqname => $reqversion) { 99 | if (strtolower($reqname) === 'php') { 100 | continue; 101 | } 102 | 103 | $weight += $this->weightPackage($reqname); 104 | } 105 | 106 | return $this->weight[$name] = $weight; 107 | } 108 | 109 | protected function weightDir($dirname) 110 | { 111 | if (!is_dir($dirname)) { 112 | return 0; 113 | } 114 | 115 | $weight = 0; 116 | 117 | $iter = new RegexIterator( 118 | new RecursiveIteratorIterator( 119 | new RecursiveDirectoryIterator($dirname) 120 | ), 121 | '/^((?!Test).)+\.php$/i', 122 | RecursiveRegexIterator::GET_MATCH 123 | ); 124 | 125 | foreach ($iter as $filematch) { 126 | $weight += $this->weightFile($filematch[0]); 127 | } 128 | 129 | return $weight; 130 | } 131 | 132 | protected function weightFile($filename) 133 | { 134 | if (class_exists('\\SebastianBergmann\\PHPLOC\\Analyser')) { 135 | $analyser = new \SebastianBergmann\PHPLOC\Analyser; 136 | $stats = $analyser->countFiles(array($filename), false); 137 | 138 | return $stats['lloc']; 139 | } 140 | 141 | $buffer = file_get_contents($filename); 142 | $weight = substr_count($buffer, ';') + substr_count($buffer, '{'); 143 | 144 | return $weight; 145 | } 146 | 147 | public function run() 148 | { 149 | $package = $this->parse($this->root); 150 | 151 | $weight = array(); 152 | $extras = array(); 153 | 154 | foreach ($package['require'] as $name => $version) { 155 | $weight[$name] = $this->weightPackage($name); 156 | $extras[$name] = array( 157 | substr($this->packages[$name]['time'], 0, 10), 158 | ); 159 | } 160 | 161 | return array($weight, $extras); 162 | } 163 | } 164 | 165 | class Chart 166 | { 167 | const LIGHTWEIGHT = 2000; 168 | 169 | protected $data; 170 | protected $more; 171 | protected $title; 172 | protected $image; 173 | 174 | public function __construct(array $data, $title = null, $extras = array()) 175 | { 176 | $this->data = $data; 177 | $this->more = $extras; 178 | $this->title = $title; 179 | } 180 | 181 | public function save($filename = 'image.png') 182 | { 183 | switch (substr($filename, -3)) { 184 | case 'png': 185 | imagePNG($this->image, $filename); 186 | break; 187 | 188 | case 'jpg': 189 | imageJPEG($this->image, $filename); 190 | break; 191 | } 192 | } 193 | 194 | public function draw($width = 640, $height = 480) 195 | { 196 | $this->image = imageCreateTrueColor($width, $height); 197 | 198 | imageFilledRectangle($this->image, 0, 0, $width, $height, 199 | imageColorAllocate($this->image, 255, 255, 255) 200 | ); 201 | 202 | $padding = 10; 203 | 204 | $x = $padding; 205 | $y = $padding; 206 | 207 | $titleHeight = $this->drawTitle($x, $y, 5); 208 | if ($titleHeight > 0) { 209 | $y += $titleHeight; 210 | $y += $padding; 211 | } 212 | 213 | $count = count($this->data); 214 | 215 | $color = imageColorAllocate($this->image, 0, 0, 0); 216 | $colors = $this->generateRandomColors(); 217 | 218 | $font = 2; 219 | $fontWidth = imageFontWidth($font); 220 | $fontHeight = imageFontHeight($font); 221 | 222 | $chartHeight = $height - $y - $padding; 223 | $barHeight = floor($chartHeight / $count); 224 | 225 | $extrasWidth = 0; 226 | foreach ($this->more as $extras) { 227 | $extraWidth = 0; 228 | foreach ($extras as $extra) { 229 | $extraWidth += $fontWidth * strlen($extra) + $padding; 230 | } 231 | 232 | if ($extrasWidth < $extraWidth) { 233 | $extrasWidth = $extraWidth; 234 | } 235 | } 236 | 237 | $barMaxValue = 0; 238 | $keyWidthMax = 0; 239 | foreach ($this->data as $key => $value) { 240 | $keyWidth = $fontWidth * strlen($key); 241 | if ($keyWidthMax < $keyWidth) { 242 | $keyWidthMax = $keyWidth; 243 | } 244 | if ($barMaxValue < $value) { 245 | $barMaxValue = $value; 246 | } 247 | } 248 | 249 | $i = 0; 250 | foreach ($this->data as $key => $value) { 251 | $keyWidth = $fontWidth * strlen($key); 252 | 253 | $tmpX = $x + $keyWidthMax - $keyWidth; 254 | $tmpY = $y + $barHeight * $i + ($barHeight / 2 - $fontHeight / 2); 255 | 256 | imageString($this->image, $font, $tmpX, $tmpY, $key, $colors[$key]); 257 | 258 | $i++; 259 | } 260 | 261 | $x += $keyWidthMax + $padding; 262 | imageLine($this->image, $x, $y, $x, $y + ($barHeight * $count), $color); 263 | $x += $padding; 264 | 265 | $barMaxWidth = $width - $padding - $x - $extrasWidth; 266 | 267 | if ($barMaxValue > self::LIGHTWEIGHT) { 268 | $xmicro = $x + self::LIGHTWEIGHT * $barMaxWidth / $barMaxValue; 269 | $ymicro = $y; 270 | } 271 | 272 | $i = 0; 273 | foreach ($this->data as $key => $value) { 274 | $tmpY1 = $y + $barHeight * $i; 275 | $tmpY2 = $y + $barHeight * ($i + 1); 276 | 277 | $barWidth = $value * $barMaxWidth / $barMaxValue; 278 | 279 | imageFilledRectangle($this->image, 280 | $x, $tmpY1, 281 | $x + $barWidth, $tmpY2, 282 | $colors[$key] 283 | ); 284 | 285 | $valueWidth = $fontWidth * strlen($value); 286 | 287 | $tmpX = $x + $barMaxWidth - $valueWidth - $padding; 288 | $tmpY = ($tmpY1 + $tmpY2 - $fontHeight) / 2; 289 | 290 | imageString($this->image, $font, $tmpX, $tmpY, $value, $color); 291 | 292 | $extraWidth = $padding; 293 | foreach ($this->more[$key] as $extra) { 294 | $tmpX = $x + $barMaxWidth + $extraWidth; 295 | $extraWidth += $fontWidth * strlen($extra) + $padding; 296 | 297 | imageString($this->image, $font, $tmpX, $tmpY, $extra, $color); 298 | } 299 | 300 | $i++; 301 | } 302 | 303 | if ($barMaxValue > self::LIGHTWEIGHT) { 304 | imageDashedLine($this->image, $xmicro, $y, $xmicro, $y + $chartHeight, $color); 305 | } 306 | } 307 | 308 | protected function drawTitle($x = 0, $y = 0, $font = 1) 309 | { 310 | if ($this->title === null) { 311 | return 0; 312 | } 313 | 314 | imageString($this->image, $font, $x, $y, $this->title, 315 | imageColorAllocate($this->image, 0, 0, 0) 316 | ); 317 | 318 | return imageFontHeight($font); 319 | } 320 | 321 | protected function generateRandomColors() 322 | { 323 | $frequency = 5 / count($this->data); 324 | $colors = array(); 325 | $index = 0; 326 | 327 | foreach ($this->data as $key => $value) { 328 | $r = sin($frequency * $index + 0) * (127) + 128; 329 | $g = sin($frequency * $index + 1) * (127) + 128; 330 | $b = sin($frequency * $index + 3) * (127) + 128; 331 | 332 | $colors[$key] = imageColorAllocate($this->image, $r, $g, $b); 333 | $index++; 334 | } 335 | 336 | return $colors; 337 | } 338 | } -------------------------------------------------------------------------------- /weight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jm42/lightweight-php/a9b9967a1d54bc57c28bbb19ec50853cf8112c73/weight.png --------------------------------------------------------------------------------