├── .gitignore
├── .codeclimate.yml
├── src
└── Dflydev
│ └── EncryptedFigCookies
│ ├── Encryption
│ ├── Encryption.php
│ ├── Decryptor.php
│ ├── Encryptor.php
│ └── Adapter
│ │ ├── PhpseclibEncryption.php
│ │ ├── DefuseEncryption.php
│ │ └── ZendCryptEncryption.php
│ ├── Validation
│ ├── Message.php
│ └── Validation.php
│ ├── RequestCookieDecryptor.php
│ ├── ResponseCookieEncryptor.php
│ └── EncryptedFigCookiesMiddleware.php
├── phpunit.xml.dist
├── .scrutinizer.yml
├── tests
└── Dflydev
│ └── EncryptedFigCookies
│ ├── FigCookieTestingResponse.php
│ ├── Encryption
│ └── Adapter
│ │ ├── DefuseEncryptionTest.php
│ │ ├── PhpseclibEncryptionTest.php
│ │ └── ZendFilterEncryptionTest.php
│ ├── FigCookieTestingRequest.php
│ ├── Validation
│ └── ValidationTest.php
│ └── FigCookieTestingMessage.php
├── .travis.yml
├── LICENSE
├── composer.json
├── README.md
└── composer.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | /vendor/
2 |
--------------------------------------------------------------------------------
/.codeclimate.yml:
--------------------------------------------------------------------------------
1 | # Save as .codeclimate.yml (note leading .) in project root directory
2 | languages:
3 | PHP: true
4 | exclude_paths:
5 | - "tests/*"
6 |
--------------------------------------------------------------------------------
/src/Dflydev/EncryptedFigCookies/Encryption/Encryption.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ./tests
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.scrutinizer.yml:
--------------------------------------------------------------------------------
1 | tools:
2 | external_code_coverage:
3 | timeout: 600
4 | php_mess_detector: true
5 | php_code_sniffer: true
6 | sensiolabs_security_checker: true
7 | php_code_coverage: true
8 | php_pdepend: true
9 | php_loc:
10 | enabled: true
11 | excluded_dirs: [vendor, tests]
12 | php_cpd:
13 | enabled: true
14 | excluded_dirs: [vendor, tests]
15 | filter:
16 | excluded_paths:
17 | - tests/*
18 | checks:
19 | php:
20 | code_rating: true
21 | duplication: true
22 |
--------------------------------------------------------------------------------
/src/Dflydev/EncryptedFigCookies/Encryption/Adapter/PhpseclibEncryption.php:
--------------------------------------------------------------------------------
1 | cypher = $cypher;
18 | }
19 |
20 | public function decrypt($value)
21 | {
22 | return $this->cypher->decrypt($value);
23 | }
24 |
25 | public function encrypt($value)
26 | {
27 | return $this->cypher->encrypt($value);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/tests/Dflydev/EncryptedFigCookies/FigCookieTestingResponse.php:
--------------------------------------------------------------------------------
1 | key = $key;
21 | }
22 |
23 | public function decrypt($value)
24 | {
25 | return Crypto::Decrypt($value, $this->key);
26 | }
27 |
28 | public function encrypt($value)
29 | {
30 | return Crypto::Encrypt($value, $this->key);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: php
2 |
3 | php:
4 | - 5.4
5 | - 5.5
6 | - 5.6
7 | - 7
8 | - hhvm
9 |
10 | cache:
11 | directories:
12 | - vendor
13 | - $HOME/.composer/cache
14 |
15 | matrix:
16 | allow_failures:
17 | - php: hhvm
18 |
19 | before_script:
20 | - composer self-update
21 | - composer install --dev --prefer-source
22 |
23 | script:
24 | - ./vendor/bin/phpunit --coverage-clover=coverage.clover
25 | - ./vendor/bin/phpcs --standard=PSR2 src
26 |
27 | after_script:
28 | - wget https://scrutinizer-ci.com/ocular.phar
29 | - php ocular.phar code-coverage:upload --format=php-clover coverage.clover
30 | - CODECLIMATE_REPO_TOKEN=a6c3fe945c8b82dfc203abaf185a8773859ea2099f2a813a301f791d46e1905f ./vendor/bin/test-reporter --coverage-report=coverage.clover
31 |
32 | notifications:
33 | email: true
34 |
--------------------------------------------------------------------------------
/tests/Dflydev/EncryptedFigCookies/Encryption/Adapter/DefuseEncryptionTest.php:
--------------------------------------------------------------------------------
1 | markTestSkipped('Missing defuse/php-encryption');
11 | }
12 |
13 | parent::setUp();
14 | }
15 |
16 | /** @test */
17 | public function it_encrypts_and_decrypts()
18 | {
19 | $encryption = new DefuseEncryption('asdfasdfasdfasdf');
20 |
21 | $size = 10 * 1024;
22 | $plaintext = str_repeat('a', $size);
23 | $encrypted = $encryption->encrypt($plaintext);
24 |
25 | $this->assertEquals($plaintext, $encryption->decrypt($encrypted));
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/Dflydev/EncryptedFigCookies/Encryption/Adapter/ZendCryptEncryption.php:
--------------------------------------------------------------------------------
1 | decrypt = $decrypt;
24 | $this->encrypt = $encrypt;
25 | }
26 |
27 | public function decrypt($value)
28 | {
29 | return $this->decrypt->filter($value);
30 | }
31 |
32 | public function encrypt($value)
33 | {
34 | return $this->encrypt->filter($value);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/Dflydev/EncryptedFigCookies/Validation/Message.php:
--------------------------------------------------------------------------------
1 | nonce = $nonce;
14 | $this->hmac = $hmac;
15 | $this->value = $value;
16 | }
17 |
18 | public function getNonce()
19 | {
20 | return $this->nonce;
21 | }
22 |
23 | public function getHmac()
24 | {
25 | return $this->hmac;
26 | }
27 |
28 | public function getValue()
29 | {
30 | return $this->value;
31 | }
32 |
33 | public static function fromString($value)
34 | {
35 | $nonce = substr($value, 0, 32);
36 | $hmac = substr($value, strrpos($value, '.') + 1);
37 | $value = substr($value, 32, strlen($value) - strlen($hmac) - 33);
38 |
39 | return new self($nonce, $hmac, $value);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2015 Dragonfly Development Inc.
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is furnished
8 | to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dflydev/encrypted-fig-cookies",
3 | "description": "Encrypted Cookies for PSR-7 HTTP Message Interface.",
4 | "license": "MIT",
5 | "keywords": ["psr7", "psr-7", "cookies"],
6 | "authors": [
7 | {
8 | "name": "Beau Simensen",
9 | "email": "beau@dflydev.com"
10 | }
11 | ],
12 | "require": {
13 | "dflydev/fig-cookies": "^1.0",
14 | "psr/http-message": "^1.0"
15 | },
16 | "autoload": {
17 | "psr-4": {
18 | "Dflydev\\EncryptedFigCookies\\": "src/Dflydev/EncryptedFigCookies"
19 | }
20 | },
21 | "require-dev": {
22 | "phpseclib/phpseclib": "^0.3.10",
23 | "zendframework/zend-crypt": "^2.0",
24 | "defuse/php-encryption": "^1.2",
25 |
26 | "codeclimate/php-test-reporter": "~0.1@dev",
27 | "phpunit/phpunit": "^4.6",
28 | "squizlabs/php_codesniffer": "~2.3"
29 | },
30 | "autoload-dev": {
31 | "psr-4": {
32 | "Dflydev\\EncryptedFigCookies\\": "tests/Dflydev/EncryptedFigCookies"
33 | }
34 | },
35 | "extra": {
36 | "branch-alias": {
37 | "dev-master": "0.0.x-dev"
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/tests/Dflydev/EncryptedFigCookies/Encryption/Adapter/PhpseclibEncryptionTest.php:
--------------------------------------------------------------------------------
1 | markTestSkipped('Missing phpseclib/phpseclib');
11 | }
12 |
13 | parent::setUp();
14 | }
15 |
16 | /**
17 | * @test
18 | * @dataProvider provide_encrypts_and_decrypts_data
19 | */
20 | public function it_encrypts_and_decrypts(\Crypt_Base $cipher, $key)
21 | {
22 | $cipher->setKey($key);
23 |
24 | $encryption = new PhpseclibEncryption($cipher);
25 |
26 | $size = 10 * 1024;
27 | $plaintext = str_repeat('a', $size);
28 | $encrypted = $encryption->encrypt($plaintext);
29 |
30 | $this->assertEquals($plaintext, $encryption->decrypt($encrypted));
31 | }
32 |
33 | public function provide_encrypts_and_decrypts_data()
34 | {
35 | return [
36 | [
37 | new \Crypt_AES(CRYPT_AES_MODE_ECB),
38 | 'abcdefghijklmnop'
39 | ],
40 | ];
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/tests/Dflydev/EncryptedFigCookies/FigCookieTestingRequest.php:
--------------------------------------------------------------------------------
1 | extract($signedValue);
24 |
25 | $this->assertEquals($value, $extractedValue);
26 | }
27 |
28 | /** @test */
29 | public function it_signs_successfully()
30 | {
31 | $algo = 'sha256';
32 | $key = 'E26m218TLqgJeY40ydCET10tMUD6qSlV';
33 | $value = 'hello world!';
34 |
35 | $validation = new Validation($key, $algo);
36 |
37 | $signedValue = $validation->sign($value);
38 |
39 | $extractedValue = $validation->extract($signedValue);
40 |
41 | $this->assertEquals($value, $extractedValue);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/tests/Dflydev/EncryptedFigCookies/Encryption/Adapter/ZendFilterEncryptionTest.php:
--------------------------------------------------------------------------------
1 | markTestSkipped('Missing zendframework/zend-crypt');
14 | }
15 |
16 | parent::setUp();
17 | }
18 |
19 | /** @test */
20 | public function it_encrypts_and_decrypts_successfully()
21 | {
22 |
23 | $encryption = new ZendCryptEncryption(
24 | new Decrypt(['key' => 'asdf']),
25 | new Encrypt(['key' => 'asdf'])
26 | );
27 |
28 | $size = 10 * 1024;
29 | $plaintext = str_repeat('a', $size);
30 | $encrypted = $encryption->encrypt($plaintext);
31 |
32 | $this->assertEquals($plaintext, $encryption->decrypt($encrypted));
33 | }
34 |
35 | /** @test */
36 | public function it_does_not_encrypt_and_decrypt_successfully()
37 | {
38 | $encryption = new ZendCryptEncryption(
39 | new Decrypt(['key' => 'asdf']),
40 | new Encrypt(['key' => 'ASDF'])
41 | );
42 |
43 | $size = 10 * 1024;
44 | $plaintext = str_repeat('a', $size);
45 | $encrypted = $encryption->encrypt($plaintext);
46 |
47 | $this->assertNotEquals($plaintext, $encryption->decrypt($encrypted));
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/Dflydev/EncryptedFigCookies/RequestCookieDecryptor.php:
--------------------------------------------------------------------------------
1 | decryptor = $decryptor;
25 | $this->validation = $validaton;
26 | }
27 |
28 | private static function resolveCookieNames($cookieNames)
29 | {
30 | return is_array($cookieNames) ? $cookieNames : [(string) $cookieNames];
31 | }
32 |
33 | private static function hasNoCookieNames(array $cookieNames)
34 | {
35 | return count($cookieNames) < 1;
36 | }
37 |
38 | public function decrypt(RequestInterface $request, $cookieNames)
39 | {
40 | $cookieNames = self::resolveCookieNames($cookieNames);
41 |
42 | if (self::hasNoCookieNames($cookieNames)) {
43 | return $request;
44 | }
45 |
46 | $cookies = Cookies::fromRequest($request);
47 |
48 | foreach ($cookieNames as $cookieName) {
49 | $cookies = $this->decryptCookie($cookies, $cookieName);
50 | }
51 |
52 | return $cookies->renderIntoCookieHeader($request);
53 | }
54 |
55 | private function decryptCookie(Cookies $cookies, $cookieName)
56 | {
57 | if (! $cookies->has($cookieName)) {
58 | return $cookies;
59 | }
60 |
61 | $cookie = $cookies->get($cookieName);
62 | $encodedValue = $cookie->getValue();
63 | $signedValue = base64_decode($encodedValue);
64 | $encryptedValue = $this->validation->extract($signedValue);
65 | $decryptedValue = $this->decryptor->decrypt($encryptedValue);
66 | $decryptedCookie = $cookie->withValue($decryptedValue);
67 |
68 | return $cookies->with($decryptedCookie);
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/Dflydev/EncryptedFigCookies/ResponseCookieEncryptor.php:
--------------------------------------------------------------------------------
1 | encryptor = $encryptor;
25 | $this->validation = $validation;
26 | }
27 |
28 | private static function resolveCookieNames($cookieNames)
29 | {
30 | return is_array($cookieNames) ? $cookieNames : [(string) $cookieNames];
31 | }
32 |
33 | private static function hasNoCookieNames(array $cookieNames)
34 | {
35 | return count($cookieNames) < 1;
36 | }
37 |
38 | public function encrypt(ResponseInterface $response, $cookieNames)
39 | {
40 | $cookieNames = self::resolveCookieNames($cookieNames);
41 |
42 | if (self::hasNoCookieNames($cookieNames)) {
43 | return $response;
44 | }
45 |
46 | $setCookies = SetCookies::fromResponse($response);
47 |
48 | foreach ($cookieNames as $cookieName) {
49 | $setCookies = $this->encryptCookie($setCookies, $cookieName);
50 | }
51 |
52 | return $setCookies->renderIntoSetCookieHeader($response);
53 | }
54 |
55 | private function encryptCookie(SetCookies $setCookies, $cookieName)
56 | {
57 | if (! $setCookies->has($cookieName)) {
58 | return $setCookies;
59 | }
60 |
61 | $cookie = $setCookies->get($cookieName);
62 | $decryptedValue = $cookie->getValue();
63 | $encryptedValue = $this->encryptor->encrypt($decryptedValue);
64 | $signedValue = $this->validation->sign($encryptedValue);
65 | $encodedValue = base64_encode($signedValue);
66 | $encryptedCookie = $cookie->withValue($encodedValue);
67 |
68 | return $setCookies->with($encryptedCookie);
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/Dflydev/EncryptedFigCookies/Validation/Validation.php:
--------------------------------------------------------------------------------
1 | key = $key;
16 | $this->algo = $algo ?: static::DEFAULT_ALGO;
17 | }
18 |
19 | public function extract($value)
20 | {
21 | $message = Message::fromString($value);
22 |
23 | if (!$this->verify($message)) {
24 | throw new \RuntimeException('Invalid message.');
25 | }
26 |
27 | return $message->getValue();
28 | }
29 |
30 | public function sign($value)
31 | {
32 | $nonce = $this->generateNonce();
33 |
34 | $hmac = hash_hmac($this->algo, $this->key, $nonce.$value);
35 |
36 | return $nonce.$value.'.'.$hmac;
37 | }
38 |
39 | private function verify(Message $message)
40 | {
41 | $calcualtedHmac = hash_hmac(
42 | $this->algo,
43 | $this->key,
44 | $message->getNonce().$message->getValue()
45 | );
46 |
47 | return self::hashCompare($calcualtedHmac, $message->getHmac());
48 | }
49 |
50 | private static function generateNonce()
51 | {
52 | $result = '';
53 | for ($i = 0; $i < static::NONCE_LENGTH; $i++) {
54 | $result .= chr((mt_rand() ^ mt_rand()) % 256);
55 | }
56 | return $result;
57 | }
58 |
59 | private static function hashCompare($hash1, $hash2)
60 | {
61 | if (function_exists('hash_equals')) {
62 | return hash_equals($hash1, $hash2);
63 | }
64 |
65 | return self::hashCompareFallback($hash1, $hash2);
66 | }
67 |
68 | private static function hashCompareFallback($hash1, $hash2)
69 | {
70 | if (function_exists('hash_equals')) {
71 | return hash_equals($hash1, $hash2);
72 | }
73 | if (strlen($hash1) !== strlen($hash2)) {
74 | return false;
75 | }
76 | $res = 0;
77 | $len = strlen($hash1);
78 | for ($i = 0; $i < $len; ++$i) {
79 | $res |= ord($hash1[$i]) ^ ord($hash2[$i]);
80 | }
81 | return $res === 0;
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/tests/Dflydev/EncryptedFigCookies/FigCookieTestingMessage.php:
--------------------------------------------------------------------------------
1 | headers[$name] = [$value];
30 |
31 | return $clone;
32 | }
33 |
34 | public function withAddedHeader($name, $value)
35 | {
36 | $clone = clone($this);
37 |
38 | if (! isset($clone->headers[$name])) {
39 | $clone->headers[$name] = [];
40 | }
41 |
42 | $clone->headers[$name][] = $value;
43 |
44 | return $clone;
45 | }
46 |
47 | public function withoutHeader($name)
48 | {
49 | $clone = clone($this);
50 |
51 | if (isset($clone->headers[$name])) {
52 | unset($clone->headers[$name]);
53 | }
54 |
55 | return $clone;
56 | }
57 |
58 | public function getBody()
59 | {
60 | throw new \RuntimeException("This method has not been implemented.");
61 | }
62 |
63 | public function withBody(StreamInterface $body)
64 | {
65 | throw new \RuntimeException("This method has not been implemented.");
66 | }
67 |
68 | public function getHeaders()
69 | {
70 | throw new \RuntimeException("This method has not been implemented.");
71 | }
72 |
73 | public function getHeader($name)
74 | {
75 | if (! isset($this->headers[$name])) {
76 | return [];
77 | }
78 |
79 | return $this->headers[$name];
80 | }
81 |
82 | public function getHeaderLine($name)
83 | {
84 | return implode(',', $this->headers[$name]);
85 | }
86 |
87 | public function getHeaderLines($name)
88 | {
89 | if (! isset($this->headers[$name])) {
90 | return [];
91 | }
92 |
93 | return $this->headers[$name];
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/src/Dflydev/EncryptedFigCookies/EncryptedFigCookiesMiddleware.php:
--------------------------------------------------------------------------------
1 | requestCookieDecryptor = $requestCookieDecryptor;
24 | $this->responseCookieEncryptor = $responseCookieEncryptor;
25 | $this->cookieNames = $cookieNames;
26 | }
27 |
28 | /**
29 | * @param RequestInterface $request
30 | * @param ResponseInterface $response
31 | * @param callable $next
32 | *
33 | * @return ResponseInterface
34 | */
35 | public function __invoke(
36 | RequestInterface $request,
37 | ResponseInterface $response,
38 | callable $next
39 | ) {
40 | $request = $this->requestCookieDecryptor->decrypt(
41 | $request,
42 | $this->cookieNames
43 | );
44 |
45 | return $this->responseCookieEncryptor->encrypt(
46 | $next($request, $response),
47 | $this->cookieNames
48 | );
49 | }
50 |
51 | public static function createWithDecryptorAndEncryptor(
52 | Decryptor $decryptor,
53 | Encryptor $encryptor,
54 | Validation $validation,
55 | $cookieNames
56 | ) {
57 | return new static(
58 | new RequestCookieDecryptor($decryptor, $validation),
59 | new ResponseCookieEncryptor($encryptor, $validation),
60 | $cookieNames
61 | );
62 | }
63 |
64 | public static function createWithEncryption(
65 | Encryption $encryption,
66 | Validation $validation,
67 | $cookieNames
68 | ) {
69 | return static::createWithDecryptorAndEncryptor(
70 | $encryption,
71 | $encryption,
72 | $validation,
73 | $cookieNames
74 | );
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Encrypted FIG Cookies
2 | ===========
3 |
4 | Managing Encrypted Cookies for PSR-7 Requests and Responses.
5 |
6 | [](https://packagist.org/packages/dflydev/encrypted-fig-cookies)
7 | [](https://packagist.org/packages/dflydev/encrypted-fig-cookies)
8 | [](https://packagist.org/packages/dflydev/encrypted-fig-cookies)
9 | [](https://packagist.org/packages/dflydev/encrypted-fig-cookies)
10 |
11 | [](https://travis-ci.org/dflydev/dflydev-encrypted-fig-cookies)
12 | [](https://scrutinizer-ci.com/g/dflydev/dflydev-encrypted-fig-cookies/?branch=master)
13 | [](https://scrutinizer-ci.com/g/dflydev/dflydev-encrypted-fig-cookies/?branch=master)
14 | [](https://codeclimate.com/github/dflydev/dflydev-encrypted-fig-cookies)
15 |
16 | [](https://gitter.im/dflydev/dflydev-fig-cookies?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
17 |
18 |
19 | Requirements
20 | ------------
21 |
22 | * PHP 5.4+
23 | * [dflydev/fig-cookies](https://packagist.org/packages/dflydev/fig-cookies)
24 | * [psr/http-message](https://packagist.org/packages/psr/http-message)
25 |
26 |
27 | Installation
28 | ------------
29 |
30 | ```bash
31 | $> composer require dflydev/encrypted-fig-cookies
32 | ```
33 |
34 | While in early development, you may be required to be a little more specific:
35 |
36 | ```bash
37 | $> composer require dflydev/encrypted-fig-cookies:^0.0@dev
38 | ```
39 |
40 |
41 | License
42 | -------
43 |
44 | MIT, see LICENSE.
45 |
46 |
47 | Community
48 | ---------
49 |
50 | Want to get involved? Here are a few ways:
51 |
52 | * Find us in the #dflydev IRC channel on irc.freenode.org.
53 | * Mention [@dflydev](https://twitter.com/dflydev) on Twitter.
54 | * [](https://gitter.im/dflydev/dflydev-fig-cookies?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
55 |
--------------------------------------------------------------------------------
/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": "3152530a2fe1564880e99d6e43c6dbaa",
8 | "packages": [
9 | {
10 | "name": "dflydev/fig-cookies",
11 | "version": "v1.0.1",
12 | "source": {
13 | "type": "git",
14 | "url": "https://github.com/dflydev/dflydev-fig-cookies.git",
15 | "reference": "3777cdff8d47fd914034e00a335c836c4ef8e84e"
16 | },
17 | "dist": {
18 | "type": "zip",
19 | "url": "https://api.github.com/repos/dflydev/dflydev-fig-cookies/zipball/3777cdff8d47fd914034e00a335c836c4ef8e84e",
20 | "reference": "3777cdff8d47fd914034e00a335c836c4ef8e84e",
21 | "shasum": ""
22 | },
23 | "require": {
24 | "php": ">=5.4",
25 | "psr/http-message": "~1.0"
26 | },
27 | "require-dev": {
28 | "codeclimate/php-test-reporter": "~0.1@dev",
29 | "phpunit/phpunit": "~4.5",
30 | "squizlabs/php_codesniffer": "~2.3"
31 | },
32 | "type": "library",
33 | "extra": {
34 | "branch-alias": {
35 | "dev-master": "1.0.x-dev"
36 | }
37 | },
38 | "autoload": {
39 | "psr-4": {
40 | "Dflydev\\FigCookies\\": "src/Dflydev/FigCookies"
41 | }
42 | },
43 | "notification-url": "https://packagist.org/downloads/",
44 | "license": [
45 | "MIT"
46 | ],
47 | "authors": [
48 | {
49 | "name": "Beau Simensen",
50 | "email": "beau@dflydev.com"
51 | }
52 | ],
53 | "description": "Cookies for PSR-7 HTTP Message Interface.",
54 | "keywords": [
55 | "cookies",
56 | "psr-7",
57 | "psr7"
58 | ],
59 | "time": "2015-06-03 18:02:30"
60 | },
61 | {
62 | "name": "psr/http-message",
63 | "version": "1.0",
64 | "source": {
65 | "type": "git",
66 | "url": "https://github.com/php-fig/http-message.git",
67 | "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
68 | },
69 | "dist": {
70 | "type": "zip",
71 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
72 | "reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
73 | "shasum": ""
74 | },
75 | "require": {
76 | "php": ">=5.3.0"
77 | },
78 | "type": "library",
79 | "extra": {
80 | "branch-alias": {
81 | "dev-master": "1.0.x-dev"
82 | }
83 | },
84 | "autoload": {
85 | "psr-4": {
86 | "Psr\\Http\\Message\\": "src/"
87 | }
88 | },
89 | "notification-url": "https://packagist.org/downloads/",
90 | "license": [
91 | "MIT"
92 | ],
93 | "authors": [
94 | {
95 | "name": "PHP-FIG",
96 | "homepage": "http://www.php-fig.org/"
97 | }
98 | ],
99 | "description": "Common interface for HTTP messages",
100 | "keywords": [
101 | "http",
102 | "http-message",
103 | "psr",
104 | "psr-7",
105 | "request",
106 | "response"
107 | ],
108 | "time": "2015-05-04 20:22:00"
109 | }
110 | ],
111 | "packages-dev": [
112 | {
113 | "name": "codeclimate/php-test-reporter",
114 | "version": "dev-master",
115 | "source": {
116 | "type": "git",
117 | "url": "https://github.com/codeclimate/php-test-reporter.git",
118 | "reference": "418ae782307841ac50fe26daa4cfe04520b0de9c"
119 | },
120 | "dist": {
121 | "type": "zip",
122 | "url": "https://api.github.com/repos/codeclimate/php-test-reporter/zipball/418ae782307841ac50fe26daa4cfe04520b0de9c",
123 | "reference": "418ae782307841ac50fe26daa4cfe04520b0de9c",
124 | "shasum": ""
125 | },
126 | "require": {
127 | "ext-curl": "*",
128 | "php": ">=5.3",
129 | "satooshi/php-coveralls": "0.6.*",
130 | "symfony/console": ">=2.0"
131 | },
132 | "require-dev": {
133 | "ext-xdebug": "*",
134 | "phpunit/phpunit": "3.7.*@stable"
135 | },
136 | "bin": [
137 | "composer/bin/test-reporter"
138 | ],
139 | "type": "library",
140 | "extra": {
141 | "branch-alias": {
142 | "dev-master": "0.1.x-dev"
143 | }
144 | },
145 | "autoload": {
146 | "psr-0": {
147 | "CodeClimate\\Component": "src/",
148 | "CodeClimate\\Bundle": "src/"
149 | }
150 | },
151 | "notification-url": "https://packagist.org/downloads/",
152 | "license": [
153 | "MIT"
154 | ],
155 | "authors": [
156 | {
157 | "name": "Code Climate",
158 | "email": "hello@codeclimate.com",
159 | "homepage": "https://codeclimate.com"
160 | }
161 | ],
162 | "description": "PHP client for reporting test coverage to Code Climate",
163 | "homepage": "https://github.com/codeclimate/php-test-reporter",
164 | "keywords": [
165 | "codeclimate",
166 | "coverage"
167 | ],
168 | "time": "2015-04-18 14:43:54"
169 | },
170 | {
171 | "name": "defuse/php-encryption",
172 | "version": "v1.2.1",
173 | "source": {
174 | "type": "git",
175 | "url": "https://github.com/defuse/php-encryption.git",
176 | "reference": "b87737b2eec06b13f025cabea847338fa203d1b4"
177 | },
178 | "dist": {
179 | "type": "zip",
180 | "url": "https://api.github.com/repos/defuse/php-encryption/zipball/b87737b2eec06b13f025cabea847338fa203d1b4",
181 | "reference": "b87737b2eec06b13f025cabea847338fa203d1b4",
182 | "shasum": ""
183 | },
184 | "require": {
185 | "ext-mcrypt": "*",
186 | "ext-openssl": "*",
187 | "php": ">=5.4.0"
188 | },
189 | "type": "library",
190 | "autoload": {
191 | "files": [
192 | "Crypto.php"
193 | ]
194 | },
195 | "notification-url": "https://packagist.org/downloads/",
196 | "license": [
197 | "MIT"
198 | ],
199 | "authors": [
200 | {
201 | "name": "Taylor Hornby",
202 | "email": "havoc@defuse.ca"
203 | }
204 | ],
205 | "description": "Secure PHP Encryption Library",
206 | "keywords": [
207 | "aes",
208 | "cipher",
209 | "encryption",
210 | "mcrypt",
211 | "security"
212 | ],
213 | "time": "2015-03-14 20:27:45"
214 | },
215 | {
216 | "name": "doctrine/instantiator",
217 | "version": "1.0.4",
218 | "source": {
219 | "type": "git",
220 | "url": "https://github.com/doctrine/instantiator.git",
221 | "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119"
222 | },
223 | "dist": {
224 | "type": "zip",
225 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119",
226 | "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119",
227 | "shasum": ""
228 | },
229 | "require": {
230 | "php": ">=5.3,<8.0-DEV"
231 | },
232 | "require-dev": {
233 | "athletic/athletic": "~0.1.8",
234 | "ext-pdo": "*",
235 | "ext-phar": "*",
236 | "phpunit/phpunit": "~4.0",
237 | "squizlabs/php_codesniffer": "2.0.*@ALPHA"
238 | },
239 | "type": "library",
240 | "extra": {
241 | "branch-alias": {
242 | "dev-master": "1.0.x-dev"
243 | }
244 | },
245 | "autoload": {
246 | "psr-0": {
247 | "Doctrine\\Instantiator\\": "src"
248 | }
249 | },
250 | "notification-url": "https://packagist.org/downloads/",
251 | "license": [
252 | "MIT"
253 | ],
254 | "authors": [
255 | {
256 | "name": "Marco Pivetta",
257 | "email": "ocramius@gmail.com",
258 | "homepage": "http://ocramius.github.com/"
259 | }
260 | ],
261 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
262 | "homepage": "https://github.com/doctrine/instantiator",
263 | "keywords": [
264 | "constructor",
265 | "instantiate"
266 | ],
267 | "time": "2014-10-13 12:58:55"
268 | },
269 | {
270 | "name": "guzzle/guzzle",
271 | "version": "v3.9.3",
272 | "source": {
273 | "type": "git",
274 | "url": "https://github.com/guzzle/guzzle3.git",
275 | "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9"
276 | },
277 | "dist": {
278 | "type": "zip",
279 | "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9",
280 | "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9",
281 | "shasum": ""
282 | },
283 | "require": {
284 | "ext-curl": "*",
285 | "php": ">=5.3.3",
286 | "symfony/event-dispatcher": "~2.1"
287 | },
288 | "replace": {
289 | "guzzle/batch": "self.version",
290 | "guzzle/cache": "self.version",
291 | "guzzle/common": "self.version",
292 | "guzzle/http": "self.version",
293 | "guzzle/inflection": "self.version",
294 | "guzzle/iterator": "self.version",
295 | "guzzle/log": "self.version",
296 | "guzzle/parser": "self.version",
297 | "guzzle/plugin": "self.version",
298 | "guzzle/plugin-async": "self.version",
299 | "guzzle/plugin-backoff": "self.version",
300 | "guzzle/plugin-cache": "self.version",
301 | "guzzle/plugin-cookie": "self.version",
302 | "guzzle/plugin-curlauth": "self.version",
303 | "guzzle/plugin-error-response": "self.version",
304 | "guzzle/plugin-history": "self.version",
305 | "guzzle/plugin-log": "self.version",
306 | "guzzle/plugin-md5": "self.version",
307 | "guzzle/plugin-mock": "self.version",
308 | "guzzle/plugin-oauth": "self.version",
309 | "guzzle/service": "self.version",
310 | "guzzle/stream": "self.version"
311 | },
312 | "require-dev": {
313 | "doctrine/cache": "~1.3",
314 | "monolog/monolog": "~1.0",
315 | "phpunit/phpunit": "3.7.*",
316 | "psr/log": "~1.0",
317 | "symfony/class-loader": "~2.1",
318 | "zendframework/zend-cache": "2.*,<2.3",
319 | "zendframework/zend-log": "2.*,<2.3"
320 | },
321 | "suggest": {
322 | "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated."
323 | },
324 | "type": "library",
325 | "extra": {
326 | "branch-alias": {
327 | "dev-master": "3.9-dev"
328 | }
329 | },
330 | "autoload": {
331 | "psr-0": {
332 | "Guzzle": "src/",
333 | "Guzzle\\Tests": "tests/"
334 | }
335 | },
336 | "notification-url": "https://packagist.org/downloads/",
337 | "license": [
338 | "MIT"
339 | ],
340 | "authors": [
341 | {
342 | "name": "Michael Dowling",
343 | "email": "mtdowling@gmail.com",
344 | "homepage": "https://github.com/mtdowling"
345 | },
346 | {
347 | "name": "Guzzle Community",
348 | "homepage": "https://github.com/guzzle/guzzle/contributors"
349 | }
350 | ],
351 | "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
352 | "homepage": "http://guzzlephp.org/",
353 | "keywords": [
354 | "client",
355 | "curl",
356 | "framework",
357 | "http",
358 | "http client",
359 | "rest",
360 | "web service"
361 | ],
362 | "time": "2015-03-18 18:23:50"
363 | },
364 | {
365 | "name": "phpdocumentor/reflection-docblock",
366 | "version": "2.0.4",
367 | "source": {
368 | "type": "git",
369 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
370 | "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
371 | },
372 | "dist": {
373 | "type": "zip",
374 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
375 | "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
376 | "shasum": ""
377 | },
378 | "require": {
379 | "php": ">=5.3.3"
380 | },
381 | "require-dev": {
382 | "phpunit/phpunit": "~4.0"
383 | },
384 | "suggest": {
385 | "dflydev/markdown": "~1.0",
386 | "erusev/parsedown": "~1.0"
387 | },
388 | "type": "library",
389 | "extra": {
390 | "branch-alias": {
391 | "dev-master": "2.0.x-dev"
392 | }
393 | },
394 | "autoload": {
395 | "psr-0": {
396 | "phpDocumentor": [
397 | "src/"
398 | ]
399 | }
400 | },
401 | "notification-url": "https://packagist.org/downloads/",
402 | "license": [
403 | "MIT"
404 | ],
405 | "authors": [
406 | {
407 | "name": "Mike van Riel",
408 | "email": "mike.vanriel@naenius.com"
409 | }
410 | ],
411 | "time": "2015-02-03 12:10:50"
412 | },
413 | {
414 | "name": "phpseclib/phpseclib",
415 | "version": "0.3.10",
416 | "source": {
417 | "type": "git",
418 | "url": "https://github.com/phpseclib/phpseclib.git",
419 | "reference": "d15bba1edcc7c89e09cc74c5d961317a8b947bf4"
420 | },
421 | "dist": {
422 | "type": "zip",
423 | "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/d15bba1edcc7c89e09cc74c5d961317a8b947bf4",
424 | "reference": "d15bba1edcc7c89e09cc74c5d961317a8b947bf4",
425 | "shasum": ""
426 | },
427 | "require": {
428 | "php": ">=5.0.0"
429 | },
430 | "require-dev": {
431 | "phing/phing": "~2.7",
432 | "phpunit/phpunit": "~4.0",
433 | "sami/sami": "~2.0",
434 | "squizlabs/php_codesniffer": "~1.5"
435 | },
436 | "suggest": {
437 | "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
438 | "ext-mcrypt": "Install the Mcrypt extension in order to speed up a wide variety of cryptographic operations.",
439 | "pear-pear/PHP_Compat": "Install PHP_Compat to get phpseclib working on PHP < 4.3.3."
440 | },
441 | "type": "library",
442 | "extra": {
443 | "branch-alias": {
444 | "dev-master": "0.3-dev"
445 | }
446 | },
447 | "autoload": {
448 | "psr-0": {
449 | "Crypt": "phpseclib/",
450 | "File": "phpseclib/",
451 | "Math": "phpseclib/",
452 | "Net": "phpseclib/",
453 | "System": "phpseclib/"
454 | },
455 | "files": [
456 | "phpseclib/Crypt/Random.php"
457 | ]
458 | },
459 | "notification-url": "https://packagist.org/downloads/",
460 | "include-path": [
461 | "phpseclib/"
462 | ],
463 | "license": [
464 | "MIT"
465 | ],
466 | "authors": [
467 | {
468 | "name": "Jim Wigginton",
469 | "email": "terrafrost@php.net",
470 | "role": "Lead Developer"
471 | },
472 | {
473 | "name": "Patrick Monnerat",
474 | "email": "pm@datasphere.ch",
475 | "role": "Developer"
476 | },
477 | {
478 | "name": "Andreas Fischer",
479 | "email": "bantu@phpbb.com",
480 | "role": "Developer"
481 | },
482 | {
483 | "name": "Hans-Jürgen Petrich",
484 | "email": "petrich@tronic-media.com",
485 | "role": "Developer"
486 | }
487 | ],
488 | "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.",
489 | "homepage": "http://phpseclib.sourceforge.net",
490 | "keywords": [
491 | "BigInteger",
492 | "aes",
493 | "asn.1",
494 | "asn1",
495 | "blowfish",
496 | "crypto",
497 | "cryptography",
498 | "encryption",
499 | "rsa",
500 | "security",
501 | "sftp",
502 | "signature",
503 | "signing",
504 | "ssh",
505 | "twofish",
506 | "x.509",
507 | "x509"
508 | ],
509 | "time": "2015-01-28 21:50:33"
510 | },
511 | {
512 | "name": "phpspec/prophecy",
513 | "version": "v1.4.1",
514 | "source": {
515 | "type": "git",
516 | "url": "https://github.com/phpspec/prophecy.git",
517 | "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373"
518 | },
519 | "dist": {
520 | "type": "zip",
521 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
522 | "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
523 | "shasum": ""
524 | },
525 | "require": {
526 | "doctrine/instantiator": "^1.0.2",
527 | "phpdocumentor/reflection-docblock": "~2.0",
528 | "sebastian/comparator": "~1.1"
529 | },
530 | "require-dev": {
531 | "phpspec/phpspec": "~2.0"
532 | },
533 | "type": "library",
534 | "extra": {
535 | "branch-alias": {
536 | "dev-master": "1.4.x-dev"
537 | }
538 | },
539 | "autoload": {
540 | "psr-0": {
541 | "Prophecy\\": "src/"
542 | }
543 | },
544 | "notification-url": "https://packagist.org/downloads/",
545 | "license": [
546 | "MIT"
547 | ],
548 | "authors": [
549 | {
550 | "name": "Konstantin Kudryashov",
551 | "email": "ever.zet@gmail.com",
552 | "homepage": "http://everzet.com"
553 | },
554 | {
555 | "name": "Marcello Duarte",
556 | "email": "marcello.duarte@gmail.com"
557 | }
558 | ],
559 | "description": "Highly opinionated mocking framework for PHP 5.3+",
560 | "homepage": "https://github.com/phpspec/prophecy",
561 | "keywords": [
562 | "Double",
563 | "Dummy",
564 | "fake",
565 | "mock",
566 | "spy",
567 | "stub"
568 | ],
569 | "time": "2015-04-27 22:15:08"
570 | },
571 | {
572 | "name": "phpunit/php-code-coverage",
573 | "version": "2.1.3",
574 | "source": {
575 | "type": "git",
576 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
577 | "reference": "28a6b34e91d789b2608072ab3c82eaae7cdb973c"
578 | },
579 | "dist": {
580 | "type": "zip",
581 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/28a6b34e91d789b2608072ab3c82eaae7cdb973c",
582 | "reference": "28a6b34e91d789b2608072ab3c82eaae7cdb973c",
583 | "shasum": ""
584 | },
585 | "require": {
586 | "php": ">=5.3.3",
587 | "phpunit/php-file-iterator": "~1.3",
588 | "phpunit/php-text-template": "~1.2",
589 | "phpunit/php-token-stream": "~1.3",
590 | "sebastian/environment": "~1.0",
591 | "sebastian/version": "~1.0"
592 | },
593 | "require-dev": {
594 | "ext-xdebug": ">=2.1.4",
595 | "phpunit/phpunit": "~4"
596 | },
597 | "suggest": {
598 | "ext-dom": "*",
599 | "ext-xdebug": ">=2.2.1",
600 | "ext-xmlwriter": "*"
601 | },
602 | "type": "library",
603 | "extra": {
604 | "branch-alias": {
605 | "dev-master": "2.1.x-dev"
606 | }
607 | },
608 | "autoload": {
609 | "classmap": [
610 | "src/"
611 | ]
612 | },
613 | "notification-url": "https://packagist.org/downloads/",
614 | "license": [
615 | "BSD-3-Clause"
616 | ],
617 | "authors": [
618 | {
619 | "name": "Sebastian Bergmann",
620 | "email": "sb@sebastian-bergmann.de",
621 | "role": "lead"
622 | }
623 | ],
624 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
625 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
626 | "keywords": [
627 | "coverage",
628 | "testing",
629 | "xunit"
630 | ],
631 | "time": "2015-06-03 07:01:01"
632 | },
633 | {
634 | "name": "phpunit/php-file-iterator",
635 | "version": "1.4.0",
636 | "source": {
637 | "type": "git",
638 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
639 | "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb"
640 | },
641 | "dist": {
642 | "type": "zip",
643 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a923bb15680d0089e2316f7a4af8f437046e96bb",
644 | "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb",
645 | "shasum": ""
646 | },
647 | "require": {
648 | "php": ">=5.3.3"
649 | },
650 | "type": "library",
651 | "extra": {
652 | "branch-alias": {
653 | "dev-master": "1.4.x-dev"
654 | }
655 | },
656 | "autoload": {
657 | "classmap": [
658 | "src/"
659 | ]
660 | },
661 | "notification-url": "https://packagist.org/downloads/",
662 | "license": [
663 | "BSD-3-Clause"
664 | ],
665 | "authors": [
666 | {
667 | "name": "Sebastian Bergmann",
668 | "email": "sb@sebastian-bergmann.de",
669 | "role": "lead"
670 | }
671 | ],
672 | "description": "FilterIterator implementation that filters files based on a list of suffixes.",
673 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
674 | "keywords": [
675 | "filesystem",
676 | "iterator"
677 | ],
678 | "time": "2015-04-02 05:19:05"
679 | },
680 | {
681 | "name": "phpunit/php-text-template",
682 | "version": "1.2.0",
683 | "source": {
684 | "type": "git",
685 | "url": "https://github.com/sebastianbergmann/php-text-template.git",
686 | "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a"
687 | },
688 | "dist": {
689 | "type": "zip",
690 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
691 | "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
692 | "shasum": ""
693 | },
694 | "require": {
695 | "php": ">=5.3.3"
696 | },
697 | "type": "library",
698 | "autoload": {
699 | "classmap": [
700 | "Text/"
701 | ]
702 | },
703 | "notification-url": "https://packagist.org/downloads/",
704 | "include-path": [
705 | ""
706 | ],
707 | "license": [
708 | "BSD-3-Clause"
709 | ],
710 | "authors": [
711 | {
712 | "name": "Sebastian Bergmann",
713 | "email": "sb@sebastian-bergmann.de",
714 | "role": "lead"
715 | }
716 | ],
717 | "description": "Simple template engine.",
718 | "homepage": "https://github.com/sebastianbergmann/php-text-template/",
719 | "keywords": [
720 | "template"
721 | ],
722 | "time": "2014-01-30 17:20:04"
723 | },
724 | {
725 | "name": "phpunit/php-timer",
726 | "version": "1.0.5",
727 | "source": {
728 | "type": "git",
729 | "url": "https://github.com/sebastianbergmann/php-timer.git",
730 | "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c"
731 | },
732 | "dist": {
733 | "type": "zip",
734 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
735 | "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
736 | "shasum": ""
737 | },
738 | "require": {
739 | "php": ">=5.3.3"
740 | },
741 | "type": "library",
742 | "autoload": {
743 | "classmap": [
744 | "PHP/"
745 | ]
746 | },
747 | "notification-url": "https://packagist.org/downloads/",
748 | "include-path": [
749 | ""
750 | ],
751 | "license": [
752 | "BSD-3-Clause"
753 | ],
754 | "authors": [
755 | {
756 | "name": "Sebastian Bergmann",
757 | "email": "sb@sebastian-bergmann.de",
758 | "role": "lead"
759 | }
760 | ],
761 | "description": "Utility class for timing",
762 | "homepage": "https://github.com/sebastianbergmann/php-timer/",
763 | "keywords": [
764 | "timer"
765 | ],
766 | "time": "2013-08-02 07:42:54"
767 | },
768 | {
769 | "name": "phpunit/php-token-stream",
770 | "version": "1.4.1",
771 | "source": {
772 | "type": "git",
773 | "url": "https://github.com/sebastianbergmann/php-token-stream.git",
774 | "reference": "eab81d02569310739373308137284e0158424330"
775 | },
776 | "dist": {
777 | "type": "zip",
778 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/eab81d02569310739373308137284e0158424330",
779 | "reference": "eab81d02569310739373308137284e0158424330",
780 | "shasum": ""
781 | },
782 | "require": {
783 | "ext-tokenizer": "*",
784 | "php": ">=5.3.3"
785 | },
786 | "require-dev": {
787 | "phpunit/phpunit": "~4.2"
788 | },
789 | "type": "library",
790 | "extra": {
791 | "branch-alias": {
792 | "dev-master": "1.4-dev"
793 | }
794 | },
795 | "autoload": {
796 | "classmap": [
797 | "src/"
798 | ]
799 | },
800 | "notification-url": "https://packagist.org/downloads/",
801 | "license": [
802 | "BSD-3-Clause"
803 | ],
804 | "authors": [
805 | {
806 | "name": "Sebastian Bergmann",
807 | "email": "sebastian@phpunit.de"
808 | }
809 | ],
810 | "description": "Wrapper around PHP's tokenizer extension.",
811 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
812 | "keywords": [
813 | "tokenizer"
814 | ],
815 | "time": "2015-04-08 04:46:07"
816 | },
817 | {
818 | "name": "phpunit/phpunit",
819 | "version": "4.6.10",
820 | "source": {
821 | "type": "git",
822 | "url": "https://github.com/sebastianbergmann/phpunit.git",
823 | "reference": "7b5fe98b28302a8b25693b2298bca74463336975"
824 | },
825 | "dist": {
826 | "type": "zip",
827 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7b5fe98b28302a8b25693b2298bca74463336975",
828 | "reference": "7b5fe98b28302a8b25693b2298bca74463336975",
829 | "shasum": ""
830 | },
831 | "require": {
832 | "ext-dom": "*",
833 | "ext-json": "*",
834 | "ext-pcre": "*",
835 | "ext-reflection": "*",
836 | "ext-spl": "*",
837 | "php": ">=5.3.3",
838 | "phpspec/prophecy": "~1.3,>=1.3.1",
839 | "phpunit/php-code-coverage": "~2.0,>=2.0.11",
840 | "phpunit/php-file-iterator": "~1.4",
841 | "phpunit/php-text-template": "~1.2",
842 | "phpunit/php-timer": "~1.0",
843 | "phpunit/phpunit-mock-objects": "~2.3",
844 | "sebastian/comparator": "~1.1",
845 | "sebastian/diff": "~1.2",
846 | "sebastian/environment": "~1.2",
847 | "sebastian/exporter": "~1.2",
848 | "sebastian/global-state": "~1.0",
849 | "sebastian/version": "~1.0",
850 | "symfony/yaml": "~2.1|~3.0"
851 | },
852 | "suggest": {
853 | "phpunit/php-invoker": "~1.1"
854 | },
855 | "bin": [
856 | "phpunit"
857 | ],
858 | "type": "library",
859 | "extra": {
860 | "branch-alias": {
861 | "dev-master": "4.6.x-dev"
862 | }
863 | },
864 | "autoload": {
865 | "classmap": [
866 | "src/"
867 | ]
868 | },
869 | "notification-url": "https://packagist.org/downloads/",
870 | "license": [
871 | "BSD-3-Clause"
872 | ],
873 | "authors": [
874 | {
875 | "name": "Sebastian Bergmann",
876 | "email": "sebastian@phpunit.de",
877 | "role": "lead"
878 | }
879 | ],
880 | "description": "The PHP Unit Testing framework.",
881 | "homepage": "https://phpunit.de/",
882 | "keywords": [
883 | "phpunit",
884 | "testing",
885 | "xunit"
886 | ],
887 | "time": "2015-06-03 05:03:30"
888 | },
889 | {
890 | "name": "phpunit/phpunit-mock-objects",
891 | "version": "2.3.3",
892 | "source": {
893 | "type": "git",
894 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
895 | "reference": "253c005852591fd547fc18cd5b7b43a1ec82d8f7"
896 | },
897 | "dist": {
898 | "type": "zip",
899 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/253c005852591fd547fc18cd5b7b43a1ec82d8f7",
900 | "reference": "253c005852591fd547fc18cd5b7b43a1ec82d8f7",
901 | "shasum": ""
902 | },
903 | "require": {
904 | "doctrine/instantiator": "~1.0,>=1.0.2",
905 | "php": ">=5.3.3",
906 | "phpunit/php-text-template": "~1.2"
907 | },
908 | "require-dev": {
909 | "phpunit/phpunit": "~4.4"
910 | },
911 | "suggest": {
912 | "ext-soap": "*"
913 | },
914 | "type": "library",
915 | "extra": {
916 | "branch-alias": {
917 | "dev-master": "2.3.x-dev"
918 | }
919 | },
920 | "autoload": {
921 | "classmap": [
922 | "src/"
923 | ]
924 | },
925 | "notification-url": "https://packagist.org/downloads/",
926 | "license": [
927 | "BSD-3-Clause"
928 | ],
929 | "authors": [
930 | {
931 | "name": "Sebastian Bergmann",
932 | "email": "sb@sebastian-bergmann.de",
933 | "role": "lead"
934 | }
935 | ],
936 | "description": "Mock Object library for PHPUnit",
937 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
938 | "keywords": [
939 | "mock",
940 | "xunit"
941 | ],
942 | "time": "2015-05-29 05:19:18"
943 | },
944 | {
945 | "name": "psr/log",
946 | "version": "1.0.0",
947 | "source": {
948 | "type": "git",
949 | "url": "https://github.com/php-fig/log.git",
950 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
951 | },
952 | "dist": {
953 | "type": "zip",
954 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
955 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
956 | "shasum": ""
957 | },
958 | "type": "library",
959 | "autoload": {
960 | "psr-0": {
961 | "Psr\\Log\\": ""
962 | }
963 | },
964 | "notification-url": "https://packagist.org/downloads/",
965 | "license": [
966 | "MIT"
967 | ],
968 | "authors": [
969 | {
970 | "name": "PHP-FIG",
971 | "homepage": "http://www.php-fig.org/"
972 | }
973 | ],
974 | "description": "Common interface for logging libraries",
975 | "keywords": [
976 | "log",
977 | "psr",
978 | "psr-3"
979 | ],
980 | "time": "2012-12-21 11:40:51"
981 | },
982 | {
983 | "name": "satooshi/php-coveralls",
984 | "version": "v0.6.1",
985 | "source": {
986 | "type": "git",
987 | "url": "https://github.com/satooshi/php-coveralls.git",
988 | "reference": "dd0df95bd37a7cf5c5c50304dfe260ffe4b50760"
989 | },
990 | "dist": {
991 | "type": "zip",
992 | "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/dd0df95bd37a7cf5c5c50304dfe260ffe4b50760",
993 | "reference": "dd0df95bd37a7cf5c5c50304dfe260ffe4b50760",
994 | "shasum": ""
995 | },
996 | "require": {
997 | "ext-curl": "*",
998 | "ext-json": "*",
999 | "ext-simplexml": "*",
1000 | "guzzle/guzzle": ">=3.0",
1001 | "php": ">=5.3",
1002 | "psr/log": "1.0.0",
1003 | "symfony/config": ">=2.0",
1004 | "symfony/console": ">=2.0",
1005 | "symfony/stopwatch": ">=2.2",
1006 | "symfony/yaml": ">=2.0"
1007 | },
1008 | "require-dev": {
1009 | "apigen/apigen": "2.8.*@stable",
1010 | "pdepend/pdepend": "dev-master",
1011 | "phpmd/phpmd": "dev-master",
1012 | "phpunit/php-invoker": ">=1.1.0,<1.2.0",
1013 | "phpunit/phpunit": "3.7.*@stable",
1014 | "sebastian/finder-facade": "dev-master",
1015 | "sebastian/phpcpd": "1.4.*@stable",
1016 | "squizlabs/php_codesniffer": "1.4.*@stable",
1017 | "theseer/fdomdocument": "dev-master"
1018 | },
1019 | "bin": [
1020 | "composer/bin/coveralls"
1021 | ],
1022 | "type": "library",
1023 | "autoload": {
1024 | "psr-0": {
1025 | "Contrib\\Component": "src/",
1026 | "Contrib\\Bundle": "src/"
1027 | }
1028 | },
1029 | "notification-url": "https://packagist.org/downloads/",
1030 | "license": [
1031 | "MIT"
1032 | ],
1033 | "authors": [
1034 | {
1035 | "name": "Kitamura Satoshi",
1036 | "email": "with.no.parachute@gmail.com",
1037 | "homepage": "https://www.facebook.com/satooshi.jp"
1038 | }
1039 | ],
1040 | "description": "PHP client library for Coveralls API",
1041 | "homepage": "https://github.com/satooshi/php-coveralls",
1042 | "keywords": [
1043 | "ci",
1044 | "coverage",
1045 | "github",
1046 | "test"
1047 | ],
1048 | "time": "2013-05-04 08:07:33"
1049 | },
1050 | {
1051 | "name": "sebastian/comparator",
1052 | "version": "1.1.1",
1053 | "source": {
1054 | "type": "git",
1055 | "url": "https://github.com/sebastianbergmann/comparator.git",
1056 | "reference": "1dd8869519a225f7f2b9eb663e225298fade819e"
1057 | },
1058 | "dist": {
1059 | "type": "zip",
1060 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e",
1061 | "reference": "1dd8869519a225f7f2b9eb663e225298fade819e",
1062 | "shasum": ""
1063 | },
1064 | "require": {
1065 | "php": ">=5.3.3",
1066 | "sebastian/diff": "~1.2",
1067 | "sebastian/exporter": "~1.2"
1068 | },
1069 | "require-dev": {
1070 | "phpunit/phpunit": "~4.4"
1071 | },
1072 | "type": "library",
1073 | "extra": {
1074 | "branch-alias": {
1075 | "dev-master": "1.1.x-dev"
1076 | }
1077 | },
1078 | "autoload": {
1079 | "classmap": [
1080 | "src/"
1081 | ]
1082 | },
1083 | "notification-url": "https://packagist.org/downloads/",
1084 | "license": [
1085 | "BSD-3-Clause"
1086 | ],
1087 | "authors": [
1088 | {
1089 | "name": "Jeff Welch",
1090 | "email": "whatthejeff@gmail.com"
1091 | },
1092 | {
1093 | "name": "Volker Dusch",
1094 | "email": "github@wallbash.com"
1095 | },
1096 | {
1097 | "name": "Bernhard Schussek",
1098 | "email": "bschussek@2bepublished.at"
1099 | },
1100 | {
1101 | "name": "Sebastian Bergmann",
1102 | "email": "sebastian@phpunit.de"
1103 | }
1104 | ],
1105 | "description": "Provides the functionality to compare PHP values for equality",
1106 | "homepage": "http://www.github.com/sebastianbergmann/comparator",
1107 | "keywords": [
1108 | "comparator",
1109 | "compare",
1110 | "equality"
1111 | ],
1112 | "time": "2015-01-29 16:28:08"
1113 | },
1114 | {
1115 | "name": "sebastian/diff",
1116 | "version": "1.3.0",
1117 | "source": {
1118 | "type": "git",
1119 | "url": "https://github.com/sebastianbergmann/diff.git",
1120 | "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
1121 | },
1122 | "dist": {
1123 | "type": "zip",
1124 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
1125 | "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
1126 | "shasum": ""
1127 | },
1128 | "require": {
1129 | "php": ">=5.3.3"
1130 | },
1131 | "require-dev": {
1132 | "phpunit/phpunit": "~4.2"
1133 | },
1134 | "type": "library",
1135 | "extra": {
1136 | "branch-alias": {
1137 | "dev-master": "1.3-dev"
1138 | }
1139 | },
1140 | "autoload": {
1141 | "classmap": [
1142 | "src/"
1143 | ]
1144 | },
1145 | "notification-url": "https://packagist.org/downloads/",
1146 | "license": [
1147 | "BSD-3-Clause"
1148 | ],
1149 | "authors": [
1150 | {
1151 | "name": "Kore Nordmann",
1152 | "email": "mail@kore-nordmann.de"
1153 | },
1154 | {
1155 | "name": "Sebastian Bergmann",
1156 | "email": "sebastian@phpunit.de"
1157 | }
1158 | ],
1159 | "description": "Diff implementation",
1160 | "homepage": "http://www.github.com/sebastianbergmann/diff",
1161 | "keywords": [
1162 | "diff"
1163 | ],
1164 | "time": "2015-02-22 15:13:53"
1165 | },
1166 | {
1167 | "name": "sebastian/environment",
1168 | "version": "1.2.2",
1169 | "source": {
1170 | "type": "git",
1171 | "url": "https://github.com/sebastianbergmann/environment.git",
1172 | "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e"
1173 | },
1174 | "dist": {
1175 | "type": "zip",
1176 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e",
1177 | "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e",
1178 | "shasum": ""
1179 | },
1180 | "require": {
1181 | "php": ">=5.3.3"
1182 | },
1183 | "require-dev": {
1184 | "phpunit/phpunit": "~4.4"
1185 | },
1186 | "type": "library",
1187 | "extra": {
1188 | "branch-alias": {
1189 | "dev-master": "1.3.x-dev"
1190 | }
1191 | },
1192 | "autoload": {
1193 | "classmap": [
1194 | "src/"
1195 | ]
1196 | },
1197 | "notification-url": "https://packagist.org/downloads/",
1198 | "license": [
1199 | "BSD-3-Clause"
1200 | ],
1201 | "authors": [
1202 | {
1203 | "name": "Sebastian Bergmann",
1204 | "email": "sebastian@phpunit.de"
1205 | }
1206 | ],
1207 | "description": "Provides functionality to handle HHVM/PHP environments",
1208 | "homepage": "http://www.github.com/sebastianbergmann/environment",
1209 | "keywords": [
1210 | "Xdebug",
1211 | "environment",
1212 | "hhvm"
1213 | ],
1214 | "time": "2015-01-01 10:01:08"
1215 | },
1216 | {
1217 | "name": "sebastian/exporter",
1218 | "version": "1.2.0",
1219 | "source": {
1220 | "type": "git",
1221 | "url": "https://github.com/sebastianbergmann/exporter.git",
1222 | "reference": "84839970d05254c73cde183a721c7af13aede943"
1223 | },
1224 | "dist": {
1225 | "type": "zip",
1226 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943",
1227 | "reference": "84839970d05254c73cde183a721c7af13aede943",
1228 | "shasum": ""
1229 | },
1230 | "require": {
1231 | "php": ">=5.3.3",
1232 | "sebastian/recursion-context": "~1.0"
1233 | },
1234 | "require-dev": {
1235 | "phpunit/phpunit": "~4.4"
1236 | },
1237 | "type": "library",
1238 | "extra": {
1239 | "branch-alias": {
1240 | "dev-master": "1.2.x-dev"
1241 | }
1242 | },
1243 | "autoload": {
1244 | "classmap": [
1245 | "src/"
1246 | ]
1247 | },
1248 | "notification-url": "https://packagist.org/downloads/",
1249 | "license": [
1250 | "BSD-3-Clause"
1251 | ],
1252 | "authors": [
1253 | {
1254 | "name": "Jeff Welch",
1255 | "email": "whatthejeff@gmail.com"
1256 | },
1257 | {
1258 | "name": "Volker Dusch",
1259 | "email": "github@wallbash.com"
1260 | },
1261 | {
1262 | "name": "Bernhard Schussek",
1263 | "email": "bschussek@2bepublished.at"
1264 | },
1265 | {
1266 | "name": "Sebastian Bergmann",
1267 | "email": "sebastian@phpunit.de"
1268 | },
1269 | {
1270 | "name": "Adam Harvey",
1271 | "email": "aharvey@php.net"
1272 | }
1273 | ],
1274 | "description": "Provides the functionality to export PHP variables for visualization",
1275 | "homepage": "http://www.github.com/sebastianbergmann/exporter",
1276 | "keywords": [
1277 | "export",
1278 | "exporter"
1279 | ],
1280 | "time": "2015-01-27 07:23:06"
1281 | },
1282 | {
1283 | "name": "sebastian/global-state",
1284 | "version": "1.0.0",
1285 | "source": {
1286 | "type": "git",
1287 | "url": "https://github.com/sebastianbergmann/global-state.git",
1288 | "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01"
1289 | },
1290 | "dist": {
1291 | "type": "zip",
1292 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
1293 | "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
1294 | "shasum": ""
1295 | },
1296 | "require": {
1297 | "php": ">=5.3.3"
1298 | },
1299 | "require-dev": {
1300 | "phpunit/phpunit": "~4.2"
1301 | },
1302 | "suggest": {
1303 | "ext-uopz": "*"
1304 | },
1305 | "type": "library",
1306 | "extra": {
1307 | "branch-alias": {
1308 | "dev-master": "1.0-dev"
1309 | }
1310 | },
1311 | "autoload": {
1312 | "classmap": [
1313 | "src/"
1314 | ]
1315 | },
1316 | "notification-url": "https://packagist.org/downloads/",
1317 | "license": [
1318 | "BSD-3-Clause"
1319 | ],
1320 | "authors": [
1321 | {
1322 | "name": "Sebastian Bergmann",
1323 | "email": "sebastian@phpunit.de"
1324 | }
1325 | ],
1326 | "description": "Snapshotting of global state",
1327 | "homepage": "http://www.github.com/sebastianbergmann/global-state",
1328 | "keywords": [
1329 | "global state"
1330 | ],
1331 | "time": "2014-10-06 09:23:50"
1332 | },
1333 | {
1334 | "name": "sebastian/recursion-context",
1335 | "version": "1.0.0",
1336 | "source": {
1337 | "type": "git",
1338 | "url": "https://github.com/sebastianbergmann/recursion-context.git",
1339 | "reference": "3989662bbb30a29d20d9faa04a846af79b276252"
1340 | },
1341 | "dist": {
1342 | "type": "zip",
1343 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252",
1344 | "reference": "3989662bbb30a29d20d9faa04a846af79b276252",
1345 | "shasum": ""
1346 | },
1347 | "require": {
1348 | "php": ">=5.3.3"
1349 | },
1350 | "require-dev": {
1351 | "phpunit/phpunit": "~4.4"
1352 | },
1353 | "type": "library",
1354 | "extra": {
1355 | "branch-alias": {
1356 | "dev-master": "1.0.x-dev"
1357 | }
1358 | },
1359 | "autoload": {
1360 | "classmap": [
1361 | "src/"
1362 | ]
1363 | },
1364 | "notification-url": "https://packagist.org/downloads/",
1365 | "license": [
1366 | "BSD-3-Clause"
1367 | ],
1368 | "authors": [
1369 | {
1370 | "name": "Jeff Welch",
1371 | "email": "whatthejeff@gmail.com"
1372 | },
1373 | {
1374 | "name": "Sebastian Bergmann",
1375 | "email": "sebastian@phpunit.de"
1376 | },
1377 | {
1378 | "name": "Adam Harvey",
1379 | "email": "aharvey@php.net"
1380 | }
1381 | ],
1382 | "description": "Provides functionality to recursively process PHP variables",
1383 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1384 | "time": "2015-01-24 09:48:32"
1385 | },
1386 | {
1387 | "name": "sebastian/version",
1388 | "version": "1.0.5",
1389 | "source": {
1390 | "type": "git",
1391 | "url": "https://github.com/sebastianbergmann/version.git",
1392 | "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4"
1393 | },
1394 | "dist": {
1395 | "type": "zip",
1396 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
1397 | "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
1398 | "shasum": ""
1399 | },
1400 | "type": "library",
1401 | "autoload": {
1402 | "classmap": [
1403 | "src/"
1404 | ]
1405 | },
1406 | "notification-url": "https://packagist.org/downloads/",
1407 | "license": [
1408 | "BSD-3-Clause"
1409 | ],
1410 | "authors": [
1411 | {
1412 | "name": "Sebastian Bergmann",
1413 | "email": "sebastian@phpunit.de",
1414 | "role": "lead"
1415 | }
1416 | ],
1417 | "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1418 | "homepage": "https://github.com/sebastianbergmann/version",
1419 | "time": "2015-02-24 06:35:25"
1420 | },
1421 | {
1422 | "name": "squizlabs/php_codesniffer",
1423 | "version": "2.3.2",
1424 | "source": {
1425 | "type": "git",
1426 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
1427 | "reference": "e96d8579fbed0c95ecf2a0501ec4f307a4aa6404"
1428 | },
1429 | "dist": {
1430 | "type": "zip",
1431 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e96d8579fbed0c95ecf2a0501ec4f307a4aa6404",
1432 | "reference": "e96d8579fbed0c95ecf2a0501ec4f307a4aa6404",
1433 | "shasum": ""
1434 | },
1435 | "require": {
1436 | "ext-tokenizer": "*",
1437 | "ext-xmlwriter": "*",
1438 | "php": ">=5.1.2"
1439 | },
1440 | "bin": [
1441 | "scripts/phpcs",
1442 | "scripts/phpcbf"
1443 | ],
1444 | "type": "library",
1445 | "extra": {
1446 | "branch-alias": {
1447 | "dev-master": "2.0.x-dev"
1448 | }
1449 | },
1450 | "autoload": {
1451 | "classmap": [
1452 | "CodeSniffer.php",
1453 | "CodeSniffer/CLI.php",
1454 | "CodeSniffer/Exception.php",
1455 | "CodeSniffer/File.php",
1456 | "CodeSniffer/Fixer.php",
1457 | "CodeSniffer/Report.php",
1458 | "CodeSniffer/Reporting.php",
1459 | "CodeSniffer/Sniff.php",
1460 | "CodeSniffer/Tokens.php",
1461 | "CodeSniffer/Reports/",
1462 | "CodeSniffer/Tokenizers/",
1463 | "CodeSniffer/DocGenerators/",
1464 | "CodeSniffer/Standards/AbstractPatternSniff.php",
1465 | "CodeSniffer/Standards/AbstractScopeSniff.php",
1466 | "CodeSniffer/Standards/AbstractVariableSniff.php",
1467 | "CodeSniffer/Standards/IncorrectPatternException.php",
1468 | "CodeSniffer/Standards/Generic/Sniffs/",
1469 | "CodeSniffer/Standards/MySource/Sniffs/",
1470 | "CodeSniffer/Standards/PEAR/Sniffs/",
1471 | "CodeSniffer/Standards/PSR1/Sniffs/",
1472 | "CodeSniffer/Standards/PSR2/Sniffs/",
1473 | "CodeSniffer/Standards/Squiz/Sniffs/",
1474 | "CodeSniffer/Standards/Zend/Sniffs/"
1475 | ]
1476 | },
1477 | "notification-url": "https://packagist.org/downloads/",
1478 | "license": [
1479 | "BSD-3-Clause"
1480 | ],
1481 | "authors": [
1482 | {
1483 | "name": "Greg Sherwood",
1484 | "role": "lead"
1485 | }
1486 | ],
1487 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
1488 | "homepage": "http://www.squizlabs.com/php-codesniffer",
1489 | "keywords": [
1490 | "phpcs",
1491 | "standards"
1492 | ],
1493 | "time": "2015-04-28 23:28:20"
1494 | },
1495 | {
1496 | "name": "symfony/config",
1497 | "version": "v2.7.0",
1498 | "source": {
1499 | "type": "git",
1500 | "url": "https://github.com/symfony/Config.git",
1501 | "reference": "537e9912063e66aa70cbcddd7d6e6e8db61d98e4"
1502 | },
1503 | "dist": {
1504 | "type": "zip",
1505 | "url": "https://api.github.com/repos/symfony/Config/zipball/537e9912063e66aa70cbcddd7d6e6e8db61d98e4",
1506 | "reference": "537e9912063e66aa70cbcddd7d6e6e8db61d98e4",
1507 | "shasum": ""
1508 | },
1509 | "require": {
1510 | "php": ">=5.3.9",
1511 | "symfony/filesystem": "~2.3"
1512 | },
1513 | "require-dev": {
1514 | "symfony/phpunit-bridge": "~2.7"
1515 | },
1516 | "type": "library",
1517 | "extra": {
1518 | "branch-alias": {
1519 | "dev-master": "2.7-dev"
1520 | }
1521 | },
1522 | "autoload": {
1523 | "psr-4": {
1524 | "Symfony\\Component\\Config\\": ""
1525 | }
1526 | },
1527 | "notification-url": "https://packagist.org/downloads/",
1528 | "license": [
1529 | "MIT"
1530 | ],
1531 | "authors": [
1532 | {
1533 | "name": "Fabien Potencier",
1534 | "email": "fabien@symfony.com"
1535 | },
1536 | {
1537 | "name": "Symfony Community",
1538 | "homepage": "https://symfony.com/contributors"
1539 | }
1540 | ],
1541 | "description": "Symfony Config Component",
1542 | "homepage": "https://symfony.com",
1543 | "time": "2015-05-15 13:33:16"
1544 | },
1545 | {
1546 | "name": "symfony/console",
1547 | "version": "v2.7.0",
1548 | "source": {
1549 | "type": "git",
1550 | "url": "https://github.com/symfony/Console.git",
1551 | "reference": "7f0bec04961c61c961df0cb8c2ae88dbfd83f399"
1552 | },
1553 | "dist": {
1554 | "type": "zip",
1555 | "url": "https://api.github.com/repos/symfony/Console/zipball/7f0bec04961c61c961df0cb8c2ae88dbfd83f399",
1556 | "reference": "7f0bec04961c61c961df0cb8c2ae88dbfd83f399",
1557 | "shasum": ""
1558 | },
1559 | "require": {
1560 | "php": ">=5.3.9"
1561 | },
1562 | "require-dev": {
1563 | "psr/log": "~1.0",
1564 | "symfony/event-dispatcher": "~2.1",
1565 | "symfony/phpunit-bridge": "~2.7",
1566 | "symfony/process": "~2.1"
1567 | },
1568 | "suggest": {
1569 | "psr/log": "For using the console logger",
1570 | "symfony/event-dispatcher": "",
1571 | "symfony/process": ""
1572 | },
1573 | "type": "library",
1574 | "extra": {
1575 | "branch-alias": {
1576 | "dev-master": "2.7-dev"
1577 | }
1578 | },
1579 | "autoload": {
1580 | "psr-4": {
1581 | "Symfony\\Component\\Console\\": ""
1582 | }
1583 | },
1584 | "notification-url": "https://packagist.org/downloads/",
1585 | "license": [
1586 | "MIT"
1587 | ],
1588 | "authors": [
1589 | {
1590 | "name": "Fabien Potencier",
1591 | "email": "fabien@symfony.com"
1592 | },
1593 | {
1594 | "name": "Symfony Community",
1595 | "homepage": "https://symfony.com/contributors"
1596 | }
1597 | ],
1598 | "description": "Symfony Console Component",
1599 | "homepage": "https://symfony.com",
1600 | "time": "2015-05-29 16:22:24"
1601 | },
1602 | {
1603 | "name": "symfony/event-dispatcher",
1604 | "version": "v2.7.0",
1605 | "source": {
1606 | "type": "git",
1607 | "url": "https://github.com/symfony/EventDispatcher.git",
1608 | "reference": "687039686d0e923429ba6e958d0baa920cd5d458"
1609 | },
1610 | "dist": {
1611 | "type": "zip",
1612 | "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/687039686d0e923429ba6e958d0baa920cd5d458",
1613 | "reference": "687039686d0e923429ba6e958d0baa920cd5d458",
1614 | "shasum": ""
1615 | },
1616 | "require": {
1617 | "php": ">=5.3.9"
1618 | },
1619 | "require-dev": {
1620 | "psr/log": "~1.0",
1621 | "symfony/config": "~2.0,>=2.0.5",
1622 | "symfony/dependency-injection": "~2.6",
1623 | "symfony/expression-language": "~2.6",
1624 | "symfony/phpunit-bridge": "~2.7",
1625 | "symfony/stopwatch": "~2.3"
1626 | },
1627 | "suggest": {
1628 | "symfony/dependency-injection": "",
1629 | "symfony/http-kernel": ""
1630 | },
1631 | "type": "library",
1632 | "extra": {
1633 | "branch-alias": {
1634 | "dev-master": "2.7-dev"
1635 | }
1636 | },
1637 | "autoload": {
1638 | "psr-4": {
1639 | "Symfony\\Component\\EventDispatcher\\": ""
1640 | }
1641 | },
1642 | "notification-url": "https://packagist.org/downloads/",
1643 | "license": [
1644 | "MIT"
1645 | ],
1646 | "authors": [
1647 | {
1648 | "name": "Fabien Potencier",
1649 | "email": "fabien@symfony.com"
1650 | },
1651 | {
1652 | "name": "Symfony Community",
1653 | "homepage": "https://symfony.com/contributors"
1654 | }
1655 | ],
1656 | "description": "Symfony EventDispatcher Component",
1657 | "homepage": "https://symfony.com",
1658 | "time": "2015-05-02 15:21:08"
1659 | },
1660 | {
1661 | "name": "symfony/filesystem",
1662 | "version": "v2.7.0",
1663 | "source": {
1664 | "type": "git",
1665 | "url": "https://github.com/symfony/Filesystem.git",
1666 | "reference": "ae4551fd6d4d4f51f2e7390fbc902fbd67f3b7ba"
1667 | },
1668 | "dist": {
1669 | "type": "zip",
1670 | "url": "https://api.github.com/repos/symfony/Filesystem/zipball/ae4551fd6d4d4f51f2e7390fbc902fbd67f3b7ba",
1671 | "reference": "ae4551fd6d4d4f51f2e7390fbc902fbd67f3b7ba",
1672 | "shasum": ""
1673 | },
1674 | "require": {
1675 | "php": ">=5.3.9"
1676 | },
1677 | "require-dev": {
1678 | "symfony/phpunit-bridge": "~2.7"
1679 | },
1680 | "type": "library",
1681 | "extra": {
1682 | "branch-alias": {
1683 | "dev-master": "2.7-dev"
1684 | }
1685 | },
1686 | "autoload": {
1687 | "psr-4": {
1688 | "Symfony\\Component\\Filesystem\\": ""
1689 | }
1690 | },
1691 | "notification-url": "https://packagist.org/downloads/",
1692 | "license": [
1693 | "MIT"
1694 | ],
1695 | "authors": [
1696 | {
1697 | "name": "Fabien Potencier",
1698 | "email": "fabien@symfony.com"
1699 | },
1700 | {
1701 | "name": "Symfony Community",
1702 | "homepage": "https://symfony.com/contributors"
1703 | }
1704 | ],
1705 | "description": "Symfony Filesystem Component",
1706 | "homepage": "https://symfony.com",
1707 | "time": "2015-05-15 13:33:16"
1708 | },
1709 | {
1710 | "name": "symfony/stopwatch",
1711 | "version": "v2.7.0",
1712 | "source": {
1713 | "type": "git",
1714 | "url": "https://github.com/symfony/Stopwatch.git",
1715 | "reference": "7702945bceddc0e1f744519abb8a2baeb94bd5ce"
1716 | },
1717 | "dist": {
1718 | "type": "zip",
1719 | "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/7702945bceddc0e1f744519abb8a2baeb94bd5ce",
1720 | "reference": "7702945bceddc0e1f744519abb8a2baeb94bd5ce",
1721 | "shasum": ""
1722 | },
1723 | "require": {
1724 | "php": ">=5.3.9"
1725 | },
1726 | "require-dev": {
1727 | "symfony/phpunit-bridge": "~2.7"
1728 | },
1729 | "type": "library",
1730 | "extra": {
1731 | "branch-alias": {
1732 | "dev-master": "2.7-dev"
1733 | }
1734 | },
1735 | "autoload": {
1736 | "psr-4": {
1737 | "Symfony\\Component\\Stopwatch\\": ""
1738 | }
1739 | },
1740 | "notification-url": "https://packagist.org/downloads/",
1741 | "license": [
1742 | "MIT"
1743 | ],
1744 | "authors": [
1745 | {
1746 | "name": "Fabien Potencier",
1747 | "email": "fabien@symfony.com"
1748 | },
1749 | {
1750 | "name": "Symfony Community",
1751 | "homepage": "https://symfony.com/contributors"
1752 | }
1753 | ],
1754 | "description": "Symfony Stopwatch Component",
1755 | "homepage": "https://symfony.com",
1756 | "time": "2015-05-02 15:21:08"
1757 | },
1758 | {
1759 | "name": "symfony/yaml",
1760 | "version": "v2.7.0",
1761 | "source": {
1762 | "type": "git",
1763 | "url": "https://github.com/symfony/Yaml.git",
1764 | "reference": "4a29a5248aed4fb45f626a7bbbd330291492f5c3"
1765 | },
1766 | "dist": {
1767 | "type": "zip",
1768 | "url": "https://api.github.com/repos/symfony/Yaml/zipball/4a29a5248aed4fb45f626a7bbbd330291492f5c3",
1769 | "reference": "4a29a5248aed4fb45f626a7bbbd330291492f5c3",
1770 | "shasum": ""
1771 | },
1772 | "require": {
1773 | "php": ">=5.3.9"
1774 | },
1775 | "require-dev": {
1776 | "symfony/phpunit-bridge": "~2.7"
1777 | },
1778 | "type": "library",
1779 | "extra": {
1780 | "branch-alias": {
1781 | "dev-master": "2.7-dev"
1782 | }
1783 | },
1784 | "autoload": {
1785 | "psr-4": {
1786 | "Symfony\\Component\\Yaml\\": ""
1787 | }
1788 | },
1789 | "notification-url": "https://packagist.org/downloads/",
1790 | "license": [
1791 | "MIT"
1792 | ],
1793 | "authors": [
1794 | {
1795 | "name": "Fabien Potencier",
1796 | "email": "fabien@symfony.com"
1797 | },
1798 | {
1799 | "name": "Symfony Community",
1800 | "homepage": "https://symfony.com/contributors"
1801 | }
1802 | ],
1803 | "description": "Symfony Yaml Component",
1804 | "homepage": "https://symfony.com",
1805 | "time": "2015-05-02 15:21:08"
1806 | },
1807 | {
1808 | "name": "zendframework/zend-crypt",
1809 | "version": "2.5.1",
1810 | "source": {
1811 | "type": "git",
1812 | "url": "https://github.com/zendframework/zend-crypt.git",
1813 | "reference": "15537e8e438a98923f05c40c45c162342ea8235a"
1814 | },
1815 | "dist": {
1816 | "type": "zip",
1817 | "url": "https://api.github.com/repos/zendframework/zend-crypt/zipball/15537e8e438a98923f05c40c45c162342ea8235a",
1818 | "reference": "15537e8e438a98923f05c40c45c162342ea8235a",
1819 | "shasum": ""
1820 | },
1821 | "require": {
1822 | "php": ">=5.3.23",
1823 | "zendframework/zend-math": "~2.5",
1824 | "zendframework/zend-servicemanager": "~2.5",
1825 | "zendframework/zend-stdlib": "~2.5"
1826 | },
1827 | "require-dev": {
1828 | "fabpot/php-cs-fixer": "1.7.*",
1829 | "phpunit/phpunit": "~4.0",
1830 | "zendframework/zend-config": "~2.5"
1831 | },
1832 | "suggest": {
1833 | "ext-mcrypt": "Required for most features of Zend\\Crypt"
1834 | },
1835 | "type": "library",
1836 | "extra": {
1837 | "branch-alias": {
1838 | "dev-master": "2.5-dev",
1839 | "dev-develop": "2.6-dev"
1840 | }
1841 | },
1842 | "autoload": {
1843 | "psr-4": {
1844 | "Zend\\Crypt\\": "src/"
1845 | }
1846 | },
1847 | "notification-url": "https://packagist.org/downloads/",
1848 | "license": [
1849 | "BSD-3-Clause"
1850 | ],
1851 | "homepage": "https://github.com/zendframework/zend-crypt",
1852 | "keywords": [
1853 | "crypt",
1854 | "zf2"
1855 | ],
1856 | "time": "2015-06-03 15:32:00"
1857 | },
1858 | {
1859 | "name": "zendframework/zend-filter",
1860 | "version": "2.5.1",
1861 | "source": {
1862 | "type": "git",
1863 | "url": "https://github.com/zendframework/zend-filter.git",
1864 | "reference": "93e6990a198e6cdd811064083acac4693f4b29ae"
1865 | },
1866 | "dist": {
1867 | "type": "zip",
1868 | "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/93e6990a198e6cdd811064083acac4693f4b29ae",
1869 | "reference": "93e6990a198e6cdd811064083acac4693f4b29ae",
1870 | "shasum": ""
1871 | },
1872 | "require": {
1873 | "php": ">=5.3.23",
1874 | "zendframework/zend-stdlib": "~2.5"
1875 | },
1876 | "require-dev": {
1877 | "fabpot/php-cs-fixer": "1.7.*",
1878 | "phpunit/phpunit": "~4.0",
1879 | "zendframework/zend-config": "~2.5",
1880 | "zendframework/zend-crypt": "~2.5",
1881 | "zendframework/zend-i18n": "~2.5",
1882 | "zendframework/zend-loader": "~2.5",
1883 | "zendframework/zend-servicemanager": "~2.5",
1884 | "zendframework/zend-uri": "~2.5"
1885 | },
1886 | "suggest": {
1887 | "zendframework/zend-crypt": "Zend\\Crypt component",
1888 | "zendframework/zend-i18n": "Zend\\I18n component",
1889 | "zendframework/zend-servicemanager": "Zend\\ServiceManager component",
1890 | "zendframework/zend-uri": "Zend\\Uri component for UriNormalize filter"
1891 | },
1892 | "type": "library",
1893 | "extra": {
1894 | "branch-alias": {
1895 | "dev-master": "2.5-dev",
1896 | "dev-develop": "2.6-dev"
1897 | }
1898 | },
1899 | "autoload": {
1900 | "psr-4": {
1901 | "Zend\\Filter\\": "src/"
1902 | }
1903 | },
1904 | "notification-url": "https://packagist.org/downloads/",
1905 | "license": [
1906 | "BSD-3-Clause"
1907 | ],
1908 | "description": "provides a set of commonly needed data filters",
1909 | "homepage": "https://github.com/zendframework/zend-filter",
1910 | "keywords": [
1911 | "filter",
1912 | "zf2"
1913 | ],
1914 | "time": "2015-06-03 15:32:01"
1915 | },
1916 | {
1917 | "name": "zendframework/zend-math",
1918 | "version": "2.5.1",
1919 | "source": {
1920 | "type": "git",
1921 | "url": "https://github.com/zendframework/zend-math.git",
1922 | "reference": "9f02a1ac4d3374d3332c80f9215deec9c71558fc"
1923 | },
1924 | "dist": {
1925 | "type": "zip",
1926 | "url": "https://api.github.com/repos/zendframework/zend-math/zipball/9f02a1ac4d3374d3332c80f9215deec9c71558fc",
1927 | "reference": "9f02a1ac4d3374d3332c80f9215deec9c71558fc",
1928 | "shasum": ""
1929 | },
1930 | "require": {
1931 | "php": ">=5.3.23"
1932 | },
1933 | "require-dev": {
1934 | "fabpot/php-cs-fixer": "1.7.*",
1935 | "ircmaxell/random-lib": "~1.1",
1936 | "phpunit/phpunit": "~4.0",
1937 | "zendframework/zend-servicemanager": "~2.5"
1938 | },
1939 | "suggest": {
1940 | "ext-bcmath": "If using the bcmath functionality",
1941 | "ext-gmp": "If using the gmp functionality",
1942 | "ircmaxell/random-lib": "Fallback random byte generator for Zend\\Math\\Rand if OpenSSL/Mcrypt extensions are unavailable",
1943 | "zendframework/zend-servicemanager": ">= current version, if using the BigInteger::factory functionality"
1944 | },
1945 | "type": "library",
1946 | "extra": {
1947 | "branch-alias": {
1948 | "dev-master": "2.5-dev",
1949 | "dev-develop": "2.6-dev"
1950 | }
1951 | },
1952 | "autoload": {
1953 | "psr-4": {
1954 | "Zend\\Math\\": "src/"
1955 | }
1956 | },
1957 | "notification-url": "https://packagist.org/downloads/",
1958 | "license": [
1959 | "BSD-3-Clause"
1960 | ],
1961 | "homepage": "https://github.com/zendframework/zend-math",
1962 | "keywords": [
1963 | "math",
1964 | "zf2"
1965 | ],
1966 | "time": "2015-06-03 15:32:02"
1967 | },
1968 | {
1969 | "name": "zendframework/zend-servicemanager",
1970 | "version": "2.5.1",
1971 | "source": {
1972 | "type": "git",
1973 | "url": "https://github.com/zendframework/zend-servicemanager.git",
1974 | "reference": "3b22c403e351d92526c642cba0bd810bc22e1c56"
1975 | },
1976 | "dist": {
1977 | "type": "zip",
1978 | "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/3b22c403e351d92526c642cba0bd810bc22e1c56",
1979 | "reference": "3b22c403e351d92526c642cba0bd810bc22e1c56",
1980 | "shasum": ""
1981 | },
1982 | "require": {
1983 | "php": ">=5.3.23"
1984 | },
1985 | "require-dev": {
1986 | "fabpot/php-cs-fixer": "1.7.*",
1987 | "phpunit/phpunit": "~4.0",
1988 | "zendframework/zend-di": "~2.5",
1989 | "zendframework/zend-mvc": "~2.5"
1990 | },
1991 | "suggest": {
1992 | "ocramius/proxy-manager": "ProxyManager 0.5.* to handle lazy initialization of services",
1993 | "zendframework/zend-di": "Zend\\Di component"
1994 | },
1995 | "type": "library",
1996 | "extra": {
1997 | "branch-alias": {
1998 | "dev-master": "2.5-dev",
1999 | "dev-develop": "2.6-dev"
2000 | }
2001 | },
2002 | "autoload": {
2003 | "psr-4": {
2004 | "Zend\\ServiceManager\\": "src/"
2005 | }
2006 | },
2007 | "notification-url": "https://packagist.org/downloads/",
2008 | "license": [
2009 | "BSD-3-Clause"
2010 | ],
2011 | "homepage": "https://github.com/zendframework/zend-servicemanager",
2012 | "keywords": [
2013 | "servicemanager",
2014 | "zf2"
2015 | ],
2016 | "time": "2015-06-03 15:32:02"
2017 | },
2018 | {
2019 | "name": "zendframework/zend-stdlib",
2020 | "version": "2.5.1",
2021 | "source": {
2022 | "type": "git",
2023 | "url": "https://github.com/zendframework/zend-stdlib.git",
2024 | "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae"
2025 | },
2026 | "dist": {
2027 | "type": "zip",
2028 | "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cc8e90a60dd5d44b9730b77d07b97550091da1ae",
2029 | "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae",
2030 | "shasum": ""
2031 | },
2032 | "require": {
2033 | "php": ">=5.3.23"
2034 | },
2035 | "require-dev": {
2036 | "fabpot/php-cs-fixer": "1.7.*",
2037 | "phpunit/phpunit": "~4.0",
2038 | "zendframework/zend-config": "~2.5",
2039 | "zendframework/zend-eventmanager": "~2.5",
2040 | "zendframework/zend-filter": "~2.5",
2041 | "zendframework/zend-inputfilter": "~2.5",
2042 | "zendframework/zend-serializer": "~2.5",
2043 | "zendframework/zend-servicemanager": "~2.5"
2044 | },
2045 | "suggest": {
2046 | "zendframework/zend-eventmanager": "To support aggregate hydrator usage",
2047 | "zendframework/zend-filter": "To support naming strategy hydrator usage",
2048 | "zendframework/zend-serializer": "Zend\\Serializer component",
2049 | "zendframework/zend-servicemanager": "To support hydrator plugin manager usage"
2050 | },
2051 | "type": "library",
2052 | "extra": {
2053 | "branch-alias": {
2054 | "dev-master": "2.5-dev",
2055 | "dev-develop": "2.6-dev"
2056 | }
2057 | },
2058 | "autoload": {
2059 | "psr-4": {
2060 | "Zend\\Stdlib\\": "src/"
2061 | }
2062 | },
2063 | "notification-url": "https://packagist.org/downloads/",
2064 | "license": [
2065 | "BSD-3-Clause"
2066 | ],
2067 | "homepage": "https://github.com/zendframework/zend-stdlib",
2068 | "keywords": [
2069 | "stdlib",
2070 | "zf2"
2071 | ],
2072 | "time": "2015-06-03 15:32:03"
2073 | }
2074 | ],
2075 | "aliases": [],
2076 | "minimum-stability": "stable",
2077 | "stability-flags": {
2078 | "codeclimate/php-test-reporter": 20
2079 | },
2080 | "prefer-stable": false,
2081 | "prefer-lowest": false,
2082 | "platform": [],
2083 | "platform-dev": []
2084 | }
2085 |
--------------------------------------------------------------------------------