├── .gitignore
├── tests
├── img
│ └── ankit_sample.png
├── config
│ ├── .env
│ └── app.php
├── TestCase.php
├── ImageHelperTest.php
├── DataProvider.php
└── ImageUploadServiceTest.php
├── .scrutinizer.yml
├── src
├── LaravelImage
│ ├── routes.php
│ ├── LaravelImageFacade.php
│ ├── ImageHelper.php
│ ├── ImageUploadServiceProvider.php
│ └── ImageUploadService.php
└── config
│ └── config.php
├── composer.json
├── .travis.yml
├── phpunit.xml
├── LICENSE
├── README.md
└── composer.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | vendor/
2 | node_modules/
3 | .idea
4 | .DS_Store
5 |
--------------------------------------------------------------------------------
/tests/img/ankit_sample.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ankitpokhrel/laravel-image/HEAD/tests/img/ankit_sample.png
--------------------------------------------------------------------------------
/tests/config/.env:
--------------------------------------------------------------------------------
1 | APP_ENV=testing
2 | APP_DEBUG=true
3 | APP_KEY=2YQze880SprrSOcuL46WxbkJcF01z6yX
4 |
5 | CACHE_DRIVER=array
6 | SESSION_DRIVER=array
7 |
--------------------------------------------------------------------------------
/.scrutinizer.yml:
--------------------------------------------------------------------------------
1 | # .scrutinizer.yml
2 | filter:
3 | excluded_paths:
4 | - tests/*
5 |
6 | checks:
7 | php:
8 | code_rating: true
9 |
10 | tools:
11 | external_code_coverage:
12 | timeout: 1800
13 | runs: 3
14 | php_code_coverage: false
15 |
--------------------------------------------------------------------------------
/src/LaravelImage/routes.php:
--------------------------------------------------------------------------------
1 | getImageResponse($request->getPathInfo(), $request->query());
6 | })->where('path', '.*');
7 |
--------------------------------------------------------------------------------
/src/LaravelImage/LaravelImageFacade.php:
--------------------------------------------------------------------------------
1 | testImage)) {
18 | copy($this->sample, $this->testImage);
19 | }
20 | }
21 |
22 | public function tearDown()
23 | {
24 | parent::tearDown();
25 |
26 | if (file_exists($this->testImage)) {
27 | unlink($this->testImage);
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ankitpokhrel/laravel-image",
3 | "description": "Easy image upload and thumbnail management",
4 | "license": "MIT",
5 | "authors": [
6 | {
7 | "name": "Ankit Pokhrel",
8 | "email": "ankitpokhrel@gmail.com"
9 | }
10 | ],
11 | "require": {
12 | "php": ">=5.6.4",
13 | "laravel/framework": "5.3.*",
14 | "league/glide-laravel": "^1.0"
15 | },
16 | "require-dev": {
17 | "mockery/mockery": "dev-master",
18 | "squizlabs/php_codesniffer": "2.*",
19 | "orchestra/testbench": "~3.3",
20 | "phpunit/phpunit": "~5.0"
21 | },
22 | "autoload": {
23 | "psr-4": {
24 | "AnkitPokhrel\\LaravelImage\\": "src/LaravelImage"
25 | }
26 | },
27 | "autoload-dev": {
28 | "psr-4": {
29 | "AnkitPokhrel\\LaravelImage\\Tests\\": "tests"
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/tests/ImageHelperTest.php:
--------------------------------------------------------------------------------
1 | helper = new ImageHelper();
19 | }
20 |
21 | /**
22 | * @test
23 | *
24 | * @covers ::image
25 | * @dataProvider AnkitPokhrel\LaravelImage\Tests\DataProvider::imageOptions
26 | */
27 | public function it_generates_valid_image_tag($uploadDir, $image, $width, $height, $options, $attributes, $output)
28 | {
29 | $this->assertEquals($output, $this->helper->image($uploadDir, $image, $width, $height, $options, $attributes));
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: php
2 |
3 | php:
4 | - '5.6'
5 | - '7.0'
6 | - hhvm
7 |
8 | before_install:
9 | - composer self-update
10 | - composer create-project laravel/laravel
11 | - cd ./laravel
12 | - composer config repositories.ankitpokhrel vcs https://github.com/ankitpokhrel/laravel-image.git
13 | - composer require ankitpokhrel/laravel-image dev-master
14 | - composer update
15 | - cp ./vendor/ankitpokhrel/laravel-image/tests/config/.env ./
16 | - rm ./config/app.php
17 | - cp ./vendor/ankitpokhrel/laravel-image/tests/config/app.php ./config
18 | - php artisan vendor:publish
19 | - cd ./vendor/ankitpokhrel/laravel-image
20 | - composer install
21 |
22 | script: phpunit --coverage-clover=coverage.clover
23 |
24 | after_script:
25 | - if ([ "hhvm" != "$TRAVIS_PHP_VERSION" ] && [ "7.0" != "$TRAVIS_PHP_VERSION" ]); then wget https://scrutinizer-ci.com/ocular.phar; fi;
26 | - if ([ "hhvm" != "$TRAVIS_PHP_VERSION" ] && [ "7.0" != "$TRAVIS_PHP_VERSION" ]); then php ocular.phar code-coverage:upload --format=php-clover coverage.xml; fi;
27 |
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 | ./tests/
15 |
16 |
17 |
18 |
19 | ./src
20 |
21 | ./src/config/config.php
22 | ./src/LaravelImage/routes.php
23 | ./src/LaravelImage/ImageUploadServiceProvider.php
24 | ./src/LaravelImage/LaravelImageFacade.php
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Ankit Pokhrel
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/LaravelImage/ImageHelper.php:
--------------------------------------------------------------------------------
1 | null,
10 | 'class' => null,
11 | ];
12 |
13 | protected $options = [
14 | 'fit' => 'crop-center',
15 | ];
16 |
17 | /**
18 | * @param $dir string Directory to search
19 | * @param string $image Image name
20 | * @param null $width
21 | * @param null $height
22 | * @param array $options
23 | *
24 | * @return string
25 | */
26 | public function image($dir, $image, $width = null, $height = null, array $options = [], array $attributes = [])
27 | {
28 | $attributes = array_replace_recursive($this->attributes, $attributes);
29 | $options = array_replace_recursive($this->options, $options);
30 |
31 | $path = config('laravelimage.routePath') . '/' . $dir . $image . '?' . http_build_query($options, '', '&');
32 |
33 | if ( ! empty((int) $width)) {
34 | $path .= '&w=' . (int) $width;
35 | }
36 |
37 | if ( ! empty((int) $height)) {
38 | $path .= '&h=' . (int) $height;
39 | }
40 |
41 | return '
buildAttributes($attributes) . ' />';
42 | }
43 |
44 | /**
45 | * @param $attributes
46 | *
47 | * @codeCoverageIgnore
48 | *
49 | * @return null|string
50 | */
51 | protected function buildAttributes($attributes)
52 | {
53 | if ( ! $attributes) {
54 | return;
55 | }
56 |
57 | $attributeMap = [];
58 | foreach ($attributes as $attribute => $value) {
59 | $attributeMap[] = $attribute . '="' . $value . '"';
60 | }
61 |
62 | return implode($attributeMap, ' ');
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/src/config/config.php:
--------------------------------------------------------------------------------
1 | public_path('uploads'),
13 |
14 | /*
15 | |--------------------------------------------------------------------------
16 | | Route prefix
17 | |--------------------------------------------------------------------------
18 | |
19 | | Your route prefix for glide
20 | */
21 | 'routePath' => 'laravel-image',
22 |
23 | /*
24 | |--------------------------------------------------------------------------
25 | | Default Validation Rules
26 | |--------------------------------------------------------------------------
27 | |
28 | | This option registers the default validation rules to apply while
29 | | uploading images.
30 | */
31 | 'validationRules' => 'mimes:jpeg,jpg,png|max:2048', //2mb
32 |
33 | /*
34 | |--------------------------------------------------------------------------
35 | | Image Fields
36 | |--------------------------------------------------------------------------
37 | |
38 | | Fields to treat as image fields. Required for validation.
39 | */
40 | 'imageFields' => [
41 | 'image',
42 | ],
43 |
44 | /*
45 | |--------------------------------------------------------------------------
46 | | Error Messages
47 | |--------------------------------------------------------------------------
48 | |
49 | | Validation error messages. Must be in format field.validationName.
50 | */
51 | 'validationMessages' => [
52 | 'image.max' => 'Image may not be greater than 2 MB',
53 | 'image.mimes' => 'Invalid image format. Please enter jpeg or png image.',
54 | ],
55 | ];
56 |
--------------------------------------------------------------------------------
/tests/DataProvider.php:
--------------------------------------------------------------------------------
1 | ['image.png', 'png'],
14 | 'jpg' => ['image.jpg', 'jpg'],
15 | 'jpeg' => ['image.jpeg', 'jpeg'],
16 | 'gif' => ['image.gif', 'gif'],
17 | 'default' => ['default_image.jpg', 'jpg'],
18 | ];
19 | }
20 |
21 | /**
22 | * @return array
23 | */
24 | public function invalidFileOptions()
25 | {
26 | return [
27 | //invalid size, valid mime
28 | [2049, 'image/png'],
29 | [3000, 'image/jpg'],
30 | [5000, 'image/jpeg'],
31 | [1000, 'image/gif'],
32 |
33 | //valid size, invalid mime
34 | [2000, 'image/tiff'],
35 | [2048, 'image/jpeeg'],
36 | [1000, 'application/json'],
37 | [30, 'application/pdf'],
38 | [800, 'text/plain'],
39 | ];
40 | }
41 |
42 | /**
43 | * @return array
44 | */
45 | public function imageOptions()
46 | {
47 | $default = '
';
48 | $withOptions = '
';
49 | $withAttributes = '
';
50 |
51 | return [
52 | ['uploads/contents/639bd5bc-3dec-4bbf-af19-201931d1d0c2/', 'image.png', 300, 200, [], [], $default],
53 | [
54 | 'uploads/contents/639bd5bc-3dec-19d3-af19-201931d1d0c2/', 'image.jpg',
55 | 800, 600,
56 | ['fit' => 'crop-top-left', 'filt' => 'sepia'],
57 | [],
58 | $withOptions,
59 | ],
60 | [
61 | 'uploads/contents/639bd5bc-34de-4bbf-af19-201931d1d0c2/', 'image.jpeg',
62 | 150, 80,
63 | ['fit' => 'crop-top-right', 'filt' => 'sepia'],
64 | ['alt' => 'Alt text of an image', 'class' => 'custom-class'],
65 | $withAttributes,
66 | ],
67 | ];
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/LaravelImage/ImageUploadServiceProvider.php:
--------------------------------------------------------------------------------
1 | app->routesAreCached()) {
20 | require __DIR__ . '/routes.php';
21 | }
22 |
23 | $this->publishes([
24 | __DIR__ . '/../config/config.php' => config_path('laravelimage.php'),
25 | ]);
26 |
27 | $this->registerBladeExtensions();
28 | }
29 |
30 | /**
31 | * Register the application services.
32 | */
33 | public function register()
34 | {
35 | $this->app->bind('\AnkitPokhrel\LaravelImage\ImageUploadService');
36 |
37 | $this->app->singleton('laravelImage', function () {
38 | return $this->app->make('\AnkitPokhrel\LaravelImage\ImageHelper');
39 | });
40 |
41 | $this->registerGlide();
42 | }
43 |
44 | /**
45 | * Register glide.
46 | */
47 | protected function registerGlide()
48 | {
49 | $this->app->singleton('\League\Glide\Server', function ($app) {
50 | $fileSystem = $app->make(Filesystem::class);
51 |
52 | $uploadDir = config('laravelimage.uploadDir');
53 | // Set source filesystem
54 | $source = new LeagueFilesystem(
55 | new Local($uploadDir)
56 | );
57 |
58 | // Set cache filesystem
59 | $cache = new LeagueFilesystem(
60 | new Local($fileSystem->getDriver()->getAdapter()->getPathPrefix() . '/laravel-image-cache')
61 | );
62 |
63 | // Setup glide server
64 | return ServerFactory::create([
65 | 'source' => $source,
66 | 'cache' => $cache,
67 | 'base_url' => config('laravelimage.routePath') . '/' . basename($uploadDir),
68 | 'response' => new LaravelResponseFactory(),
69 | ]);
70 | });
71 | }
72 |
73 | /**
74 | * Register blade templates.
75 | */
76 | protected function registerBladeExtensions()
77 | {
78 | $blade = $this->app['view']->getEngineResolver()->resolve('blade')->getCompiler();
79 |
80 | $blade->directive('laravelImage', function ($options) {
81 | return "";
82 | });
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Laravel Image
2 | [](https://github.com/ankitpokhrel/laravel-image/releases)
3 | [](https://scrutinizer-ci.com/g/ankitpokhrel/laravel-image/?branch=master)
4 | [](https://travis-ci.org/ankitpokhrel/laravel-image?branch=master)
5 | [](https://scrutinizer-ci.com/g/ankitpokhrel/laravel-image/?branch=master)
6 | [](https://styleci.io/repos/61992841)
7 | [](LICENSE)
8 | [](https://packagist.org/packages/ankitpokhrel/laravel-image)
9 |
10 | _Image Upload Package for Laravel 5+_
11 |
12 | ## Overview
13 |
14 | Laravel Image is a image upload and thumbnail management package for laravel 5+. This package uses [Glide](http://glide.thephpleague.com/) library from the php league for on-demand image manipulation.
15 |
16 | ## Installation
17 |
18 | > For 5.1 use [5.1](https://github.com/ankitpokhrel/laravel-image/tree/5.1) branch.
19 | > For 5.2 use [5.2](https://github.com/ankitpokhrel/laravel-image/tree/5.2) branch.
20 | > For 5.3 use [master](https://github.com/ankitpokhrel/laravel-image) branch.
21 |
22 | Pull the package via composer
23 |
24 | ```php
25 | composer require ankitpokhrel/laravel-image
26 | ```
27 |
28 | Include the service provider within `config/app.php`.
29 |
30 | ```php
31 | AnkitPokhrel\LaravelImage\ImageUploadServiceProvider::class
32 | ```
33 |
34 | Finally publish the configuration
35 | ```php
36 | php artisan vendor:publish --provider="AnkitPokhrel\LaravelImage\ImageUploadServiceProvider"
37 | ```
38 |
39 | ## Configuration
40 | You can add default configurations to `config/laravelimage.php`.
41 |
42 | ## Usage
43 |
44 | #### Uploading Image
45 | Within your controllers, get access to image upload service via dependency injection
46 | ```php
47 | class ContentsController extends Controller
48 | {
49 | ...
50 |
51 | protected $image;
52 |
53 | /**
54 | * @param ImageUploadService $image
55 | */
56 | public function __construct(ImageUploadService $image)
57 | {
58 | ...
59 |
60 | //set properties for file upload
61 | $this->image = $image;
62 | $this->image->setUploadField('image'); //default is image
63 | $this->image->setUploadFolder('contents'); //default is public/uploads/contents
64 | }
65 |
66 | ...
67 |
68 | ```
69 |
70 | And then, in your store or update method you can perform image upload
71 | ```php
72 | /**
73 | * Store method
74 | */
75 | public function store(ContentRequest $request)
76 | {
77 | $input = $request->all();
78 |
79 | if (Input::hasFile($this->image->getUploadField()) && $this->image->upload()) {
80 | //image is uploaded, get uploaded image info
81 | $uploadedFileInfo = $this->image->getUploadedFileInfo();
82 |
83 | ...
84 | //do whatever you like with the information
85 | $input = array_merge($input, $uploadedFileInfo);
86 | } else {
87 | //get validator object
88 | $validator = $this->image->getValidationErrors();
89 |
90 | //get error messages
91 | $errors = $validator->messages()->all();
92 | }
93 |
94 | ...
95 | }
96 |
97 | /**
98 | * Update method
99 | */
100 | public function update(Request $request, $id)
101 | {
102 | ...
103 |
104 | if (Input::hasFile($this->image->getUploadField()) && $this->image->upload()) {
105 | ...
106 |
107 | //remove old files
108 | if (!empty(trim($model->file_path))) {
109 | $this->image->clean(public_path($model->file_path), true);
110 | }
111 | }
112 |
113 | ...
114 | }
115 | ```
116 |
117 | #### Uploaded file info
118 | You can get uploaded file info using `$this->image->getUploadedFileInfo()`. It will return array as follow:
119 | ```php
120 | image : Saved image name
121 | upload_dir : Image upload path
122 | original_image_name : Real name of uploaded image
123 | size : Size of the uploaded image
124 | extension : Extension of the uploaded image
125 | mime_type : Mime type of the uploaded image
126 | ```
127 |
128 | To change `image` field you can use `setUploadField()` method. If you wish to change `upload_dir` field you can use `setUploadDir` method. Usually you will save `image`, `upload_dir` and `original_image_name` to the database.
129 |
130 | To get validation errors, you can use `getValidationErrors()` method.
131 |
132 | #### Customizing upload path
133 |
134 | Sometime you may want to group uploaded image or even store image somewhere else other than the public folder.
135 | You can do it by setting base path. For example, this settings below will store images inside
136 | `public/uploads/user-images/users/` directory.
137 |
138 | ```php
139 | //set base path
140 | $this->image->setBasePath('uploads/user-images/');
141 |
142 | //set upload folder
143 | $this->image->setUploadFolder('users');
144 | ```
145 |
146 | If you want to upload image in other places other than `public` folder, you can provide second parameter as `false`
147 | to the base path method.
148 |
149 | ```php
150 | //set absolute base path
151 | $this->image->setBasePath('/absolute/path/to/your/folder/uploads/', true);
152 |
153 | //set upload folder
154 | $this->image->setUploadFolder('users');
155 | ```
156 |
157 | This will upload image to `/absolute/path/to/your/folder/uploads/users` folder. Make sure that the folder has proper
158 | permission to store the images.
159 |
160 | #### Using blade directive to display images
161 |
162 | Display full image
163 | ```html
164 | @laravelImage($uploadDir, $imageName)
165 | ```
166 |
167 | Create image of custom size at runtime
168 | ```html
169 | <-- @laravelImage(uploadDir, imageName, width, height) -->
170 | @laravelImage($uploadDir, $imageName, 300, 200)
171 | ```
172 |
173 | Options & attributes
174 | ```html
175 | <-- @laravelImage(uploadDir, imageName, width, height, options, attributes) -->
176 | @laravelImage($uploadDir, $imageName, 300, 200, [
177 | 'fit' => 'crop-top-left',
178 | 'filt' => 'sepia'
179 | ], [
180 | 'alt' => 'Alt text of an image',
181 | 'class' => 'custom-class'
182 | ])
183 | ```
184 |
185 | > Options can be any glide options. See [thephpleague/glide](http://glide.thephpleague.com/) for more info on options.
186 |
187 | #### Displaying image without blade
188 |
189 | Image source should be in the format `laravelimage.routePath/uploadDir/image?options`, where `laravelimage.routePath` is from configuration file.
190 | So if you set your `routePath` to `cache`, the image url will be something like this.
191 |
192 | ```html
193 |
194 | ```
195 |
196 | Generated images are cached inside `storage/laravel-image-cache`.
197 |
--------------------------------------------------------------------------------
/src/LaravelImage/ImageUploadService.php:
--------------------------------------------------------------------------------
1 | validationRules = $validationRules ? $validationRules : config('laravelimage.validationRules');
54 |
55 | // Set default upload folder
56 | $this->setUploadFolder('contents');
57 | }
58 |
59 | /**
60 | * Get uploaded file info.
61 | *
62 | * @return array
63 | */
64 | public function getUploadedFileInfo()
65 | {
66 | return $this->uploadedFileInfo;
67 | }
68 |
69 | /**
70 | * Set upload field.
71 | *
72 | * @param $fieldName
73 | */
74 | public function setUploadField($fieldName)
75 | {
76 | $this->field = $fieldName;
77 | }
78 |
79 | /**
80 | * get upload field.
81 | *
82 | * return string
83 | */
84 | public function getUploadField()
85 | {
86 | return $this->field;
87 | }
88 |
89 | /**
90 | * Set upload directory.
91 | *
92 | * @param string $dir
93 | */
94 | public function setUploadDir($dir)
95 | {
96 | $this->uploadDir = $dir;
97 | }
98 |
99 | /**
100 | * get upload directory.
101 | *
102 | * return string
103 | */
104 | public function getUploadDir()
105 | {
106 | return $this->uploadDir;
107 | }
108 |
109 | /**
110 | * Set original image name field.
111 | *
112 | * @param string $originalImageName
113 | */
114 | public function setOriginalImageNameField($originalImageName)
115 | {
116 | $this->originalImageNameField = $originalImageName;
117 | }
118 |
119 | /**
120 | * get original image name field.
121 | *
122 | * return string
123 | */
124 | public function getOriginalImageNameField()
125 | {
126 | return $this->originalImageNameField;
127 | }
128 |
129 | /**
130 | * Set base path.
131 | *
132 | * @param $path
133 | * @param $publicPath
134 | */
135 | public function setBasePath($path, $publicPath = true)
136 | {
137 | $this->basePath = $path;
138 | $this->publicPath = $publicPath;
139 | }
140 |
141 | /**
142 | * Get base path.
143 | *
144 | * @return string
145 | */
146 | public function getBasePath()
147 | {
148 | return $this->basePath;
149 | }
150 |
151 | /**
152 | * Get public path.
153 | */
154 | public function getPublicPath()
155 | {
156 | return $this->publicPath;
157 | }
158 |
159 | /**
160 | * Set upload folder.
161 | *
162 | * @param $folder
163 | */
164 | public function setUploadFolder($folder)
165 | {
166 | $this->uploadPath = $this->basePath . $folder . '/' . $this->getUniqueFolderName() . '/';
167 | $this->destination = $this->publicPath ? public_path($this->uploadPath) : $this->uploadPath;
168 | }
169 |
170 | /**
171 | * Get upload destination.
172 | *
173 | * @return string
174 | */
175 | public function getDestination()
176 | {
177 | return $this->destination;
178 | }
179 |
180 | /**
181 | * Get upload path.
182 | *
183 | * @return string
184 | */
185 | public function getUploadPath()
186 | {
187 | return $this->uploadPath;
188 | }
189 |
190 | /**
191 | * @param $rules
192 | */
193 | public function setValidationRules($rules)
194 | {
195 | $this->validationRules = $rules;
196 | }
197 |
198 | /**
199 | * Get validation rules.
200 | */
201 | public function getValidationRules()
202 | {
203 | return $this->validationRules;
204 | }
205 |
206 | /**
207 | * Perform image validation.
208 | *
209 | * @param $file
210 | *
211 | * @return bool
212 | */
213 | protected function validate($file)
214 | {
215 | // Check if file is valid
216 | if ( ! $file->isValid()) {
217 | return false;
218 | }
219 |
220 | $inputFile = [$this->field => $file];
221 | $rules = [$this->field => $this->validationRules];
222 |
223 | // Validate
224 | $validator = Validator::make($inputFile, $rules);
225 | if ($validator->fails()) {
226 | $this->errors = $validator;
227 |
228 | return false;
229 | }
230 |
231 | return true;
232 | }
233 |
234 | /**
235 | * Uploads file to required destination.
236 | *
237 | * @return bool
238 | */
239 | public function upload()
240 | {
241 | $file = Input::file($this->field);
242 | if ( ! $this->validate($file)) {
243 | return false;
244 | }
245 |
246 | $originalFileName = $file->getClientOriginalName();
247 | $encryptedFileName = $this->getUniqueFilename($originalFileName);
248 | $mimeType = $file->getMimeType();
249 |
250 | $size = $file->getSize();
251 | if ($file->move($this->getDestination(), $encryptedFileName)) {
252 | $this->uploadedFileInfo = [
253 | $this->originalImageNameField => $originalFileName,
254 | $this->field => $encryptedFileName,
255 | $this->uploadDir => $this->getUploadPath(),
256 | 'size' => $size,
257 | 'extension' => $file->getClientOriginalExtension(),
258 | 'mime_type' => $mimeType,
259 | ];
260 |
261 | return true;
262 | }
263 |
264 | return false;
265 | }
266 |
267 | /**
268 | * @return array|object
269 | */
270 | public function getValidationErrors()
271 | {
272 | return $this->errors;
273 | }
274 |
275 | /**
276 | * Clear out a folder and its content.
277 | *
278 | * @param string $folder Absolute path to the folder
279 | * @param bool $removeDirectory If you want to remove the folder as well
280 | *
281 | * @throws \Exception
282 | */
283 | public function clean($folder, $removeDirectory = false)
284 | {
285 | if ( ! is_dir($folder)) {
286 | throw new \Exception(('Not a folder.'));
287 | }
288 |
289 | array_map('unlink', glob($folder . DIRECTORY_SEPARATOR . '*'));
290 | if ($removeDirectory && file_exists($folder)) {
291 | rmdir($folder);
292 | }
293 | }
294 |
295 | /**
296 | * function to generate unique filename for images.
297 | *
298 | * @param string $filename
299 | *
300 | * @return string
301 | */
302 | public function getUniqueFilename($filename)
303 | {
304 | $uniqueName = uniqid();
305 | $fileExt = explode('.', $filename);
306 | $mimeType = end($fileExt);
307 | $filename = $uniqueName . '.' . $mimeType;
308 |
309 | return $filename;
310 | }
311 |
312 | /**
313 | * Generate a random UUID for folder name (version 4).
314 | *
315 | * @see http://www.ietf.org/rfc/rfc4122.txt
316 | *
317 | * @return string RFC 4122 UUID
318 | *
319 | * @copyright Matt Farina MIT License https://github.com/lootils/uuid/blob/master/LICENSE
320 | */
321 | public function getUniqueFolderName()
322 | {
323 | return sprintf(
324 | '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
325 | mt_rand(0, 65535),
326 | mt_rand(0, 65535),
327 | mt_rand(0, 65535),
328 | mt_rand(0, 4095) | 0x4000,
329 | mt_rand(0, 0x3fff) | 0x8000,
330 | mt_rand(0, 65535),
331 | mt_rand(0, 65535),
332 | mt_rand(0, 65535)
333 | );
334 | }
335 | }
336 |
--------------------------------------------------------------------------------
/tests/config/app.php:
--------------------------------------------------------------------------------
1 | 'Laravel Image',
16 |
17 | /*
18 | |--------------------------------------------------------------------------
19 | | Application Environment
20 | |--------------------------------------------------------------------------
21 | |
22 | | This value determines the "environment" your application is currently
23 | | running in. This may determine how you prefer to configure various
24 | | services your application utilizes. Set this in your ".env" file.
25 | |
26 | */
27 |
28 | 'env' => env('APP_ENV', 'production'),
29 |
30 | /*
31 | |--------------------------------------------------------------------------
32 | | Application Debug Mode
33 | |--------------------------------------------------------------------------
34 | |
35 | | When your application is in debug mode, detailed error messages with
36 | | stack traces will be shown on every error that occurs within your
37 | | application. If disabled, a simple generic error page is shown.
38 | |
39 | */
40 |
41 | 'debug' => env('APP_DEBUG', false),
42 |
43 | /*
44 | |--------------------------------------------------------------------------
45 | | Application URL
46 | |--------------------------------------------------------------------------
47 | |
48 | | This URL is used by the console to properly generate URLs when using
49 | | the Artisan command line tool. You should set this to the root of
50 | | your application so that it is used when running Artisan tasks.
51 | |
52 | */
53 |
54 | 'url' => env('APP_URL', 'http://localhost'),
55 |
56 | /*
57 | |--------------------------------------------------------------------------
58 | | Application Timezone
59 | |--------------------------------------------------------------------------
60 | |
61 | | Here you may specify the default timezone for your application, which
62 | | will be used by the PHP date and date-time functions. We have gone
63 | | ahead and set this to a sensible default for you out of the box.
64 | |
65 | */
66 |
67 | 'timezone' => 'UTC',
68 |
69 | /*
70 | |--------------------------------------------------------------------------
71 | | Application Locale Configuration
72 | |--------------------------------------------------------------------------
73 | |
74 | | The application locale determines the default locale that will be used
75 | | by the translation service provider. You are free to set this value
76 | | to any of the locales which will be supported by the application.
77 | |
78 | */
79 |
80 | 'locale' => 'en',
81 |
82 | /*
83 | |--------------------------------------------------------------------------
84 | | Application Fallback Locale
85 | |--------------------------------------------------------------------------
86 | |
87 | | The fallback locale determines the locale to use when the current one
88 | | is not available. You may change the value to correspond to any of
89 | | the language folders that are provided through your application.
90 | |
91 | */
92 |
93 | 'fallback_locale' => 'en',
94 |
95 | /*
96 | |--------------------------------------------------------------------------
97 | | Encryption Key
98 | |--------------------------------------------------------------------------
99 | |
100 | | This key is used by the Illuminate encrypter service and should be set
101 | | to a random, 32 character string, otherwise these encrypted strings
102 | | will not be safe. Please do this before deploying an application!
103 | |
104 | */
105 |
106 | 'key' => env('APP_KEY'),
107 |
108 | 'cipher' => 'AES-256-CBC',
109 |
110 | /*
111 | |--------------------------------------------------------------------------
112 | | Logging Configuration
113 | |--------------------------------------------------------------------------
114 | |
115 | | Here you may configure the log settings for your application. Out of
116 | | the box, Laravel uses the Monolog PHP logging library. This gives
117 | | you a variety of powerful log handlers / formatters to utilize.
118 | |
119 | | Available Settings: "single", "daily", "syslog", "errorlog"
120 | |
121 | */
122 |
123 | 'log' => env('APP_LOG', 'single'),
124 |
125 | 'log_level' => env('APP_LOG_LEVEL', 'debug'),
126 |
127 | /*
128 | |--------------------------------------------------------------------------
129 | | Autoloaded Service Providers
130 | |--------------------------------------------------------------------------
131 | |
132 | | The service providers listed here will be automatically loaded on the
133 | | request to your application. Feel free to add your own services to
134 | | this array to grant expanded functionality to your applications.
135 | |
136 | */
137 |
138 | 'providers' => [
139 |
140 | /*
141 | * Laravel Framework Service Providers...
142 | */
143 | Illuminate\Auth\AuthServiceProvider::class,
144 | Illuminate\Broadcasting\BroadcastServiceProvider::class,
145 | Illuminate\Bus\BusServiceProvider::class,
146 | Illuminate\Cache\CacheServiceProvider::class,
147 | Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
148 | Illuminate\Cookie\CookieServiceProvider::class,
149 | Illuminate\Database\DatabaseServiceProvider::class,
150 | Illuminate\Encryption\EncryptionServiceProvider::class,
151 | Illuminate\Filesystem\FilesystemServiceProvider::class,
152 | Illuminate\Foundation\Providers\FoundationServiceProvider::class,
153 | Illuminate\Hashing\HashServiceProvider::class,
154 | Illuminate\Mail\MailServiceProvider::class,
155 | Illuminate\Notifications\NotificationServiceProvider::class,
156 | Illuminate\Pagination\PaginationServiceProvider::class,
157 | Illuminate\Pipeline\PipelineServiceProvider::class,
158 | Illuminate\Queue\QueueServiceProvider::class,
159 | Illuminate\Redis\RedisServiceProvider::class,
160 | Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
161 | Illuminate\Session\SessionServiceProvider::class,
162 | Illuminate\Translation\TranslationServiceProvider::class,
163 | Illuminate\Validation\ValidationServiceProvider::class,
164 | Illuminate\View\ViewServiceProvider::class,
165 |
166 | /*
167 | * Package Service Providers...
168 | */
169 |
170 | //
171 |
172 | /*
173 | * Application Service Providers...
174 | */
175 | App\Providers\AppServiceProvider::class,
176 | // App\Providers\BroadcastServiceProvider::class,
177 | App\Providers\AuthServiceProvider::class,
178 | App\Providers\EventServiceProvider::class,
179 | App\Providers\RouteServiceProvider::class,
180 | AnkitPokhrel\LaravelImage\ImageUploadServiceProvider::class,
181 |
182 | ],
183 |
184 | /*
185 | |--------------------------------------------------------------------------
186 | | Class Aliases
187 | |--------------------------------------------------------------------------
188 | |
189 | | This array of class aliases will be registered when this application
190 | | is started. However, feel free to register as many as you wish as
191 | | the aliases are "lazy" loaded so they don't hinder performance.
192 | |
193 | */
194 |
195 | 'aliases' => [
196 |
197 | 'App' => Illuminate\Support\Facades\App::class,
198 | 'Artisan' => Illuminate\Support\Facades\Artisan::class,
199 | 'Auth' => Illuminate\Support\Facades\Auth::class,
200 | 'Blade' => Illuminate\Support\Facades\Blade::class,
201 | 'Cache' => Illuminate\Support\Facades\Cache::class,
202 | 'Config' => Illuminate\Support\Facades\Config::class,
203 | 'Cookie' => Illuminate\Support\Facades\Cookie::class,
204 | 'Crypt' => Illuminate\Support\Facades\Crypt::class,
205 | 'DB' => Illuminate\Support\Facades\DB::class,
206 | 'Eloquent' => Illuminate\Database\Eloquent\Model::class,
207 | 'Event' => Illuminate\Support\Facades\Event::class,
208 | 'File' => Illuminate\Support\Facades\File::class,
209 | 'Gate' => Illuminate\Support\Facades\Gate::class,
210 | 'Hash' => Illuminate\Support\Facades\Hash::class,
211 | 'Lang' => Illuminate\Support\Facades\Lang::class,
212 | 'Log' => Illuminate\Support\Facades\Log::class,
213 | 'Mail' => Illuminate\Support\Facades\Mail::class,
214 | 'Notification' => Illuminate\Support\Facades\Notification::class,
215 | 'Password' => Illuminate\Support\Facades\Password::class,
216 | 'Queue' => Illuminate\Support\Facades\Queue::class,
217 | 'Redirect' => Illuminate\Support\Facades\Redirect::class,
218 | 'Redis' => Illuminate\Support\Facades\Redis::class,
219 | 'Request' => Illuminate\Support\Facades\Request::class,
220 | 'Response' => Illuminate\Support\Facades\Response::class,
221 | 'Route' => Illuminate\Support\Facades\Route::class,
222 | 'Schema' => Illuminate\Support\Facades\Schema::class,
223 | 'Session' => Illuminate\Support\Facades\Session::class,
224 | 'Storage' => Illuminate\Support\Facades\Storage::class,
225 | 'URL' => Illuminate\Support\Facades\URL::class,
226 | 'Validator' => Illuminate\Support\Facades\Validator::class,
227 | 'View' => Illuminate\Support\Facades\View::class,
228 |
229 | ],
230 |
231 | ];
232 |
--------------------------------------------------------------------------------
/tests/ImageUploadServiceTest.php:
--------------------------------------------------------------------------------
1 | uploadService = m::mock(
24 | '\AnkitPokhrel\LaravelImage\ImageUploadService[_construct]',
25 | $this->validationRules
26 | );
27 | }
28 |
29 | /**
30 | * @test
31 | *
32 | * @covers ::setUploadField
33 | * @covers ::getUploadField
34 | */
35 | public function set_upload_field()
36 | {
37 | //test default value
38 | $this->assertEquals('image', $this->uploadService->getUploadField());
39 |
40 | //test custom value
41 | $this->uploadService->setUploadField('custom_field');
42 | $this->assertEquals('custom_field', $this->uploadService->getUploadField());
43 | }
44 |
45 | /**
46 | * @test
47 | *
48 | * @covers ::setUploadDir
49 | * @covers ::getUploadDir
50 | */
51 | public function set_upload_dir()
52 | {
53 | //test default value
54 | $this->assertEquals('upload_dir', $this->uploadService->getUploadDir());
55 |
56 | //test custom value
57 | $this->uploadService->setUploadDir('custom_upload_dir');
58 | $this->assertEquals('custom_upload_dir', $this->uploadService->getUploadDir());
59 | }
60 |
61 | /**
62 | * @test
63 | *
64 | * @covers ::setValidationRules
65 | * @covers ::getValidationRules
66 | */
67 | public function set_validation_rules()
68 | {
69 | //test default value
70 | $this->assertEquals($this->uploadService->getValidationRules(), 'mimes:jpeg,jpg,png|max:2048');
71 |
72 | //test custom value
73 | $this->uploadService->setValidationRules('mimes:png|max:1024');
74 | $this->assertEquals('mimes:png|max:1024', $this->uploadService->getValidationRules());
75 | }
76 |
77 | /**
78 | * @test
79 | *
80 | * @covers ::setBasePath
81 | * @covers ::getBasePath
82 | */
83 | public function set_base_path()
84 | {
85 | //test default value
86 | $this->assertEquals('uploads/', $this->uploadService->getBasePath());
87 |
88 | //test custom value
89 | $this->uploadService->setBasePath('custom_uploads/');
90 | $this->assertEquals('custom_uploads/', $this->uploadService->getBasePath());
91 | }
92 |
93 | /**
94 | * @test
95 | *
96 | * @covers ::getPublicPath
97 | * @covers ::setBasePath
98 | */
99 | public function set_public_path()
100 | {
101 | //test default value
102 | $this->assertTrue($this->uploadService->getPublicPath());
103 |
104 | //test custom value
105 | $this->uploadService->setBasePath('custom_uploads/', false);
106 | $this->assertFalse($this->uploadService->getPublicPath());
107 | }
108 |
109 | /**
110 | * @test
111 | *
112 | * @covers ::setUploadFolder
113 | * @covers ::getUploadPath
114 | * @covers ::getDestination
115 | */
116 | public function set_upload_folder()
117 | {
118 | $regex = '/^uploads\/contents\/([a-z0-9]){8}-([a-z0-9]){4}-([a-z0-9]){4}-([a-z0-9]){4}-([a-z0-9]){12}\/$/i';
119 | $this->assertRegexp($regex, $this->uploadService->getUploadPath());
120 |
121 | $this->uploadService->setUploadFolder('users');
122 |
123 | $regex = '/^uploads\/users\/([a-z0-9]){8}-([a-z0-9]){4}-([a-z0-9]){4}-([a-z0-9]){4}-([a-z0-9]){12}\/$/i';
124 | $this->assertRegexp($regex, $this->uploadService->getUploadPath());
125 |
126 | //test destination
127 | $this->uploadService->setBasePath('/app/', false);
128 | $this->uploadService->setUploadFolder('users');
129 |
130 | $regex = '/^\/app\/users\/([a-z0-9]){8}-([a-z0-9]){4}-([a-z0-9]){4}-([a-z0-9]){4}-([a-z0-9]){12}\/$/i';
131 | $this->assertRegexp($regex, $this->uploadService->getDestination());
132 | }
133 |
134 | /**
135 | * @test
136 | *
137 | * @covers ::setOriginalImageNameField
138 | * @covers ::getOriginalImageNameField
139 | */
140 | public function set_original_image_name_field()
141 | {
142 | //test default value
143 | $this->assertEquals('original_image_name', $this->uploadService->getOriginalImageNameField());
144 |
145 | //test custom value
146 | $this->uploadService->setOriginalImageNameField('custom_original_image_name');
147 | $this->assertEquals('custom_original_image_name', $this->uploadService->getOriginalImageNameField());
148 | }
149 |
150 | /**
151 | * @test
152 | *
153 | * @covers ::getUniqueFolderName()
154 | */
155 | public function get_unique_folder_name()
156 | {
157 | for ($i = 0; $i < 25; $i++) {
158 | $folders[] = $this->uploadService->getUniqueFolderName();
159 | }
160 |
161 | $this->assertEquals(25, count(array_unique($folders)));
162 | }
163 |
164 | /**
165 | * @test
166 | *
167 | * @covers ::getUniqueFilename
168 | * @dataProvider AnkitPokhrel\LaravelImage\Tests\DataProvider::fileNames
169 | */
170 | public function get_unique_file_name_has_valid_extension($fileName, $ext)
171 | {
172 | $uniqueFileName = $this->uploadService->getUniqueFileName($fileName);
173 |
174 | $file = explode('.', $fileName);
175 | $fileExt = end($file);
176 |
177 | $this->assertEquals($fileExt, $ext);
178 | $this->assertNotEquals($uniqueFileName, $fileName);
179 | }
180 |
181 | /**
182 | * @test
183 | *
184 | * @covers ::getUniqueFilename
185 | */
186 | public function get_unique_file_name_generates_unique_file_names()
187 | {
188 | for ($i = 0; $i < 25; $i++) {
189 | $files[] = $this->uploadService->getUniqueFileName(str_random(6));
190 | }
191 |
192 | $this->assertEquals(25, count(array_unique($files)));
193 | }
194 |
195 | /**
196 | * @test
197 | *
198 | * @covers ::validate
199 | */
200 | public function validate_file_with_right_params()
201 | {
202 | $file = new UploadedFile(
203 | $this->testImage,
204 | 'ankit.png',
205 | 'image/png',
206 | filesize($this->testImage),
207 | null,
208 | true
209 | );
210 |
211 | $this->assertTrue($this->uploadService->validate($file));
212 | }
213 |
214 | /**
215 | * @test
216 | *
217 | * @covers ::validate
218 | * @dataProvider AnkitPokhrel\LaravelImage\Tests\DataProvider::invalidFileOptions
219 | */
220 | public function validate_fails_for_invalid_params($size, $type)
221 | {
222 | $file = new UploadedFile(
223 | $this->testImage,
224 | 'ankit.png',
225 | $type,
226 | $size,
227 | null,
228 | false
229 | );
230 |
231 | $this->assertFalse($this->uploadService->validate($file));
232 | }
233 |
234 | /**
235 | * @test
236 | *
237 | * @covers ::upload
238 | * @covers ::getUploadPath
239 | * @covers ::getUniqueFilename
240 | * @covers ::getValidationErrors
241 | */
242 | public function upload_return_errors_for_invalid_params()
243 | {
244 | $file = new UploadedFile(
245 | $this->testImage,
246 | 'ankit.png',
247 | 'image/png',
248 | filesize($this->testImage),
249 | null,
250 | true
251 | );
252 |
253 | $imageName = '57cbcd31b0fde.png';
254 | $uploadDir = 'uploads/contents/639bd5bc-3dec-4bbf-af19-201931d1d0c2/';
255 |
256 | //mock input
257 | $input = m::mock(Request::class);
258 | $input->shouldReceive('setUserResolver')
259 | ->shouldReceive('file')
260 | ->andReturn($file);
261 |
262 | Input::swap($input);
263 |
264 | //mock upload service with required methods
265 | $uploadServiceMock = m::mock(
266 | '\AnkitPokhrel\LaravelImage\ImageUploadService[_construct,getUniqueFilename,getUploadPath]',
267 | ['mimes:jpeg,jpg|max:30']
268 | );
269 |
270 | $uploadServiceMock
271 | ->shouldReceive('getUniqueFilename')->withAnyArgs()->andReturn($imageName)
272 | ->shouldReceive('getUploadPath')->andReturn($uploadDir);
273 |
274 | $expected = [
275 | 0 => 'The image must be a file of type: jpeg, jpg.',
276 | 1 => 'The image may not be greater than 30 kilobytes.',
277 | ];
278 |
279 | $this->assertFalse($uploadServiceMock->upload());
280 | $this->assertEquals($expected, $uploadServiceMock->getValidationErrors()->messages()->all());
281 | }
282 |
283 | /**
284 | * @test
285 | *
286 | * @covers ::upload
287 | * @covers ::getUploadPath
288 | * @covers ::getUniqueFilename
289 | * @covers ::getUploadedFileInfo
290 | */
291 | public function it_uploads_the_image()
292 | {
293 | $file = new UploadedFile(
294 | $this->testImage,
295 | 'ankit.png',
296 | 'image/png',
297 | filesize($this->testImage),
298 | null,
299 | true
300 | );
301 |
302 | //mock input
303 | $input = m::mock(Request::class);
304 | $input->shouldReceive('setUserResolver')
305 | ->shouldReceive('file')
306 | ->andReturn($file);
307 |
308 | Input::swap($input);
309 |
310 | $uploadServiceMock = m::mock(
311 | '\AnkitPokhrel\LaravelImage\ImageUploadService[_construct]',
312 | $this->validationRules
313 | );
314 |
315 | $this->assertTrue($uploadServiceMock->upload());
316 |
317 | $uploadedFileInfo = $uploadServiceMock->getUploadedFileInfo();
318 |
319 | foreach (['original_image_name', 'image', 'upload_dir', 'size', 'extension', 'mime_type'] as $key) {
320 | $this->assertArrayHasKey($key, $uploadedFileInfo);
321 | }
322 |
323 | return $uploadedFileInfo;
324 | }
325 |
326 | /**
327 | * @test
328 | *
329 | * @covers ::clean
330 | * @depends it_uploads_the_image
331 | *
332 | * @expectedException \Exception
333 | * @expectedExceptionMessage Not a folder.
334 | */
335 | public function it_throws_error_if_folder_is_file(array $uploadedFileInfo)
336 | {
337 | $dir = public_path($uploadedFileInfo['upload_dir']);
338 | $file = $dir . $uploadedFileInfo['image'];
339 |
340 | $this->uploadService->clean($file);
341 | }
342 |
343 | /**
344 | * @test
345 | *
346 | * @covers ::clean
347 | * @depends it_uploads_the_image
348 | */
349 | public function it_cleans_uploaded_file(array $uploadedFileInfo)
350 | {
351 | $dir = public_path($uploadedFileInfo['upload_dir']);
352 | $file = $dir . $uploadedFileInfo['image'];
353 |
354 | $this->assertTrue(file_exists($file));
355 |
356 | $this->uploadService->clean($dir);
357 | $this->assertFalse(file_exists($file));
358 |
359 | $this->uploadService->clean($dir, true);
360 | $this->assertFalse(file_exists($dir));
361 | }
362 |
363 | public function tearDown()
364 | {
365 | parent::tearDown();
366 |
367 | m::close();
368 | }
369 | }
370 |
--------------------------------------------------------------------------------
/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": "f602541a6928a289a4517a7236688851",
8 | "content-hash": "d735fe8bdccd1f6e6f1784f3a98197b0",
9 | "packages": [
10 | {
11 | "name": "classpreloader/classpreloader",
12 | "version": "3.0.0",
13 | "source": {
14 | "type": "git",
15 | "url": "https://github.com/ClassPreloader/ClassPreloader.git",
16 | "reference": "9b10b913c2bdf90c3d2e0d726b454fb7f77c552a"
17 | },
18 | "dist": {
19 | "type": "zip",
20 | "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/9b10b913c2bdf90c3d2e0d726b454fb7f77c552a",
21 | "reference": "9b10b913c2bdf90c3d2e0d726b454fb7f77c552a",
22 | "shasum": ""
23 | },
24 | "require": {
25 | "nikic/php-parser": "^1.0|^2.0",
26 | "php": ">=5.5.9"
27 | },
28 | "require-dev": {
29 | "phpunit/phpunit": "^4.8|^5.0"
30 | },
31 | "type": "library",
32 | "extra": {
33 | "branch-alias": {
34 | "dev-master": "3.0-dev"
35 | }
36 | },
37 | "autoload": {
38 | "psr-4": {
39 | "ClassPreloader\\": "src/"
40 | }
41 | },
42 | "notification-url": "https://packagist.org/downloads/",
43 | "license": [
44 | "MIT"
45 | ],
46 | "authors": [
47 | {
48 | "name": "Michael Dowling",
49 | "email": "mtdowling@gmail.com"
50 | },
51 | {
52 | "name": "Graham Campbell",
53 | "email": "graham@alt-three.com"
54 | }
55 | ],
56 | "description": "Helps class loading performance by generating a single PHP file containing all of the autoloaded files for a specific use case",
57 | "keywords": [
58 | "autoload",
59 | "class",
60 | "preload"
61 | ],
62 | "time": "2015-11-09 22:51:51"
63 | },
64 | {
65 | "name": "dnoegel/php-xdg-base-dir",
66 | "version": "0.1",
67 | "source": {
68 | "type": "git",
69 | "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
70 | "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a"
71 | },
72 | "dist": {
73 | "type": "zip",
74 | "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a",
75 | "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a",
76 | "shasum": ""
77 | },
78 | "require": {
79 | "php": ">=5.3.2"
80 | },
81 | "require-dev": {
82 | "phpunit/phpunit": "@stable"
83 | },
84 | "type": "project",
85 | "autoload": {
86 | "psr-4": {
87 | "XdgBaseDir\\": "src/"
88 | }
89 | },
90 | "notification-url": "https://packagist.org/downloads/",
91 | "license": [
92 | "MIT"
93 | ],
94 | "description": "implementation of xdg base directory specification for php",
95 | "time": "2014-10-24 07:27:01"
96 | },
97 | {
98 | "name": "doctrine/inflector",
99 | "version": "v1.1.0",
100 | "source": {
101 | "type": "git",
102 | "url": "https://github.com/doctrine/inflector.git",
103 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae"
104 | },
105 | "dist": {
106 | "type": "zip",
107 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae",
108 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae",
109 | "shasum": ""
110 | },
111 | "require": {
112 | "php": ">=5.3.2"
113 | },
114 | "require-dev": {
115 | "phpunit/phpunit": "4.*"
116 | },
117 | "type": "library",
118 | "extra": {
119 | "branch-alias": {
120 | "dev-master": "1.1.x-dev"
121 | }
122 | },
123 | "autoload": {
124 | "psr-0": {
125 | "Doctrine\\Common\\Inflector\\": "lib/"
126 | }
127 | },
128 | "notification-url": "https://packagist.org/downloads/",
129 | "license": [
130 | "MIT"
131 | ],
132 | "authors": [
133 | {
134 | "name": "Roman Borschel",
135 | "email": "roman@code-factory.org"
136 | },
137 | {
138 | "name": "Benjamin Eberlei",
139 | "email": "kontakt@beberlei.de"
140 | },
141 | {
142 | "name": "Guilherme Blanco",
143 | "email": "guilhermeblanco@gmail.com"
144 | },
145 | {
146 | "name": "Jonathan Wage",
147 | "email": "jonwage@gmail.com"
148 | },
149 | {
150 | "name": "Johannes Schmitt",
151 | "email": "schmittjoh@gmail.com"
152 | }
153 | ],
154 | "description": "Common String Manipulations with regard to casing and singular/plural rules.",
155 | "homepage": "http://www.doctrine-project.org",
156 | "keywords": [
157 | "inflection",
158 | "pluralize",
159 | "singularize",
160 | "string"
161 | ],
162 | "time": "2015-11-06 14:35:42"
163 | },
164 | {
165 | "name": "doctrine/instantiator",
166 | "version": "1.0.5",
167 | "source": {
168 | "type": "git",
169 | "url": "https://github.com/doctrine/instantiator.git",
170 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
171 | },
172 | "dist": {
173 | "type": "zip",
174 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
175 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
176 | "shasum": ""
177 | },
178 | "require": {
179 | "php": ">=5.3,<8.0-DEV"
180 | },
181 | "require-dev": {
182 | "athletic/athletic": "~0.1.8",
183 | "ext-pdo": "*",
184 | "ext-phar": "*",
185 | "phpunit/phpunit": "~4.0",
186 | "squizlabs/php_codesniffer": "~2.0"
187 | },
188 | "type": "library",
189 | "extra": {
190 | "branch-alias": {
191 | "dev-master": "1.0.x-dev"
192 | }
193 | },
194 | "autoload": {
195 | "psr-4": {
196 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
197 | }
198 | },
199 | "notification-url": "https://packagist.org/downloads/",
200 | "license": [
201 | "MIT"
202 | ],
203 | "authors": [
204 | {
205 | "name": "Marco Pivetta",
206 | "email": "ocramius@gmail.com",
207 | "homepage": "http://ocramius.github.com/"
208 | }
209 | ],
210 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
211 | "homepage": "https://github.com/doctrine/instantiator",
212 | "keywords": [
213 | "constructor",
214 | "instantiate"
215 | ],
216 | "time": "2015-06-14 21:17:01"
217 | },
218 | {
219 | "name": "guzzlehttp/psr7",
220 | "version": "1.3.1",
221 | "source": {
222 | "type": "git",
223 | "url": "https://github.com/guzzle/psr7.git",
224 | "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b"
225 | },
226 | "dist": {
227 | "type": "zip",
228 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/5c6447c9df362e8f8093bda8f5d8873fe5c7f65b",
229 | "reference": "5c6447c9df362e8f8093bda8f5d8873fe5c7f65b",
230 | "shasum": ""
231 | },
232 | "require": {
233 | "php": ">=5.4.0",
234 | "psr/http-message": "~1.0"
235 | },
236 | "provide": {
237 | "psr/http-message-implementation": "1.0"
238 | },
239 | "require-dev": {
240 | "phpunit/phpunit": "~4.0"
241 | },
242 | "type": "library",
243 | "extra": {
244 | "branch-alias": {
245 | "dev-master": "1.4-dev"
246 | }
247 | },
248 | "autoload": {
249 | "psr-4": {
250 | "GuzzleHttp\\Psr7\\": "src/"
251 | },
252 | "files": [
253 | "src/functions_include.php"
254 | ]
255 | },
256 | "notification-url": "https://packagist.org/downloads/",
257 | "license": [
258 | "MIT"
259 | ],
260 | "authors": [
261 | {
262 | "name": "Michael Dowling",
263 | "email": "mtdowling@gmail.com",
264 | "homepage": "https://github.com/mtdowling"
265 | }
266 | ],
267 | "description": "PSR-7 message implementation",
268 | "keywords": [
269 | "http",
270 | "message",
271 | "stream",
272 | "uri"
273 | ],
274 | "time": "2016-06-24 23:00:38"
275 | },
276 | {
277 | "name": "intervention/image",
278 | "version": "2.3.8",
279 | "source": {
280 | "type": "git",
281 | "url": "https://github.com/Intervention/image.git",
282 | "reference": "4064a980324f6c3bfa2bd981dfb247afa705ec3c"
283 | },
284 | "dist": {
285 | "type": "zip",
286 | "url": "https://api.github.com/repos/Intervention/image/zipball/4064a980324f6c3bfa2bd981dfb247afa705ec3c",
287 | "reference": "4064a980324f6c3bfa2bd981dfb247afa705ec3c",
288 | "shasum": ""
289 | },
290 | "require": {
291 | "ext-fileinfo": "*",
292 | "guzzlehttp/psr7": "~1.1",
293 | "php": ">=5.4.0"
294 | },
295 | "require-dev": {
296 | "mockery/mockery": "~0.9.2",
297 | "phpunit/phpunit": "3.*"
298 | },
299 | "suggest": {
300 | "ext-gd": "to use GD library based image processing.",
301 | "ext-imagick": "to use Imagick based image processing.",
302 | "intervention/imagecache": "Caching extension for the Intervention Image library"
303 | },
304 | "type": "library",
305 | "extra": {
306 | "branch-alias": {
307 | "dev-master": "2.3-dev"
308 | }
309 | },
310 | "autoload": {
311 | "psr-4": {
312 | "Intervention\\Image\\": "src/Intervention/Image"
313 | }
314 | },
315 | "notification-url": "https://packagist.org/downloads/",
316 | "license": [
317 | "MIT"
318 | ],
319 | "authors": [
320 | {
321 | "name": "Oliver Vogel",
322 | "email": "oliver@olivervogel.net",
323 | "homepage": "http://olivervogel.net/"
324 | }
325 | ],
326 | "description": "Image handling and manipulation library with support for Laravel integration",
327 | "homepage": "http://image.intervention.io/",
328 | "keywords": [
329 | "gd",
330 | "image",
331 | "imagick",
332 | "laravel",
333 | "thumbnail",
334 | "watermark"
335 | ],
336 | "time": "2016-09-01 17:04:03"
337 | },
338 | {
339 | "name": "jakub-onderka/php-console-color",
340 | "version": "0.1",
341 | "source": {
342 | "type": "git",
343 | "url": "https://github.com/JakubOnderka/PHP-Console-Color.git",
344 | "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1"
345 | },
346 | "dist": {
347 | "type": "zip",
348 | "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1",
349 | "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1",
350 | "shasum": ""
351 | },
352 | "require": {
353 | "php": ">=5.3.2"
354 | },
355 | "require-dev": {
356 | "jakub-onderka/php-code-style": "1.0",
357 | "jakub-onderka/php-parallel-lint": "0.*",
358 | "jakub-onderka/php-var-dump-check": "0.*",
359 | "phpunit/phpunit": "3.7.*",
360 | "squizlabs/php_codesniffer": "1.*"
361 | },
362 | "type": "library",
363 | "autoload": {
364 | "psr-0": {
365 | "JakubOnderka\\PhpConsoleColor": "src/"
366 | }
367 | },
368 | "notification-url": "https://packagist.org/downloads/",
369 | "license": [
370 | "BSD-2-Clause"
371 | ],
372 | "authors": [
373 | {
374 | "name": "Jakub Onderka",
375 | "email": "jakub.onderka@gmail.com",
376 | "homepage": "http://www.acci.cz"
377 | }
378 | ],
379 | "time": "2014-04-08 15:00:19"
380 | },
381 | {
382 | "name": "jakub-onderka/php-console-highlighter",
383 | "version": "v0.3.2",
384 | "source": {
385 | "type": "git",
386 | "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git",
387 | "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5"
388 | },
389 | "dist": {
390 | "type": "zip",
391 | "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5",
392 | "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5",
393 | "shasum": ""
394 | },
395 | "require": {
396 | "jakub-onderka/php-console-color": "~0.1",
397 | "php": ">=5.3.0"
398 | },
399 | "require-dev": {
400 | "jakub-onderka/php-code-style": "~1.0",
401 | "jakub-onderka/php-parallel-lint": "~0.5",
402 | "jakub-onderka/php-var-dump-check": "~0.1",
403 | "phpunit/phpunit": "~4.0",
404 | "squizlabs/php_codesniffer": "~1.5"
405 | },
406 | "type": "library",
407 | "autoload": {
408 | "psr-0": {
409 | "JakubOnderka\\PhpConsoleHighlighter": "src/"
410 | }
411 | },
412 | "notification-url": "https://packagist.org/downloads/",
413 | "license": [
414 | "MIT"
415 | ],
416 | "authors": [
417 | {
418 | "name": "Jakub Onderka",
419 | "email": "acci@acci.cz",
420 | "homepage": "http://www.acci.cz/"
421 | }
422 | ],
423 | "time": "2015-04-20 18:58:01"
424 | },
425 | {
426 | "name": "jeremeamia/SuperClosure",
427 | "version": "2.2.0",
428 | "source": {
429 | "type": "git",
430 | "url": "https://github.com/jeremeamia/super_closure.git",
431 | "reference": "29a88be2a4846d27c1613aed0c9071dfad7b5938"
432 | },
433 | "dist": {
434 | "type": "zip",
435 | "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/29a88be2a4846d27c1613aed0c9071dfad7b5938",
436 | "reference": "29a88be2a4846d27c1613aed0c9071dfad7b5938",
437 | "shasum": ""
438 | },
439 | "require": {
440 | "nikic/php-parser": "^1.2|^2.0",
441 | "php": ">=5.4",
442 | "symfony/polyfill-php56": "^1.0"
443 | },
444 | "require-dev": {
445 | "phpunit/phpunit": "^4.0|^5.0"
446 | },
447 | "type": "library",
448 | "extra": {
449 | "branch-alias": {
450 | "dev-master": "2.2-dev"
451 | }
452 | },
453 | "autoload": {
454 | "psr-4": {
455 | "SuperClosure\\": "src/"
456 | }
457 | },
458 | "notification-url": "https://packagist.org/downloads/",
459 | "license": [
460 | "MIT"
461 | ],
462 | "authors": [
463 | {
464 | "name": "Jeremy Lindblom",
465 | "email": "jeremeamia@gmail.com",
466 | "homepage": "https://github.com/jeremeamia",
467 | "role": "Developer"
468 | }
469 | ],
470 | "description": "Serialize Closure objects, including their context and binding",
471 | "homepage": "https://github.com/jeremeamia/super_closure",
472 | "keywords": [
473 | "closure",
474 | "function",
475 | "lambda",
476 | "parser",
477 | "serializable",
478 | "serialize",
479 | "tokenizer"
480 | ],
481 | "time": "2015-12-05 17:17:57"
482 | },
483 | {
484 | "name": "laravel/framework",
485 | "version": "v5.3.8",
486 | "source": {
487 | "type": "git",
488 | "url": "https://github.com/laravel/framework.git",
489 | "reference": "99c74afc0b99e1af1984cb55dc242ab28a0e496b"
490 | },
491 | "dist": {
492 | "type": "zip",
493 | "url": "https://api.github.com/repos/laravel/framework/zipball/99c74afc0b99e1af1984cb55dc242ab28a0e496b",
494 | "reference": "99c74afc0b99e1af1984cb55dc242ab28a0e496b",
495 | "shasum": ""
496 | },
497 | "require": {
498 | "classpreloader/classpreloader": "~3.0",
499 | "doctrine/inflector": "~1.0",
500 | "ext-mbstring": "*",
501 | "ext-openssl": "*",
502 | "jeremeamia/superclosure": "~2.2",
503 | "league/flysystem": "~1.0",
504 | "monolog/monolog": "~1.11",
505 | "mtdowling/cron-expression": "~1.0",
506 | "nesbot/carbon": "~1.20",
507 | "paragonie/random_compat": "~1.4|~2.0",
508 | "php": ">=5.6.4",
509 | "psy/psysh": "0.7.*",
510 | "ramsey/uuid": "~3.0",
511 | "swiftmailer/swiftmailer": "~5.1",
512 | "symfony/console": "3.1.*",
513 | "symfony/debug": "3.1.*",
514 | "symfony/finder": "3.1.*",
515 | "symfony/http-foundation": "3.1.*",
516 | "symfony/http-kernel": "3.1.*",
517 | "symfony/process": "3.1.*",
518 | "symfony/routing": "3.1.*",
519 | "symfony/translation": "3.1.*",
520 | "symfony/var-dumper": "3.1.*",
521 | "vlucas/phpdotenv": "~2.2"
522 | },
523 | "replace": {
524 | "illuminate/auth": "self.version",
525 | "illuminate/broadcasting": "self.version",
526 | "illuminate/bus": "self.version",
527 | "illuminate/cache": "self.version",
528 | "illuminate/config": "self.version",
529 | "illuminate/console": "self.version",
530 | "illuminate/container": "self.version",
531 | "illuminate/contracts": "self.version",
532 | "illuminate/cookie": "self.version",
533 | "illuminate/database": "self.version",
534 | "illuminate/encryption": "self.version",
535 | "illuminate/events": "self.version",
536 | "illuminate/exception": "self.version",
537 | "illuminate/filesystem": "self.version",
538 | "illuminate/hashing": "self.version",
539 | "illuminate/http": "self.version",
540 | "illuminate/log": "self.version",
541 | "illuminate/mail": "self.version",
542 | "illuminate/pagination": "self.version",
543 | "illuminate/pipeline": "self.version",
544 | "illuminate/queue": "self.version",
545 | "illuminate/redis": "self.version",
546 | "illuminate/routing": "self.version",
547 | "illuminate/session": "self.version",
548 | "illuminate/support": "self.version",
549 | "illuminate/translation": "self.version",
550 | "illuminate/validation": "self.version",
551 | "illuminate/view": "self.version",
552 | "tightenco/collect": "self.version"
553 | },
554 | "require-dev": {
555 | "aws/aws-sdk-php": "~3.0",
556 | "mockery/mockery": "~0.9.4",
557 | "pda/pheanstalk": "~3.0",
558 | "phpunit/phpunit": "~5.4",
559 | "predis/predis": "~1.0",
560 | "symfony/css-selector": "3.1.*",
561 | "symfony/dom-crawler": "3.1.*"
562 | },
563 | "suggest": {
564 | "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).",
565 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.4).",
566 | "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).",
567 | "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).",
568 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).",
569 | "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).",
570 | "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).",
571 | "predis/predis": "Required to use the redis cache and queue drivers (~1.0).",
572 | "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).",
573 | "symfony/css-selector": "Required to use some of the crawler integration testing tools (3.1.*).",
574 | "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (3.1.*).",
575 | "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)."
576 | },
577 | "type": "library",
578 | "extra": {
579 | "branch-alias": {
580 | "dev-master": "5.3-dev"
581 | }
582 | },
583 | "autoload": {
584 | "files": [
585 | "src/Illuminate/Foundation/helpers.php",
586 | "src/Illuminate/Support/helpers.php"
587 | ],
588 | "psr-4": {
589 | "Illuminate\\": "src/Illuminate/"
590 | }
591 | },
592 | "notification-url": "https://packagist.org/downloads/",
593 | "license": [
594 | "MIT"
595 | ],
596 | "authors": [
597 | {
598 | "name": "Taylor Otwell",
599 | "email": "taylor@laravel.com"
600 | }
601 | ],
602 | "description": "The Laravel Framework.",
603 | "homepage": "https://laravel.com",
604 | "keywords": [
605 | "framework",
606 | "laravel"
607 | ],
608 | "time": "2016-09-09 16:33:59"
609 | },
610 | {
611 | "name": "league/flysystem",
612 | "version": "1.0.27",
613 | "source": {
614 | "type": "git",
615 | "url": "https://github.com/thephpleague/flysystem.git",
616 | "reference": "50e2045ed70a7e75a5e30bc3662904f3b67af8a9"
617 | },
618 | "dist": {
619 | "type": "zip",
620 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/50e2045ed70a7e75a5e30bc3662904f3b67af8a9",
621 | "reference": "50e2045ed70a7e75a5e30bc3662904f3b67af8a9",
622 | "shasum": ""
623 | },
624 | "require": {
625 | "php": ">=5.4.0"
626 | },
627 | "conflict": {
628 | "league/flysystem-sftp": "<1.0.6"
629 | },
630 | "require-dev": {
631 | "ext-fileinfo": "*",
632 | "mockery/mockery": "~0.9",
633 | "phpspec/phpspec": "^2.2",
634 | "phpunit/phpunit": "~4.8"
635 | },
636 | "suggest": {
637 | "ext-fileinfo": "Required for MimeType",
638 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
639 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
640 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
641 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
642 | "league/flysystem-copy": "Allows you to use Copy.com storage",
643 | "league/flysystem-dropbox": "Allows you to use Dropbox storage",
644 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
645 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
646 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
647 | "league/flysystem-webdav": "Allows you to use WebDAV storage",
648 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter"
649 | },
650 | "type": "library",
651 | "extra": {
652 | "branch-alias": {
653 | "dev-master": "1.1-dev"
654 | }
655 | },
656 | "autoload": {
657 | "psr-4": {
658 | "League\\Flysystem\\": "src/"
659 | }
660 | },
661 | "notification-url": "https://packagist.org/downloads/",
662 | "license": [
663 | "MIT"
664 | ],
665 | "authors": [
666 | {
667 | "name": "Frank de Jonge",
668 | "email": "info@frenky.net"
669 | }
670 | ],
671 | "description": "Filesystem abstraction: Many filesystems, one API.",
672 | "keywords": [
673 | "Cloud Files",
674 | "WebDAV",
675 | "abstraction",
676 | "aws",
677 | "cloud",
678 | "copy.com",
679 | "dropbox",
680 | "file systems",
681 | "files",
682 | "filesystem",
683 | "filesystems",
684 | "ftp",
685 | "rackspace",
686 | "remote",
687 | "s3",
688 | "sftp",
689 | "storage"
690 | ],
691 | "time": "2016-08-10 08:55:11"
692 | },
693 | {
694 | "name": "league/glide",
695 | "version": "1.1.0",
696 | "source": {
697 | "type": "git",
698 | "url": "https://github.com/thephpleague/glide.git",
699 | "reference": "5d71f2fb030907fdd9552b4952d1ecdc1804702e"
700 | },
701 | "dist": {
702 | "type": "zip",
703 | "url": "https://api.github.com/repos/thephpleague/glide/zipball/5d71f2fb030907fdd9552b4952d1ecdc1804702e",
704 | "reference": "5d71f2fb030907fdd9552b4952d1ecdc1804702e",
705 | "shasum": ""
706 | },
707 | "require": {
708 | "intervention/image": "^2.1",
709 | "league/flysystem": "^1.0",
710 | "php": "^5.4 | ^7.0",
711 | "psr/http-message": "^1.0"
712 | },
713 | "require-dev": {
714 | "mockery/mockery": "~0.9",
715 | "phpunit/php-token-stream": "^1.4",
716 | "phpunit/phpunit": "~4.4"
717 | },
718 | "type": "library",
719 | "extra": {
720 | "branch-alias": {
721 | "dev-master": "1.1-dev"
722 | }
723 | },
724 | "autoload": {
725 | "psr-4": {
726 | "League\\Glide\\": "src/"
727 | }
728 | },
729 | "notification-url": "https://packagist.org/downloads/",
730 | "license": [
731 | "MIT"
732 | ],
733 | "authors": [
734 | {
735 | "name": "Jonathan Reinink",
736 | "email": "jonathan@reinink.ca",
737 | "homepage": "http://reinink.ca"
738 | }
739 | ],
740 | "description": "Wonderfully easy on-demand image manipulation library with an HTTP based API.",
741 | "homepage": "http://glide.thephpleague.com",
742 | "keywords": [
743 | "ImageMagick",
744 | "editing",
745 | "gd",
746 | "image",
747 | "imagick",
748 | "league",
749 | "manipulation",
750 | "processing"
751 | ],
752 | "time": "2016-08-19 20:49:36"
753 | },
754 | {
755 | "name": "league/glide-laravel",
756 | "version": "1.0.0",
757 | "source": {
758 | "type": "git",
759 | "url": "https://github.com/thephpleague/glide-laravel.git",
760 | "reference": "b525e33e32940f3b047d6ca357131aba0e973e72"
761 | },
762 | "dist": {
763 | "type": "zip",
764 | "url": "https://api.github.com/repos/thephpleague/glide-laravel/zipball/b525e33e32940f3b047d6ca357131aba0e973e72",
765 | "reference": "b525e33e32940f3b047d6ca357131aba0e973e72",
766 | "shasum": ""
767 | },
768 | "require": {
769 | "league/glide-symfony": "^1.0"
770 | },
771 | "require-dev": {
772 | "mockery/mockery": "^0.9",
773 | "phpunit/phpunit": "^4.0"
774 | },
775 | "type": "library",
776 | "autoload": {
777 | "psr-4": {
778 | "League\\Glide\\": "src/"
779 | }
780 | },
781 | "notification-url": "https://packagist.org/downloads/",
782 | "license": [
783 | "MIT"
784 | ],
785 | "authors": [
786 | {
787 | "name": "Jonathan Reinink",
788 | "email": "jonathan@reinink.ca",
789 | "homepage": "http://reinink.ca"
790 | }
791 | ],
792 | "description": "Glide adapter for Laravel",
793 | "homepage": "http://glide.thephpleague.com",
794 | "time": "2015-12-26 15:40:35"
795 | },
796 | {
797 | "name": "league/glide-symfony",
798 | "version": "1.0.2",
799 | "source": {
800 | "type": "git",
801 | "url": "https://github.com/thephpleague/glide-symfony.git",
802 | "reference": "2dc271c959aa86c060261e2a93c493a54f98efbb"
803 | },
804 | "dist": {
805 | "type": "zip",
806 | "url": "https://api.github.com/repos/thephpleague/glide-symfony/zipball/2dc271c959aa86c060261e2a93c493a54f98efbb",
807 | "reference": "2dc271c959aa86c060261e2a93c493a54f98efbb",
808 | "shasum": ""
809 | },
810 | "require": {
811 | "league/glide": "^1.0",
812 | "symfony/http-foundation": "^2.3|^3.0"
813 | },
814 | "require-dev": {
815 | "mockery/mockery": "^0.9",
816 | "phpunit/phpunit": "^4.0"
817 | },
818 | "type": "library",
819 | "autoload": {
820 | "psr-4": {
821 | "League\\Glide\\": "src/"
822 | }
823 | },
824 | "notification-url": "https://packagist.org/downloads/",
825 | "license": [
826 | "MIT"
827 | ],
828 | "authors": [
829 | {
830 | "name": "Jonathan Reinink",
831 | "email": "jonathan@reinink.ca",
832 | "homepage": "http://reinink.ca"
833 | }
834 | ],
835 | "description": "Glide adapter for Symfony",
836 | "homepage": "http://glide.thephpleague.com",
837 | "time": "2016-07-01 16:05:08"
838 | },
839 | {
840 | "name": "monolog/monolog",
841 | "version": "1.21.0",
842 | "source": {
843 | "type": "git",
844 | "url": "https://github.com/Seldaek/monolog.git",
845 | "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952"
846 | },
847 | "dist": {
848 | "type": "zip",
849 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952",
850 | "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952",
851 | "shasum": ""
852 | },
853 | "require": {
854 | "php": ">=5.3.0",
855 | "psr/log": "~1.0"
856 | },
857 | "provide": {
858 | "psr/log-implementation": "1.0.0"
859 | },
860 | "require-dev": {
861 | "aws/aws-sdk-php": "^2.4.9",
862 | "doctrine/couchdb": "~1.0@dev",
863 | "graylog2/gelf-php": "~1.0",
864 | "jakub-onderka/php-parallel-lint": "0.9",
865 | "php-amqplib/php-amqplib": "~2.4",
866 | "php-console/php-console": "^3.1.3",
867 | "phpunit/phpunit": "~4.5",
868 | "phpunit/phpunit-mock-objects": "2.3.0",
869 | "ruflin/elastica": ">=0.90 <3.0",
870 | "sentry/sentry": "^0.13",
871 | "swiftmailer/swiftmailer": "~5.3"
872 | },
873 | "suggest": {
874 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
875 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
876 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
877 | "ext-mongo": "Allow sending log messages to a MongoDB server",
878 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
879 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
880 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
881 | "php-console/php-console": "Allow sending log messages to Google Chrome",
882 | "rollbar/rollbar": "Allow sending log messages to Rollbar",
883 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
884 | "sentry/sentry": "Allow sending log messages to a Sentry server"
885 | },
886 | "type": "library",
887 | "extra": {
888 | "branch-alias": {
889 | "dev-master": "2.0.x-dev"
890 | }
891 | },
892 | "autoload": {
893 | "psr-4": {
894 | "Monolog\\": "src/Monolog"
895 | }
896 | },
897 | "notification-url": "https://packagist.org/downloads/",
898 | "license": [
899 | "MIT"
900 | ],
901 | "authors": [
902 | {
903 | "name": "Jordi Boggiano",
904 | "email": "j.boggiano@seld.be",
905 | "homepage": "http://seld.be"
906 | }
907 | ],
908 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
909 | "homepage": "http://github.com/Seldaek/monolog",
910 | "keywords": [
911 | "log",
912 | "logging",
913 | "psr-3"
914 | ],
915 | "time": "2016-07-29 03:23:52"
916 | },
917 | {
918 | "name": "mtdowling/cron-expression",
919 | "version": "v1.1.0",
920 | "source": {
921 | "type": "git",
922 | "url": "https://github.com/mtdowling/cron-expression.git",
923 | "reference": "c9ee7886f5a12902b225a1a12f36bb45f9ab89e5"
924 | },
925 | "dist": {
926 | "type": "zip",
927 | "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/c9ee7886f5a12902b225a1a12f36bb45f9ab89e5",
928 | "reference": "c9ee7886f5a12902b225a1a12f36bb45f9ab89e5",
929 | "shasum": ""
930 | },
931 | "require": {
932 | "php": ">=5.3.2"
933 | },
934 | "require-dev": {
935 | "phpunit/phpunit": "~4.0|~5.0"
936 | },
937 | "type": "library",
938 | "autoload": {
939 | "psr-0": {
940 | "Cron": "src/"
941 | }
942 | },
943 | "notification-url": "https://packagist.org/downloads/",
944 | "license": [
945 | "MIT"
946 | ],
947 | "authors": [
948 | {
949 | "name": "Michael Dowling",
950 | "email": "mtdowling@gmail.com",
951 | "homepage": "https://github.com/mtdowling"
952 | }
953 | ],
954 | "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due",
955 | "keywords": [
956 | "cron",
957 | "schedule"
958 | ],
959 | "time": "2016-01-26 21:23:30"
960 | },
961 | {
962 | "name": "myclabs/deep-copy",
963 | "version": "1.5.2",
964 | "source": {
965 | "type": "git",
966 | "url": "https://github.com/myclabs/DeepCopy.git",
967 | "reference": "da8529775f14f4fdae33f916eb0cf65f6afbddbc"
968 | },
969 | "dist": {
970 | "type": "zip",
971 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/da8529775f14f4fdae33f916eb0cf65f6afbddbc",
972 | "reference": "da8529775f14f4fdae33f916eb0cf65f6afbddbc",
973 | "shasum": ""
974 | },
975 | "require": {
976 | "php": ">=5.4.0"
977 | },
978 | "require-dev": {
979 | "doctrine/collections": "1.*",
980 | "phpunit/phpunit": "~4.1"
981 | },
982 | "type": "library",
983 | "autoload": {
984 | "psr-4": {
985 | "DeepCopy\\": "src/DeepCopy/"
986 | }
987 | },
988 | "notification-url": "https://packagist.org/downloads/",
989 | "license": [
990 | "MIT"
991 | ],
992 | "description": "Create deep copies (clones) of your objects",
993 | "homepage": "https://github.com/myclabs/DeepCopy",
994 | "keywords": [
995 | "clone",
996 | "copy",
997 | "duplicate",
998 | "object",
999 | "object graph"
1000 | ],
1001 | "time": "2016-09-06 16:07:05"
1002 | },
1003 | {
1004 | "name": "nesbot/carbon",
1005 | "version": "1.21.0",
1006 | "source": {
1007 | "type": "git",
1008 | "url": "https://github.com/briannesbitt/Carbon.git",
1009 | "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7"
1010 | },
1011 | "dist": {
1012 | "type": "zip",
1013 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7b08ec6f75791e130012f206e3f7b0e76e18e3d7",
1014 | "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7",
1015 | "shasum": ""
1016 | },
1017 | "require": {
1018 | "php": ">=5.3.0",
1019 | "symfony/translation": "~2.6|~3.0"
1020 | },
1021 | "require-dev": {
1022 | "phpunit/phpunit": "~4.0|~5.0"
1023 | },
1024 | "type": "library",
1025 | "autoload": {
1026 | "psr-4": {
1027 | "Carbon\\": "src/Carbon/"
1028 | }
1029 | },
1030 | "notification-url": "https://packagist.org/downloads/",
1031 | "license": [
1032 | "MIT"
1033 | ],
1034 | "authors": [
1035 | {
1036 | "name": "Brian Nesbitt",
1037 | "email": "brian@nesbot.com",
1038 | "homepage": "http://nesbot.com"
1039 | }
1040 | ],
1041 | "description": "A simple API extension for DateTime.",
1042 | "homepage": "http://carbon.nesbot.com",
1043 | "keywords": [
1044 | "date",
1045 | "datetime",
1046 | "time"
1047 | ],
1048 | "time": "2015-11-04 20:07:17"
1049 | },
1050 | {
1051 | "name": "nikic/php-parser",
1052 | "version": "v2.1.0",
1053 | "source": {
1054 | "type": "git",
1055 | "url": "https://github.com/nikic/PHP-Parser.git",
1056 | "reference": "47b254ea51f1d6d5dc04b9b299e88346bf2369e3"
1057 | },
1058 | "dist": {
1059 | "type": "zip",
1060 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/47b254ea51f1d6d5dc04b9b299e88346bf2369e3",
1061 | "reference": "47b254ea51f1d6d5dc04b9b299e88346bf2369e3",
1062 | "shasum": ""
1063 | },
1064 | "require": {
1065 | "ext-tokenizer": "*",
1066 | "php": ">=5.4"
1067 | },
1068 | "require-dev": {
1069 | "phpunit/phpunit": "~4.0"
1070 | },
1071 | "bin": [
1072 | "bin/php-parse"
1073 | ],
1074 | "type": "library",
1075 | "extra": {
1076 | "branch-alias": {
1077 | "dev-master": "2.1-dev"
1078 | }
1079 | },
1080 | "autoload": {
1081 | "psr-4": {
1082 | "PhpParser\\": "lib/PhpParser"
1083 | }
1084 | },
1085 | "notification-url": "https://packagist.org/downloads/",
1086 | "license": [
1087 | "BSD-3-Clause"
1088 | ],
1089 | "authors": [
1090 | {
1091 | "name": "Nikita Popov"
1092 | }
1093 | ],
1094 | "description": "A PHP parser written in PHP",
1095 | "keywords": [
1096 | "parser",
1097 | "php"
1098 | ],
1099 | "time": "2016-04-19 13:41:41"
1100 | },
1101 | {
1102 | "name": "paragonie/random_compat",
1103 | "version": "v2.0.2",
1104 | "source": {
1105 | "type": "git",
1106 | "url": "https://github.com/paragonie/random_compat.git",
1107 | "reference": "088c04e2f261c33bed6ca5245491cfca69195ccf"
1108 | },
1109 | "dist": {
1110 | "type": "zip",
1111 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/088c04e2f261c33bed6ca5245491cfca69195ccf",
1112 | "reference": "088c04e2f261c33bed6ca5245491cfca69195ccf",
1113 | "shasum": ""
1114 | },
1115 | "require": {
1116 | "php": ">=5.2.0"
1117 | },
1118 | "require-dev": {
1119 | "phpunit/phpunit": "4.*|5.*"
1120 | },
1121 | "suggest": {
1122 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
1123 | },
1124 | "type": "library",
1125 | "autoload": {
1126 | "files": [
1127 | "lib/random.php"
1128 | ]
1129 | },
1130 | "notification-url": "https://packagist.org/downloads/",
1131 | "license": [
1132 | "MIT"
1133 | ],
1134 | "authors": [
1135 | {
1136 | "name": "Paragon Initiative Enterprises",
1137 | "email": "security@paragonie.com",
1138 | "homepage": "https://paragonie.com"
1139 | }
1140 | ],
1141 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
1142 | "keywords": [
1143 | "csprng",
1144 | "pseudorandom",
1145 | "random"
1146 | ],
1147 | "time": "2016-04-03 06:00:07"
1148 | },
1149 | {
1150 | "name": "phpdocumentor/reflection-common",
1151 | "version": "1.0",
1152 | "source": {
1153 | "type": "git",
1154 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
1155 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c"
1156 | },
1157 | "dist": {
1158 | "type": "zip",
1159 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
1160 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
1161 | "shasum": ""
1162 | },
1163 | "require": {
1164 | "php": ">=5.5"
1165 | },
1166 | "require-dev": {
1167 | "phpunit/phpunit": "^4.6"
1168 | },
1169 | "type": "library",
1170 | "extra": {
1171 | "branch-alias": {
1172 | "dev-master": "1.0.x-dev"
1173 | }
1174 | },
1175 | "autoload": {
1176 | "psr-4": {
1177 | "phpDocumentor\\Reflection\\": [
1178 | "src"
1179 | ]
1180 | }
1181 | },
1182 | "notification-url": "https://packagist.org/downloads/",
1183 | "license": [
1184 | "MIT"
1185 | ],
1186 | "authors": [
1187 | {
1188 | "name": "Jaap van Otterdijk",
1189 | "email": "opensource@ijaap.nl"
1190 | }
1191 | ],
1192 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
1193 | "homepage": "http://www.phpdoc.org",
1194 | "keywords": [
1195 | "FQSEN",
1196 | "phpDocumentor",
1197 | "phpdoc",
1198 | "reflection",
1199 | "static analysis"
1200 | ],
1201 | "time": "2015-12-27 11:43:31"
1202 | },
1203 | {
1204 | "name": "phpdocumentor/reflection-docblock",
1205 | "version": "3.1.0",
1206 | "source": {
1207 | "type": "git",
1208 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
1209 | "reference": "9270140b940ff02e58ec577c237274e92cd40cdd"
1210 | },
1211 | "dist": {
1212 | "type": "zip",
1213 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd",
1214 | "reference": "9270140b940ff02e58ec577c237274e92cd40cdd",
1215 | "shasum": ""
1216 | },
1217 | "require": {
1218 | "php": ">=5.5",
1219 | "phpdocumentor/reflection-common": "^1.0@dev",
1220 | "phpdocumentor/type-resolver": "^0.2.0",
1221 | "webmozart/assert": "^1.0"
1222 | },
1223 | "require-dev": {
1224 | "mockery/mockery": "^0.9.4",
1225 | "phpunit/phpunit": "^4.4"
1226 | },
1227 | "type": "library",
1228 | "autoload": {
1229 | "psr-4": {
1230 | "phpDocumentor\\Reflection\\": [
1231 | "src/"
1232 | ]
1233 | }
1234 | },
1235 | "notification-url": "https://packagist.org/downloads/",
1236 | "license": [
1237 | "MIT"
1238 | ],
1239 | "authors": [
1240 | {
1241 | "name": "Mike van Riel",
1242 | "email": "me@mikevanriel.com"
1243 | }
1244 | ],
1245 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
1246 | "time": "2016-06-10 09:48:41"
1247 | },
1248 | {
1249 | "name": "phpdocumentor/type-resolver",
1250 | "version": "0.2",
1251 | "source": {
1252 | "type": "git",
1253 | "url": "https://github.com/phpDocumentor/TypeResolver.git",
1254 | "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443"
1255 | },
1256 | "dist": {
1257 | "type": "zip",
1258 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443",
1259 | "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443",
1260 | "shasum": ""
1261 | },
1262 | "require": {
1263 | "php": ">=5.5",
1264 | "phpdocumentor/reflection-common": "^1.0"
1265 | },
1266 | "require-dev": {
1267 | "mockery/mockery": "^0.9.4",
1268 | "phpunit/phpunit": "^5.2||^4.8.24"
1269 | },
1270 | "type": "library",
1271 | "extra": {
1272 | "branch-alias": {
1273 | "dev-master": "1.0.x-dev"
1274 | }
1275 | },
1276 | "autoload": {
1277 | "psr-4": {
1278 | "phpDocumentor\\Reflection\\": [
1279 | "src/"
1280 | ]
1281 | }
1282 | },
1283 | "notification-url": "https://packagist.org/downloads/",
1284 | "license": [
1285 | "MIT"
1286 | ],
1287 | "authors": [
1288 | {
1289 | "name": "Mike van Riel",
1290 | "email": "me@mikevanriel.com"
1291 | }
1292 | ],
1293 | "time": "2016-06-10 07:14:17"
1294 | },
1295 | {
1296 | "name": "phpspec/prophecy",
1297 | "version": "v1.6.1",
1298 | "source": {
1299 | "type": "git",
1300 | "url": "https://github.com/phpspec/prophecy.git",
1301 | "reference": "58a8137754bc24b25740d4281399a4a3596058e0"
1302 | },
1303 | "dist": {
1304 | "type": "zip",
1305 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/58a8137754bc24b25740d4281399a4a3596058e0",
1306 | "reference": "58a8137754bc24b25740d4281399a4a3596058e0",
1307 | "shasum": ""
1308 | },
1309 | "require": {
1310 | "doctrine/instantiator": "^1.0.2",
1311 | "php": "^5.3|^7.0",
1312 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
1313 | "sebastian/comparator": "^1.1",
1314 | "sebastian/recursion-context": "^1.0"
1315 | },
1316 | "require-dev": {
1317 | "phpspec/phpspec": "^2.0"
1318 | },
1319 | "type": "library",
1320 | "extra": {
1321 | "branch-alias": {
1322 | "dev-master": "1.6.x-dev"
1323 | }
1324 | },
1325 | "autoload": {
1326 | "psr-0": {
1327 | "Prophecy\\": "src/"
1328 | }
1329 | },
1330 | "notification-url": "https://packagist.org/downloads/",
1331 | "license": [
1332 | "MIT"
1333 | ],
1334 | "authors": [
1335 | {
1336 | "name": "Konstantin Kudryashov",
1337 | "email": "ever.zet@gmail.com",
1338 | "homepage": "http://everzet.com"
1339 | },
1340 | {
1341 | "name": "Marcello Duarte",
1342 | "email": "marcello.duarte@gmail.com"
1343 | }
1344 | ],
1345 | "description": "Highly opinionated mocking framework for PHP 5.3+",
1346 | "homepage": "https://github.com/phpspec/prophecy",
1347 | "keywords": [
1348 | "Double",
1349 | "Dummy",
1350 | "fake",
1351 | "mock",
1352 | "spy",
1353 | "stub"
1354 | ],
1355 | "time": "2016-06-07 08:13:47"
1356 | },
1357 | {
1358 | "name": "phpunit/php-code-coverage",
1359 | "version": "4.0.1",
1360 | "source": {
1361 | "type": "git",
1362 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1363 | "reference": "5f3f7e736d6319d5f1fc402aff8b026da26709a3"
1364 | },
1365 | "dist": {
1366 | "type": "zip",
1367 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/5f3f7e736d6319d5f1fc402aff8b026da26709a3",
1368 | "reference": "5f3f7e736d6319d5f1fc402aff8b026da26709a3",
1369 | "shasum": ""
1370 | },
1371 | "require": {
1372 | "php": "^5.6 || ^7.0",
1373 | "phpunit/php-file-iterator": "~1.3",
1374 | "phpunit/php-text-template": "~1.2",
1375 | "phpunit/php-token-stream": "^1.4.2",
1376 | "sebastian/code-unit-reverse-lookup": "~1.0",
1377 | "sebastian/environment": "^1.3.2 || ^2.0",
1378 | "sebastian/version": "~1.0|~2.0"
1379 | },
1380 | "require-dev": {
1381 | "ext-xdebug": ">=2.1.4",
1382 | "phpunit/phpunit": "^5.4"
1383 | },
1384 | "suggest": {
1385 | "ext-dom": "*",
1386 | "ext-xdebug": ">=2.4.0",
1387 | "ext-xmlwriter": "*"
1388 | },
1389 | "type": "library",
1390 | "extra": {
1391 | "branch-alias": {
1392 | "dev-master": "4.0.x-dev"
1393 | }
1394 | },
1395 | "autoload": {
1396 | "classmap": [
1397 | "src/"
1398 | ]
1399 | },
1400 | "notification-url": "https://packagist.org/downloads/",
1401 | "license": [
1402 | "BSD-3-Clause"
1403 | ],
1404 | "authors": [
1405 | {
1406 | "name": "Sebastian Bergmann",
1407 | "email": "sb@sebastian-bergmann.de",
1408 | "role": "lead"
1409 | }
1410 | ],
1411 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
1412 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
1413 | "keywords": [
1414 | "coverage",
1415 | "testing",
1416 | "xunit"
1417 | ],
1418 | "time": "2016-07-26 14:39:29"
1419 | },
1420 | {
1421 | "name": "phpunit/php-file-iterator",
1422 | "version": "1.4.1",
1423 | "source": {
1424 | "type": "git",
1425 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
1426 | "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
1427 | },
1428 | "dist": {
1429 | "type": "zip",
1430 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
1431 | "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
1432 | "shasum": ""
1433 | },
1434 | "require": {
1435 | "php": ">=5.3.3"
1436 | },
1437 | "type": "library",
1438 | "extra": {
1439 | "branch-alias": {
1440 | "dev-master": "1.4.x-dev"
1441 | }
1442 | },
1443 | "autoload": {
1444 | "classmap": [
1445 | "src/"
1446 | ]
1447 | },
1448 | "notification-url": "https://packagist.org/downloads/",
1449 | "license": [
1450 | "BSD-3-Clause"
1451 | ],
1452 | "authors": [
1453 | {
1454 | "name": "Sebastian Bergmann",
1455 | "email": "sb@sebastian-bergmann.de",
1456 | "role": "lead"
1457 | }
1458 | ],
1459 | "description": "FilterIterator implementation that filters files based on a list of suffixes.",
1460 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
1461 | "keywords": [
1462 | "filesystem",
1463 | "iterator"
1464 | ],
1465 | "time": "2015-06-21 13:08:43"
1466 | },
1467 | {
1468 | "name": "phpunit/php-text-template",
1469 | "version": "1.2.1",
1470 | "source": {
1471 | "type": "git",
1472 | "url": "https://github.com/sebastianbergmann/php-text-template.git",
1473 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
1474 | },
1475 | "dist": {
1476 | "type": "zip",
1477 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1478 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1479 | "shasum": ""
1480 | },
1481 | "require": {
1482 | "php": ">=5.3.3"
1483 | },
1484 | "type": "library",
1485 | "autoload": {
1486 | "classmap": [
1487 | "src/"
1488 | ]
1489 | },
1490 | "notification-url": "https://packagist.org/downloads/",
1491 | "license": [
1492 | "BSD-3-Clause"
1493 | ],
1494 | "authors": [
1495 | {
1496 | "name": "Sebastian Bergmann",
1497 | "email": "sebastian@phpunit.de",
1498 | "role": "lead"
1499 | }
1500 | ],
1501 | "description": "Simple template engine.",
1502 | "homepage": "https://github.com/sebastianbergmann/php-text-template/",
1503 | "keywords": [
1504 | "template"
1505 | ],
1506 | "time": "2015-06-21 13:50:34"
1507 | },
1508 | {
1509 | "name": "phpunit/php-timer",
1510 | "version": "1.0.8",
1511 | "source": {
1512 | "type": "git",
1513 | "url": "https://github.com/sebastianbergmann/php-timer.git",
1514 | "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260"
1515 | },
1516 | "dist": {
1517 | "type": "zip",
1518 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260",
1519 | "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260",
1520 | "shasum": ""
1521 | },
1522 | "require": {
1523 | "php": ">=5.3.3"
1524 | },
1525 | "require-dev": {
1526 | "phpunit/phpunit": "~4|~5"
1527 | },
1528 | "type": "library",
1529 | "autoload": {
1530 | "classmap": [
1531 | "src/"
1532 | ]
1533 | },
1534 | "notification-url": "https://packagist.org/downloads/",
1535 | "license": [
1536 | "BSD-3-Clause"
1537 | ],
1538 | "authors": [
1539 | {
1540 | "name": "Sebastian Bergmann",
1541 | "email": "sb@sebastian-bergmann.de",
1542 | "role": "lead"
1543 | }
1544 | ],
1545 | "description": "Utility class for timing",
1546 | "homepage": "https://github.com/sebastianbergmann/php-timer/",
1547 | "keywords": [
1548 | "timer"
1549 | ],
1550 | "time": "2016-05-12 18:03:57"
1551 | },
1552 | {
1553 | "name": "phpunit/php-token-stream",
1554 | "version": "1.4.8",
1555 | "source": {
1556 | "type": "git",
1557 | "url": "https://github.com/sebastianbergmann/php-token-stream.git",
1558 | "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da"
1559 | },
1560 | "dist": {
1561 | "type": "zip",
1562 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
1563 | "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da",
1564 | "shasum": ""
1565 | },
1566 | "require": {
1567 | "ext-tokenizer": "*",
1568 | "php": ">=5.3.3"
1569 | },
1570 | "require-dev": {
1571 | "phpunit/phpunit": "~4.2"
1572 | },
1573 | "type": "library",
1574 | "extra": {
1575 | "branch-alias": {
1576 | "dev-master": "1.4-dev"
1577 | }
1578 | },
1579 | "autoload": {
1580 | "classmap": [
1581 | "src/"
1582 | ]
1583 | },
1584 | "notification-url": "https://packagist.org/downloads/",
1585 | "license": [
1586 | "BSD-3-Clause"
1587 | ],
1588 | "authors": [
1589 | {
1590 | "name": "Sebastian Bergmann",
1591 | "email": "sebastian@phpunit.de"
1592 | }
1593 | ],
1594 | "description": "Wrapper around PHP's tokenizer extension.",
1595 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
1596 | "keywords": [
1597 | "tokenizer"
1598 | ],
1599 | "time": "2015-09-15 10:49:45"
1600 | },
1601 | {
1602 | "name": "phpunit/phpunit",
1603 | "version": "5.5.4",
1604 | "source": {
1605 | "type": "git",
1606 | "url": "https://github.com/sebastianbergmann/phpunit.git",
1607 | "reference": "3e6e88e56c912133de6e99b87728cca7ed70c5f5"
1608 | },
1609 | "dist": {
1610 | "type": "zip",
1611 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3e6e88e56c912133de6e99b87728cca7ed70c5f5",
1612 | "reference": "3e6e88e56c912133de6e99b87728cca7ed70c5f5",
1613 | "shasum": ""
1614 | },
1615 | "require": {
1616 | "ext-dom": "*",
1617 | "ext-json": "*",
1618 | "ext-pcre": "*",
1619 | "ext-reflection": "*",
1620 | "ext-spl": "*",
1621 | "myclabs/deep-copy": "~1.3",
1622 | "php": "^5.6 || ^7.0",
1623 | "phpspec/prophecy": "^1.3.1",
1624 | "phpunit/php-code-coverage": "^4.0.1",
1625 | "phpunit/php-file-iterator": "~1.4",
1626 | "phpunit/php-text-template": "~1.2",
1627 | "phpunit/php-timer": "^1.0.6",
1628 | "phpunit/phpunit-mock-objects": "^3.2",
1629 | "sebastian/comparator": "~1.1",
1630 | "sebastian/diff": "~1.2",
1631 | "sebastian/environment": "^1.3 || ^2.0",
1632 | "sebastian/exporter": "~1.2",
1633 | "sebastian/global-state": "~1.0",
1634 | "sebastian/object-enumerator": "~1.0",
1635 | "sebastian/resource-operations": "~1.0",
1636 | "sebastian/version": "~1.0|~2.0",
1637 | "symfony/yaml": "~2.1|~3.0"
1638 | },
1639 | "conflict": {
1640 | "phpdocumentor/reflection-docblock": "3.0.2"
1641 | },
1642 | "suggest": {
1643 | "phpunit/php-invoker": "~1.1"
1644 | },
1645 | "bin": [
1646 | "phpunit"
1647 | ],
1648 | "type": "library",
1649 | "extra": {
1650 | "branch-alias": {
1651 | "dev-master": "5.5.x-dev"
1652 | }
1653 | },
1654 | "autoload": {
1655 | "classmap": [
1656 | "src/"
1657 | ]
1658 | },
1659 | "notification-url": "https://packagist.org/downloads/",
1660 | "license": [
1661 | "BSD-3-Clause"
1662 | ],
1663 | "authors": [
1664 | {
1665 | "name": "Sebastian Bergmann",
1666 | "email": "sebastian@phpunit.de",
1667 | "role": "lead"
1668 | }
1669 | ],
1670 | "description": "The PHP Unit Testing framework.",
1671 | "homepage": "https://phpunit.de/",
1672 | "keywords": [
1673 | "phpunit",
1674 | "testing",
1675 | "xunit"
1676 | ],
1677 | "time": "2016-08-26 07:11:44"
1678 | },
1679 | {
1680 | "name": "phpunit/phpunit-mock-objects",
1681 | "version": "3.2.7",
1682 | "source": {
1683 | "type": "git",
1684 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1685 | "reference": "546898a2c0c356ef2891b39dd7d07f5d82c8ed0a"
1686 | },
1687 | "dist": {
1688 | "type": "zip",
1689 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/546898a2c0c356ef2891b39dd7d07f5d82c8ed0a",
1690 | "reference": "546898a2c0c356ef2891b39dd7d07f5d82c8ed0a",
1691 | "shasum": ""
1692 | },
1693 | "require": {
1694 | "doctrine/instantiator": "^1.0.2",
1695 | "php": "^5.6 || ^7.0",
1696 | "phpunit/php-text-template": "^1.2",
1697 | "sebastian/exporter": "^1.2"
1698 | },
1699 | "conflict": {
1700 | "phpunit/phpunit": "<5.4.0"
1701 | },
1702 | "require-dev": {
1703 | "phpunit/phpunit": "^5.4"
1704 | },
1705 | "suggest": {
1706 | "ext-soap": "*"
1707 | },
1708 | "type": "library",
1709 | "extra": {
1710 | "branch-alias": {
1711 | "dev-master": "3.2.x-dev"
1712 | }
1713 | },
1714 | "autoload": {
1715 | "classmap": [
1716 | "src/"
1717 | ]
1718 | },
1719 | "notification-url": "https://packagist.org/downloads/",
1720 | "license": [
1721 | "BSD-3-Clause"
1722 | ],
1723 | "authors": [
1724 | {
1725 | "name": "Sebastian Bergmann",
1726 | "email": "sb@sebastian-bergmann.de",
1727 | "role": "lead"
1728 | }
1729 | ],
1730 | "description": "Mock Object library for PHPUnit",
1731 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
1732 | "keywords": [
1733 | "mock",
1734 | "xunit"
1735 | ],
1736 | "time": "2016-09-06 16:07:45"
1737 | },
1738 | {
1739 | "name": "psr/http-message",
1740 | "version": "1.0.1",
1741 | "source": {
1742 | "type": "git",
1743 | "url": "https://github.com/php-fig/http-message.git",
1744 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
1745 | },
1746 | "dist": {
1747 | "type": "zip",
1748 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
1749 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
1750 | "shasum": ""
1751 | },
1752 | "require": {
1753 | "php": ">=5.3.0"
1754 | },
1755 | "type": "library",
1756 | "extra": {
1757 | "branch-alias": {
1758 | "dev-master": "1.0.x-dev"
1759 | }
1760 | },
1761 | "autoload": {
1762 | "psr-4": {
1763 | "Psr\\Http\\Message\\": "src/"
1764 | }
1765 | },
1766 | "notification-url": "https://packagist.org/downloads/",
1767 | "license": [
1768 | "MIT"
1769 | ],
1770 | "authors": [
1771 | {
1772 | "name": "PHP-FIG",
1773 | "homepage": "http://www.php-fig.org/"
1774 | }
1775 | ],
1776 | "description": "Common interface for HTTP messages",
1777 | "homepage": "https://github.com/php-fig/http-message",
1778 | "keywords": [
1779 | "http",
1780 | "http-message",
1781 | "psr",
1782 | "psr-7",
1783 | "request",
1784 | "response"
1785 | ],
1786 | "time": "2016-08-06 14:39:51"
1787 | },
1788 | {
1789 | "name": "psr/log",
1790 | "version": "1.0.0",
1791 | "source": {
1792 | "type": "git",
1793 | "url": "https://github.com/php-fig/log.git",
1794 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
1795 | },
1796 | "dist": {
1797 | "type": "zip",
1798 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
1799 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
1800 | "shasum": ""
1801 | },
1802 | "type": "library",
1803 | "autoload": {
1804 | "psr-0": {
1805 | "Psr\\Log\\": ""
1806 | }
1807 | },
1808 | "notification-url": "https://packagist.org/downloads/",
1809 | "license": [
1810 | "MIT"
1811 | ],
1812 | "authors": [
1813 | {
1814 | "name": "PHP-FIG",
1815 | "homepage": "http://www.php-fig.org/"
1816 | }
1817 | ],
1818 | "description": "Common interface for logging libraries",
1819 | "keywords": [
1820 | "log",
1821 | "psr",
1822 | "psr-3"
1823 | ],
1824 | "time": "2012-12-21 11:40:51"
1825 | },
1826 | {
1827 | "name": "psy/psysh",
1828 | "version": "v0.7.2",
1829 | "source": {
1830 | "type": "git",
1831 | "url": "https://github.com/bobthecow/psysh.git",
1832 | "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280"
1833 | },
1834 | "dist": {
1835 | "type": "zip",
1836 | "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e64e10b20f8d229cac76399e1f3edddb57a0f280",
1837 | "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280",
1838 | "shasum": ""
1839 | },
1840 | "require": {
1841 | "dnoegel/php-xdg-base-dir": "0.1",
1842 | "jakub-onderka/php-console-highlighter": "0.3.*",
1843 | "nikic/php-parser": "^1.2.1|~2.0",
1844 | "php": ">=5.3.9",
1845 | "symfony/console": "~2.3.10|^2.4.2|~3.0",
1846 | "symfony/var-dumper": "~2.7|~3.0"
1847 | },
1848 | "require-dev": {
1849 | "fabpot/php-cs-fixer": "~1.5",
1850 | "phpunit/phpunit": "~3.7|~4.0|~5.0",
1851 | "squizlabs/php_codesniffer": "~2.0",
1852 | "symfony/finder": "~2.1|~3.0"
1853 | },
1854 | "suggest": {
1855 | "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
1856 | "ext-pdo-sqlite": "The doc command requires SQLite to work.",
1857 | "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.",
1858 | "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history."
1859 | },
1860 | "bin": [
1861 | "bin/psysh"
1862 | ],
1863 | "type": "library",
1864 | "extra": {
1865 | "branch-alias": {
1866 | "dev-develop": "0.8.x-dev"
1867 | }
1868 | },
1869 | "autoload": {
1870 | "files": [
1871 | "src/Psy/functions.php"
1872 | ],
1873 | "psr-4": {
1874 | "Psy\\": "src/Psy/"
1875 | }
1876 | },
1877 | "notification-url": "https://packagist.org/downloads/",
1878 | "license": [
1879 | "MIT"
1880 | ],
1881 | "authors": [
1882 | {
1883 | "name": "Justin Hileman",
1884 | "email": "justin@justinhileman.info",
1885 | "homepage": "http://justinhileman.com"
1886 | }
1887 | ],
1888 | "description": "An interactive shell for modern PHP.",
1889 | "homepage": "http://psysh.org",
1890 | "keywords": [
1891 | "REPL",
1892 | "console",
1893 | "interactive",
1894 | "shell"
1895 | ],
1896 | "time": "2016-03-09 05:03:14"
1897 | },
1898 | {
1899 | "name": "ramsey/uuid",
1900 | "version": "3.5.0",
1901 | "source": {
1902 | "type": "git",
1903 | "url": "https://github.com/ramsey/uuid.git",
1904 | "reference": "a6d15c8618ea3951fd54d34e326b68d3d0bc0786"
1905 | },
1906 | "dist": {
1907 | "type": "zip",
1908 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/a6d15c8618ea3951fd54d34e326b68d3d0bc0786",
1909 | "reference": "a6d15c8618ea3951fd54d34e326b68d3d0bc0786",
1910 | "shasum": ""
1911 | },
1912 | "require": {
1913 | "paragonie/random_compat": "^1.0|^2.0",
1914 | "php": ">=5.4"
1915 | },
1916 | "replace": {
1917 | "rhumsaa/uuid": "self.version"
1918 | },
1919 | "require-dev": {
1920 | "apigen/apigen": "^4.1",
1921 | "codeception/aspect-mock": "1.0.0",
1922 | "goaop/framework": "1.0.0-alpha.2",
1923 | "ircmaxell/random-lib": "^1.1",
1924 | "jakub-onderka/php-parallel-lint": "^0.9.0",
1925 | "mockery/mockery": "^0.9.4",
1926 | "moontoast/math": "^1.1",
1927 | "phpunit/phpunit": "^4.7|>=5.0 <5.4",
1928 | "satooshi/php-coveralls": "^0.6.1",
1929 | "squizlabs/php_codesniffer": "^2.3"
1930 | },
1931 | "suggest": {
1932 | "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
1933 | "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
1934 | "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
1935 | "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
1936 | "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
1937 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
1938 | },
1939 | "type": "library",
1940 | "extra": {
1941 | "branch-alias": {
1942 | "dev-master": "3.x-dev"
1943 | }
1944 | },
1945 | "autoload": {
1946 | "psr-4": {
1947 | "Ramsey\\Uuid\\": "src/"
1948 | }
1949 | },
1950 | "notification-url": "https://packagist.org/downloads/",
1951 | "license": [
1952 | "MIT"
1953 | ],
1954 | "authors": [
1955 | {
1956 | "name": "Marijn Huizendveld",
1957 | "email": "marijn.huizendveld@gmail.com"
1958 | },
1959 | {
1960 | "name": "Thibaud Fabre",
1961 | "email": "thibaud@aztech.io"
1962 | },
1963 | {
1964 | "name": "Ben Ramsey",
1965 | "email": "ben@benramsey.com",
1966 | "homepage": "https://benramsey.com"
1967 | }
1968 | ],
1969 | "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
1970 | "homepage": "https://github.com/ramsey/uuid",
1971 | "keywords": [
1972 | "guid",
1973 | "identifier",
1974 | "uuid"
1975 | ],
1976 | "time": "2016-08-02 18:39:32"
1977 | },
1978 | {
1979 | "name": "sebastian/code-unit-reverse-lookup",
1980 | "version": "1.0.0",
1981 | "source": {
1982 | "type": "git",
1983 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1984 | "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe"
1985 | },
1986 | "dist": {
1987 | "type": "zip",
1988 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/c36f5e7cfce482fde5bf8d10d41a53591e0198fe",
1989 | "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe",
1990 | "shasum": ""
1991 | },
1992 | "require": {
1993 | "php": ">=5.6"
1994 | },
1995 | "require-dev": {
1996 | "phpunit/phpunit": "~5"
1997 | },
1998 | "type": "library",
1999 | "extra": {
2000 | "branch-alias": {
2001 | "dev-master": "1.0.x-dev"
2002 | }
2003 | },
2004 | "autoload": {
2005 | "classmap": [
2006 | "src/"
2007 | ]
2008 | },
2009 | "notification-url": "https://packagist.org/downloads/",
2010 | "license": [
2011 | "BSD-3-Clause"
2012 | ],
2013 | "authors": [
2014 | {
2015 | "name": "Sebastian Bergmann",
2016 | "email": "sebastian@phpunit.de"
2017 | }
2018 | ],
2019 | "description": "Looks up which function or method a line of code belongs to",
2020 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
2021 | "time": "2016-02-13 06:45:14"
2022 | },
2023 | {
2024 | "name": "sebastian/comparator",
2025 | "version": "1.2.0",
2026 | "source": {
2027 | "type": "git",
2028 | "url": "https://github.com/sebastianbergmann/comparator.git",
2029 | "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
2030 | },
2031 | "dist": {
2032 | "type": "zip",
2033 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
2034 | "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
2035 | "shasum": ""
2036 | },
2037 | "require": {
2038 | "php": ">=5.3.3",
2039 | "sebastian/diff": "~1.2",
2040 | "sebastian/exporter": "~1.2"
2041 | },
2042 | "require-dev": {
2043 | "phpunit/phpunit": "~4.4"
2044 | },
2045 | "type": "library",
2046 | "extra": {
2047 | "branch-alias": {
2048 | "dev-master": "1.2.x-dev"
2049 | }
2050 | },
2051 | "autoload": {
2052 | "classmap": [
2053 | "src/"
2054 | ]
2055 | },
2056 | "notification-url": "https://packagist.org/downloads/",
2057 | "license": [
2058 | "BSD-3-Clause"
2059 | ],
2060 | "authors": [
2061 | {
2062 | "name": "Jeff Welch",
2063 | "email": "whatthejeff@gmail.com"
2064 | },
2065 | {
2066 | "name": "Volker Dusch",
2067 | "email": "github@wallbash.com"
2068 | },
2069 | {
2070 | "name": "Bernhard Schussek",
2071 | "email": "bschussek@2bepublished.at"
2072 | },
2073 | {
2074 | "name": "Sebastian Bergmann",
2075 | "email": "sebastian@phpunit.de"
2076 | }
2077 | ],
2078 | "description": "Provides the functionality to compare PHP values for equality",
2079 | "homepage": "http://www.github.com/sebastianbergmann/comparator",
2080 | "keywords": [
2081 | "comparator",
2082 | "compare",
2083 | "equality"
2084 | ],
2085 | "time": "2015-07-26 15:48:44"
2086 | },
2087 | {
2088 | "name": "sebastian/diff",
2089 | "version": "1.4.1",
2090 | "source": {
2091 | "type": "git",
2092 | "url": "https://github.com/sebastianbergmann/diff.git",
2093 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
2094 | },
2095 | "dist": {
2096 | "type": "zip",
2097 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
2098 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
2099 | "shasum": ""
2100 | },
2101 | "require": {
2102 | "php": ">=5.3.3"
2103 | },
2104 | "require-dev": {
2105 | "phpunit/phpunit": "~4.8"
2106 | },
2107 | "type": "library",
2108 | "extra": {
2109 | "branch-alias": {
2110 | "dev-master": "1.4-dev"
2111 | }
2112 | },
2113 | "autoload": {
2114 | "classmap": [
2115 | "src/"
2116 | ]
2117 | },
2118 | "notification-url": "https://packagist.org/downloads/",
2119 | "license": [
2120 | "BSD-3-Clause"
2121 | ],
2122 | "authors": [
2123 | {
2124 | "name": "Kore Nordmann",
2125 | "email": "mail@kore-nordmann.de"
2126 | },
2127 | {
2128 | "name": "Sebastian Bergmann",
2129 | "email": "sebastian@phpunit.de"
2130 | }
2131 | ],
2132 | "description": "Diff implementation",
2133 | "homepage": "https://github.com/sebastianbergmann/diff",
2134 | "keywords": [
2135 | "diff"
2136 | ],
2137 | "time": "2015-12-08 07:14:41"
2138 | },
2139 | {
2140 | "name": "sebastian/environment",
2141 | "version": "1.3.8",
2142 | "source": {
2143 | "type": "git",
2144 | "url": "https://github.com/sebastianbergmann/environment.git",
2145 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
2146 | },
2147 | "dist": {
2148 | "type": "zip",
2149 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
2150 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
2151 | "shasum": ""
2152 | },
2153 | "require": {
2154 | "php": "^5.3.3 || ^7.0"
2155 | },
2156 | "require-dev": {
2157 | "phpunit/phpunit": "^4.8 || ^5.0"
2158 | },
2159 | "type": "library",
2160 | "extra": {
2161 | "branch-alias": {
2162 | "dev-master": "1.3.x-dev"
2163 | }
2164 | },
2165 | "autoload": {
2166 | "classmap": [
2167 | "src/"
2168 | ]
2169 | },
2170 | "notification-url": "https://packagist.org/downloads/",
2171 | "license": [
2172 | "BSD-3-Clause"
2173 | ],
2174 | "authors": [
2175 | {
2176 | "name": "Sebastian Bergmann",
2177 | "email": "sebastian@phpunit.de"
2178 | }
2179 | ],
2180 | "description": "Provides functionality to handle HHVM/PHP environments",
2181 | "homepage": "http://www.github.com/sebastianbergmann/environment",
2182 | "keywords": [
2183 | "Xdebug",
2184 | "environment",
2185 | "hhvm"
2186 | ],
2187 | "time": "2016-08-18 05:49:44"
2188 | },
2189 | {
2190 | "name": "sebastian/exporter",
2191 | "version": "1.2.2",
2192 | "source": {
2193 | "type": "git",
2194 | "url": "https://github.com/sebastianbergmann/exporter.git",
2195 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
2196 | },
2197 | "dist": {
2198 | "type": "zip",
2199 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
2200 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
2201 | "shasum": ""
2202 | },
2203 | "require": {
2204 | "php": ">=5.3.3",
2205 | "sebastian/recursion-context": "~1.0"
2206 | },
2207 | "require-dev": {
2208 | "ext-mbstring": "*",
2209 | "phpunit/phpunit": "~4.4"
2210 | },
2211 | "type": "library",
2212 | "extra": {
2213 | "branch-alias": {
2214 | "dev-master": "1.3.x-dev"
2215 | }
2216 | },
2217 | "autoload": {
2218 | "classmap": [
2219 | "src/"
2220 | ]
2221 | },
2222 | "notification-url": "https://packagist.org/downloads/",
2223 | "license": [
2224 | "BSD-3-Clause"
2225 | ],
2226 | "authors": [
2227 | {
2228 | "name": "Jeff Welch",
2229 | "email": "whatthejeff@gmail.com"
2230 | },
2231 | {
2232 | "name": "Volker Dusch",
2233 | "email": "github@wallbash.com"
2234 | },
2235 | {
2236 | "name": "Bernhard Schussek",
2237 | "email": "bschussek@2bepublished.at"
2238 | },
2239 | {
2240 | "name": "Sebastian Bergmann",
2241 | "email": "sebastian@phpunit.de"
2242 | },
2243 | {
2244 | "name": "Adam Harvey",
2245 | "email": "aharvey@php.net"
2246 | }
2247 | ],
2248 | "description": "Provides the functionality to export PHP variables for visualization",
2249 | "homepage": "http://www.github.com/sebastianbergmann/exporter",
2250 | "keywords": [
2251 | "export",
2252 | "exporter"
2253 | ],
2254 | "time": "2016-06-17 09:04:28"
2255 | },
2256 | {
2257 | "name": "sebastian/global-state",
2258 | "version": "1.1.1",
2259 | "source": {
2260 | "type": "git",
2261 | "url": "https://github.com/sebastianbergmann/global-state.git",
2262 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
2263 | },
2264 | "dist": {
2265 | "type": "zip",
2266 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
2267 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
2268 | "shasum": ""
2269 | },
2270 | "require": {
2271 | "php": ">=5.3.3"
2272 | },
2273 | "require-dev": {
2274 | "phpunit/phpunit": "~4.2"
2275 | },
2276 | "suggest": {
2277 | "ext-uopz": "*"
2278 | },
2279 | "type": "library",
2280 | "extra": {
2281 | "branch-alias": {
2282 | "dev-master": "1.0-dev"
2283 | }
2284 | },
2285 | "autoload": {
2286 | "classmap": [
2287 | "src/"
2288 | ]
2289 | },
2290 | "notification-url": "https://packagist.org/downloads/",
2291 | "license": [
2292 | "BSD-3-Clause"
2293 | ],
2294 | "authors": [
2295 | {
2296 | "name": "Sebastian Bergmann",
2297 | "email": "sebastian@phpunit.de"
2298 | }
2299 | ],
2300 | "description": "Snapshotting of global state",
2301 | "homepage": "http://www.github.com/sebastianbergmann/global-state",
2302 | "keywords": [
2303 | "global state"
2304 | ],
2305 | "time": "2015-10-12 03:26:01"
2306 | },
2307 | {
2308 | "name": "sebastian/object-enumerator",
2309 | "version": "1.0.0",
2310 | "source": {
2311 | "type": "git",
2312 | "url": "https://github.com/sebastianbergmann/object-enumerator.git",
2313 | "reference": "d4ca2fb70344987502567bc50081c03e6192fb26"
2314 | },
2315 | "dist": {
2316 | "type": "zip",
2317 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/d4ca2fb70344987502567bc50081c03e6192fb26",
2318 | "reference": "d4ca2fb70344987502567bc50081c03e6192fb26",
2319 | "shasum": ""
2320 | },
2321 | "require": {
2322 | "php": ">=5.6",
2323 | "sebastian/recursion-context": "~1.0"
2324 | },
2325 | "require-dev": {
2326 | "phpunit/phpunit": "~5"
2327 | },
2328 | "type": "library",
2329 | "extra": {
2330 | "branch-alias": {
2331 | "dev-master": "1.0.x-dev"
2332 | }
2333 | },
2334 | "autoload": {
2335 | "classmap": [
2336 | "src/"
2337 | ]
2338 | },
2339 | "notification-url": "https://packagist.org/downloads/",
2340 | "license": [
2341 | "BSD-3-Clause"
2342 | ],
2343 | "authors": [
2344 | {
2345 | "name": "Sebastian Bergmann",
2346 | "email": "sebastian@phpunit.de"
2347 | }
2348 | ],
2349 | "description": "Traverses array structures and object graphs to enumerate all referenced objects",
2350 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
2351 | "time": "2016-01-28 13:25:10"
2352 | },
2353 | {
2354 | "name": "sebastian/recursion-context",
2355 | "version": "1.0.2",
2356 | "source": {
2357 | "type": "git",
2358 | "url": "https://github.com/sebastianbergmann/recursion-context.git",
2359 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791"
2360 | },
2361 | "dist": {
2362 | "type": "zip",
2363 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791",
2364 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791",
2365 | "shasum": ""
2366 | },
2367 | "require": {
2368 | "php": ">=5.3.3"
2369 | },
2370 | "require-dev": {
2371 | "phpunit/phpunit": "~4.4"
2372 | },
2373 | "type": "library",
2374 | "extra": {
2375 | "branch-alias": {
2376 | "dev-master": "1.0.x-dev"
2377 | }
2378 | },
2379 | "autoload": {
2380 | "classmap": [
2381 | "src/"
2382 | ]
2383 | },
2384 | "notification-url": "https://packagist.org/downloads/",
2385 | "license": [
2386 | "BSD-3-Clause"
2387 | ],
2388 | "authors": [
2389 | {
2390 | "name": "Jeff Welch",
2391 | "email": "whatthejeff@gmail.com"
2392 | },
2393 | {
2394 | "name": "Sebastian Bergmann",
2395 | "email": "sebastian@phpunit.de"
2396 | },
2397 | {
2398 | "name": "Adam Harvey",
2399 | "email": "aharvey@php.net"
2400 | }
2401 | ],
2402 | "description": "Provides functionality to recursively process PHP variables",
2403 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
2404 | "time": "2015-11-11 19:50:13"
2405 | },
2406 | {
2407 | "name": "sebastian/resource-operations",
2408 | "version": "1.0.0",
2409 | "source": {
2410 | "type": "git",
2411 | "url": "https://github.com/sebastianbergmann/resource-operations.git",
2412 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
2413 | },
2414 | "dist": {
2415 | "type": "zip",
2416 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
2417 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
2418 | "shasum": ""
2419 | },
2420 | "require": {
2421 | "php": ">=5.6.0"
2422 | },
2423 | "type": "library",
2424 | "extra": {
2425 | "branch-alias": {
2426 | "dev-master": "1.0.x-dev"
2427 | }
2428 | },
2429 | "autoload": {
2430 | "classmap": [
2431 | "src/"
2432 | ]
2433 | },
2434 | "notification-url": "https://packagist.org/downloads/",
2435 | "license": [
2436 | "BSD-3-Clause"
2437 | ],
2438 | "authors": [
2439 | {
2440 | "name": "Sebastian Bergmann",
2441 | "email": "sebastian@phpunit.de"
2442 | }
2443 | ],
2444 | "description": "Provides a list of PHP built-in functions that operate on resources",
2445 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
2446 | "time": "2015-07-28 20:34:47"
2447 | },
2448 | {
2449 | "name": "sebastian/version",
2450 | "version": "2.0.0",
2451 | "source": {
2452 | "type": "git",
2453 | "url": "https://github.com/sebastianbergmann/version.git",
2454 | "reference": "c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5"
2455 | },
2456 | "dist": {
2457 | "type": "zip",
2458 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5",
2459 | "reference": "c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5",
2460 | "shasum": ""
2461 | },
2462 | "require": {
2463 | "php": ">=5.6"
2464 | },
2465 | "type": "library",
2466 | "extra": {
2467 | "branch-alias": {
2468 | "dev-master": "2.0.x-dev"
2469 | }
2470 | },
2471 | "autoload": {
2472 | "classmap": [
2473 | "src/"
2474 | ]
2475 | },
2476 | "notification-url": "https://packagist.org/downloads/",
2477 | "license": [
2478 | "BSD-3-Clause"
2479 | ],
2480 | "authors": [
2481 | {
2482 | "name": "Sebastian Bergmann",
2483 | "email": "sebastian@phpunit.de",
2484 | "role": "lead"
2485 | }
2486 | ],
2487 | "description": "Library that helps with managing the version number of Git-hosted PHP projects",
2488 | "homepage": "https://github.com/sebastianbergmann/version",
2489 | "time": "2016-02-04 12:56:52"
2490 | },
2491 | {
2492 | "name": "swiftmailer/swiftmailer",
2493 | "version": "v5.4.3",
2494 | "source": {
2495 | "type": "git",
2496 | "url": "https://github.com/swiftmailer/swiftmailer.git",
2497 | "reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153"
2498 | },
2499 | "dist": {
2500 | "type": "zip",
2501 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/4cc92842069c2bbc1f28daaaf1d2576ec4dfe153",
2502 | "reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153",
2503 | "shasum": ""
2504 | },
2505 | "require": {
2506 | "php": ">=5.3.3"
2507 | },
2508 | "require-dev": {
2509 | "mockery/mockery": "~0.9.1"
2510 | },
2511 | "type": "library",
2512 | "extra": {
2513 | "branch-alias": {
2514 | "dev-master": "5.4-dev"
2515 | }
2516 | },
2517 | "autoload": {
2518 | "files": [
2519 | "lib/swift_required.php"
2520 | ]
2521 | },
2522 | "notification-url": "https://packagist.org/downloads/",
2523 | "license": [
2524 | "MIT"
2525 | ],
2526 | "authors": [
2527 | {
2528 | "name": "Chris Corbyn"
2529 | },
2530 | {
2531 | "name": "Fabien Potencier",
2532 | "email": "fabien@symfony.com"
2533 | }
2534 | ],
2535 | "description": "Swiftmailer, free feature-rich PHP mailer",
2536 | "homepage": "http://swiftmailer.org",
2537 | "keywords": [
2538 | "email",
2539 | "mail",
2540 | "mailer"
2541 | ],
2542 | "time": "2016-07-08 11:51:25"
2543 | },
2544 | {
2545 | "name": "symfony/console",
2546 | "version": "v3.1.4",
2547 | "source": {
2548 | "type": "git",
2549 | "url": "https://github.com/symfony/console.git",
2550 | "reference": "8ea494c34f0f772c3954b5fbe00bffc5a435e563"
2551 | },
2552 | "dist": {
2553 | "type": "zip",
2554 | "url": "https://api.github.com/repos/symfony/console/zipball/8ea494c34f0f772c3954b5fbe00bffc5a435e563",
2555 | "reference": "8ea494c34f0f772c3954b5fbe00bffc5a435e563",
2556 | "shasum": ""
2557 | },
2558 | "require": {
2559 | "php": ">=5.5.9",
2560 | "symfony/polyfill-mbstring": "~1.0"
2561 | },
2562 | "require-dev": {
2563 | "psr/log": "~1.0",
2564 | "symfony/event-dispatcher": "~2.8|~3.0",
2565 | "symfony/process": "~2.8|~3.0"
2566 | },
2567 | "suggest": {
2568 | "psr/log": "For using the console logger",
2569 | "symfony/event-dispatcher": "",
2570 | "symfony/process": ""
2571 | },
2572 | "type": "library",
2573 | "extra": {
2574 | "branch-alias": {
2575 | "dev-master": "3.1-dev"
2576 | }
2577 | },
2578 | "autoload": {
2579 | "psr-4": {
2580 | "Symfony\\Component\\Console\\": ""
2581 | },
2582 | "exclude-from-classmap": [
2583 | "/Tests/"
2584 | ]
2585 | },
2586 | "notification-url": "https://packagist.org/downloads/",
2587 | "license": [
2588 | "MIT"
2589 | ],
2590 | "authors": [
2591 | {
2592 | "name": "Fabien Potencier",
2593 | "email": "fabien@symfony.com"
2594 | },
2595 | {
2596 | "name": "Symfony Community",
2597 | "homepage": "https://symfony.com/contributors"
2598 | }
2599 | ],
2600 | "description": "Symfony Console Component",
2601 | "homepage": "https://symfony.com",
2602 | "time": "2016-08-19 06:48:39"
2603 | },
2604 | {
2605 | "name": "symfony/debug",
2606 | "version": "v3.1.4",
2607 | "source": {
2608 | "type": "git",
2609 | "url": "https://github.com/symfony/debug.git",
2610 | "reference": "34f6ac18c2974ca5fce68adf419ee7d15def6f11"
2611 | },
2612 | "dist": {
2613 | "type": "zip",
2614 | "url": "https://api.github.com/repos/symfony/debug/zipball/34f6ac18c2974ca5fce68adf419ee7d15def6f11",
2615 | "reference": "34f6ac18c2974ca5fce68adf419ee7d15def6f11",
2616 | "shasum": ""
2617 | },
2618 | "require": {
2619 | "php": ">=5.5.9",
2620 | "psr/log": "~1.0"
2621 | },
2622 | "conflict": {
2623 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
2624 | },
2625 | "require-dev": {
2626 | "symfony/class-loader": "~2.8|~3.0",
2627 | "symfony/http-kernel": "~2.8|~3.0"
2628 | },
2629 | "type": "library",
2630 | "extra": {
2631 | "branch-alias": {
2632 | "dev-master": "3.1-dev"
2633 | }
2634 | },
2635 | "autoload": {
2636 | "psr-4": {
2637 | "Symfony\\Component\\Debug\\": ""
2638 | },
2639 | "exclude-from-classmap": [
2640 | "/Tests/"
2641 | ]
2642 | },
2643 | "notification-url": "https://packagist.org/downloads/",
2644 | "license": [
2645 | "MIT"
2646 | ],
2647 | "authors": [
2648 | {
2649 | "name": "Fabien Potencier",
2650 | "email": "fabien@symfony.com"
2651 | },
2652 | {
2653 | "name": "Symfony Community",
2654 | "homepage": "https://symfony.com/contributors"
2655 | }
2656 | ],
2657 | "description": "Symfony Debug Component",
2658 | "homepage": "https://symfony.com",
2659 | "time": "2016-08-23 13:39:15"
2660 | },
2661 | {
2662 | "name": "symfony/event-dispatcher",
2663 | "version": "v3.1.4",
2664 | "source": {
2665 | "type": "git",
2666 | "url": "https://github.com/symfony/event-dispatcher.git",
2667 | "reference": "c0c00c80b3a69132c4e55c3e7db32b4a387615e5"
2668 | },
2669 | "dist": {
2670 | "type": "zip",
2671 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c0c00c80b3a69132c4e55c3e7db32b4a387615e5",
2672 | "reference": "c0c00c80b3a69132c4e55c3e7db32b4a387615e5",
2673 | "shasum": ""
2674 | },
2675 | "require": {
2676 | "php": ">=5.5.9"
2677 | },
2678 | "require-dev": {
2679 | "psr/log": "~1.0",
2680 | "symfony/config": "~2.8|~3.0",
2681 | "symfony/dependency-injection": "~2.8|~3.0",
2682 | "symfony/expression-language": "~2.8|~3.0",
2683 | "symfony/stopwatch": "~2.8|~3.0"
2684 | },
2685 | "suggest": {
2686 | "symfony/dependency-injection": "",
2687 | "symfony/http-kernel": ""
2688 | },
2689 | "type": "library",
2690 | "extra": {
2691 | "branch-alias": {
2692 | "dev-master": "3.1-dev"
2693 | }
2694 | },
2695 | "autoload": {
2696 | "psr-4": {
2697 | "Symfony\\Component\\EventDispatcher\\": ""
2698 | },
2699 | "exclude-from-classmap": [
2700 | "/Tests/"
2701 | ]
2702 | },
2703 | "notification-url": "https://packagist.org/downloads/",
2704 | "license": [
2705 | "MIT"
2706 | ],
2707 | "authors": [
2708 | {
2709 | "name": "Fabien Potencier",
2710 | "email": "fabien@symfony.com"
2711 | },
2712 | {
2713 | "name": "Symfony Community",
2714 | "homepage": "https://symfony.com/contributors"
2715 | }
2716 | ],
2717 | "description": "Symfony EventDispatcher Component",
2718 | "homepage": "https://symfony.com",
2719 | "time": "2016-07-19 10:45:57"
2720 | },
2721 | {
2722 | "name": "symfony/finder",
2723 | "version": "v3.1.4",
2724 | "source": {
2725 | "type": "git",
2726 | "url": "https://github.com/symfony/finder.git",
2727 | "reference": "e568ef1784f447a0e54dcb6f6de30b9747b0f577"
2728 | },
2729 | "dist": {
2730 | "type": "zip",
2731 | "url": "https://api.github.com/repos/symfony/finder/zipball/e568ef1784f447a0e54dcb6f6de30b9747b0f577",
2732 | "reference": "e568ef1784f447a0e54dcb6f6de30b9747b0f577",
2733 | "shasum": ""
2734 | },
2735 | "require": {
2736 | "php": ">=5.5.9"
2737 | },
2738 | "type": "library",
2739 | "extra": {
2740 | "branch-alias": {
2741 | "dev-master": "3.1-dev"
2742 | }
2743 | },
2744 | "autoload": {
2745 | "psr-4": {
2746 | "Symfony\\Component\\Finder\\": ""
2747 | },
2748 | "exclude-from-classmap": [
2749 | "/Tests/"
2750 | ]
2751 | },
2752 | "notification-url": "https://packagist.org/downloads/",
2753 | "license": [
2754 | "MIT"
2755 | ],
2756 | "authors": [
2757 | {
2758 | "name": "Fabien Potencier",
2759 | "email": "fabien@symfony.com"
2760 | },
2761 | {
2762 | "name": "Symfony Community",
2763 | "homepage": "https://symfony.com/contributors"
2764 | }
2765 | ],
2766 | "description": "Symfony Finder Component",
2767 | "homepage": "https://symfony.com",
2768 | "time": "2016-08-26 12:04:02"
2769 | },
2770 | {
2771 | "name": "symfony/http-foundation",
2772 | "version": "v3.1.4",
2773 | "source": {
2774 | "type": "git",
2775 | "url": "https://github.com/symfony/http-foundation.git",
2776 | "reference": "63592e00fd90632b57ee50220a1ddb29b6bf3bb4"
2777 | },
2778 | "dist": {
2779 | "type": "zip",
2780 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/63592e00fd90632b57ee50220a1ddb29b6bf3bb4",
2781 | "reference": "63592e00fd90632b57ee50220a1ddb29b6bf3bb4",
2782 | "shasum": ""
2783 | },
2784 | "require": {
2785 | "php": ">=5.5.9",
2786 | "symfony/polyfill-mbstring": "~1.1"
2787 | },
2788 | "require-dev": {
2789 | "symfony/expression-language": "~2.8|~3.0"
2790 | },
2791 | "type": "library",
2792 | "extra": {
2793 | "branch-alias": {
2794 | "dev-master": "3.1-dev"
2795 | }
2796 | },
2797 | "autoload": {
2798 | "psr-4": {
2799 | "Symfony\\Component\\HttpFoundation\\": ""
2800 | },
2801 | "exclude-from-classmap": [
2802 | "/Tests/"
2803 | ]
2804 | },
2805 | "notification-url": "https://packagist.org/downloads/",
2806 | "license": [
2807 | "MIT"
2808 | ],
2809 | "authors": [
2810 | {
2811 | "name": "Fabien Potencier",
2812 | "email": "fabien@symfony.com"
2813 | },
2814 | {
2815 | "name": "Symfony Community",
2816 | "homepage": "https://symfony.com/contributors"
2817 | }
2818 | ],
2819 | "description": "Symfony HttpFoundation Component",
2820 | "homepage": "https://symfony.com",
2821 | "time": "2016-08-22 12:11:19"
2822 | },
2823 | {
2824 | "name": "symfony/http-kernel",
2825 | "version": "v3.1.4",
2826 | "source": {
2827 | "type": "git",
2828 | "url": "https://github.com/symfony/http-kernel.git",
2829 | "reference": "aeda215d6b01f119508c090d2a09ebb5b0bc61f3"
2830 | },
2831 | "dist": {
2832 | "type": "zip",
2833 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/aeda215d6b01f119508c090d2a09ebb5b0bc61f3",
2834 | "reference": "aeda215d6b01f119508c090d2a09ebb5b0bc61f3",
2835 | "shasum": ""
2836 | },
2837 | "require": {
2838 | "php": ">=5.5.9",
2839 | "psr/log": "~1.0",
2840 | "symfony/debug": "~2.8|~3.0",
2841 | "symfony/event-dispatcher": "~2.8|~3.0",
2842 | "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2"
2843 | },
2844 | "conflict": {
2845 | "symfony/config": "<2.8"
2846 | },
2847 | "require-dev": {
2848 | "symfony/browser-kit": "~2.8|~3.0",
2849 | "symfony/class-loader": "~2.8|~3.0",
2850 | "symfony/config": "~2.8|~3.0",
2851 | "symfony/console": "~2.8|~3.0",
2852 | "symfony/css-selector": "~2.8|~3.0",
2853 | "symfony/dependency-injection": "~2.8|~3.0",
2854 | "symfony/dom-crawler": "~2.8|~3.0",
2855 | "symfony/expression-language": "~2.8|~3.0",
2856 | "symfony/finder": "~2.8|~3.0",
2857 | "symfony/process": "~2.8|~3.0",
2858 | "symfony/routing": "~2.8|~3.0",
2859 | "symfony/stopwatch": "~2.8|~3.0",
2860 | "symfony/templating": "~2.8|~3.0",
2861 | "symfony/translation": "~2.8|~3.0",
2862 | "symfony/var-dumper": "~2.8|~3.0"
2863 | },
2864 | "suggest": {
2865 | "symfony/browser-kit": "",
2866 | "symfony/class-loader": "",
2867 | "symfony/config": "",
2868 | "symfony/console": "",
2869 | "symfony/dependency-injection": "",
2870 | "symfony/finder": "",
2871 | "symfony/var-dumper": ""
2872 | },
2873 | "type": "library",
2874 | "extra": {
2875 | "branch-alias": {
2876 | "dev-master": "3.1-dev"
2877 | }
2878 | },
2879 | "autoload": {
2880 | "psr-4": {
2881 | "Symfony\\Component\\HttpKernel\\": ""
2882 | },
2883 | "exclude-from-classmap": [
2884 | "/Tests/"
2885 | ]
2886 | },
2887 | "notification-url": "https://packagist.org/downloads/",
2888 | "license": [
2889 | "MIT"
2890 | ],
2891 | "authors": [
2892 | {
2893 | "name": "Fabien Potencier",
2894 | "email": "fabien@symfony.com"
2895 | },
2896 | {
2897 | "name": "Symfony Community",
2898 | "homepage": "https://symfony.com/contributors"
2899 | }
2900 | ],
2901 | "description": "Symfony HttpKernel Component",
2902 | "homepage": "https://symfony.com",
2903 | "time": "2016-09-03 15:28:24"
2904 | },
2905 | {
2906 | "name": "symfony/polyfill-mbstring",
2907 | "version": "v1.2.0",
2908 | "source": {
2909 | "type": "git",
2910 | "url": "https://github.com/symfony/polyfill-mbstring.git",
2911 | "reference": "dff51f72b0706335131b00a7f49606168c582594"
2912 | },
2913 | "dist": {
2914 | "type": "zip",
2915 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594",
2916 | "reference": "dff51f72b0706335131b00a7f49606168c582594",
2917 | "shasum": ""
2918 | },
2919 | "require": {
2920 | "php": ">=5.3.3"
2921 | },
2922 | "suggest": {
2923 | "ext-mbstring": "For best performance"
2924 | },
2925 | "type": "library",
2926 | "extra": {
2927 | "branch-alias": {
2928 | "dev-master": "1.2-dev"
2929 | }
2930 | },
2931 | "autoload": {
2932 | "psr-4": {
2933 | "Symfony\\Polyfill\\Mbstring\\": ""
2934 | },
2935 | "files": [
2936 | "bootstrap.php"
2937 | ]
2938 | },
2939 | "notification-url": "https://packagist.org/downloads/",
2940 | "license": [
2941 | "MIT"
2942 | ],
2943 | "authors": [
2944 | {
2945 | "name": "Nicolas Grekas",
2946 | "email": "p@tchwork.com"
2947 | },
2948 | {
2949 | "name": "Symfony Community",
2950 | "homepage": "https://symfony.com/contributors"
2951 | }
2952 | ],
2953 | "description": "Symfony polyfill for the Mbstring extension",
2954 | "homepage": "https://symfony.com",
2955 | "keywords": [
2956 | "compatibility",
2957 | "mbstring",
2958 | "polyfill",
2959 | "portable",
2960 | "shim"
2961 | ],
2962 | "time": "2016-05-18 14:26:46"
2963 | },
2964 | {
2965 | "name": "symfony/polyfill-php56",
2966 | "version": "v1.2.0",
2967 | "source": {
2968 | "type": "git",
2969 | "url": "https://github.com/symfony/polyfill-php56.git",
2970 | "reference": "3edf57a8fbf9a927533344cef65ad7e1cf31030a"
2971 | },
2972 | "dist": {
2973 | "type": "zip",
2974 | "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/3edf57a8fbf9a927533344cef65ad7e1cf31030a",
2975 | "reference": "3edf57a8fbf9a927533344cef65ad7e1cf31030a",
2976 | "shasum": ""
2977 | },
2978 | "require": {
2979 | "php": ">=5.3.3",
2980 | "symfony/polyfill-util": "~1.0"
2981 | },
2982 | "type": "library",
2983 | "extra": {
2984 | "branch-alias": {
2985 | "dev-master": "1.2-dev"
2986 | }
2987 | },
2988 | "autoload": {
2989 | "psr-4": {
2990 | "Symfony\\Polyfill\\Php56\\": ""
2991 | },
2992 | "files": [
2993 | "bootstrap.php"
2994 | ]
2995 | },
2996 | "notification-url": "https://packagist.org/downloads/",
2997 | "license": [
2998 | "MIT"
2999 | ],
3000 | "authors": [
3001 | {
3002 | "name": "Nicolas Grekas",
3003 | "email": "p@tchwork.com"
3004 | },
3005 | {
3006 | "name": "Symfony Community",
3007 | "homepage": "https://symfony.com/contributors"
3008 | }
3009 | ],
3010 | "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
3011 | "homepage": "https://symfony.com",
3012 | "keywords": [
3013 | "compatibility",
3014 | "polyfill",
3015 | "portable",
3016 | "shim"
3017 | ],
3018 | "time": "2016-05-18 14:26:46"
3019 | },
3020 | {
3021 | "name": "symfony/polyfill-util",
3022 | "version": "v1.2.0",
3023 | "source": {
3024 | "type": "git",
3025 | "url": "https://github.com/symfony/polyfill-util.git",
3026 | "reference": "ef830ce3d218e622b221d6bfad42c751d974bf99"
3027 | },
3028 | "dist": {
3029 | "type": "zip",
3030 | "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/ef830ce3d218e622b221d6bfad42c751d974bf99",
3031 | "reference": "ef830ce3d218e622b221d6bfad42c751d974bf99",
3032 | "shasum": ""
3033 | },
3034 | "require": {
3035 | "php": ">=5.3.3"
3036 | },
3037 | "type": "library",
3038 | "extra": {
3039 | "branch-alias": {
3040 | "dev-master": "1.2-dev"
3041 | }
3042 | },
3043 | "autoload": {
3044 | "psr-4": {
3045 | "Symfony\\Polyfill\\Util\\": ""
3046 | }
3047 | },
3048 | "notification-url": "https://packagist.org/downloads/",
3049 | "license": [
3050 | "MIT"
3051 | ],
3052 | "authors": [
3053 | {
3054 | "name": "Nicolas Grekas",
3055 | "email": "p@tchwork.com"
3056 | },
3057 | {
3058 | "name": "Symfony Community",
3059 | "homepage": "https://symfony.com/contributors"
3060 | }
3061 | ],
3062 | "description": "Symfony utilities for portability of PHP codes",
3063 | "homepage": "https://symfony.com",
3064 | "keywords": [
3065 | "compat",
3066 | "compatibility",
3067 | "polyfill",
3068 | "shim"
3069 | ],
3070 | "time": "2016-05-18 14:26:46"
3071 | },
3072 | {
3073 | "name": "symfony/process",
3074 | "version": "v3.1.4",
3075 | "source": {
3076 | "type": "git",
3077 | "url": "https://github.com/symfony/process.git",
3078 | "reference": "e64e93041c80e77197ace5ab9385dedb5a143697"
3079 | },
3080 | "dist": {
3081 | "type": "zip",
3082 | "url": "https://api.github.com/repos/symfony/process/zipball/e64e93041c80e77197ace5ab9385dedb5a143697",
3083 | "reference": "e64e93041c80e77197ace5ab9385dedb5a143697",
3084 | "shasum": ""
3085 | },
3086 | "require": {
3087 | "php": ">=5.5.9"
3088 | },
3089 | "type": "library",
3090 | "extra": {
3091 | "branch-alias": {
3092 | "dev-master": "3.1-dev"
3093 | }
3094 | },
3095 | "autoload": {
3096 | "psr-4": {
3097 | "Symfony\\Component\\Process\\": ""
3098 | },
3099 | "exclude-from-classmap": [
3100 | "/Tests/"
3101 | ]
3102 | },
3103 | "notification-url": "https://packagist.org/downloads/",
3104 | "license": [
3105 | "MIT"
3106 | ],
3107 | "authors": [
3108 | {
3109 | "name": "Fabien Potencier",
3110 | "email": "fabien@symfony.com"
3111 | },
3112 | {
3113 | "name": "Symfony Community",
3114 | "homepage": "https://symfony.com/contributors"
3115 | }
3116 | ],
3117 | "description": "Symfony Process Component",
3118 | "homepage": "https://symfony.com",
3119 | "time": "2016-08-16 14:58:24"
3120 | },
3121 | {
3122 | "name": "symfony/routing",
3123 | "version": "v3.1.4",
3124 | "source": {
3125 | "type": "git",
3126 | "url": "https://github.com/symfony/routing.git",
3127 | "reference": "8edf62498a1a4c57ba317664a4b698339c10cdf6"
3128 | },
3129 | "dist": {
3130 | "type": "zip",
3131 | "url": "https://api.github.com/repos/symfony/routing/zipball/8edf62498a1a4c57ba317664a4b698339c10cdf6",
3132 | "reference": "8edf62498a1a4c57ba317664a4b698339c10cdf6",
3133 | "shasum": ""
3134 | },
3135 | "require": {
3136 | "php": ">=5.5.9"
3137 | },
3138 | "conflict": {
3139 | "symfony/config": "<2.8"
3140 | },
3141 | "require-dev": {
3142 | "doctrine/annotations": "~1.0",
3143 | "doctrine/common": "~2.2",
3144 | "psr/log": "~1.0",
3145 | "symfony/config": "~2.8|~3.0",
3146 | "symfony/expression-language": "~2.8|~3.0",
3147 | "symfony/http-foundation": "~2.8|~3.0",
3148 | "symfony/yaml": "~2.8|~3.0"
3149 | },
3150 | "suggest": {
3151 | "doctrine/annotations": "For using the annotation loader",
3152 | "symfony/config": "For using the all-in-one router or any loader",
3153 | "symfony/dependency-injection": "For loading routes from a service",
3154 | "symfony/expression-language": "For using expression matching",
3155 | "symfony/http-foundation": "For using a Symfony Request object",
3156 | "symfony/yaml": "For using the YAML loader"
3157 | },
3158 | "type": "library",
3159 | "extra": {
3160 | "branch-alias": {
3161 | "dev-master": "3.1-dev"
3162 | }
3163 | },
3164 | "autoload": {
3165 | "psr-4": {
3166 | "Symfony\\Component\\Routing\\": ""
3167 | },
3168 | "exclude-from-classmap": [
3169 | "/Tests/"
3170 | ]
3171 | },
3172 | "notification-url": "https://packagist.org/downloads/",
3173 | "license": [
3174 | "MIT"
3175 | ],
3176 | "authors": [
3177 | {
3178 | "name": "Fabien Potencier",
3179 | "email": "fabien@symfony.com"
3180 | },
3181 | {
3182 | "name": "Symfony Community",
3183 | "homepage": "https://symfony.com/contributors"
3184 | }
3185 | ],
3186 | "description": "Symfony Routing Component",
3187 | "homepage": "https://symfony.com",
3188 | "keywords": [
3189 | "router",
3190 | "routing",
3191 | "uri",
3192 | "url"
3193 | ],
3194 | "time": "2016-08-16 14:58:24"
3195 | },
3196 | {
3197 | "name": "symfony/translation",
3198 | "version": "v3.1.4",
3199 | "source": {
3200 | "type": "git",
3201 | "url": "https://github.com/symfony/translation.git",
3202 | "reference": "a35edc277513c9bc0f063ca174c36b346f974528"
3203 | },
3204 | "dist": {
3205 | "type": "zip",
3206 | "url": "https://api.github.com/repos/symfony/translation/zipball/a35edc277513c9bc0f063ca174c36b346f974528",
3207 | "reference": "a35edc277513c9bc0f063ca174c36b346f974528",
3208 | "shasum": ""
3209 | },
3210 | "require": {
3211 | "php": ">=5.5.9",
3212 | "symfony/polyfill-mbstring": "~1.0"
3213 | },
3214 | "conflict": {
3215 | "symfony/config": "<2.8"
3216 | },
3217 | "require-dev": {
3218 | "psr/log": "~1.0",
3219 | "symfony/config": "~2.8|~3.0",
3220 | "symfony/intl": "~2.8|~3.0",
3221 | "symfony/yaml": "~2.8|~3.0"
3222 | },
3223 | "suggest": {
3224 | "psr/log": "To use logging capability in translator",
3225 | "symfony/config": "",
3226 | "symfony/yaml": ""
3227 | },
3228 | "type": "library",
3229 | "extra": {
3230 | "branch-alias": {
3231 | "dev-master": "3.1-dev"
3232 | }
3233 | },
3234 | "autoload": {
3235 | "psr-4": {
3236 | "Symfony\\Component\\Translation\\": ""
3237 | },
3238 | "exclude-from-classmap": [
3239 | "/Tests/"
3240 | ]
3241 | },
3242 | "notification-url": "https://packagist.org/downloads/",
3243 | "license": [
3244 | "MIT"
3245 | ],
3246 | "authors": [
3247 | {
3248 | "name": "Fabien Potencier",
3249 | "email": "fabien@symfony.com"
3250 | },
3251 | {
3252 | "name": "Symfony Community",
3253 | "homepage": "https://symfony.com/contributors"
3254 | }
3255 | ],
3256 | "description": "Symfony Translation Component",
3257 | "homepage": "https://symfony.com",
3258 | "time": "2016-08-05 08:37:39"
3259 | },
3260 | {
3261 | "name": "symfony/var-dumper",
3262 | "version": "v3.1.4",
3263 | "source": {
3264 | "type": "git",
3265 | "url": "https://github.com/symfony/var-dumper.git",
3266 | "reference": "62ee73706c421654a4c840028954510277f7dfc8"
3267 | },
3268 | "dist": {
3269 | "type": "zip",
3270 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/62ee73706c421654a4c840028954510277f7dfc8",
3271 | "reference": "62ee73706c421654a4c840028954510277f7dfc8",
3272 | "shasum": ""
3273 | },
3274 | "require": {
3275 | "php": ">=5.5.9",
3276 | "symfony/polyfill-mbstring": "~1.0"
3277 | },
3278 | "require-dev": {
3279 | "twig/twig": "~1.20|~2.0"
3280 | },
3281 | "suggest": {
3282 | "ext-symfony_debug": ""
3283 | },
3284 | "type": "library",
3285 | "extra": {
3286 | "branch-alias": {
3287 | "dev-master": "3.1-dev"
3288 | }
3289 | },
3290 | "autoload": {
3291 | "files": [
3292 | "Resources/functions/dump.php"
3293 | ],
3294 | "psr-4": {
3295 | "Symfony\\Component\\VarDumper\\": ""
3296 | },
3297 | "exclude-from-classmap": [
3298 | "/Tests/"
3299 | ]
3300 | },
3301 | "notification-url": "https://packagist.org/downloads/",
3302 | "license": [
3303 | "MIT"
3304 | ],
3305 | "authors": [
3306 | {
3307 | "name": "Nicolas Grekas",
3308 | "email": "p@tchwork.com"
3309 | },
3310 | {
3311 | "name": "Symfony Community",
3312 | "homepage": "https://symfony.com/contributors"
3313 | }
3314 | ],
3315 | "description": "Symfony mechanism for exploring and dumping PHP variables",
3316 | "homepage": "https://symfony.com",
3317 | "keywords": [
3318 | "debug",
3319 | "dump"
3320 | ],
3321 | "time": "2016-08-31 09:05:42"
3322 | },
3323 | {
3324 | "name": "symfony/yaml",
3325 | "version": "v3.1.4",
3326 | "source": {
3327 | "type": "git",
3328 | "url": "https://github.com/symfony/yaml.git",
3329 | "reference": "f291ed25eb1435bddbe8a96caaef16469c2a092d"
3330 | },
3331 | "dist": {
3332 | "type": "zip",
3333 | "url": "https://api.github.com/repos/symfony/yaml/zipball/f291ed25eb1435bddbe8a96caaef16469c2a092d",
3334 | "reference": "f291ed25eb1435bddbe8a96caaef16469c2a092d",
3335 | "shasum": ""
3336 | },
3337 | "require": {
3338 | "php": ">=5.5.9"
3339 | },
3340 | "type": "library",
3341 | "extra": {
3342 | "branch-alias": {
3343 | "dev-master": "3.1-dev"
3344 | }
3345 | },
3346 | "autoload": {
3347 | "psr-4": {
3348 | "Symfony\\Component\\Yaml\\": ""
3349 | },
3350 | "exclude-from-classmap": [
3351 | "/Tests/"
3352 | ]
3353 | },
3354 | "notification-url": "https://packagist.org/downloads/",
3355 | "license": [
3356 | "MIT"
3357 | ],
3358 | "authors": [
3359 | {
3360 | "name": "Fabien Potencier",
3361 | "email": "fabien@symfony.com"
3362 | },
3363 | {
3364 | "name": "Symfony Community",
3365 | "homepage": "https://symfony.com/contributors"
3366 | }
3367 | ],
3368 | "description": "Symfony Yaml Component",
3369 | "homepage": "https://symfony.com",
3370 | "time": "2016-09-02 02:12:52"
3371 | },
3372 | {
3373 | "name": "vlucas/phpdotenv",
3374 | "version": "v2.4.0",
3375 | "source": {
3376 | "type": "git",
3377 | "url": "https://github.com/vlucas/phpdotenv.git",
3378 | "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c"
3379 | },
3380 | "dist": {
3381 | "type": "zip",
3382 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c",
3383 | "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c",
3384 | "shasum": ""
3385 | },
3386 | "require": {
3387 | "php": ">=5.3.9"
3388 | },
3389 | "require-dev": {
3390 | "phpunit/phpunit": "^4.8 || ^5.0"
3391 | },
3392 | "type": "library",
3393 | "extra": {
3394 | "branch-alias": {
3395 | "dev-master": "2.4-dev"
3396 | }
3397 | },
3398 | "autoload": {
3399 | "psr-4": {
3400 | "Dotenv\\": "src/"
3401 | }
3402 | },
3403 | "notification-url": "https://packagist.org/downloads/",
3404 | "license": [
3405 | "BSD-3-Clause-Attribution"
3406 | ],
3407 | "authors": [
3408 | {
3409 | "name": "Vance Lucas",
3410 | "email": "vance@vancelucas.com",
3411 | "homepage": "http://www.vancelucas.com"
3412 | }
3413 | ],
3414 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
3415 | "keywords": [
3416 | "dotenv",
3417 | "env",
3418 | "environment"
3419 | ],
3420 | "time": "2016-09-01 10:05:43"
3421 | },
3422 | {
3423 | "name": "webmozart/assert",
3424 | "version": "1.1.0",
3425 | "source": {
3426 | "type": "git",
3427 | "url": "https://github.com/webmozart/assert.git",
3428 | "reference": "bb2d123231c095735130cc8f6d31385a44c7b308"
3429 | },
3430 | "dist": {
3431 | "type": "zip",
3432 | "url": "https://api.github.com/repos/webmozart/assert/zipball/bb2d123231c095735130cc8f6d31385a44c7b308",
3433 | "reference": "bb2d123231c095735130cc8f6d31385a44c7b308",
3434 | "shasum": ""
3435 | },
3436 | "require": {
3437 | "php": "^5.3.3|^7.0"
3438 | },
3439 | "require-dev": {
3440 | "phpunit/phpunit": "^4.6",
3441 | "sebastian/version": "^1.0.1"
3442 | },
3443 | "type": "library",
3444 | "extra": {
3445 | "branch-alias": {
3446 | "dev-master": "1.2-dev"
3447 | }
3448 | },
3449 | "autoload": {
3450 | "psr-4": {
3451 | "Webmozart\\Assert\\": "src/"
3452 | }
3453 | },
3454 | "notification-url": "https://packagist.org/downloads/",
3455 | "license": [
3456 | "MIT"
3457 | ],
3458 | "authors": [
3459 | {
3460 | "name": "Bernhard Schussek",
3461 | "email": "bschussek@gmail.com"
3462 | }
3463 | ],
3464 | "description": "Assertions to validate method input/output with nice error messages.",
3465 | "keywords": [
3466 | "assert",
3467 | "check",
3468 | "validate"
3469 | ],
3470 | "time": "2016-08-09 15:02:57"
3471 | }
3472 | ],
3473 | "packages-dev": [
3474 | {
3475 | "name": "fzaninotto/faker",
3476 | "version": "v1.6.0",
3477 | "source": {
3478 | "type": "git",
3479 | "url": "https://github.com/fzaninotto/Faker.git",
3480 | "reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123"
3481 | },
3482 | "dist": {
3483 | "type": "zip",
3484 | "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/44f9a286a04b80c76a4e5fb7aad8bb539b920123",
3485 | "reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123",
3486 | "shasum": ""
3487 | },
3488 | "require": {
3489 | "php": "^5.3.3|^7.0"
3490 | },
3491 | "require-dev": {
3492 | "ext-intl": "*",
3493 | "phpunit/phpunit": "~4.0",
3494 | "squizlabs/php_codesniffer": "~1.5"
3495 | },
3496 | "type": "library",
3497 | "extra": {
3498 | "branch-alias": []
3499 | },
3500 | "autoload": {
3501 | "psr-4": {
3502 | "Faker\\": "src/Faker/"
3503 | }
3504 | },
3505 | "notification-url": "https://packagist.org/downloads/",
3506 | "license": [
3507 | "MIT"
3508 | ],
3509 | "authors": [
3510 | {
3511 | "name": "François Zaninotto"
3512 | }
3513 | ],
3514 | "description": "Faker is a PHP library that generates fake data for you.",
3515 | "keywords": [
3516 | "data",
3517 | "faker",
3518 | "fixtures"
3519 | ],
3520 | "time": "2016-04-29 12:21:54"
3521 | },
3522 | {
3523 | "name": "hamcrest/hamcrest-php",
3524 | "version": "v2.0.0",
3525 | "source": {
3526 | "type": "git",
3527 | "url": "https://github.com/hamcrest/hamcrest-php.git",
3528 | "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad"
3529 | },
3530 | "dist": {
3531 | "type": "zip",
3532 | "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad",
3533 | "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad",
3534 | "shasum": ""
3535 | },
3536 | "require": {
3537 | "php": "^5.3|^7.0"
3538 | },
3539 | "replace": {
3540 | "cordoval/hamcrest-php": "*",
3541 | "davedevelopment/hamcrest-php": "*",
3542 | "kodova/hamcrest-php": "*"
3543 | },
3544 | "require-dev": {
3545 | "phpunit/php-file-iterator": "1.3.3",
3546 | "phpunit/phpunit": "~4.0",
3547 | "satooshi/php-coveralls": "^1.0"
3548 | },
3549 | "type": "library",
3550 | "extra": {
3551 | "branch-alias": {
3552 | "dev-master": "2.0-dev"
3553 | }
3554 | },
3555 | "autoload": {
3556 | "classmap": [
3557 | "hamcrest"
3558 | ]
3559 | },
3560 | "notification-url": "https://packagist.org/downloads/",
3561 | "license": [
3562 | "BSD"
3563 | ],
3564 | "description": "This is the PHP port of Hamcrest Matchers",
3565 | "keywords": [
3566 | "test"
3567 | ],
3568 | "time": "2016-01-20 08:20:44"
3569 | },
3570 | {
3571 | "name": "mockery/mockery",
3572 | "version": "dev-master",
3573 | "source": {
3574 | "type": "git",
3575 | "url": "https://github.com/padraic/mockery.git",
3576 | "reference": "ee06e7b564ea4dc9b90605d894c2626f87df334d"
3577 | },
3578 | "dist": {
3579 | "type": "zip",
3580 | "url": "https://api.github.com/repos/padraic/mockery/zipball/ee06e7b564ea4dc9b90605d894c2626f87df334d",
3581 | "reference": "ee06e7b564ea4dc9b90605d894c2626f87df334d",
3582 | "shasum": ""
3583 | },
3584 | "require": {
3585 | "hamcrest/hamcrest-php": "^2.0@dev",
3586 | "lib-pcre": ">=7.0",
3587 | "php": ">=5.4.0"
3588 | },
3589 | "require-dev": {
3590 | "phpunit/phpunit": "~4.0"
3591 | },
3592 | "type": "library",
3593 | "extra": {
3594 | "branch-alias": {
3595 | "dev-master": "1.0.x-dev"
3596 | }
3597 | },
3598 | "autoload": {
3599 | "psr-0": {
3600 | "Mockery": "library/"
3601 | }
3602 | },
3603 | "notification-url": "https://packagist.org/downloads/",
3604 | "license": [
3605 | "BSD-3-Clause"
3606 | ],
3607 | "authors": [
3608 | {
3609 | "name": "Pádraic Brady",
3610 | "email": "padraic.brady@gmail.com",
3611 | "homepage": "http://blog.astrumfutura.com"
3612 | },
3613 | {
3614 | "name": "Dave Marshall",
3615 | "email": "dave.marshall@atstsolutions.co.uk",
3616 | "homepage": "http://davedevelopment.co.uk"
3617 | }
3618 | ],
3619 | "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.",
3620 | "homepage": "http://github.com/padraic/mockery",
3621 | "keywords": [
3622 | "BDD",
3623 | "TDD",
3624 | "library",
3625 | "mock",
3626 | "mock objects",
3627 | "mockery",
3628 | "stub",
3629 | "test",
3630 | "test double",
3631 | "testing"
3632 | ],
3633 | "time": "2016-07-06 09:05:19"
3634 | },
3635 | {
3636 | "name": "orchestra/database",
3637 | "version": "v3.3.1",
3638 | "source": {
3639 | "type": "git",
3640 | "url": "https://github.com/orchestral/database.git",
3641 | "reference": "8832dde929f255650e58d33f3def75f7448cf80f"
3642 | },
3643 | "dist": {
3644 | "type": "zip",
3645 | "url": "https://api.github.com/repos/orchestral/database/zipball/8832dde929f255650e58d33f3def75f7448cf80f",
3646 | "reference": "8832dde929f255650e58d33f3def75f7448cf80f",
3647 | "shasum": ""
3648 | },
3649 | "require": {
3650 | "illuminate/contracts": "~5.3.0",
3651 | "illuminate/database": "~5.3.0",
3652 | "php": ">=5.6.0"
3653 | },
3654 | "type": "library",
3655 | "extra": {
3656 | "branch-alias": {
3657 | "dev-master": "3.3-dev"
3658 | }
3659 | },
3660 | "autoload": {
3661 | "psr-4": {
3662 | "Orchestra\\Database\\": ""
3663 | }
3664 | },
3665 | "notification-url": "https://packagist.org/downloads/",
3666 | "license": [
3667 | "MIT"
3668 | ],
3669 | "authors": [
3670 | {
3671 | "name": "Mior Muhammad Zaki",
3672 | "email": "crynobone@gmail.com",
3673 | "homepage": "https://github.com/crynobone"
3674 | },
3675 | {
3676 | "name": "Taylor Otwell",
3677 | "email": "taylorotwell@gmail.com",
3678 | "homepage": "https://github.com/taylorotwell"
3679 | }
3680 | ],
3681 | "description": "Database Component for Orchestra Platform",
3682 | "keywords": [
3683 | "database",
3684 | "orchestra-platform",
3685 | "orchestral"
3686 | ],
3687 | "time": "2016-08-24 11:05:47"
3688 | },
3689 | {
3690 | "name": "orchestra/testbench",
3691 | "version": "v3.3.1",
3692 | "source": {
3693 | "type": "git",
3694 | "url": "https://github.com/orchestral/testbench.git",
3695 | "reference": "d014926177799e2f0162d4d8338cd0283fd4a945"
3696 | },
3697 | "dist": {
3698 | "type": "zip",
3699 | "url": "https://api.github.com/repos/orchestral/testbench/zipball/d014926177799e2f0162d4d8338cd0283fd4a945",
3700 | "reference": "d014926177799e2f0162d4d8338cd0283fd4a945",
3701 | "shasum": ""
3702 | },
3703 | "require": {
3704 | "fzaninotto/faker": "~1.4",
3705 | "laravel/framework": "~5.3.3",
3706 | "orchestra/database": "~3.3.1",
3707 | "php": ">=5.6.0",
3708 | "symfony/css-selector": "3.1.*",
3709 | "symfony/dom-crawler": "3.1.*"
3710 | },
3711 | "require-dev": {
3712 | "mockery/mockery": "^0.9.4",
3713 | "phpunit/phpunit": "~4.8|~5.0"
3714 | },
3715 | "suggest": {
3716 | "phpunit/phpunit": "Allow to use PHPUnit for testing your Laravel Application/Package (~4.0|~5.0)."
3717 | },
3718 | "type": "library",
3719 | "extra": {
3720 | "branch-alias": {
3721 | "dev-master": "3.3-dev"
3722 | }
3723 | },
3724 | "autoload": {
3725 | "psr-4": {
3726 | "Orchestra\\Testbench\\": "src/"
3727 | }
3728 | },
3729 | "notification-url": "https://packagist.org/downloads/",
3730 | "license": [
3731 | "MIT"
3732 | ],
3733 | "authors": [
3734 | {
3735 | "name": "Mior Muhammad Zaki",
3736 | "email": "crynobone@gmail.com",
3737 | "homepage": "https://github.com/crynobone"
3738 | }
3739 | ],
3740 | "description": "Laravel Package Unit Testing Helper",
3741 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/",
3742 | "keywords": [
3743 | "BDD",
3744 | "TDD",
3745 | "laravel",
3746 | "orchestra-platform",
3747 | "orchestral",
3748 | "testing"
3749 | ],
3750 | "time": "2016-08-28 22:51:46"
3751 | },
3752 | {
3753 | "name": "squizlabs/php_codesniffer",
3754 | "version": "2.7.0",
3755 | "source": {
3756 | "type": "git",
3757 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
3758 | "reference": "571e27b6348e5b3a637b2abc82ac0d01e6d7bbed"
3759 | },
3760 | "dist": {
3761 | "type": "zip",
3762 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/571e27b6348e5b3a637b2abc82ac0d01e6d7bbed",
3763 | "reference": "571e27b6348e5b3a637b2abc82ac0d01e6d7bbed",
3764 | "shasum": ""
3765 | },
3766 | "require": {
3767 | "ext-simplexml": "*",
3768 | "ext-tokenizer": "*",
3769 | "ext-xmlwriter": "*",
3770 | "php": ">=5.1.2"
3771 | },
3772 | "require-dev": {
3773 | "phpunit/phpunit": "~4.0"
3774 | },
3775 | "bin": [
3776 | "scripts/phpcs",
3777 | "scripts/phpcbf"
3778 | ],
3779 | "type": "library",
3780 | "extra": {
3781 | "branch-alias": {
3782 | "dev-master": "2.x-dev"
3783 | }
3784 | },
3785 | "autoload": {
3786 | "classmap": [
3787 | "CodeSniffer.php",
3788 | "CodeSniffer/CLI.php",
3789 | "CodeSniffer/Exception.php",
3790 | "CodeSniffer/File.php",
3791 | "CodeSniffer/Fixer.php",
3792 | "CodeSniffer/Report.php",
3793 | "CodeSniffer/Reporting.php",
3794 | "CodeSniffer/Sniff.php",
3795 | "CodeSniffer/Tokens.php",
3796 | "CodeSniffer/Reports/",
3797 | "CodeSniffer/Tokenizers/",
3798 | "CodeSniffer/DocGenerators/",
3799 | "CodeSniffer/Standards/AbstractPatternSniff.php",
3800 | "CodeSniffer/Standards/AbstractScopeSniff.php",
3801 | "CodeSniffer/Standards/AbstractVariableSniff.php",
3802 | "CodeSniffer/Standards/IncorrectPatternException.php",
3803 | "CodeSniffer/Standards/Generic/Sniffs/",
3804 | "CodeSniffer/Standards/MySource/Sniffs/",
3805 | "CodeSniffer/Standards/PEAR/Sniffs/",
3806 | "CodeSniffer/Standards/PSR1/Sniffs/",
3807 | "CodeSniffer/Standards/PSR2/Sniffs/",
3808 | "CodeSniffer/Standards/Squiz/Sniffs/",
3809 | "CodeSniffer/Standards/Zend/Sniffs/"
3810 | ]
3811 | },
3812 | "notification-url": "https://packagist.org/downloads/",
3813 | "license": [
3814 | "BSD-3-Clause"
3815 | ],
3816 | "authors": [
3817 | {
3818 | "name": "Greg Sherwood",
3819 | "role": "lead"
3820 | }
3821 | ],
3822 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
3823 | "homepage": "http://www.squizlabs.com/php-codesniffer",
3824 | "keywords": [
3825 | "phpcs",
3826 | "standards"
3827 | ],
3828 | "time": "2016-09-01 23:53:02"
3829 | },
3830 | {
3831 | "name": "symfony/css-selector",
3832 | "version": "v3.1.4",
3833 | "source": {
3834 | "type": "git",
3835 | "url": "https://github.com/symfony/css-selector.git",
3836 | "reference": "2851e1932d77ce727776154d659b232d061e816a"
3837 | },
3838 | "dist": {
3839 | "type": "zip",
3840 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/2851e1932d77ce727776154d659b232d061e816a",
3841 | "reference": "2851e1932d77ce727776154d659b232d061e816a",
3842 | "shasum": ""
3843 | },
3844 | "require": {
3845 | "php": ">=5.5.9"
3846 | },
3847 | "type": "library",
3848 | "extra": {
3849 | "branch-alias": {
3850 | "dev-master": "3.1-dev"
3851 | }
3852 | },
3853 | "autoload": {
3854 | "psr-4": {
3855 | "Symfony\\Component\\CssSelector\\": ""
3856 | },
3857 | "exclude-from-classmap": [
3858 | "/Tests/"
3859 | ]
3860 | },
3861 | "notification-url": "https://packagist.org/downloads/",
3862 | "license": [
3863 | "MIT"
3864 | ],
3865 | "authors": [
3866 | {
3867 | "name": "Jean-François Simon",
3868 | "email": "jeanfrancois.simon@sensiolabs.com"
3869 | },
3870 | {
3871 | "name": "Fabien Potencier",
3872 | "email": "fabien@symfony.com"
3873 | },
3874 | {
3875 | "name": "Symfony Community",
3876 | "homepage": "https://symfony.com/contributors"
3877 | }
3878 | ],
3879 | "description": "Symfony CssSelector Component",
3880 | "homepage": "https://symfony.com",
3881 | "time": "2016-06-29 05:41:56"
3882 | },
3883 | {
3884 | "name": "symfony/dom-crawler",
3885 | "version": "v3.1.4",
3886 | "source": {
3887 | "type": "git",
3888 | "url": "https://github.com/symfony/dom-crawler.git",
3889 | "reference": "bb7395e8b1db3654de82b9f35d019958276de4d7"
3890 | },
3891 | "dist": {
3892 | "type": "zip",
3893 | "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/bb7395e8b1db3654de82b9f35d019958276de4d7",
3894 | "reference": "bb7395e8b1db3654de82b9f35d019958276de4d7",
3895 | "shasum": ""
3896 | },
3897 | "require": {
3898 | "php": ">=5.5.9",
3899 | "symfony/polyfill-mbstring": "~1.0"
3900 | },
3901 | "require-dev": {
3902 | "symfony/css-selector": "~2.8|~3.0"
3903 | },
3904 | "suggest": {
3905 | "symfony/css-selector": ""
3906 | },
3907 | "type": "library",
3908 | "extra": {
3909 | "branch-alias": {
3910 | "dev-master": "3.1-dev"
3911 | }
3912 | },
3913 | "autoload": {
3914 | "psr-4": {
3915 | "Symfony\\Component\\DomCrawler\\": ""
3916 | },
3917 | "exclude-from-classmap": [
3918 | "/Tests/"
3919 | ]
3920 | },
3921 | "notification-url": "https://packagist.org/downloads/",
3922 | "license": [
3923 | "MIT"
3924 | ],
3925 | "authors": [
3926 | {
3927 | "name": "Fabien Potencier",
3928 | "email": "fabien@symfony.com"
3929 | },
3930 | {
3931 | "name": "Symfony Community",
3932 | "homepage": "https://symfony.com/contributors"
3933 | }
3934 | ],
3935 | "description": "Symfony DomCrawler Component",
3936 | "homepage": "https://symfony.com",
3937 | "time": "2016-08-05 08:37:39"
3938 | }
3939 | ],
3940 | "aliases": [],
3941 | "minimum-stability": "stable",
3942 | "stability-flags": {
3943 | "mockery/mockery": 20
3944 | },
3945 | "prefer-stable": false,
3946 | "prefer-lowest": false,
3947 | "platform": {
3948 | "php": ">=5.6.4"
3949 | },
3950 | "platform-dev": []
3951 | }
3952 |
--------------------------------------------------------------------------------