├── .coveralls.yml ├── TODO.md ├── LICENSE.md ├── CHANGELOG.md ├── composer.json ├── CONDUCT.md ├── src ├── StaticFilesFactory.php ├── StaticFiles.php └── ReactRequestHandler.php ├── README.md ├── CONTRIBUTING.md └── composer.lock /.coveralls.yml: -------------------------------------------------------------------------------- 1 | coverage_clover: clover.xml 2 | json_path: coveralls-upload.json 3 | -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- 1 | # TODO 2 | 3 | - Experiment with writing an alternate React HTTP server which creates PSR-7 4 | request/response instances for each loop invocation, instead of the React 5 | variants. 6 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016, Matthew Weier O'Phinney 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | 8 | - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | 10 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 11 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file, in reverse chronological order by release. 4 | 5 | ## 0.1.2 - TBD 6 | 7 | ### Added 8 | 9 | - Nothing. 10 | 11 | ### Deprecated 12 | 13 | - Nothing. 14 | 15 | ### Removed 16 | 17 | - Nothing. 18 | 19 | ### Fixed 20 | 21 | - Nothing. 22 | 23 | ## 0.1.1 - 2016-04-17 24 | 25 | ### Added 26 | 27 | - Nothing. 28 | 29 | ### Deprecated 30 | 31 | - Nothing. 32 | 33 | ### Removed 34 | 35 | - Nothing. 36 | 37 | ### Fixed 38 | 39 | - Fixes an issue with `StaticFiles` when appending the index file to a 40 | discovered directory, ensuring index files can now be served reliably. 41 | 42 | ## 0.1.0 - 2016-04-17 43 | 44 | Initial release. 45 | 46 | ### Added 47 | 48 | - `React2Psr7\ReactRequestHandler`, which: 49 | - accepts PSR-7 middleware to the constructorr; 50 | - can be attached as a request listener to a React HTTP server instance; 51 | - on dispatch, marshals a PSR-7 request from the React request, and 52 | - emits a React response marshaled from the returned PSR-7 response. 53 | - `React2Psr7\StaticFiles`, which is middleware that can serve static 54 | files from a configured directory which satisfy a content-type whitelist. 55 | 56 | ### Deprecated 57 | 58 | - Nothing. 59 | 60 | ### Removed 61 | 62 | - Nothing. 63 | 64 | ### Fixed 65 | 66 | - Nothing. 67 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "phly/react2psr7", 3 | "type": "library", 4 | "homepage": "https://github.com/phly/react2psr7", 5 | "license": "BSD-2-CLAUSE", 6 | "keywords": [ 7 | "http", 8 | "middleware", 9 | "psr", 10 | "psr-7", 11 | "react" 12 | ], 13 | "extra": { 14 | "branch-alias": { 15 | "dev-master": "1.0-dev" 16 | } 17 | }, 18 | "require": { 19 | "php": "^5.5 || ^7.0", 20 | "container-interop/container-interop": "^1.1", 21 | "psr/http-message": "^1.0", 22 | "react/http": "^0.5@dev", 23 | "zendframework/zend-diactoros": "^1.3" 24 | }, 25 | "require-dev": { 26 | "mikey179/vfsStream": "^1.6", 27 | "phpunit/phpunit": "^4.8", 28 | "squizlabs/php_codesniffer": "^2.3" 29 | }, 30 | "autoload": { 31 | "psr-4": { 32 | "React2Psr7\\": "src/" 33 | } 34 | }, 35 | "autoload-dev": { 36 | "psr-4": { 37 | "React2Psr7Test\\": "test/" 38 | } 39 | }, 40 | "scripts": { 41 | "check": [ 42 | "@cs", 43 | "@test" 44 | ], 45 | "coveralls": "coveralls", 46 | "cs": "phpcs", 47 | "cs-fix": "phpcbf", 48 | "test": "phpunit", 49 | "test-coverage": "phpunit --coverage-clover clover.xml" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Code of Conduct 2 | 3 | This project adheres to [The Code Manifesto](http://codemanifesto.com) as its 4 | guidelines for contributor interactions. 5 | 6 | ## The Code Manifesto 7 | 8 | We want to work in an ecosystem that empowers developers to reach their 9 | potential — one that encourages growth and effective collaboration. A space that 10 | is safe for all. 11 | 12 | A space such as this benefits everyone that participates in it. It encourages 13 | new developers to enter our field. It is through discussion and collaboration 14 | that we grow, and through growth that we improve. 15 | 16 | In the effort to create such a place, we hold to these values: 17 | 18 | 1. **Discrimination limits us.** This includes discrimination on the basis of 19 | race, gender, sexual orientation, gender identity, age, nationality, technology 20 | and any other arbitrary exclusion of a group of people. 21 | 2. **Boundaries honor us.** Your comfort levels are not everyone’s comfort 22 | levels. Remember that, and if brought to your attention, heed it. 23 | 3. **We are our biggest assets.** None of us were born masters of our trade. 24 | Each of us has been helped along the way. Return that favor, when and where 25 | you can. 26 | 4. **We are resources for the future.** As an extension of #3, share what you 27 | know. Make yourself a resource to help those that come after you. 28 | 5. **Respect defines us.** Treat others as you wish to be treated. Make your 29 | discussions, criticisms and debates from a position of respectfulness. Ask 30 | yourself, is it true? Is it necessary? Is it constructive? Anything less is 31 | unacceptable. 32 | 6. **Reactions require grace.** Angry responses are valid, but abusive language 33 | and vindictive actions are toxic. When something happens that offends you, 34 | handle it assertively, but be respectful. Escalate reasonably, and try to 35 | allow the offender an opportunity to explain themselves, and possibly correct 36 | the issue. 37 | 7. **Opinions are just that: opinions.** Each and every one of us, due to our 38 | background and upbringing, have varying opinions. The fact of the matter, is 39 | that is perfectly acceptable. Remember this: if you respect your own 40 | opinions, you should respect the opinions of others. 41 | 8. **To err is human.** You might not intend it, but mistakes do happen and 42 | contribute to build experience. Tolerate honest mistakes, and don't hesitate 43 | to apologize if you make one yourself. 44 | -------------------------------------------------------------------------------- /src/StaticFilesFactory.php: -------------------------------------------------------------------------------- 1 | 21 | * 'static_files' => [ 22 | * 'root' => 'path to the root containing static files to serve', 23 | * 'content_types' => [ 24 | * 'extension' => 'content/type', 25 | * ], 26 | * ] 27 | * 28 | * 29 | * If no root is provided, the "public" subdirectory of the current working 30 | * directory is used. If no content types are provided, the defaults in the 31 | * StaticFiles class are used. 32 | * 33 | * @param ContainerInterface $container 34 | * @return StaticFiles 35 | */ 36 | public function __invoke(ContainerInterface $container) 37 | { 38 | $config = $this->getConfig($container); 39 | 40 | return new StaticFiles( 41 | $this->marshalRootPath($config), 42 | isset($config['content_types']) ? $config['content_types'] : null 43 | ); 44 | } 45 | 46 | /** 47 | * Get application static files configuration, if any. 48 | * 49 | * Returns the 'static_files' value from the application configuration, if 50 | * present. 51 | * 52 | * @param ContainerInterface $container 53 | * @return array 54 | */ 55 | private function getConfig(ContainerInterface $container) 56 | { 57 | if (! $container->has('config')) { 58 | return []; 59 | } 60 | 61 | $config = $container->get('config'); 62 | return isset($config['static_files']) ? $config['static_files'] : []; 63 | } 64 | 65 | /** 66 | * Marshal the static files root path from configuration. 67 | * 68 | * If the static files configuration includes a root path, returns it; 69 | * otherwise, uses the `public` subdirectory from the current working path. 70 | * 71 | * @param array $config 72 | * @return string 73 | */ 74 | private function marshalRootPath(array $config) 75 | { 76 | return isset($config['root']) 77 | ? $config['root'] 78 | : getcwd() . '/public'; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react2psr7 2 | 3 | > :warning: **Archived 2025-08-17** 4 | > 5 | > Use at your own risk. 6 | 7 | [![Build Status](https://secure.travis-ci.org/phly/react2psr7.svg?branch=master)](https://secure.travis-ci.org/phly/react2psr7) 8 | [![Coverage Status](https://coveralls.io/repos/github/phly/react2psr7/badge.svg?branch=master)](https://coveralls.io/github/phly/react2psr7?branch=master) 9 | 10 | Serve PSR-7 middleware applications from [React](http://reactphp.org). 11 | 12 | ## Installation 13 | 14 | ```console 15 | $ composer require "react/http:^0.5@dev" phly/react2psr7 16 | ``` 17 | 18 | > ### react/http 19 | > 20 | > react2psr7 currently requires features from the upcoming 0.5 release of 21 | > react/http. Since that version is not yet released, you need to specify 22 | > it manually when installing to force Composer to allow a development 23 | > release. 24 | 25 | ## Usage 26 | 27 | The following demonstrates creating an HTTP server using React, and using an 28 | [Expressive](https://zendframework.github.io/zend-expressive/) application 29 | to handle incoming requests. 30 | 31 | ```php 32 | on('request', new ReactRequestHandler($container->get(Application::class))); 47 | 48 | // Listen on all ports; omit second argument to restrict to localhost. 49 | $socket->listen(1337, '0.0.0.0'); 50 | $loop->run(); 51 | ``` 52 | 53 | ## Serving static files 54 | 55 | This package also provides middleware for serving static files; this can be 56 | useful when running React as a web server, to allow serving CSS, JavaScript, and 57 | images. 58 | 59 | The following demonstrates using [Stratigility](https://github.com/zendframework/zend-stratigility) 60 | to build a middleware pipeline that consumes both the static files middleware 61 | as well as an Expressive application in order to provide a full-fledged web 62 | server. 63 | 64 | ```php 65 | pipe(new StaticFiles()); 83 | $pipeline->pipe($container->get(Application::class)); 84 | 85 | $http->on('request', new ReactRequestHandler($pipeline)); 86 | 87 | // Listen on all ports; omit second argument to restrict to localhost. 88 | $socket->listen(1337, '0.0.0.0'); 89 | $loop->run(); 90 | ``` 91 | 92 | (Note: you could also pipe the static files middleware into your Expressive 93 | application.) 94 | -------------------------------------------------------------------------------- /src/StaticFiles.php: -------------------------------------------------------------------------------- 1 | 'text/css', 26 | 'woff' => 'application/x-font-woff', 27 | 'js' => 'application/json', 28 | 'gif' => 'image/gif', 29 | 'ico' => 'image/ico', 30 | 'jpg' => 'image/jpeg', 31 | 'png' => 'image/png', 32 | 'txt' => 'text/plain', 33 | 'html' => 'text/html', 34 | 'md' => 'text/markdown', 35 | ]; 36 | 37 | /** 38 | * @var string Public root of the application, containing files to serve. 39 | */ 40 | private $root; 41 | 42 | /** 43 | * @param string $root Public root of the application. 44 | * @param null|array $contentTypeMap Specific extension/content-type map 45 | * to use with this application; if none provided, defaults are used. 46 | */ 47 | public function __construct($root, array $contentTypeMap = null) 48 | { 49 | $this->root = rtrim($root, '/'); 50 | 51 | if ($contentTypeMap) { 52 | $this->contentTypeMap = $contentTypeMap; 53 | } 54 | } 55 | 56 | /** 57 | * Serve static files. 58 | * 59 | * If the given request matches a file on the filesystem, and the file type 60 | * falls within the whitelist provided in the $contentTypeMap, this 61 | * middleware will populate the response with its content-type and the file 62 | * content. 63 | * 64 | * @param Request $request 65 | * @param Response $response 66 | * @param callable $next Next middleware to execute. 67 | * @return Response 68 | */ 69 | public function __invoke(Request $request, Response $response, callable $next) 70 | { 71 | $path = $this->root . $request->getUri()->getPath(); 72 | if (is_dir($path)) { 73 | $path = rtrim($path, '/') . '/index.html'; 74 | } 75 | 76 | if (! preg_match('#\.(?P[a-z][a-z0-9]{0,3})$#', $path, $matches)) { 77 | return $next($request, $response); 78 | } 79 | 80 | $type = $matches['type']; 81 | if (! in_array($type, array_keys($this->contentTypeMap), true)) { 82 | return $next($request, $response); 83 | } 84 | 85 | if (! file_exists($path)) { 86 | return $next($request, $response); 87 | } 88 | 89 | return $response 90 | ->withHeader('Content-Type', $this->contentTypeMap[$type]) 91 | ->withBody(new Stream($path, 'r')); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /src/ReactRequestHandler.php: -------------------------------------------------------------------------------- 1 | middleware = $middleware; 29 | } 30 | 31 | /** 32 | * React HTTP handler. 33 | * 34 | * Marshals PSR-7 request from provided request, and executes the composed 35 | * middleware with that and an empty PSR-7 response. 36 | * 37 | * The returned response is used to seed the React response, which is then 38 | * emitted. 39 | * 40 | * @param ReactRequest $request 41 | * @param ReactResponse $response 42 | */ 43 | public function __invoke(ReactRequest $request, ReactResponse $response) 44 | { 45 | $middleware = $this->middleware; 46 | $this->emit( 47 | $middleware($this->marshalPsr7Request($request), new DiactorosResponse()), 48 | $response 49 | ); 50 | } 51 | 52 | /** 53 | * @param ReactRequest 54 | * @return DiactorosRequest 55 | */ 56 | private function marshalPsr7Request(ReactRequest $reactRequest) 57 | { 58 | return new DiactorosRequest( 59 | $_SERVER, 60 | $reactRequest->getFiles(), 61 | $reactRequest->getUrl(), 62 | $reactRequest->getMethod(), 63 | $this->createBodyStream($reactRequest), 64 | $reactRequest->getHeaders(), 65 | [], 66 | $reactRequest->getQuery(), 67 | $reactRequest->getPost(), 68 | $reactRequest->getHttpVersion() 69 | ); 70 | } 71 | 72 | /** 73 | * @param Psr7Response 74 | * @param ReactResponse 75 | * @return void 76 | */ 77 | private function emit(Psr7Response $psr7Response, ReactResponse $reactResponse) 78 | { 79 | if (! $psr7Response->hasHeader('Content-Type')) { 80 | $psr7Response = $psr7Response->withHeader('Content-Type', 'text/html'); 81 | } 82 | 83 | $reactResponse->writeHead( 84 | $psr7Response->getStatusCode(), 85 | $psr7Response->getHeaders() 86 | ); 87 | 88 | $body = $psr7Response->getBody(); 89 | $body->rewind(); 90 | 91 | $reactResponse->end($body->getContents()); 92 | $body->close(); 93 | } 94 | 95 | /** 96 | * @param ReactRequest $reactRequest 97 | * @return resource 98 | */ 99 | private function createBodyStream(ReactRequest $reactRequest) 100 | { 101 | $body = fopen('php://temp', 'w+'); 102 | fwrite($body, $reactRequest->getBody()); 103 | fseek($body, 0); 104 | return $body; 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # CONTRIBUTING 2 | 3 | ## RESOURCES 4 | 5 | If you wish to contribute to this project, please be sure to read/subscribe to 6 | the following resources: 7 | 8 | - [PSR-1](http://www.php-fig.org/psr/psr-1/) 9 | - [PSR-2](http://www.php-fig.org/psr/psr-2/) 10 | - [Code of Conduct](CONDUCT.md) 11 | 12 | If you are working on new features or refactoring 13 | [create a proposal](https://github.com/phly/react2psr7/issues/new). 14 | 15 | ## RUNNING TESTS 16 | 17 | To run tests: 18 | 19 | - Clone the repository: 20 | 21 | ```console 22 | $ git clone git@github.com:phly/react2psr7.git 23 | $ cd react2psr7 24 | ``` 25 | 26 | - Install dependencies via composer: 27 | 28 | ```console 29 | $ curl -sS https://getcomposer.org/installer | php -- 30 | $ ./composer.phar install 31 | ``` 32 | 33 | If you don't have `curl` installed, you can also download `composer.phar` from https://getcomposer.org/ 34 | 35 | - Run the tests using the "test" command shipped in the `composer.json`: 36 | 37 | ```console 38 | $ composer test 39 | ``` 40 | 41 | ## Running Coding Standards Checks 42 | 43 | First, ensure you've installed dependencies via composer, per the previous 44 | section on running tests. 45 | 46 | To run CS checks only: 47 | 48 | ```console 49 | $ composer cs 50 | ``` 51 | 52 | To attempt to automatically fix common CS issues: 53 | 54 | 55 | ```console 56 | $ composer cs-fix 57 | ``` 58 | 59 | If the above fixes any CS issues, please re-run the tests to ensure 60 | they pass, and make sure you add and commit the changes after verification. 61 | 62 | ## Recommended Workflow for Contributions 63 | 64 | Your first step is to establish a public repository from which we can 65 | pull your work into the master repository. We recommend using 66 | [GitHub](https://github.com), as that is where the component is already hosted. 67 | 68 | 1. Setup a [GitHub account](http://github.com/), if you haven't yet 69 | 2. Fork the repository (http://github.com/phly/react2psr7) 70 | 3. Clone the canonical repository locally and enter it. 71 | 72 | ```console 73 | $ git clone git://github.com:phly/react2psr7.git 74 | $ cd react2psr7 75 | ``` 76 | 77 | 4. Add a remote to your fork; substitute your GitHub username in the command 78 | below. 79 | 80 | ```console 81 | $ git remote add {username} git@github.com:{username}/react2psr7.git 82 | $ git fetch {username} 83 | ``` 84 | 85 | ### Keeping Up-to-Date 86 | 87 | Periodically, you should update your fork or personal repository to 88 | match the canonical ZF repository. Assuming you have setup your local repository 89 | per the instructions above, you can do the following: 90 | 91 | 92 | ```console 93 | $ git checkout master 94 | $ git fetch origin 95 | $ git rebase origin/master 96 | # OPTIONALLY, to keep your remote up-to-date - 97 | $ git push {username} master:master 98 | ``` 99 | 100 | If you're tracking other branches -- for example, the "develop" branch, where 101 | new feature development occurs -- you'll want to do the same operations for that 102 | branch; simply substitute "develop" for "master". 103 | 104 | ### Working on a patch 105 | 106 | We recommend you do each new feature or bugfix in a new branch. This simplifies 107 | the task of code review as well as the task of merging your changes into the 108 | canonical repository. 109 | 110 | A typical workflow will then consist of the following: 111 | 112 | 1. Create a new local branch based off either your master or develop branch. 113 | 2. Switch to your new local branch. (This step can be combined with the 114 | previous step with the use of `git checkout -b`.) 115 | 3. Do some work, commit, repeat as necessary. 116 | 4. Push the local branch to your remote repository. 117 | 5. Send a pull request. 118 | 119 | The mechanics of this process are actually quite trivial. Below, we will 120 | create a branch for fixing an issue in the tracker. 121 | 122 | ```console 123 | $ git checkout -b hotfix/42 124 | Switched to a new branch 'hotfix/42' 125 | ``` 126 | 127 | ... do some work ... 128 | 129 | 130 | ```console 131 | $ git commit 132 | ``` 133 | 134 | ... write your log message ... 135 | 136 | 137 | ```console 138 | $ git push {username} hotfix/42:hotfix/42 139 | Counting objects: 38, done. 140 | Delta compression using up to 2 threads. 141 | Compression objects: 100% (18/18), done. 142 | Writing objects: 100% (20/20), 8.19KiB, done. 143 | Total 20 (delta 12), reused 0 (delta 0) 144 | To ssh://git@github.com/{username}/react2psr7.git 145 | b5583aa..4f51698 HEAD -> master 146 | ``` 147 | 148 | To send a pull request, you have two options. 149 | 150 | If using GitHub, you can do the pull request from there. Navigate to 151 | your repository, select the branch you just created, and then select the 152 | "Pull Request" button in the upper right. Select the user/organization 153 | "phly" as the recipient. 154 | 155 | #### What branch to issue the pull request against? 156 | 157 | Which branch should you issue a pull request against? 158 | 159 | - For fixes against the stable release, issue the pull request against the 160 | "master" branch. 161 | - For new features, or fixes that introduce new elements to the public API (such 162 | as new public methods or properties), issue the pull request against the 163 | "develop" branch. 164 | 165 | ### Branch Cleanup 166 | 167 | As you might imagine, if you are a frequent contributor, you'll start to 168 | get a ton of branches both locally and on your remote. 169 | 170 | Once you know that your changes have been accepted to the master 171 | repository, we suggest doing some cleanup of these branches. 172 | 173 | - Local branch cleanup 174 | 175 | ```console 176 | $ git branch -d 177 | ``` 178 | 179 | - Remote branch removal 180 | 181 | ```console 182 | $ git push {username} : 183 | ``` 184 | 185 | 186 | ## Conduct 187 | 188 | Please see our [CONDUCT.md](CONDUCT.md) to understand expected behavior when 189 | interacting with others in the project. 190 | -------------------------------------------------------------------------------- /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#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "hash": "2d0b7d61c3d398e8a0ce0cb3d94e3d67", 8 | "content-hash": "a40b95623437bfa0510cb3d2d72b7dcf", 9 | "packages": [ 10 | { 11 | "name": "container-interop/container-interop", 12 | "version": "1.1.0", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/container-interop/container-interop.git", 16 | "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/container-interop/container-interop/zipball/fc08354828f8fd3245f77a66b9e23a6bca48297e", 21 | "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e", 22 | "shasum": "" 23 | }, 24 | "type": "library", 25 | "autoload": { 26 | "psr-4": { 27 | "Interop\\Container\\": "src/Interop/Container/" 28 | } 29 | }, 30 | "notification-url": "https://packagist.org/downloads/", 31 | "license": [ 32 | "MIT" 33 | ], 34 | "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", 35 | "time": "2014-12-30 15:22:37" 36 | }, 37 | { 38 | "name": "evenement/evenement", 39 | "version": "v2.0.0", 40 | "source": { 41 | "type": "git", 42 | "url": "https://github.com/igorw/evenement.git", 43 | "reference": "f6e843799fd4f4184d54d8fc7b5b3551c9fa803e" 44 | }, 45 | "dist": { 46 | "type": "zip", 47 | "url": "https://api.github.com/repos/igorw/evenement/zipball/f6e843799fd4f4184d54d8fc7b5b3551c9fa803e", 48 | "reference": "f6e843799fd4f4184d54d8fc7b5b3551c9fa803e", 49 | "shasum": "" 50 | }, 51 | "require": { 52 | "php": ">=5.4.0" 53 | }, 54 | "type": "library", 55 | "extra": { 56 | "branch-alias": { 57 | "dev-master": "2.0-dev" 58 | } 59 | }, 60 | "autoload": { 61 | "psr-0": { 62 | "Evenement": "src" 63 | } 64 | }, 65 | "notification-url": "https://packagist.org/downloads/", 66 | "license": [ 67 | "MIT" 68 | ], 69 | "authors": [ 70 | { 71 | "name": "Igor Wiedler", 72 | "email": "igor@wiedler.ch", 73 | "homepage": "http://wiedler.ch/igor/" 74 | } 75 | ], 76 | "description": "Événement is a very simple event dispatching library for PHP", 77 | "keywords": [ 78 | "event-dispatcher", 79 | "event-emitter" 80 | ], 81 | "time": "2012-11-02 14:49:47" 82 | }, 83 | { 84 | "name": "guzzlehttp/psr7", 85 | "version": "1.3.0", 86 | "source": { 87 | "type": "git", 88 | "url": "https://github.com/guzzle/psr7.git", 89 | "reference": "31382fef2889136415751badebbd1cb022a4ed72" 90 | }, 91 | "dist": { 92 | "type": "zip", 93 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/31382fef2889136415751badebbd1cb022a4ed72", 94 | "reference": "31382fef2889136415751badebbd1cb022a4ed72", 95 | "shasum": "" 96 | }, 97 | "require": { 98 | "php": ">=5.4.0", 99 | "psr/http-message": "~1.0" 100 | }, 101 | "provide": { 102 | "psr/http-message-implementation": "1.0" 103 | }, 104 | "require-dev": { 105 | "phpunit/phpunit": "~4.0" 106 | }, 107 | "type": "library", 108 | "extra": { 109 | "branch-alias": { 110 | "dev-master": "1.0-dev" 111 | } 112 | }, 113 | "autoload": { 114 | "psr-4": { 115 | "GuzzleHttp\\Psr7\\": "src/" 116 | }, 117 | "files": [ 118 | "src/functions_include.php" 119 | ] 120 | }, 121 | "notification-url": "https://packagist.org/downloads/", 122 | "license": [ 123 | "MIT" 124 | ], 125 | "authors": [ 126 | { 127 | "name": "Michael Dowling", 128 | "email": "mtdowling@gmail.com", 129 | "homepage": "https://github.com/mtdowling" 130 | } 131 | ], 132 | "description": "PSR-7 message implementation", 133 | "keywords": [ 134 | "http", 135 | "message", 136 | "stream", 137 | "uri" 138 | ], 139 | "time": "2016-04-13 19:56:01" 140 | }, 141 | { 142 | "name": "psr/http-message", 143 | "version": "1.0", 144 | "source": { 145 | "type": "git", 146 | "url": "https://github.com/php-fig/http-message.git", 147 | "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298" 148 | }, 149 | "dist": { 150 | "type": "zip", 151 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", 152 | "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298", 153 | "shasum": "" 154 | }, 155 | "require": { 156 | "php": ">=5.3.0" 157 | }, 158 | "type": "library", 159 | "extra": { 160 | "branch-alias": { 161 | "dev-master": "1.0.x-dev" 162 | } 163 | }, 164 | "autoload": { 165 | "psr-4": { 166 | "Psr\\Http\\Message\\": "src/" 167 | } 168 | }, 169 | "notification-url": "https://packagist.org/downloads/", 170 | "license": [ 171 | "MIT" 172 | ], 173 | "authors": [ 174 | { 175 | "name": "PHP-FIG", 176 | "homepage": "http://www.php-fig.org/" 177 | } 178 | ], 179 | "description": "Common interface for HTTP messages", 180 | "keywords": [ 181 | "http", 182 | "http-message", 183 | "psr", 184 | "psr-7", 185 | "request", 186 | "response" 187 | ], 188 | "time": "2015-05-04 20:22:00" 189 | }, 190 | { 191 | "name": "react/event-loop", 192 | "version": "v0.4.2", 193 | "source": { 194 | "type": "git", 195 | "url": "https://github.com/reactphp/event-loop.git", 196 | "reference": "164799f73175e1c80bba92a220ea35df6ca371dd" 197 | }, 198 | "dist": { 199 | "type": "zip", 200 | "url": "https://api.github.com/repos/reactphp/event-loop/zipball/164799f73175e1c80bba92a220ea35df6ca371dd", 201 | "reference": "164799f73175e1c80bba92a220ea35df6ca371dd", 202 | "shasum": "" 203 | }, 204 | "require": { 205 | "php": ">=5.4.0" 206 | }, 207 | "suggest": { 208 | "ext-event": "~1.0", 209 | "ext-libev": "*", 210 | "ext-libevent": ">=0.1.0" 211 | }, 212 | "type": "library", 213 | "extra": { 214 | "branch-alias": { 215 | "dev-master": "0.5-dev" 216 | } 217 | }, 218 | "autoload": { 219 | "psr-4": { 220 | "React\\EventLoop\\": "src" 221 | } 222 | }, 223 | "notification-url": "https://packagist.org/downloads/", 224 | "license": [ 225 | "MIT" 226 | ], 227 | "description": "Event loop abstraction layer that libraries can use for evented I/O.", 228 | "keywords": [ 229 | "asynchronous", 230 | "event-loop" 231 | ], 232 | "time": "2016-03-08 02:09:32" 233 | }, 234 | { 235 | "name": "react/http", 236 | "version": "dev-master", 237 | "source": { 238 | "type": "git", 239 | "url": "https://github.com/reactphp/http.git", 240 | "reference": "545723837ceed39cbd81e479ab98198bb2c5893b" 241 | }, 242 | "dist": { 243 | "type": "zip", 244 | "url": "https://api.github.com/repos/reactphp/http/zipball/545723837ceed39cbd81e479ab98198bb2c5893b", 245 | "reference": "545723837ceed39cbd81e479ab98198bb2c5893b", 246 | "shasum": "" 247 | }, 248 | "require": { 249 | "evenement/evenement": "^2.0", 250 | "guzzlehttp/psr7": "^1.0", 251 | "php": ">=5.4.0", 252 | "react/socket": "^0.4", 253 | "react/stream": "^0.4" 254 | }, 255 | "type": "library", 256 | "extra": { 257 | "branch-alias": { 258 | "dev-master": "0.5-dev" 259 | } 260 | }, 261 | "autoload": { 262 | "psr-4": { 263 | "React\\Http\\": "src" 264 | } 265 | }, 266 | "notification-url": "https://packagist.org/downloads/", 267 | "license": [ 268 | "MIT" 269 | ], 270 | "description": "Library for building an evented http server.", 271 | "keywords": [ 272 | "http" 273 | ], 274 | "time": "2015-12-28 14:55:30" 275 | }, 276 | { 277 | "name": "react/socket", 278 | "version": "v0.4.3", 279 | "source": { 280 | "type": "git", 281 | "url": "https://github.com/reactphp/socket.git", 282 | "reference": "ce015ec5879b96f5d30905f035f223aa85013fcc" 283 | }, 284 | "dist": { 285 | "type": "zip", 286 | "url": "https://api.github.com/repos/reactphp/socket/zipball/ce015ec5879b96f5d30905f035f223aa85013fcc", 287 | "reference": "ce015ec5879b96f5d30905f035f223aa85013fcc", 288 | "shasum": "" 289 | }, 290 | "require": { 291 | "evenement/evenement": "~2.0|~1.0", 292 | "php": ">=5.3.0", 293 | "react/event-loop": "0.4.*|0.3.*", 294 | "react/stream": "0.4.*|0.3.*" 295 | }, 296 | "type": "library", 297 | "extra": { 298 | "branch-alias": { 299 | "dev-master": "0.4-dev" 300 | } 301 | }, 302 | "autoload": { 303 | "psr-4": { 304 | "React\\Socket\\": "src" 305 | } 306 | }, 307 | "notification-url": "https://packagist.org/downloads/", 308 | "license": [ 309 | "MIT" 310 | ], 311 | "description": "Library for building an evented socket server.", 312 | "keywords": [ 313 | "Socket" 314 | ], 315 | "time": "2016-03-01 20:10:35" 316 | }, 317 | { 318 | "name": "react/stream", 319 | "version": "v0.4.3", 320 | "source": { 321 | "type": "git", 322 | "url": "https://github.com/reactphp/stream.git", 323 | "reference": "305b2328d2a2e157bc13b61a0f5c6e41b666b188" 324 | }, 325 | "dist": { 326 | "type": "zip", 327 | "url": "https://api.github.com/repos/reactphp/stream/zipball/305b2328d2a2e157bc13b61a0f5c6e41b666b188", 328 | "reference": "305b2328d2a2e157bc13b61a0f5c6e41b666b188", 329 | "shasum": "" 330 | }, 331 | "require": { 332 | "evenement/evenement": "^2.0|^1.0", 333 | "php": ">=5.3.8" 334 | }, 335 | "require-dev": { 336 | "react/event-loop": "^0.4|^0.3", 337 | "react/promise": "^2.0|^1.0" 338 | }, 339 | "suggest": { 340 | "react/event-loop": "^0.4", 341 | "react/promise": "^2.0" 342 | }, 343 | "type": "library", 344 | "extra": { 345 | "branch-alias": { 346 | "dev-master": "0.5-dev" 347 | } 348 | }, 349 | "autoload": { 350 | "psr-4": { 351 | "React\\Stream\\": "src" 352 | } 353 | }, 354 | "notification-url": "https://packagist.org/downloads/", 355 | "license": [ 356 | "MIT" 357 | ], 358 | "description": "Basic readable and writable stream interfaces that support piping.", 359 | "keywords": [ 360 | "pipe", 361 | "stream" 362 | ], 363 | "time": "2015-10-07 18:32:58" 364 | }, 365 | { 366 | "name": "zendframework/zend-diactoros", 367 | "version": "1.3.5", 368 | "source": { 369 | "type": "git", 370 | "url": "https://github.com/zendframework/zend-diactoros.git", 371 | "reference": "b1d59735b672865dbeb930805029c24f226e3e77" 372 | }, 373 | "dist": { 374 | "type": "zip", 375 | "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/b1d59735b672865dbeb930805029c24f226e3e77", 376 | "reference": "b1d59735b672865dbeb930805029c24f226e3e77", 377 | "shasum": "" 378 | }, 379 | "require": { 380 | "php": "^5.4 || ^7.0", 381 | "psr/http-message": "~1.0" 382 | }, 383 | "provide": { 384 | "psr/http-message-implementation": "~1.0.0" 385 | }, 386 | "require-dev": { 387 | "phpunit/phpunit": "~4.6", 388 | "squizlabs/php_codesniffer": "^2.3.1" 389 | }, 390 | "type": "library", 391 | "extra": { 392 | "branch-alias": { 393 | "dev-master": "1.3-dev", 394 | "dev-develop": "1.4-dev" 395 | } 396 | }, 397 | "autoload": { 398 | "psr-4": { 399 | "Zend\\Diactoros\\": "src/" 400 | } 401 | }, 402 | "notification-url": "https://packagist.org/downloads/", 403 | "license": [ 404 | "BSD-2-Clause" 405 | ], 406 | "description": "PSR HTTP Message implementations", 407 | "homepage": "https://github.com/zendframework/zend-diactoros", 408 | "keywords": [ 409 | "http", 410 | "psr", 411 | "psr-7" 412 | ], 413 | "time": "2016-03-17 18:02:05" 414 | } 415 | ], 416 | "packages-dev": [ 417 | { 418 | "name": "doctrine/instantiator", 419 | "version": "1.0.5", 420 | "source": { 421 | "type": "git", 422 | "url": "https://github.com/doctrine/instantiator.git", 423 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 424 | }, 425 | "dist": { 426 | "type": "zip", 427 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 428 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 429 | "shasum": "" 430 | }, 431 | "require": { 432 | "php": ">=5.3,<8.0-DEV" 433 | }, 434 | "require-dev": { 435 | "athletic/athletic": "~0.1.8", 436 | "ext-pdo": "*", 437 | "ext-phar": "*", 438 | "phpunit/phpunit": "~4.0", 439 | "squizlabs/php_codesniffer": "~2.0" 440 | }, 441 | "type": "library", 442 | "extra": { 443 | "branch-alias": { 444 | "dev-master": "1.0.x-dev" 445 | } 446 | }, 447 | "autoload": { 448 | "psr-4": { 449 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 450 | } 451 | }, 452 | "notification-url": "https://packagist.org/downloads/", 453 | "license": [ 454 | "MIT" 455 | ], 456 | "authors": [ 457 | { 458 | "name": "Marco Pivetta", 459 | "email": "ocramius@gmail.com", 460 | "homepage": "http://ocramius.github.com/" 461 | } 462 | ], 463 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 464 | "homepage": "https://github.com/doctrine/instantiator", 465 | "keywords": [ 466 | "constructor", 467 | "instantiate" 468 | ], 469 | "time": "2015-06-14 21:17:01" 470 | }, 471 | { 472 | "name": "mikey179/vfsStream", 473 | "version": "v1.6.3", 474 | "source": { 475 | "type": "git", 476 | "url": "https://github.com/mikey179/vfsStream.git", 477 | "reference": "c19925cd0390d3c436a0203ae859afa460d0474b" 478 | }, 479 | "dist": { 480 | "type": "zip", 481 | "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/c19925cd0390d3c436a0203ae859afa460d0474b", 482 | "reference": "c19925cd0390d3c436a0203ae859afa460d0474b", 483 | "shasum": "" 484 | }, 485 | "require": { 486 | "php": ">=5.3.0" 487 | }, 488 | "require-dev": { 489 | "phpunit/phpunit": "~4.5" 490 | }, 491 | "type": "library", 492 | "extra": { 493 | "branch-alias": { 494 | "dev-master": "1.6.x-dev" 495 | } 496 | }, 497 | "autoload": { 498 | "psr-0": { 499 | "org\\bovigo\\vfs\\": "src/main/php" 500 | } 501 | }, 502 | "notification-url": "https://packagist.org/downloads/", 503 | "license": [ 504 | "BSD-3-Clause" 505 | ], 506 | "authors": [ 507 | { 508 | "name": "Frank Kleine", 509 | "homepage": "http://frankkleine.de/", 510 | "role": "Developer" 511 | } 512 | ], 513 | "description": "Virtual file system to mock the real file system in unit tests.", 514 | "homepage": "http://vfs.bovigo.org/", 515 | "time": "2016-04-09 09:42:01" 516 | }, 517 | { 518 | "name": "phpdocumentor/reflection-docblock", 519 | "version": "2.0.4", 520 | "source": { 521 | "type": "git", 522 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 523 | "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" 524 | }, 525 | "dist": { 526 | "type": "zip", 527 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", 528 | "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", 529 | "shasum": "" 530 | }, 531 | "require": { 532 | "php": ">=5.3.3" 533 | }, 534 | "require-dev": { 535 | "phpunit/phpunit": "~4.0" 536 | }, 537 | "suggest": { 538 | "dflydev/markdown": "~1.0", 539 | "erusev/parsedown": "~1.0" 540 | }, 541 | "type": "library", 542 | "extra": { 543 | "branch-alias": { 544 | "dev-master": "2.0.x-dev" 545 | } 546 | }, 547 | "autoload": { 548 | "psr-0": { 549 | "phpDocumentor": [ 550 | "src/" 551 | ] 552 | } 553 | }, 554 | "notification-url": "https://packagist.org/downloads/", 555 | "license": [ 556 | "MIT" 557 | ], 558 | "authors": [ 559 | { 560 | "name": "Mike van Riel", 561 | "email": "mike.vanriel@naenius.com" 562 | } 563 | ], 564 | "time": "2015-02-03 12:10:50" 565 | }, 566 | { 567 | "name": "phpspec/prophecy", 568 | "version": "v1.6.0", 569 | "source": { 570 | "type": "git", 571 | "url": "https://github.com/phpspec/prophecy.git", 572 | "reference": "3c91bdf81797d725b14cb62906f9a4ce44235972" 573 | }, 574 | "dist": { 575 | "type": "zip", 576 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3c91bdf81797d725b14cb62906f9a4ce44235972", 577 | "reference": "3c91bdf81797d725b14cb62906f9a4ce44235972", 578 | "shasum": "" 579 | }, 580 | "require": { 581 | "doctrine/instantiator": "^1.0.2", 582 | "php": "^5.3|^7.0", 583 | "phpdocumentor/reflection-docblock": "~2.0", 584 | "sebastian/comparator": "~1.1", 585 | "sebastian/recursion-context": "~1.0" 586 | }, 587 | "require-dev": { 588 | "phpspec/phpspec": "~2.0" 589 | }, 590 | "type": "library", 591 | "extra": { 592 | "branch-alias": { 593 | "dev-master": "1.5.x-dev" 594 | } 595 | }, 596 | "autoload": { 597 | "psr-0": { 598 | "Prophecy\\": "src/" 599 | } 600 | }, 601 | "notification-url": "https://packagist.org/downloads/", 602 | "license": [ 603 | "MIT" 604 | ], 605 | "authors": [ 606 | { 607 | "name": "Konstantin Kudryashov", 608 | "email": "ever.zet@gmail.com", 609 | "homepage": "http://everzet.com" 610 | }, 611 | { 612 | "name": "Marcello Duarte", 613 | "email": "marcello.duarte@gmail.com" 614 | } 615 | ], 616 | "description": "Highly opinionated mocking framework for PHP 5.3+", 617 | "homepage": "https://github.com/phpspec/prophecy", 618 | "keywords": [ 619 | "Double", 620 | "Dummy", 621 | "fake", 622 | "mock", 623 | "spy", 624 | "stub" 625 | ], 626 | "time": "2016-02-15 07:46:21" 627 | }, 628 | { 629 | "name": "phpunit/php-code-coverage", 630 | "version": "2.2.4", 631 | "source": { 632 | "type": "git", 633 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 634 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" 635 | }, 636 | "dist": { 637 | "type": "zip", 638 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", 639 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", 640 | "shasum": "" 641 | }, 642 | "require": { 643 | "php": ">=5.3.3", 644 | "phpunit/php-file-iterator": "~1.3", 645 | "phpunit/php-text-template": "~1.2", 646 | "phpunit/php-token-stream": "~1.3", 647 | "sebastian/environment": "^1.3.2", 648 | "sebastian/version": "~1.0" 649 | }, 650 | "require-dev": { 651 | "ext-xdebug": ">=2.1.4", 652 | "phpunit/phpunit": "~4" 653 | }, 654 | "suggest": { 655 | "ext-dom": "*", 656 | "ext-xdebug": ">=2.2.1", 657 | "ext-xmlwriter": "*" 658 | }, 659 | "type": "library", 660 | "extra": { 661 | "branch-alias": { 662 | "dev-master": "2.2.x-dev" 663 | } 664 | }, 665 | "autoload": { 666 | "classmap": [ 667 | "src/" 668 | ] 669 | }, 670 | "notification-url": "https://packagist.org/downloads/", 671 | "license": [ 672 | "BSD-3-Clause" 673 | ], 674 | "authors": [ 675 | { 676 | "name": "Sebastian Bergmann", 677 | "email": "sb@sebastian-bergmann.de", 678 | "role": "lead" 679 | } 680 | ], 681 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 682 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 683 | "keywords": [ 684 | "coverage", 685 | "testing", 686 | "xunit" 687 | ], 688 | "time": "2015-10-06 15:47:00" 689 | }, 690 | { 691 | "name": "phpunit/php-file-iterator", 692 | "version": "1.4.1", 693 | "source": { 694 | "type": "git", 695 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 696 | "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" 697 | }, 698 | "dist": { 699 | "type": "zip", 700 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", 701 | "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", 702 | "shasum": "" 703 | }, 704 | "require": { 705 | "php": ">=5.3.3" 706 | }, 707 | "type": "library", 708 | "extra": { 709 | "branch-alias": { 710 | "dev-master": "1.4.x-dev" 711 | } 712 | }, 713 | "autoload": { 714 | "classmap": [ 715 | "src/" 716 | ] 717 | }, 718 | "notification-url": "https://packagist.org/downloads/", 719 | "license": [ 720 | "BSD-3-Clause" 721 | ], 722 | "authors": [ 723 | { 724 | "name": "Sebastian Bergmann", 725 | "email": "sb@sebastian-bergmann.de", 726 | "role": "lead" 727 | } 728 | ], 729 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 730 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 731 | "keywords": [ 732 | "filesystem", 733 | "iterator" 734 | ], 735 | "time": "2015-06-21 13:08:43" 736 | }, 737 | { 738 | "name": "phpunit/php-text-template", 739 | "version": "1.2.1", 740 | "source": { 741 | "type": "git", 742 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 743 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 744 | }, 745 | "dist": { 746 | "type": "zip", 747 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 748 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 749 | "shasum": "" 750 | }, 751 | "require": { 752 | "php": ">=5.3.3" 753 | }, 754 | "type": "library", 755 | "autoload": { 756 | "classmap": [ 757 | "src/" 758 | ] 759 | }, 760 | "notification-url": "https://packagist.org/downloads/", 761 | "license": [ 762 | "BSD-3-Clause" 763 | ], 764 | "authors": [ 765 | { 766 | "name": "Sebastian Bergmann", 767 | "email": "sebastian@phpunit.de", 768 | "role": "lead" 769 | } 770 | ], 771 | "description": "Simple template engine.", 772 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 773 | "keywords": [ 774 | "template" 775 | ], 776 | "time": "2015-06-21 13:50:34" 777 | }, 778 | { 779 | "name": "phpunit/php-timer", 780 | "version": "1.0.7", 781 | "source": { 782 | "type": "git", 783 | "url": "https://github.com/sebastianbergmann/php-timer.git", 784 | "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b" 785 | }, 786 | "dist": { 787 | "type": "zip", 788 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b", 789 | "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b", 790 | "shasum": "" 791 | }, 792 | "require": { 793 | "php": ">=5.3.3" 794 | }, 795 | "type": "library", 796 | "autoload": { 797 | "classmap": [ 798 | "src/" 799 | ] 800 | }, 801 | "notification-url": "https://packagist.org/downloads/", 802 | "license": [ 803 | "BSD-3-Clause" 804 | ], 805 | "authors": [ 806 | { 807 | "name": "Sebastian Bergmann", 808 | "email": "sb@sebastian-bergmann.de", 809 | "role": "lead" 810 | } 811 | ], 812 | "description": "Utility class for timing", 813 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 814 | "keywords": [ 815 | "timer" 816 | ], 817 | "time": "2015-06-21 08:01:12" 818 | }, 819 | { 820 | "name": "phpunit/php-token-stream", 821 | "version": "1.4.8", 822 | "source": { 823 | "type": "git", 824 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 825 | "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da" 826 | }, 827 | "dist": { 828 | "type": "zip", 829 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", 830 | "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", 831 | "shasum": "" 832 | }, 833 | "require": { 834 | "ext-tokenizer": "*", 835 | "php": ">=5.3.3" 836 | }, 837 | "require-dev": { 838 | "phpunit/phpunit": "~4.2" 839 | }, 840 | "type": "library", 841 | "extra": { 842 | "branch-alias": { 843 | "dev-master": "1.4-dev" 844 | } 845 | }, 846 | "autoload": { 847 | "classmap": [ 848 | "src/" 849 | ] 850 | }, 851 | "notification-url": "https://packagist.org/downloads/", 852 | "license": [ 853 | "BSD-3-Clause" 854 | ], 855 | "authors": [ 856 | { 857 | "name": "Sebastian Bergmann", 858 | "email": "sebastian@phpunit.de" 859 | } 860 | ], 861 | "description": "Wrapper around PHP's tokenizer extension.", 862 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 863 | "keywords": [ 864 | "tokenizer" 865 | ], 866 | "time": "2015-09-15 10:49:45" 867 | }, 868 | { 869 | "name": "phpunit/phpunit", 870 | "version": "4.8.24", 871 | "source": { 872 | "type": "git", 873 | "url": "https://github.com/sebastianbergmann/phpunit.git", 874 | "reference": "a1066c562c52900a142a0e2bbf0582994671385e" 875 | }, 876 | "dist": { 877 | "type": "zip", 878 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1066c562c52900a142a0e2bbf0582994671385e", 879 | "reference": "a1066c562c52900a142a0e2bbf0582994671385e", 880 | "shasum": "" 881 | }, 882 | "require": { 883 | "ext-dom": "*", 884 | "ext-json": "*", 885 | "ext-pcre": "*", 886 | "ext-reflection": "*", 887 | "ext-spl": "*", 888 | "php": ">=5.3.3", 889 | "phpspec/prophecy": "^1.3.1", 890 | "phpunit/php-code-coverage": "~2.1", 891 | "phpunit/php-file-iterator": "~1.4", 892 | "phpunit/php-text-template": "~1.2", 893 | "phpunit/php-timer": ">=1.0.6", 894 | "phpunit/phpunit-mock-objects": "~2.3", 895 | "sebastian/comparator": "~1.1", 896 | "sebastian/diff": "~1.2", 897 | "sebastian/environment": "~1.3", 898 | "sebastian/exporter": "~1.2", 899 | "sebastian/global-state": "~1.0", 900 | "sebastian/version": "~1.0", 901 | "symfony/yaml": "~2.1|~3.0" 902 | }, 903 | "suggest": { 904 | "phpunit/php-invoker": "~1.1" 905 | }, 906 | "bin": [ 907 | "phpunit" 908 | ], 909 | "type": "library", 910 | "extra": { 911 | "branch-alias": { 912 | "dev-master": "4.8.x-dev" 913 | } 914 | }, 915 | "autoload": { 916 | "classmap": [ 917 | "src/" 918 | ] 919 | }, 920 | "notification-url": "https://packagist.org/downloads/", 921 | "license": [ 922 | "BSD-3-Clause" 923 | ], 924 | "authors": [ 925 | { 926 | "name": "Sebastian Bergmann", 927 | "email": "sebastian@phpunit.de", 928 | "role": "lead" 929 | } 930 | ], 931 | "description": "The PHP Unit Testing framework.", 932 | "homepage": "https://phpunit.de/", 933 | "keywords": [ 934 | "phpunit", 935 | "testing", 936 | "xunit" 937 | ], 938 | "time": "2016-03-14 06:16:08" 939 | }, 940 | { 941 | "name": "phpunit/phpunit-mock-objects", 942 | "version": "2.3.8", 943 | "source": { 944 | "type": "git", 945 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 946 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" 947 | }, 948 | "dist": { 949 | "type": "zip", 950 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", 951 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", 952 | "shasum": "" 953 | }, 954 | "require": { 955 | "doctrine/instantiator": "^1.0.2", 956 | "php": ">=5.3.3", 957 | "phpunit/php-text-template": "~1.2", 958 | "sebastian/exporter": "~1.2" 959 | }, 960 | "require-dev": { 961 | "phpunit/phpunit": "~4.4" 962 | }, 963 | "suggest": { 964 | "ext-soap": "*" 965 | }, 966 | "type": "library", 967 | "extra": { 968 | "branch-alias": { 969 | "dev-master": "2.3.x-dev" 970 | } 971 | }, 972 | "autoload": { 973 | "classmap": [ 974 | "src/" 975 | ] 976 | }, 977 | "notification-url": "https://packagist.org/downloads/", 978 | "license": [ 979 | "BSD-3-Clause" 980 | ], 981 | "authors": [ 982 | { 983 | "name": "Sebastian Bergmann", 984 | "email": "sb@sebastian-bergmann.de", 985 | "role": "lead" 986 | } 987 | ], 988 | "description": "Mock Object library for PHPUnit", 989 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 990 | "keywords": [ 991 | "mock", 992 | "xunit" 993 | ], 994 | "time": "2015-10-02 06:51:40" 995 | }, 996 | { 997 | "name": "sebastian/comparator", 998 | "version": "1.2.0", 999 | "source": { 1000 | "type": "git", 1001 | "url": "https://github.com/sebastianbergmann/comparator.git", 1002 | "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" 1003 | }, 1004 | "dist": { 1005 | "type": "zip", 1006 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", 1007 | "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", 1008 | "shasum": "" 1009 | }, 1010 | "require": { 1011 | "php": ">=5.3.3", 1012 | "sebastian/diff": "~1.2", 1013 | "sebastian/exporter": "~1.2" 1014 | }, 1015 | "require-dev": { 1016 | "phpunit/phpunit": "~4.4" 1017 | }, 1018 | "type": "library", 1019 | "extra": { 1020 | "branch-alias": { 1021 | "dev-master": "1.2.x-dev" 1022 | } 1023 | }, 1024 | "autoload": { 1025 | "classmap": [ 1026 | "src/" 1027 | ] 1028 | }, 1029 | "notification-url": "https://packagist.org/downloads/", 1030 | "license": [ 1031 | "BSD-3-Clause" 1032 | ], 1033 | "authors": [ 1034 | { 1035 | "name": "Jeff Welch", 1036 | "email": "whatthejeff@gmail.com" 1037 | }, 1038 | { 1039 | "name": "Volker Dusch", 1040 | "email": "github@wallbash.com" 1041 | }, 1042 | { 1043 | "name": "Bernhard Schussek", 1044 | "email": "bschussek@2bepublished.at" 1045 | }, 1046 | { 1047 | "name": "Sebastian Bergmann", 1048 | "email": "sebastian@phpunit.de" 1049 | } 1050 | ], 1051 | "description": "Provides the functionality to compare PHP values for equality", 1052 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 1053 | "keywords": [ 1054 | "comparator", 1055 | "compare", 1056 | "equality" 1057 | ], 1058 | "time": "2015-07-26 15:48:44" 1059 | }, 1060 | { 1061 | "name": "sebastian/diff", 1062 | "version": "1.4.1", 1063 | "source": { 1064 | "type": "git", 1065 | "url": "https://github.com/sebastianbergmann/diff.git", 1066 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" 1067 | }, 1068 | "dist": { 1069 | "type": "zip", 1070 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", 1071 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", 1072 | "shasum": "" 1073 | }, 1074 | "require": { 1075 | "php": ">=5.3.3" 1076 | }, 1077 | "require-dev": { 1078 | "phpunit/phpunit": "~4.8" 1079 | }, 1080 | "type": "library", 1081 | "extra": { 1082 | "branch-alias": { 1083 | "dev-master": "1.4-dev" 1084 | } 1085 | }, 1086 | "autoload": { 1087 | "classmap": [ 1088 | "src/" 1089 | ] 1090 | }, 1091 | "notification-url": "https://packagist.org/downloads/", 1092 | "license": [ 1093 | "BSD-3-Clause" 1094 | ], 1095 | "authors": [ 1096 | { 1097 | "name": "Kore Nordmann", 1098 | "email": "mail@kore-nordmann.de" 1099 | }, 1100 | { 1101 | "name": "Sebastian Bergmann", 1102 | "email": "sebastian@phpunit.de" 1103 | } 1104 | ], 1105 | "description": "Diff implementation", 1106 | "homepage": "https://github.com/sebastianbergmann/diff", 1107 | "keywords": [ 1108 | "diff" 1109 | ], 1110 | "time": "2015-12-08 07:14:41" 1111 | }, 1112 | { 1113 | "name": "sebastian/environment", 1114 | "version": "1.3.5", 1115 | "source": { 1116 | "type": "git", 1117 | "url": "https://github.com/sebastianbergmann/environment.git", 1118 | "reference": "dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf" 1119 | }, 1120 | "dist": { 1121 | "type": "zip", 1122 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf", 1123 | "reference": "dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf", 1124 | "shasum": "" 1125 | }, 1126 | "require": { 1127 | "php": ">=5.3.3" 1128 | }, 1129 | "require-dev": { 1130 | "phpunit/phpunit": "~4.4" 1131 | }, 1132 | "type": "library", 1133 | "extra": { 1134 | "branch-alias": { 1135 | "dev-master": "1.3.x-dev" 1136 | } 1137 | }, 1138 | "autoload": { 1139 | "classmap": [ 1140 | "src/" 1141 | ] 1142 | }, 1143 | "notification-url": "https://packagist.org/downloads/", 1144 | "license": [ 1145 | "BSD-3-Clause" 1146 | ], 1147 | "authors": [ 1148 | { 1149 | "name": "Sebastian Bergmann", 1150 | "email": "sebastian@phpunit.de" 1151 | } 1152 | ], 1153 | "description": "Provides functionality to handle HHVM/PHP environments", 1154 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1155 | "keywords": [ 1156 | "Xdebug", 1157 | "environment", 1158 | "hhvm" 1159 | ], 1160 | "time": "2016-02-26 18:40:46" 1161 | }, 1162 | { 1163 | "name": "sebastian/exporter", 1164 | "version": "1.2.1", 1165 | "source": { 1166 | "type": "git", 1167 | "url": "https://github.com/sebastianbergmann/exporter.git", 1168 | "reference": "7ae5513327cb536431847bcc0c10edba2701064e" 1169 | }, 1170 | "dist": { 1171 | "type": "zip", 1172 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e", 1173 | "reference": "7ae5513327cb536431847bcc0c10edba2701064e", 1174 | "shasum": "" 1175 | }, 1176 | "require": { 1177 | "php": ">=5.3.3", 1178 | "sebastian/recursion-context": "~1.0" 1179 | }, 1180 | "require-dev": { 1181 | "phpunit/phpunit": "~4.4" 1182 | }, 1183 | "type": "library", 1184 | "extra": { 1185 | "branch-alias": { 1186 | "dev-master": "1.2.x-dev" 1187 | } 1188 | }, 1189 | "autoload": { 1190 | "classmap": [ 1191 | "src/" 1192 | ] 1193 | }, 1194 | "notification-url": "https://packagist.org/downloads/", 1195 | "license": [ 1196 | "BSD-3-Clause" 1197 | ], 1198 | "authors": [ 1199 | { 1200 | "name": "Jeff Welch", 1201 | "email": "whatthejeff@gmail.com" 1202 | }, 1203 | { 1204 | "name": "Volker Dusch", 1205 | "email": "github@wallbash.com" 1206 | }, 1207 | { 1208 | "name": "Bernhard Schussek", 1209 | "email": "bschussek@2bepublished.at" 1210 | }, 1211 | { 1212 | "name": "Sebastian Bergmann", 1213 | "email": "sebastian@phpunit.de" 1214 | }, 1215 | { 1216 | "name": "Adam Harvey", 1217 | "email": "aharvey@php.net" 1218 | } 1219 | ], 1220 | "description": "Provides the functionality to export PHP variables for visualization", 1221 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1222 | "keywords": [ 1223 | "export", 1224 | "exporter" 1225 | ], 1226 | "time": "2015-06-21 07:55:53" 1227 | }, 1228 | { 1229 | "name": "sebastian/global-state", 1230 | "version": "1.1.1", 1231 | "source": { 1232 | "type": "git", 1233 | "url": "https://github.com/sebastianbergmann/global-state.git", 1234 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" 1235 | }, 1236 | "dist": { 1237 | "type": "zip", 1238 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", 1239 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", 1240 | "shasum": "" 1241 | }, 1242 | "require": { 1243 | "php": ">=5.3.3" 1244 | }, 1245 | "require-dev": { 1246 | "phpunit/phpunit": "~4.2" 1247 | }, 1248 | "suggest": { 1249 | "ext-uopz": "*" 1250 | }, 1251 | "type": "library", 1252 | "extra": { 1253 | "branch-alias": { 1254 | "dev-master": "1.0-dev" 1255 | } 1256 | }, 1257 | "autoload": { 1258 | "classmap": [ 1259 | "src/" 1260 | ] 1261 | }, 1262 | "notification-url": "https://packagist.org/downloads/", 1263 | "license": [ 1264 | "BSD-3-Clause" 1265 | ], 1266 | "authors": [ 1267 | { 1268 | "name": "Sebastian Bergmann", 1269 | "email": "sebastian@phpunit.de" 1270 | } 1271 | ], 1272 | "description": "Snapshotting of global state", 1273 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1274 | "keywords": [ 1275 | "global state" 1276 | ], 1277 | "time": "2015-10-12 03:26:01" 1278 | }, 1279 | { 1280 | "name": "sebastian/recursion-context", 1281 | "version": "1.0.2", 1282 | "source": { 1283 | "type": "git", 1284 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1285 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791" 1286 | }, 1287 | "dist": { 1288 | "type": "zip", 1289 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791", 1290 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791", 1291 | "shasum": "" 1292 | }, 1293 | "require": { 1294 | "php": ">=5.3.3" 1295 | }, 1296 | "require-dev": { 1297 | "phpunit/phpunit": "~4.4" 1298 | }, 1299 | "type": "library", 1300 | "extra": { 1301 | "branch-alias": { 1302 | "dev-master": "1.0.x-dev" 1303 | } 1304 | }, 1305 | "autoload": { 1306 | "classmap": [ 1307 | "src/" 1308 | ] 1309 | }, 1310 | "notification-url": "https://packagist.org/downloads/", 1311 | "license": [ 1312 | "BSD-3-Clause" 1313 | ], 1314 | "authors": [ 1315 | { 1316 | "name": "Jeff Welch", 1317 | "email": "whatthejeff@gmail.com" 1318 | }, 1319 | { 1320 | "name": "Sebastian Bergmann", 1321 | "email": "sebastian@phpunit.de" 1322 | }, 1323 | { 1324 | "name": "Adam Harvey", 1325 | "email": "aharvey@php.net" 1326 | } 1327 | ], 1328 | "description": "Provides functionality to recursively process PHP variables", 1329 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1330 | "time": "2015-11-11 19:50:13" 1331 | }, 1332 | { 1333 | "name": "sebastian/version", 1334 | "version": "1.0.6", 1335 | "source": { 1336 | "type": "git", 1337 | "url": "https://github.com/sebastianbergmann/version.git", 1338 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" 1339 | }, 1340 | "dist": { 1341 | "type": "zip", 1342 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 1343 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 1344 | "shasum": "" 1345 | }, 1346 | "type": "library", 1347 | "autoload": { 1348 | "classmap": [ 1349 | "src/" 1350 | ] 1351 | }, 1352 | "notification-url": "https://packagist.org/downloads/", 1353 | "license": [ 1354 | "BSD-3-Clause" 1355 | ], 1356 | "authors": [ 1357 | { 1358 | "name": "Sebastian Bergmann", 1359 | "email": "sebastian@phpunit.de", 1360 | "role": "lead" 1361 | } 1362 | ], 1363 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1364 | "homepage": "https://github.com/sebastianbergmann/version", 1365 | "time": "2015-06-21 13:59:46" 1366 | }, 1367 | { 1368 | "name": "squizlabs/php_codesniffer", 1369 | "version": "2.6.0", 1370 | "source": { 1371 | "type": "git", 1372 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 1373 | "reference": "1bcdf03b068a530ac1962ce671dead356eeba43b" 1374 | }, 1375 | "dist": { 1376 | "type": "zip", 1377 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1bcdf03b068a530ac1962ce671dead356eeba43b", 1378 | "reference": "1bcdf03b068a530ac1962ce671dead356eeba43b", 1379 | "shasum": "" 1380 | }, 1381 | "require": { 1382 | "ext-simplexml": "*", 1383 | "ext-tokenizer": "*", 1384 | "ext-xmlwriter": "*", 1385 | "php": ">=5.1.2" 1386 | }, 1387 | "require-dev": { 1388 | "phpunit/phpunit": "~4.0" 1389 | }, 1390 | "bin": [ 1391 | "scripts/phpcs", 1392 | "scripts/phpcbf" 1393 | ], 1394 | "type": "library", 1395 | "extra": { 1396 | "branch-alias": { 1397 | "dev-master": "2.x-dev" 1398 | } 1399 | }, 1400 | "autoload": { 1401 | "classmap": [ 1402 | "CodeSniffer.php", 1403 | "CodeSniffer/CLI.php", 1404 | "CodeSniffer/Exception.php", 1405 | "CodeSniffer/File.php", 1406 | "CodeSniffer/Fixer.php", 1407 | "CodeSniffer/Report.php", 1408 | "CodeSniffer/Reporting.php", 1409 | "CodeSniffer/Sniff.php", 1410 | "CodeSniffer/Tokens.php", 1411 | "CodeSniffer/Reports/", 1412 | "CodeSniffer/Tokenizers/", 1413 | "CodeSniffer/DocGenerators/", 1414 | "CodeSniffer/Standards/AbstractPatternSniff.php", 1415 | "CodeSniffer/Standards/AbstractScopeSniff.php", 1416 | "CodeSniffer/Standards/AbstractVariableSniff.php", 1417 | "CodeSniffer/Standards/IncorrectPatternException.php", 1418 | "CodeSniffer/Standards/Generic/Sniffs/", 1419 | "CodeSniffer/Standards/MySource/Sniffs/", 1420 | "CodeSniffer/Standards/PEAR/Sniffs/", 1421 | "CodeSniffer/Standards/PSR1/Sniffs/", 1422 | "CodeSniffer/Standards/PSR2/Sniffs/", 1423 | "CodeSniffer/Standards/Squiz/Sniffs/", 1424 | "CodeSniffer/Standards/Zend/Sniffs/" 1425 | ] 1426 | }, 1427 | "notification-url": "https://packagist.org/downloads/", 1428 | "license": [ 1429 | "BSD-3-Clause" 1430 | ], 1431 | "authors": [ 1432 | { 1433 | "name": "Greg Sherwood", 1434 | "role": "lead" 1435 | } 1436 | ], 1437 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 1438 | "homepage": "http://www.squizlabs.com/php-codesniffer", 1439 | "keywords": [ 1440 | "phpcs", 1441 | "standards" 1442 | ], 1443 | "time": "2016-04-03 22:58:34" 1444 | }, 1445 | { 1446 | "name": "symfony/yaml", 1447 | "version": "v3.0.4", 1448 | "source": { 1449 | "type": "git", 1450 | "url": "https://github.com/symfony/yaml.git", 1451 | "reference": "0047c8366744a16de7516622c5b7355336afae96" 1452 | }, 1453 | "dist": { 1454 | "type": "zip", 1455 | "url": "https://api.github.com/repos/symfony/yaml/zipball/0047c8366744a16de7516622c5b7355336afae96", 1456 | "reference": "0047c8366744a16de7516622c5b7355336afae96", 1457 | "shasum": "" 1458 | }, 1459 | "require": { 1460 | "php": ">=5.5.9" 1461 | }, 1462 | "type": "library", 1463 | "extra": { 1464 | "branch-alias": { 1465 | "dev-master": "3.0-dev" 1466 | } 1467 | }, 1468 | "autoload": { 1469 | "psr-4": { 1470 | "Symfony\\Component\\Yaml\\": "" 1471 | }, 1472 | "exclude-from-classmap": [ 1473 | "/Tests/" 1474 | ] 1475 | }, 1476 | "notification-url": "https://packagist.org/downloads/", 1477 | "license": [ 1478 | "MIT" 1479 | ], 1480 | "authors": [ 1481 | { 1482 | "name": "Fabien Potencier", 1483 | "email": "fabien@symfony.com" 1484 | }, 1485 | { 1486 | "name": "Symfony Community", 1487 | "homepage": "https://symfony.com/contributors" 1488 | } 1489 | ], 1490 | "description": "Symfony Yaml Component", 1491 | "homepage": "https://symfony.com", 1492 | "time": "2016-03-04 07:55:57" 1493 | } 1494 | ], 1495 | "aliases": [], 1496 | "minimum-stability": "stable", 1497 | "stability-flags": { 1498 | "react/http": 20 1499 | }, 1500 | "prefer-stable": false, 1501 | "prefer-lowest": false, 1502 | "platform": { 1503 | "php": "^5.5 || ^7.0" 1504 | }, 1505 | "platform-dev": [] 1506 | } 1507 | --------------------------------------------------------------------------------