├── src ├── config │ └── config.php ├── views │ └── html-manager.blade.php ├── migrations │ └── 0000_00_00_000000_create_html_blocks_table.php ├── assets │ ├── js │ │ └── cms │ │ │ ├── block.js │ │ │ └── manager.js │ └── sass │ │ └── _medium-editor.scss ├── HtmlBlocks.php ├── Models │ └── Block.php └── HtmlBlocksProvider.php ├── composer.json └── composer.lock /src/config/config.php: -------------------------------------------------------------------------------- 1 | [ 6 | 'js' => base_path('/resources/assets/js/components'), 7 | 'sass' => base_path('/resources/assets/sass/plugins'), 8 | ], 9 | 10 | ]; -------------------------------------------------------------------------------- /src/views/html-manager.blade.php: -------------------------------------------------------------------------------- 1 | @if (Gate::allows('edit-html-blocks')) 2 | 3 |
4 | 9 |
10 |
11 | @endif -------------------------------------------------------------------------------- /src/migrations/0000_00_00_000000_create_html_blocks_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 17 | $table->string('title'); 18 | $table->string('slug')->index(); 19 | $table->text('content'); 20 | $table->timestamps(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | Schema::drop('html_blocks'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dyusha/laravel-html-editor", 3 | "description": "Laravel package that allows inline editing of HTML blocks", 4 | "keywords": ["laravel", "html", "content management"], 5 | "license": "MIT", 6 | "authors": [ 7 | { 8 | "name": "dyusha", 9 | "email": "leelfosho@gmail.com" 10 | } 11 | ], 12 | "require": { 13 | "php": ">=5.6", 14 | "illuminate/support": "^5.2", 15 | "illuminate/database": "^5.2" 16 | }, 17 | "autoload": { 18 | "psr-4": { 19 | "Dyusha\\HtmlEditor\\": "src/" 20 | } 21 | }, 22 | "autoload-dev": { 23 | "psr-4": { 24 | "Dyusha\\HtmlEditor\\Tests\\": "tests/" 25 | } 26 | }, 27 | "scripts": { 28 | "test": "phpunit" 29 | }, 30 | "require-dev": { 31 | "phpunit/phpunit": "^5.4" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/assets/js/cms/block.js: -------------------------------------------------------------------------------- 1 | var Vue = require('vue/dist/vue'); 2 | var MediumEditor = require('medium-editor/dist/js/medium-editor'); 3 | 4 | module.exports = Vue.extend({ 5 | props: ['slug'], 6 | 7 | data: function () { 8 | return { 9 | medium: null, 10 | oldHtml: '', 11 | } 12 | }, 13 | 14 | ready: function() { 15 | this.medium = new MediumEditor(this.$el.parentElement, { 16 | anchor: { 17 | targetCheckbox: true, 18 | }, 19 | }); 20 | 21 | this.oldHtml = this.medium.getContent(); 22 | }, 23 | 24 | methods: { 25 | getContent: function () { 26 | return this.medium.getContent(); 27 | }, 28 | 29 | syncContent: function() { 30 | this.oldHtml = this.getContent(); 31 | }, 32 | 33 | hasChanged: function () { 34 | return this.getContent() != this.oldHtml; 35 | } 36 | }, 37 | }); 38 | -------------------------------------------------------------------------------- /src/HtmlBlocks.php: -------------------------------------------------------------------------------- 1 | first(); 27 | } 28 | 29 | /** 30 | * Teardown block setup 31 | */ 32 | public static function tearDown() 33 | { 34 | $html = ob_get_clean(); 35 | 36 | end(self::$models); 37 | $slug = key(self::$models); 38 | $title = array_pop(self::$models); 39 | 40 | /** @var Block $block */ 41 | $block = Block::where('slug', $slug)->first(); 42 | 43 | if (!$block) { 44 | $block = new Block([ 45 | 'slug' => $slug, 46 | 'title' => $title, 47 | 'content' => trim($html), 48 | ]); 49 | 50 | $block->save(); 51 | } 52 | 53 | if (Gate::allows('edit-html-blocks')) { 54 | return sprintf('%s', $slug, trim($block->content)); 55 | } 56 | 57 | return trim($block->content); 58 | } 59 | } -------------------------------------------------------------------------------- /src/Models/Block.php: -------------------------------------------------------------------------------- 1 | first(); 34 | 35 | if (!$block) { 36 | return ''; 37 | } 38 | 39 | return $block->content; 40 | } 41 | 42 | public function setContentAttribute($value) 43 | { 44 | $this->attributes['content'] = $this->cleanupContent($value); 45 | } 46 | 47 | /** 48 | * Removes all unnecessary strings from input content 49 | * 50 | * @param string $string New block content 51 | * @return string 52 | */ 53 | protected function cleanupContent($string) 54 | { 55 | $string = trim(str_replace(' ', ' ', str_replace(' ', ' ', $string))); 56 | 57 | $vueJsDebugStrings = ['', '', '']; 58 | $string = str_replace($vueJsDebugStrings, '', $string); 59 | 60 | return trim($string); 61 | } 62 | } -------------------------------------------------------------------------------- /src/HtmlBlocksProvider.php: -------------------------------------------------------------------------------- 1 | bootBladeDirective(); 16 | 17 | $this->publishes([ 18 | __DIR__ . '/config/config.php' => config_path('html-editor.php'), 19 | ], 'config'); 20 | 21 | $this->mergeConfigFrom(__DIR__ . '/config/config.php', 'html-editor'); 22 | 23 | $this->publishes([ 24 | __DIR__ . '/migrations' => $this->app->databasePath() . '/migrations' 25 | ], 'migrations'); 26 | 27 | $this->publishes([ 28 | __DIR__ . '/assets/js' => config('html-editor.paths.js', base_path('resources/assets/js/components')), 29 | __DIR__ . '/assets/sass' => config('html-editor.paths.sass', base_path('resources/assets/sass/plugins')), 30 | ], 'assets'); 31 | 32 | $this->loadViewsFrom(__DIR__ . '/views', 'html-editor'); 33 | 34 | $this->publishes([ 35 | __DIR__ . '/views' => base_path('resources/views/vendor/html-editor') 36 | ], 'views'); 37 | } 38 | 39 | /** 40 | * Register the service provider. 41 | * 42 | * @return void 43 | */ 44 | public function register() 45 | { 46 | // 47 | } 48 | 49 | protected function bootBladeDirective() 50 | { 51 | Blade::directive('block', function ($expression) { 52 | return ""; 53 | }); 54 | 55 | Blade::directive('endblock', function () { 56 | return ""; 57 | }); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/assets/js/cms/manager.js: -------------------------------------------------------------------------------- 1 | var Vue = require('vue/dist/vue'); 2 | 3 | module.exports = Vue.extend({ 4 | methods: { 5 | applyChanges: function () { 6 | var changed = [], 7 | changedBlocks = [], 8 | blocks = this.getBlockComponents(this.$root); 9 | 10 | blocks.forEach(function (block) { 11 | if (block.hasChanged() == false) { 12 | return true; 13 | } 14 | 15 | changed.push({ 16 | slug: block.slug, 17 | content: block.getContent(), 18 | }); 19 | 20 | changedBlocks.push(block); 21 | }); 22 | 23 | if (changed.length == 0 || !confirm('Apply changes?')) { 24 | return; 25 | } 26 | 27 | this.$http.post('/admin/blocks', { blocks: changed }) 28 | .then(function (response) { 29 | if (response.status == 200) { 30 | this.syncBlocksContent(changedBlocks); 31 | } else { 32 | console.warn('Error occurred'); 33 | } 34 | }); 35 | }, 36 | 37 | syncBlocksContent: function(blocks) { 38 | blocks.forEach(function (block) { 39 | block.syncContent(); 40 | }); 41 | }, 42 | 43 | getBlockComponents: function(parent) { 44 | var blocks = []; 45 | 46 | parent.$children.forEach(function (component) { 47 | if (component.$options.name == 'html-block') { 48 | blocks.push(component); 49 | return; 50 | } 51 | 52 | if (component.$children.length > 0) { 53 | var childrenBlocks = this.getBlockComponents(component); 54 | 55 | childrenBlocks.forEach(function (block) { 56 | blocks.push(block); 57 | }); 58 | } 59 | }.bind(this)); 60 | 61 | return blocks; 62 | } 63 | }, 64 | 65 | }); 66 | -------------------------------------------------------------------------------- /src/assets/sass/_medium-editor.scss: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes medium-editor-image-loading { 2 | 0% { 3 | -webkit-transform: scale(0); 4 | transform: scale(0); } 5 | 100% { 6 | -webkit-transform: scale(1); 7 | transform: scale(1); } } 8 | 9 | @keyframes medium-editor-image-loading { 10 | 0% { 11 | -webkit-transform: scale(0); 12 | transform: scale(0); } 13 | 100% { 14 | -webkit-transform: scale(1); 15 | transform: scale(1); } } 16 | 17 | @-webkit-keyframes medium-editor-pop-upwards { 18 | 0% { 19 | opacity: 0; 20 | -webkit-transform: matrix(0.97, 0, 0, 1, 0, 12); 21 | transform: matrix(0.97, 0, 0, 1, 0, 12); } 22 | 20% { 23 | opacity: .7; 24 | -webkit-transform: matrix(0.99, 0, 0, 1, 0, 2); 25 | transform: matrix(0.99, 0, 0, 1, 0, 2); } 26 | 40% { 27 | opacity: 1; 28 | -webkit-transform: matrix(1, 0, 0, 1, 0, -1); 29 | transform: matrix(1, 0, 0, 1, 0, -1); } 30 | 100% { 31 | -webkit-transform: matrix(1, 0, 0, 1, 0, 0); 32 | transform: matrix(1, 0, 0, 1, 0, 0); } } 33 | 34 | @keyframes medium-editor-pop-upwards { 35 | 0% { 36 | opacity: 0; 37 | -webkit-transform: matrix(0.97, 0, 0, 1, 0, 12); 38 | transform: matrix(0.97, 0, 0, 1, 0, 12); } 39 | 20% { 40 | opacity: .7; 41 | -webkit-transform: matrix(0.99, 0, 0, 1, 0, 2); 42 | transform: matrix(0.99, 0, 0, 1, 0, 2); } 43 | 40% { 44 | opacity: 1; 45 | -webkit-transform: matrix(1, 0, 0, 1, 0, -1); 46 | transform: matrix(1, 0, 0, 1, 0, -1); } 47 | 100% { 48 | -webkit-transform: matrix(1, 0, 0, 1, 0, 0); 49 | transform: matrix(1, 0, 0, 1, 0, 0); } } 50 | 51 | .medium-editor-anchor-preview { 52 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 53 | font-size: 16px; 54 | left: 0; 55 | line-height: 1.4; 56 | max-width: 280px; 57 | position: absolute; 58 | text-align: center; 59 | top: 0; 60 | word-break: break-all; 61 | word-wrap: break-word; 62 | visibility: hidden; 63 | z-index: 2000; } 64 | .medium-editor-anchor-preview a { 65 | color: #fff; 66 | display: inline-block; 67 | margin: 5px 5px 10px; } 68 | 69 | .medium-editor-anchor-preview-active { 70 | visibility: visible; } 71 | 72 | .medium-editor-dragover { 73 | background: #ddd; } 74 | 75 | .medium-editor-image-loading { 76 | -webkit-animation: medium-editor-image-loading 1s infinite ease-in-out; 77 | animation: medium-editor-image-loading 1s infinite ease-in-out; 78 | background-color: #333; 79 | border-radius: 100%; 80 | display: inline-block; 81 | height: 40px; 82 | width: 40px; } 83 | 84 | .medium-editor-placeholder { 85 | position: relative; } 86 | .medium-editor-placeholder:after { 87 | content: attr(data-placeholder) !important; 88 | font-style: italic; 89 | position: absolute; 90 | left: 0; 91 | top: 0; 92 | white-space: pre; 93 | padding: inherit; 94 | margin: inherit; } 95 | 96 | .medium-editor-placeholder-relative { 97 | position: relative; } 98 | .medium-editor-placeholder-relative:after { 99 | content: attr(data-placeholder) !important; 100 | font-style: italic; 101 | position: relative; 102 | white-space: pre; 103 | padding: inherit; 104 | margin: inherit; } 105 | 106 | .medium-toolbar-arrow-under:after, .medium-toolbar-arrow-over:before { 107 | border-style: solid; 108 | content: ''; 109 | display: block; 110 | height: 0; 111 | left: 50%; 112 | margin-left: -8px; 113 | position: absolute; 114 | width: 0; } 115 | 116 | .medium-toolbar-arrow-under:after { 117 | border-width: 8px 8px 0 8px; } 118 | 119 | .medium-toolbar-arrow-over:before { 120 | border-width: 0 8px 8px 8px; 121 | top: -8px; } 122 | 123 | .medium-editor-toolbar { 124 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 125 | font-size: 16px; 126 | left: 0; 127 | position: absolute; 128 | top: 0; 129 | visibility: hidden; 130 | z-index: 2000; } 131 | .medium-editor-toolbar ul { 132 | margin: 0; 133 | padding: 0; } 134 | .medium-editor-toolbar li { 135 | float: left; 136 | list-style: none; 137 | margin: 0; 138 | padding: 0; } 139 | .medium-editor-toolbar li button { 140 | box-sizing: border-box; 141 | cursor: pointer; 142 | display: block; 143 | font-size: 14px; 144 | line-height: 1.33; 145 | margin: 0; 146 | padding: 15px; 147 | text-decoration: none; } 148 | .medium-editor-toolbar li button:focus { 149 | outline: none; } 150 | .medium-editor-toolbar li .medium-editor-action-underline { 151 | text-decoration: underline; } 152 | .medium-editor-toolbar li .medium-editor-action-pre { 153 | font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; 154 | font-size: 12px; 155 | font-weight: 100; 156 | padding: 15px 0; } 157 | 158 | .medium-editor-toolbar-active { 159 | visibility: visible; } 160 | 161 | .medium-editor-sticky-toolbar { 162 | position: fixed; 163 | top: 1px; } 164 | 165 | .medium-editor-relative-toolbar { 166 | position: relative; } 167 | 168 | .medium-editor-toolbar-active.medium-editor-stalker-toolbar { 169 | -webkit-animation: medium-editor-pop-upwards 160ms forwards linear; 170 | animation: medium-editor-pop-upwards 160ms forwards linear; } 171 | 172 | .medium-editor-action-bold { 173 | font-weight: bolder; } 174 | 175 | .medium-editor-action-italic { 176 | font-style: italic; } 177 | 178 | .medium-editor-toolbar-form { 179 | display: none; } 180 | .medium-editor-toolbar-form input, 181 | .medium-editor-toolbar-form a { 182 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } 183 | .medium-editor-toolbar-form .medium-editor-toolbar-form-row { 184 | line-height: 14px; 185 | margin-left: 5px; 186 | padding-bottom: 5px; } 187 | .medium-editor-toolbar-form .medium-editor-toolbar-input, 188 | .medium-editor-toolbar-form label { 189 | border: none; 190 | box-sizing: border-box; 191 | font-size: 14px; 192 | margin: 0; 193 | padding: 6px; 194 | width: 316px; 195 | display: inline-block; } 196 | .medium-editor-toolbar-form .medium-editor-toolbar-input:focus, 197 | .medium-editor-toolbar-form label:focus { 198 | -webkit-appearance: none; 199 | -moz-appearance: none; 200 | appearance: none; 201 | border: none; 202 | box-shadow: none; 203 | outline: 0; } 204 | .medium-editor-toolbar-form a { 205 | display: inline-block; 206 | font-size: 24px; 207 | font-weight: bolder; 208 | margin: 0 10px; 209 | text-decoration: none; } 210 | 211 | .medium-editor-toolbar-form-active { 212 | display: block; } 213 | 214 | .medium-editor-toolbar-actions:after { 215 | clear: both; 216 | content: ""; 217 | display: table; } 218 | 219 | .medium-editor-element { 220 | word-wrap: break-word; 221 | min-height: 30px; } 222 | .medium-editor-element img { 223 | max-width: 100%; } 224 | .medium-editor-element sub { 225 | vertical-align: sub; } 226 | .medium-editor-element sup { 227 | vertical-align: super; } 228 | 229 | .medium-editor-hidden { 230 | display: none; } 231 | 232 | 233 | .medium-toolbar-arrow-under:after { 234 | top: 60px; 235 | border-color: #57ad68 transparent transparent transparent; } 236 | 237 | .medium-toolbar-arrow-over:before { 238 | top: -8px; 239 | border-color: transparent transparent #57ad68 transparent; } 240 | 241 | .medium-editor-toolbar { 242 | background-color: #57ad68; } 243 | .medium-editor-toolbar li { 244 | padding: 0; } 245 | .medium-editor-toolbar li button { 246 | min-width: 60px; 247 | height: 60px; 248 | border: none; 249 | border-right: 1px solid #9ccea6; 250 | background-color: transparent; 251 | color: #fff; 252 | -webkit-transition: background-color .2s ease-in, color .2s ease-in; 253 | transition: background-color .2s ease-in, color .2s ease-in; } 254 | .medium-editor-toolbar li button:hover { 255 | background-color: #346a3f; 256 | color: #fff; } 257 | .medium-editor-toolbar li .medium-editor-button-active { 258 | background-color: #23482a; 259 | color: #fff; } 260 | .medium-editor-toolbar li .medium-editor-button-last { 261 | border-right: none; } 262 | 263 | .medium-editor-toolbar-form .medium-editor-toolbar-input { 264 | height: 60px; 265 | background: #57ad68; 266 | color: #fff; } 267 | .medium-editor-toolbar-form .medium-editor-toolbar-input::-webkit-input-placeholder { 268 | color: #fff; 269 | color: rgba(255, 255, 255, 0.8); } 270 | .medium-editor-toolbar-form .medium-editor-toolbar-input:-moz-placeholder { 271 | /* Firefox 18- */ 272 | color: #fff; 273 | color: rgba(255, 255, 255, 0.8); } 274 | .medium-editor-toolbar-form .medium-editor-toolbar-input::-moz-placeholder { 275 | /* Firefox 19+ */ 276 | color: #fff; 277 | color: rgba(255, 255, 255, 0.8); } 278 | .medium-editor-toolbar-form .medium-editor-toolbar-input:-ms-input-placeholder { 279 | color: #fff; 280 | color: rgba(255, 255, 255, 0.8); } 281 | 282 | .medium-editor-toolbar-form a { 283 | color: #fff; } 284 | 285 | .medium-editor-toolbar-anchor-preview { 286 | background: #57ad68; 287 | color: #fff; } 288 | 289 | .medium-editor-placeholder:after { 290 | color: #fff; } 291 | 292 | 293 | #html-manager { 294 | position: fixed; 295 | top: 20%; 296 | left: 0; 297 | height: 50px; 298 | color: white; 299 | 300 | z-index: 9999; 301 | 302 | ul { 303 | list-style: none; 304 | margin: 0; 305 | padding: 0; 306 | background: #56AC67; 307 | border-top-right-radius: 10px; 308 | border-bottom-right-radius: 10px; 309 | 310 | li { 311 | margin: 0; 312 | padding: 10px; 313 | transition: background-color .5s ease; 314 | cursor: pointer; 315 | border-top-right-radius: 10px; 316 | border-bottom-right-radius: 10px; 317 | 318 | &:hover { 319 | background: #346a3f; 320 | } 321 | } 322 | } 323 | } 324 | 325 | .medium-editor-element { 326 | border: 1px #999 dashed; 327 | } -------------------------------------------------------------------------------- /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": "53cb9fbde47d0017566b2d0d6f06f429", 8 | "content-hash": "1366f585a4366c4032432a730096f3f4", 9 | "packages": [ 10 | { 11 | "name": "doctrine/inflector", 12 | "version": "v1.1.0", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/doctrine/inflector.git", 16 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", 21 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "php": ">=5.3.2" 26 | }, 27 | "require-dev": { 28 | "phpunit/phpunit": "4.*" 29 | }, 30 | "type": "library", 31 | "extra": { 32 | "branch-alias": { 33 | "dev-master": "1.1.x-dev" 34 | } 35 | }, 36 | "autoload": { 37 | "psr-0": { 38 | "Doctrine\\Common\\Inflector\\": "lib/" 39 | } 40 | }, 41 | "notification-url": "https://packagist.org/downloads/", 42 | "license": [ 43 | "MIT" 44 | ], 45 | "authors": [ 46 | { 47 | "name": "Roman Borschel", 48 | "email": "roman@code-factory.org" 49 | }, 50 | { 51 | "name": "Benjamin Eberlei", 52 | "email": "kontakt@beberlei.de" 53 | }, 54 | { 55 | "name": "Guilherme Blanco", 56 | "email": "guilhermeblanco@gmail.com" 57 | }, 58 | { 59 | "name": "Jonathan Wage", 60 | "email": "jonwage@gmail.com" 61 | }, 62 | { 63 | "name": "Johannes Schmitt", 64 | "email": "schmittjoh@gmail.com" 65 | } 66 | ], 67 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 68 | "homepage": "http://www.doctrine-project.org", 69 | "keywords": [ 70 | "inflection", 71 | "pluralize", 72 | "singularize", 73 | "string" 74 | ], 75 | "time": "2015-11-06 14:35:42" 76 | }, 77 | { 78 | "name": "illuminate/container", 79 | "version": "v5.2.37", 80 | "source": { 81 | "type": "git", 82 | "url": "https://github.com/illuminate/container.git", 83 | "reference": "7ec395833738b9059f829348ddc9a59d0118ac88" 84 | }, 85 | "dist": { 86 | "type": "zip", 87 | "url": "https://api.github.com/repos/illuminate/container/zipball/7ec395833738b9059f829348ddc9a59d0118ac88", 88 | "reference": "7ec395833738b9059f829348ddc9a59d0118ac88", 89 | "shasum": "" 90 | }, 91 | "require": { 92 | "illuminate/contracts": "5.2.*", 93 | "php": ">=5.5.9" 94 | }, 95 | "type": "library", 96 | "extra": { 97 | "branch-alias": { 98 | "dev-master": "5.2-dev" 99 | } 100 | }, 101 | "autoload": { 102 | "psr-4": { 103 | "Illuminate\\Container\\": "" 104 | } 105 | }, 106 | "notification-url": "https://packagist.org/downloads/", 107 | "license": [ 108 | "MIT" 109 | ], 110 | "authors": [ 111 | { 112 | "name": "Taylor Otwell", 113 | "email": "taylorotwell@gmail.com" 114 | } 115 | ], 116 | "description": "The Illuminate Container package.", 117 | "homepage": "http://laravel.com", 118 | "time": "2016-05-29 02:18:23" 119 | }, 120 | { 121 | "name": "illuminate/contracts", 122 | "version": "v5.2.37", 123 | "source": { 124 | "type": "git", 125 | "url": "https://github.com/illuminate/contracts.git", 126 | "reference": "f4f44d7c6d20404da8dfc655bd3d6dd788dfdce5" 127 | }, 128 | "dist": { 129 | "type": "zip", 130 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/f4f44d7c6d20404da8dfc655bd3d6dd788dfdce5", 131 | "reference": "f4f44d7c6d20404da8dfc655bd3d6dd788dfdce5", 132 | "shasum": "" 133 | }, 134 | "require": { 135 | "php": ">=5.5.9" 136 | }, 137 | "type": "library", 138 | "extra": { 139 | "branch-alias": { 140 | "dev-master": "5.2-dev" 141 | } 142 | }, 143 | "autoload": { 144 | "psr-4": { 145 | "Illuminate\\Contracts\\": "" 146 | } 147 | }, 148 | "notification-url": "https://packagist.org/downloads/", 149 | "license": [ 150 | "MIT" 151 | ], 152 | "authors": [ 153 | { 154 | "name": "Taylor Otwell", 155 | "email": "taylorotwell@gmail.com" 156 | } 157 | ], 158 | "description": "The Illuminate Contracts package.", 159 | "homepage": "http://laravel.com", 160 | "time": "2016-05-31 21:36:13" 161 | }, 162 | { 163 | "name": "illuminate/database", 164 | "version": "v5.2.37", 165 | "source": { 166 | "type": "git", 167 | "url": "https://github.com/illuminate/database.git", 168 | "reference": "c0746930dc6a6ff9b72945152609d61a3b3829c6" 169 | }, 170 | "dist": { 171 | "type": "zip", 172 | "url": "https://api.github.com/repos/illuminate/database/zipball/c0746930dc6a6ff9b72945152609d61a3b3829c6", 173 | "reference": "c0746930dc6a6ff9b72945152609d61a3b3829c6", 174 | "shasum": "" 175 | }, 176 | "require": { 177 | "illuminate/container": "5.2.*", 178 | "illuminate/contracts": "5.2.*", 179 | "illuminate/support": "5.2.*", 180 | "nesbot/carbon": "~1.20", 181 | "php": ">=5.5.9" 182 | }, 183 | "suggest": { 184 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.4).", 185 | "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", 186 | "illuminate/console": "Required to use the database commands (5.2.*).", 187 | "illuminate/events": "Required to use the observers with Eloquent (5.2.*).", 188 | "illuminate/filesystem": "Required to use the migrations (5.2.*).", 189 | "illuminate/pagination": "Required to paginate the result set (5.2.*)." 190 | }, 191 | "type": "library", 192 | "extra": { 193 | "branch-alias": { 194 | "dev-master": "5.2-dev" 195 | } 196 | }, 197 | "autoload": { 198 | "psr-4": { 199 | "Illuminate\\Database\\": "" 200 | } 201 | }, 202 | "notification-url": "https://packagist.org/downloads/", 203 | "license": [ 204 | "MIT" 205 | ], 206 | "authors": [ 207 | { 208 | "name": "Taylor Otwell", 209 | "email": "taylorotwell@gmail.com" 210 | } 211 | ], 212 | "description": "The Illuminate Database package.", 213 | "homepage": "http://laravel.com", 214 | "keywords": [ 215 | "database", 216 | "laravel", 217 | "orm", 218 | "sql" 219 | ], 220 | "time": "2016-06-06 13:12:46" 221 | }, 222 | { 223 | "name": "illuminate/support", 224 | "version": "v5.2.37", 225 | "source": { 226 | "type": "git", 227 | "url": "https://github.com/illuminate/support.git", 228 | "reference": "6e86ac2b4e3d0c42c2dc846dbac3e74d378a812b" 229 | }, 230 | "dist": { 231 | "type": "zip", 232 | "url": "https://api.github.com/repos/illuminate/support/zipball/6e86ac2b4e3d0c42c2dc846dbac3e74d378a812b", 233 | "reference": "6e86ac2b4e3d0c42c2dc846dbac3e74d378a812b", 234 | "shasum": "" 235 | }, 236 | "require": { 237 | "doctrine/inflector": "~1.0", 238 | "ext-mbstring": "*", 239 | "illuminate/contracts": "5.2.*", 240 | "paragonie/random_compat": "~1.4", 241 | "php": ">=5.5.9" 242 | }, 243 | "suggest": { 244 | "illuminate/filesystem": "Required to use the composer class (5.2.*).", 245 | "jeremeamia/superclosure": "Required to be able to serialize closures (~2.2).", 246 | "symfony/polyfill-php56": "Required to use the hash_equals function on PHP 5.5 (~1.0).", 247 | "symfony/process": "Required to use the composer class (2.8.*|3.0.*).", 248 | "symfony/var-dumper": "Improves the dd function (2.8.*|3.0.*)." 249 | }, 250 | "type": "library", 251 | "extra": { 252 | "branch-alias": { 253 | "dev-master": "5.2-dev" 254 | } 255 | }, 256 | "autoload": { 257 | "psr-4": { 258 | "Illuminate\\Support\\": "" 259 | }, 260 | "files": [ 261 | "helpers.php" 262 | ] 263 | }, 264 | "notification-url": "https://packagist.org/downloads/", 265 | "license": [ 266 | "MIT" 267 | ], 268 | "authors": [ 269 | { 270 | "name": "Taylor Otwell", 271 | "email": "taylorotwell@gmail.com" 272 | } 273 | ], 274 | "description": "The Illuminate Support package.", 275 | "homepage": "http://laravel.com", 276 | "time": "2016-05-30 02:40:53" 277 | }, 278 | { 279 | "name": "nesbot/carbon", 280 | "version": "1.21.0", 281 | "source": { 282 | "type": "git", 283 | "url": "https://github.com/briannesbitt/Carbon.git", 284 | "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7" 285 | }, 286 | "dist": { 287 | "type": "zip", 288 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7b08ec6f75791e130012f206e3f7b0e76e18e3d7", 289 | "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7", 290 | "shasum": "" 291 | }, 292 | "require": { 293 | "php": ">=5.3.0", 294 | "symfony/translation": "~2.6|~3.0" 295 | }, 296 | "require-dev": { 297 | "phpunit/phpunit": "~4.0|~5.0" 298 | }, 299 | "type": "library", 300 | "autoload": { 301 | "psr-4": { 302 | "Carbon\\": "src/Carbon/" 303 | } 304 | }, 305 | "notification-url": "https://packagist.org/downloads/", 306 | "license": [ 307 | "MIT" 308 | ], 309 | "authors": [ 310 | { 311 | "name": "Brian Nesbitt", 312 | "email": "brian@nesbot.com", 313 | "homepage": "http://nesbot.com" 314 | } 315 | ], 316 | "description": "A simple API extension for DateTime.", 317 | "homepage": "http://carbon.nesbot.com", 318 | "keywords": [ 319 | "date", 320 | "datetime", 321 | "time" 322 | ], 323 | "time": "2015-11-04 20:07:17" 324 | }, 325 | { 326 | "name": "paragonie/random_compat", 327 | "version": "v1.4.1", 328 | "source": { 329 | "type": "git", 330 | "url": "https://github.com/paragonie/random_compat.git", 331 | "reference": "c7e26a21ba357863de030f0b9e701c7d04593774" 332 | }, 333 | "dist": { 334 | "type": "zip", 335 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/c7e26a21ba357863de030f0b9e701c7d04593774", 336 | "reference": "c7e26a21ba357863de030f0b9e701c7d04593774", 337 | "shasum": "" 338 | }, 339 | "require": { 340 | "php": ">=5.2.0" 341 | }, 342 | "require-dev": { 343 | "phpunit/phpunit": "4.*|5.*" 344 | }, 345 | "suggest": { 346 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 347 | }, 348 | "type": "library", 349 | "autoload": { 350 | "files": [ 351 | "lib/random.php" 352 | ] 353 | }, 354 | "notification-url": "https://packagist.org/downloads/", 355 | "license": [ 356 | "MIT" 357 | ], 358 | "authors": [ 359 | { 360 | "name": "Paragon Initiative Enterprises", 361 | "email": "security@paragonie.com", 362 | "homepage": "https://paragonie.com" 363 | } 364 | ], 365 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 366 | "keywords": [ 367 | "csprng", 368 | "pseudorandom", 369 | "random" 370 | ], 371 | "time": "2016-03-18 20:34:03" 372 | }, 373 | { 374 | "name": "symfony/polyfill-mbstring", 375 | "version": "v1.2.0", 376 | "source": { 377 | "type": "git", 378 | "url": "https://github.com/symfony/polyfill-mbstring.git", 379 | "reference": "dff51f72b0706335131b00a7f49606168c582594" 380 | }, 381 | "dist": { 382 | "type": "zip", 383 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594", 384 | "reference": "dff51f72b0706335131b00a7f49606168c582594", 385 | "shasum": "" 386 | }, 387 | "require": { 388 | "php": ">=5.3.3" 389 | }, 390 | "suggest": { 391 | "ext-mbstring": "For best performance" 392 | }, 393 | "type": "library", 394 | "extra": { 395 | "branch-alias": { 396 | "dev-master": "1.2-dev" 397 | } 398 | }, 399 | "autoload": { 400 | "psr-4": { 401 | "Symfony\\Polyfill\\Mbstring\\": "" 402 | }, 403 | "files": [ 404 | "bootstrap.php" 405 | ] 406 | }, 407 | "notification-url": "https://packagist.org/downloads/", 408 | "license": [ 409 | "MIT" 410 | ], 411 | "authors": [ 412 | { 413 | "name": "Nicolas Grekas", 414 | "email": "p@tchwork.com" 415 | }, 416 | { 417 | "name": "Symfony Community", 418 | "homepage": "https://symfony.com/contributors" 419 | } 420 | ], 421 | "description": "Symfony polyfill for the Mbstring extension", 422 | "homepage": "https://symfony.com", 423 | "keywords": [ 424 | "compatibility", 425 | "mbstring", 426 | "polyfill", 427 | "portable", 428 | "shim" 429 | ], 430 | "time": "2016-05-18 14:26:46" 431 | }, 432 | { 433 | "name": "symfony/translation", 434 | "version": "v3.1.2", 435 | "source": { 436 | "type": "git", 437 | "url": "https://github.com/symfony/translation.git", 438 | "reference": "d63a94528530c3ea5ff46924c8001cec4a398609" 439 | }, 440 | "dist": { 441 | "type": "zip", 442 | "url": "https://api.github.com/repos/symfony/translation/zipball/d63a94528530c3ea5ff46924c8001cec4a398609", 443 | "reference": "d63a94528530c3ea5ff46924c8001cec4a398609", 444 | "shasum": "" 445 | }, 446 | "require": { 447 | "php": ">=5.5.9", 448 | "symfony/polyfill-mbstring": "~1.0" 449 | }, 450 | "conflict": { 451 | "symfony/config": "<2.8" 452 | }, 453 | "require-dev": { 454 | "psr/log": "~1.0", 455 | "symfony/config": "~2.8|~3.0", 456 | "symfony/intl": "~2.8|~3.0", 457 | "symfony/yaml": "~2.8|~3.0" 458 | }, 459 | "suggest": { 460 | "psr/log": "To use logging capability in translator", 461 | "symfony/config": "", 462 | "symfony/yaml": "" 463 | }, 464 | "type": "library", 465 | "extra": { 466 | "branch-alias": { 467 | "dev-master": "3.1-dev" 468 | } 469 | }, 470 | "autoload": { 471 | "psr-4": { 472 | "Symfony\\Component\\Translation\\": "" 473 | }, 474 | "exclude-from-classmap": [ 475 | "/Tests/" 476 | ] 477 | }, 478 | "notification-url": "https://packagist.org/downloads/", 479 | "license": [ 480 | "MIT" 481 | ], 482 | "authors": [ 483 | { 484 | "name": "Fabien Potencier", 485 | "email": "fabien@symfony.com" 486 | }, 487 | { 488 | "name": "Symfony Community", 489 | "homepage": "https://symfony.com/contributors" 490 | } 491 | ], 492 | "description": "Symfony Translation Component", 493 | "homepage": "https://symfony.com", 494 | "time": "2016-06-29 05:41:56" 495 | } 496 | ], 497 | "packages-dev": [ 498 | { 499 | "name": "doctrine/instantiator", 500 | "version": "1.0.5", 501 | "source": { 502 | "type": "git", 503 | "url": "https://github.com/doctrine/instantiator.git", 504 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 505 | }, 506 | "dist": { 507 | "type": "zip", 508 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 509 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 510 | "shasum": "" 511 | }, 512 | "require": { 513 | "php": ">=5.3,<8.0-DEV" 514 | }, 515 | "require-dev": { 516 | "athletic/athletic": "~0.1.8", 517 | "ext-pdo": "*", 518 | "ext-phar": "*", 519 | "phpunit/phpunit": "~4.0", 520 | "squizlabs/php_codesniffer": "~2.0" 521 | }, 522 | "type": "library", 523 | "extra": { 524 | "branch-alias": { 525 | "dev-master": "1.0.x-dev" 526 | } 527 | }, 528 | "autoload": { 529 | "psr-4": { 530 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 531 | } 532 | }, 533 | "notification-url": "https://packagist.org/downloads/", 534 | "license": [ 535 | "MIT" 536 | ], 537 | "authors": [ 538 | { 539 | "name": "Marco Pivetta", 540 | "email": "ocramius@gmail.com", 541 | "homepage": "http://ocramius.github.com/" 542 | } 543 | ], 544 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 545 | "homepage": "https://github.com/doctrine/instantiator", 546 | "keywords": [ 547 | "constructor", 548 | "instantiate" 549 | ], 550 | "time": "2015-06-14 21:17:01" 551 | }, 552 | { 553 | "name": "myclabs/deep-copy", 554 | "version": "1.5.1", 555 | "source": { 556 | "type": "git", 557 | "url": "https://github.com/myclabs/DeepCopy.git", 558 | "reference": "a8773992b362b58498eed24bf85005f363c34771" 559 | }, 560 | "dist": { 561 | "type": "zip", 562 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/a8773992b362b58498eed24bf85005f363c34771", 563 | "reference": "a8773992b362b58498eed24bf85005f363c34771", 564 | "shasum": "" 565 | }, 566 | "require": { 567 | "php": ">=5.4.0" 568 | }, 569 | "require-dev": { 570 | "doctrine/collections": "1.*", 571 | "phpunit/phpunit": "~4.1" 572 | }, 573 | "type": "library", 574 | "autoload": { 575 | "psr-4": { 576 | "DeepCopy\\": "src/DeepCopy/" 577 | } 578 | }, 579 | "notification-url": "https://packagist.org/downloads/", 580 | "license": [ 581 | "MIT" 582 | ], 583 | "description": "Create deep copies (clones) of your objects", 584 | "homepage": "https://github.com/myclabs/DeepCopy", 585 | "keywords": [ 586 | "clone", 587 | "copy", 588 | "duplicate", 589 | "object", 590 | "object graph" 591 | ], 592 | "time": "2015-11-20 12:04:31" 593 | }, 594 | { 595 | "name": "phpdocumentor/reflection-common", 596 | "version": "1.0", 597 | "source": { 598 | "type": "git", 599 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 600 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" 601 | }, 602 | "dist": { 603 | "type": "zip", 604 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 605 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 606 | "shasum": "" 607 | }, 608 | "require": { 609 | "php": ">=5.5" 610 | }, 611 | "require-dev": { 612 | "phpunit/phpunit": "^4.6" 613 | }, 614 | "type": "library", 615 | "extra": { 616 | "branch-alias": { 617 | "dev-master": "1.0.x-dev" 618 | } 619 | }, 620 | "autoload": { 621 | "psr-4": { 622 | "phpDocumentor\\Reflection\\": [ 623 | "src" 624 | ] 625 | } 626 | }, 627 | "notification-url": "https://packagist.org/downloads/", 628 | "license": [ 629 | "MIT" 630 | ], 631 | "authors": [ 632 | { 633 | "name": "Jaap van Otterdijk", 634 | "email": "opensource@ijaap.nl" 635 | } 636 | ], 637 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 638 | "homepage": "http://www.phpdoc.org", 639 | "keywords": [ 640 | "FQSEN", 641 | "phpDocumentor", 642 | "phpdoc", 643 | "reflection", 644 | "static analysis" 645 | ], 646 | "time": "2015-12-27 11:43:31" 647 | }, 648 | { 649 | "name": "phpdocumentor/reflection-docblock", 650 | "version": "3.1.0", 651 | "source": { 652 | "type": "git", 653 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 654 | "reference": "9270140b940ff02e58ec577c237274e92cd40cdd" 655 | }, 656 | "dist": { 657 | "type": "zip", 658 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd", 659 | "reference": "9270140b940ff02e58ec577c237274e92cd40cdd", 660 | "shasum": "" 661 | }, 662 | "require": { 663 | "php": ">=5.5", 664 | "phpdocumentor/reflection-common": "^1.0@dev", 665 | "phpdocumentor/type-resolver": "^0.2.0", 666 | "webmozart/assert": "^1.0" 667 | }, 668 | "require-dev": { 669 | "mockery/mockery": "^0.9.4", 670 | "phpunit/phpunit": "^4.4" 671 | }, 672 | "type": "library", 673 | "autoload": { 674 | "psr-4": { 675 | "phpDocumentor\\Reflection\\": [ 676 | "src/" 677 | ] 678 | } 679 | }, 680 | "notification-url": "https://packagist.org/downloads/", 681 | "license": [ 682 | "MIT" 683 | ], 684 | "authors": [ 685 | { 686 | "name": "Mike van Riel", 687 | "email": "me@mikevanriel.com" 688 | } 689 | ], 690 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 691 | "time": "2016-06-10 09:48:41" 692 | }, 693 | { 694 | "name": "phpdocumentor/type-resolver", 695 | "version": "0.2", 696 | "source": { 697 | "type": "git", 698 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 699 | "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" 700 | }, 701 | "dist": { 702 | "type": "zip", 703 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", 704 | "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", 705 | "shasum": "" 706 | }, 707 | "require": { 708 | "php": ">=5.5", 709 | "phpdocumentor/reflection-common": "^1.0" 710 | }, 711 | "require-dev": { 712 | "mockery/mockery": "^0.9.4", 713 | "phpunit/phpunit": "^5.2||^4.8.24" 714 | }, 715 | "type": "library", 716 | "extra": { 717 | "branch-alias": { 718 | "dev-master": "1.0.x-dev" 719 | } 720 | }, 721 | "autoload": { 722 | "psr-4": { 723 | "phpDocumentor\\Reflection\\": [ 724 | "src/" 725 | ] 726 | } 727 | }, 728 | "notification-url": "https://packagist.org/downloads/", 729 | "license": [ 730 | "MIT" 731 | ], 732 | "authors": [ 733 | { 734 | "name": "Mike van Riel", 735 | "email": "me@mikevanriel.com" 736 | } 737 | ], 738 | "time": "2016-06-10 07:14:17" 739 | }, 740 | { 741 | "name": "phpspec/prophecy", 742 | "version": "v1.6.1", 743 | "source": { 744 | "type": "git", 745 | "url": "https://github.com/phpspec/prophecy.git", 746 | "reference": "58a8137754bc24b25740d4281399a4a3596058e0" 747 | }, 748 | "dist": { 749 | "type": "zip", 750 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/58a8137754bc24b25740d4281399a4a3596058e0", 751 | "reference": "58a8137754bc24b25740d4281399a4a3596058e0", 752 | "shasum": "" 753 | }, 754 | "require": { 755 | "doctrine/instantiator": "^1.0.2", 756 | "php": "^5.3|^7.0", 757 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", 758 | "sebastian/comparator": "^1.1", 759 | "sebastian/recursion-context": "^1.0" 760 | }, 761 | "require-dev": { 762 | "phpspec/phpspec": "^2.0" 763 | }, 764 | "type": "library", 765 | "extra": { 766 | "branch-alias": { 767 | "dev-master": "1.6.x-dev" 768 | } 769 | }, 770 | "autoload": { 771 | "psr-0": { 772 | "Prophecy\\": "src/" 773 | } 774 | }, 775 | "notification-url": "https://packagist.org/downloads/", 776 | "license": [ 777 | "MIT" 778 | ], 779 | "authors": [ 780 | { 781 | "name": "Konstantin Kudryashov", 782 | "email": "ever.zet@gmail.com", 783 | "homepage": "http://everzet.com" 784 | }, 785 | { 786 | "name": "Marcello Duarte", 787 | "email": "marcello.duarte@gmail.com" 788 | } 789 | ], 790 | "description": "Highly opinionated mocking framework for PHP 5.3+", 791 | "homepage": "https://github.com/phpspec/prophecy", 792 | "keywords": [ 793 | "Double", 794 | "Dummy", 795 | "fake", 796 | "mock", 797 | "spy", 798 | "stub" 799 | ], 800 | "time": "2016-06-07 08:13:47" 801 | }, 802 | { 803 | "name": "phpunit/php-code-coverage", 804 | "version": "4.0.1", 805 | "source": { 806 | "type": "git", 807 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 808 | "reference": "5f3f7e736d6319d5f1fc402aff8b026da26709a3" 809 | }, 810 | "dist": { 811 | "type": "zip", 812 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/5f3f7e736d6319d5f1fc402aff8b026da26709a3", 813 | "reference": "5f3f7e736d6319d5f1fc402aff8b026da26709a3", 814 | "shasum": "" 815 | }, 816 | "require": { 817 | "php": "^5.6 || ^7.0", 818 | "phpunit/php-file-iterator": "~1.3", 819 | "phpunit/php-text-template": "~1.2", 820 | "phpunit/php-token-stream": "^1.4.2", 821 | "sebastian/code-unit-reverse-lookup": "~1.0", 822 | "sebastian/environment": "^1.3.2 || ^2.0", 823 | "sebastian/version": "~1.0|~2.0" 824 | }, 825 | "require-dev": { 826 | "ext-xdebug": ">=2.1.4", 827 | "phpunit/phpunit": "^5.4" 828 | }, 829 | "suggest": { 830 | "ext-dom": "*", 831 | "ext-xdebug": ">=2.4.0", 832 | "ext-xmlwriter": "*" 833 | }, 834 | "type": "library", 835 | "extra": { 836 | "branch-alias": { 837 | "dev-master": "4.0.x-dev" 838 | } 839 | }, 840 | "autoload": { 841 | "classmap": [ 842 | "src/" 843 | ] 844 | }, 845 | "notification-url": "https://packagist.org/downloads/", 846 | "license": [ 847 | "BSD-3-Clause" 848 | ], 849 | "authors": [ 850 | { 851 | "name": "Sebastian Bergmann", 852 | "email": "sb@sebastian-bergmann.de", 853 | "role": "lead" 854 | } 855 | ], 856 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 857 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 858 | "keywords": [ 859 | "coverage", 860 | "testing", 861 | "xunit" 862 | ], 863 | "time": "2016-07-26 14:39:29" 864 | }, 865 | { 866 | "name": "phpunit/php-file-iterator", 867 | "version": "1.4.1", 868 | "source": { 869 | "type": "git", 870 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 871 | "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" 872 | }, 873 | "dist": { 874 | "type": "zip", 875 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", 876 | "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", 877 | "shasum": "" 878 | }, 879 | "require": { 880 | "php": ">=5.3.3" 881 | }, 882 | "type": "library", 883 | "extra": { 884 | "branch-alias": { 885 | "dev-master": "1.4.x-dev" 886 | } 887 | }, 888 | "autoload": { 889 | "classmap": [ 890 | "src/" 891 | ] 892 | }, 893 | "notification-url": "https://packagist.org/downloads/", 894 | "license": [ 895 | "BSD-3-Clause" 896 | ], 897 | "authors": [ 898 | { 899 | "name": "Sebastian Bergmann", 900 | "email": "sb@sebastian-bergmann.de", 901 | "role": "lead" 902 | } 903 | ], 904 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 905 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 906 | "keywords": [ 907 | "filesystem", 908 | "iterator" 909 | ], 910 | "time": "2015-06-21 13:08:43" 911 | }, 912 | { 913 | "name": "phpunit/php-text-template", 914 | "version": "1.2.1", 915 | "source": { 916 | "type": "git", 917 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 918 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 919 | }, 920 | "dist": { 921 | "type": "zip", 922 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 923 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 924 | "shasum": "" 925 | }, 926 | "require": { 927 | "php": ">=5.3.3" 928 | }, 929 | "type": "library", 930 | "autoload": { 931 | "classmap": [ 932 | "src/" 933 | ] 934 | }, 935 | "notification-url": "https://packagist.org/downloads/", 936 | "license": [ 937 | "BSD-3-Clause" 938 | ], 939 | "authors": [ 940 | { 941 | "name": "Sebastian Bergmann", 942 | "email": "sebastian@phpunit.de", 943 | "role": "lead" 944 | } 945 | ], 946 | "description": "Simple template engine.", 947 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 948 | "keywords": [ 949 | "template" 950 | ], 951 | "time": "2015-06-21 13:50:34" 952 | }, 953 | { 954 | "name": "phpunit/php-timer", 955 | "version": "1.0.8", 956 | "source": { 957 | "type": "git", 958 | "url": "https://github.com/sebastianbergmann/php-timer.git", 959 | "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" 960 | }, 961 | "dist": { 962 | "type": "zip", 963 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", 964 | "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", 965 | "shasum": "" 966 | }, 967 | "require": { 968 | "php": ">=5.3.3" 969 | }, 970 | "require-dev": { 971 | "phpunit/phpunit": "~4|~5" 972 | }, 973 | "type": "library", 974 | "autoload": { 975 | "classmap": [ 976 | "src/" 977 | ] 978 | }, 979 | "notification-url": "https://packagist.org/downloads/", 980 | "license": [ 981 | "BSD-3-Clause" 982 | ], 983 | "authors": [ 984 | { 985 | "name": "Sebastian Bergmann", 986 | "email": "sb@sebastian-bergmann.de", 987 | "role": "lead" 988 | } 989 | ], 990 | "description": "Utility class for timing", 991 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 992 | "keywords": [ 993 | "timer" 994 | ], 995 | "time": "2016-05-12 18:03:57" 996 | }, 997 | { 998 | "name": "phpunit/php-token-stream", 999 | "version": "1.4.8", 1000 | "source": { 1001 | "type": "git", 1002 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1003 | "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da" 1004 | }, 1005 | "dist": { 1006 | "type": "zip", 1007 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", 1008 | "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", 1009 | "shasum": "" 1010 | }, 1011 | "require": { 1012 | "ext-tokenizer": "*", 1013 | "php": ">=5.3.3" 1014 | }, 1015 | "require-dev": { 1016 | "phpunit/phpunit": "~4.2" 1017 | }, 1018 | "type": "library", 1019 | "extra": { 1020 | "branch-alias": { 1021 | "dev-master": "1.4-dev" 1022 | } 1023 | }, 1024 | "autoload": { 1025 | "classmap": [ 1026 | "src/" 1027 | ] 1028 | }, 1029 | "notification-url": "https://packagist.org/downloads/", 1030 | "license": [ 1031 | "BSD-3-Clause" 1032 | ], 1033 | "authors": [ 1034 | { 1035 | "name": "Sebastian Bergmann", 1036 | "email": "sebastian@phpunit.de" 1037 | } 1038 | ], 1039 | "description": "Wrapper around PHP's tokenizer extension.", 1040 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1041 | "keywords": [ 1042 | "tokenizer" 1043 | ], 1044 | "time": "2015-09-15 10:49:45" 1045 | }, 1046 | { 1047 | "name": "phpunit/phpunit", 1048 | "version": "5.4.8", 1049 | "source": { 1050 | "type": "git", 1051 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1052 | "reference": "3132365e1430c091f208e120b8845d39c25f20e6" 1053 | }, 1054 | "dist": { 1055 | "type": "zip", 1056 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3132365e1430c091f208e120b8845d39c25f20e6", 1057 | "reference": "3132365e1430c091f208e120b8845d39c25f20e6", 1058 | "shasum": "" 1059 | }, 1060 | "require": { 1061 | "ext-dom": "*", 1062 | "ext-json": "*", 1063 | "ext-pcre": "*", 1064 | "ext-reflection": "*", 1065 | "ext-spl": "*", 1066 | "myclabs/deep-copy": "~1.3", 1067 | "php": "^5.6 || ^7.0", 1068 | "phpspec/prophecy": "^1.3.1", 1069 | "phpunit/php-code-coverage": "^4.0.1", 1070 | "phpunit/php-file-iterator": "~1.4", 1071 | "phpunit/php-text-template": "~1.2", 1072 | "phpunit/php-timer": "^1.0.6", 1073 | "phpunit/phpunit-mock-objects": "^3.2", 1074 | "sebastian/comparator": "~1.1", 1075 | "sebastian/diff": "~1.2", 1076 | "sebastian/environment": "^1.3 || ^2.0", 1077 | "sebastian/exporter": "~1.2", 1078 | "sebastian/global-state": "~1.0", 1079 | "sebastian/object-enumerator": "~1.0", 1080 | "sebastian/resource-operations": "~1.0", 1081 | "sebastian/version": "~1.0|~2.0", 1082 | "symfony/yaml": "~2.1|~3.0" 1083 | }, 1084 | "conflict": { 1085 | "phpdocumentor/reflection-docblock": "3.0.2" 1086 | }, 1087 | "suggest": { 1088 | "phpunit/php-invoker": "~1.1" 1089 | }, 1090 | "bin": [ 1091 | "phpunit" 1092 | ], 1093 | "type": "library", 1094 | "extra": { 1095 | "branch-alias": { 1096 | "dev-master": "5.4.x-dev" 1097 | } 1098 | }, 1099 | "autoload": { 1100 | "classmap": [ 1101 | "src/" 1102 | ] 1103 | }, 1104 | "notification-url": "https://packagist.org/downloads/", 1105 | "license": [ 1106 | "BSD-3-Clause" 1107 | ], 1108 | "authors": [ 1109 | { 1110 | "name": "Sebastian Bergmann", 1111 | "email": "sebastian@phpunit.de", 1112 | "role": "lead" 1113 | } 1114 | ], 1115 | "description": "The PHP Unit Testing framework.", 1116 | "homepage": "https://phpunit.de/", 1117 | "keywords": [ 1118 | "phpunit", 1119 | "testing", 1120 | "xunit" 1121 | ], 1122 | "time": "2016-07-26 14:48:00" 1123 | }, 1124 | { 1125 | "name": "phpunit/phpunit-mock-objects", 1126 | "version": "3.2.3", 1127 | "source": { 1128 | "type": "git", 1129 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 1130 | "reference": "b13d0d9426ced06958bd32104653526a6c998a52" 1131 | }, 1132 | "dist": { 1133 | "type": "zip", 1134 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/b13d0d9426ced06958bd32104653526a6c998a52", 1135 | "reference": "b13d0d9426ced06958bd32104653526a6c998a52", 1136 | "shasum": "" 1137 | }, 1138 | "require": { 1139 | "doctrine/instantiator": "^1.0.2", 1140 | "php": "^5.6 || ^7.0", 1141 | "phpunit/php-text-template": "^1.2", 1142 | "sebastian/exporter": "^1.2" 1143 | }, 1144 | "conflict": { 1145 | "phpunit/phpunit": "<5.4.0" 1146 | }, 1147 | "require-dev": { 1148 | "phpunit/phpunit": "^5.4" 1149 | }, 1150 | "suggest": { 1151 | "ext-soap": "*" 1152 | }, 1153 | "type": "library", 1154 | "extra": { 1155 | "branch-alias": { 1156 | "dev-master": "3.2.x-dev" 1157 | } 1158 | }, 1159 | "autoload": { 1160 | "classmap": [ 1161 | "src/" 1162 | ] 1163 | }, 1164 | "notification-url": "https://packagist.org/downloads/", 1165 | "license": [ 1166 | "BSD-3-Clause" 1167 | ], 1168 | "authors": [ 1169 | { 1170 | "name": "Sebastian Bergmann", 1171 | "email": "sb@sebastian-bergmann.de", 1172 | "role": "lead" 1173 | } 1174 | ], 1175 | "description": "Mock Object library for PHPUnit", 1176 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 1177 | "keywords": [ 1178 | "mock", 1179 | "xunit" 1180 | ], 1181 | "time": "2016-06-12 07:37:26" 1182 | }, 1183 | { 1184 | "name": "sebastian/code-unit-reverse-lookup", 1185 | "version": "1.0.0", 1186 | "source": { 1187 | "type": "git", 1188 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1189 | "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe" 1190 | }, 1191 | "dist": { 1192 | "type": "zip", 1193 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/c36f5e7cfce482fde5bf8d10d41a53591e0198fe", 1194 | "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe", 1195 | "shasum": "" 1196 | }, 1197 | "require": { 1198 | "php": ">=5.6" 1199 | }, 1200 | "require-dev": { 1201 | "phpunit/phpunit": "~5" 1202 | }, 1203 | "type": "library", 1204 | "extra": { 1205 | "branch-alias": { 1206 | "dev-master": "1.0.x-dev" 1207 | } 1208 | }, 1209 | "autoload": { 1210 | "classmap": [ 1211 | "src/" 1212 | ] 1213 | }, 1214 | "notification-url": "https://packagist.org/downloads/", 1215 | "license": [ 1216 | "BSD-3-Clause" 1217 | ], 1218 | "authors": [ 1219 | { 1220 | "name": "Sebastian Bergmann", 1221 | "email": "sebastian@phpunit.de" 1222 | } 1223 | ], 1224 | "description": "Looks up which function or method a line of code belongs to", 1225 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1226 | "time": "2016-02-13 06:45:14" 1227 | }, 1228 | { 1229 | "name": "sebastian/comparator", 1230 | "version": "1.2.0", 1231 | "source": { 1232 | "type": "git", 1233 | "url": "https://github.com/sebastianbergmann/comparator.git", 1234 | "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" 1235 | }, 1236 | "dist": { 1237 | "type": "zip", 1238 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", 1239 | "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", 1240 | "shasum": "" 1241 | }, 1242 | "require": { 1243 | "php": ">=5.3.3", 1244 | "sebastian/diff": "~1.2", 1245 | "sebastian/exporter": "~1.2" 1246 | }, 1247 | "require-dev": { 1248 | "phpunit/phpunit": "~4.4" 1249 | }, 1250 | "type": "library", 1251 | "extra": { 1252 | "branch-alias": { 1253 | "dev-master": "1.2.x-dev" 1254 | } 1255 | }, 1256 | "autoload": { 1257 | "classmap": [ 1258 | "src/" 1259 | ] 1260 | }, 1261 | "notification-url": "https://packagist.org/downloads/", 1262 | "license": [ 1263 | "BSD-3-Clause" 1264 | ], 1265 | "authors": [ 1266 | { 1267 | "name": "Jeff Welch", 1268 | "email": "whatthejeff@gmail.com" 1269 | }, 1270 | { 1271 | "name": "Volker Dusch", 1272 | "email": "github@wallbash.com" 1273 | }, 1274 | { 1275 | "name": "Bernhard Schussek", 1276 | "email": "bschussek@2bepublished.at" 1277 | }, 1278 | { 1279 | "name": "Sebastian Bergmann", 1280 | "email": "sebastian@phpunit.de" 1281 | } 1282 | ], 1283 | "description": "Provides the functionality to compare PHP values for equality", 1284 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 1285 | "keywords": [ 1286 | "comparator", 1287 | "compare", 1288 | "equality" 1289 | ], 1290 | "time": "2015-07-26 15:48:44" 1291 | }, 1292 | { 1293 | "name": "sebastian/diff", 1294 | "version": "1.4.1", 1295 | "source": { 1296 | "type": "git", 1297 | "url": "https://github.com/sebastianbergmann/diff.git", 1298 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" 1299 | }, 1300 | "dist": { 1301 | "type": "zip", 1302 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", 1303 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", 1304 | "shasum": "" 1305 | }, 1306 | "require": { 1307 | "php": ">=5.3.3" 1308 | }, 1309 | "require-dev": { 1310 | "phpunit/phpunit": "~4.8" 1311 | }, 1312 | "type": "library", 1313 | "extra": { 1314 | "branch-alias": { 1315 | "dev-master": "1.4-dev" 1316 | } 1317 | }, 1318 | "autoload": { 1319 | "classmap": [ 1320 | "src/" 1321 | ] 1322 | }, 1323 | "notification-url": "https://packagist.org/downloads/", 1324 | "license": [ 1325 | "BSD-3-Clause" 1326 | ], 1327 | "authors": [ 1328 | { 1329 | "name": "Kore Nordmann", 1330 | "email": "mail@kore-nordmann.de" 1331 | }, 1332 | { 1333 | "name": "Sebastian Bergmann", 1334 | "email": "sebastian@phpunit.de" 1335 | } 1336 | ], 1337 | "description": "Diff implementation", 1338 | "homepage": "https://github.com/sebastianbergmann/diff", 1339 | "keywords": [ 1340 | "diff" 1341 | ], 1342 | "time": "2015-12-08 07:14:41" 1343 | }, 1344 | { 1345 | "name": "sebastian/environment", 1346 | "version": "1.3.7", 1347 | "source": { 1348 | "type": "git", 1349 | "url": "https://github.com/sebastianbergmann/environment.git", 1350 | "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716" 1351 | }, 1352 | "dist": { 1353 | "type": "zip", 1354 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716", 1355 | "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716", 1356 | "shasum": "" 1357 | }, 1358 | "require": { 1359 | "php": ">=5.3.3" 1360 | }, 1361 | "require-dev": { 1362 | "phpunit/phpunit": "~4.4" 1363 | }, 1364 | "type": "library", 1365 | "extra": { 1366 | "branch-alias": { 1367 | "dev-master": "1.3.x-dev" 1368 | } 1369 | }, 1370 | "autoload": { 1371 | "classmap": [ 1372 | "src/" 1373 | ] 1374 | }, 1375 | "notification-url": "https://packagist.org/downloads/", 1376 | "license": [ 1377 | "BSD-3-Clause" 1378 | ], 1379 | "authors": [ 1380 | { 1381 | "name": "Sebastian Bergmann", 1382 | "email": "sebastian@phpunit.de" 1383 | } 1384 | ], 1385 | "description": "Provides functionality to handle HHVM/PHP environments", 1386 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1387 | "keywords": [ 1388 | "Xdebug", 1389 | "environment", 1390 | "hhvm" 1391 | ], 1392 | "time": "2016-05-17 03:18:57" 1393 | }, 1394 | { 1395 | "name": "sebastian/exporter", 1396 | "version": "1.2.2", 1397 | "source": { 1398 | "type": "git", 1399 | "url": "https://github.com/sebastianbergmann/exporter.git", 1400 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" 1401 | }, 1402 | "dist": { 1403 | "type": "zip", 1404 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", 1405 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", 1406 | "shasum": "" 1407 | }, 1408 | "require": { 1409 | "php": ">=5.3.3", 1410 | "sebastian/recursion-context": "~1.0" 1411 | }, 1412 | "require-dev": { 1413 | "ext-mbstring": "*", 1414 | "phpunit/phpunit": "~4.4" 1415 | }, 1416 | "type": "library", 1417 | "extra": { 1418 | "branch-alias": { 1419 | "dev-master": "1.3.x-dev" 1420 | } 1421 | }, 1422 | "autoload": { 1423 | "classmap": [ 1424 | "src/" 1425 | ] 1426 | }, 1427 | "notification-url": "https://packagist.org/downloads/", 1428 | "license": [ 1429 | "BSD-3-Clause" 1430 | ], 1431 | "authors": [ 1432 | { 1433 | "name": "Jeff Welch", 1434 | "email": "whatthejeff@gmail.com" 1435 | }, 1436 | { 1437 | "name": "Volker Dusch", 1438 | "email": "github@wallbash.com" 1439 | }, 1440 | { 1441 | "name": "Bernhard Schussek", 1442 | "email": "bschussek@2bepublished.at" 1443 | }, 1444 | { 1445 | "name": "Sebastian Bergmann", 1446 | "email": "sebastian@phpunit.de" 1447 | }, 1448 | { 1449 | "name": "Adam Harvey", 1450 | "email": "aharvey@php.net" 1451 | } 1452 | ], 1453 | "description": "Provides the functionality to export PHP variables for visualization", 1454 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1455 | "keywords": [ 1456 | "export", 1457 | "exporter" 1458 | ], 1459 | "time": "2016-06-17 09:04:28" 1460 | }, 1461 | { 1462 | "name": "sebastian/global-state", 1463 | "version": "1.1.1", 1464 | "source": { 1465 | "type": "git", 1466 | "url": "https://github.com/sebastianbergmann/global-state.git", 1467 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" 1468 | }, 1469 | "dist": { 1470 | "type": "zip", 1471 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", 1472 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", 1473 | "shasum": "" 1474 | }, 1475 | "require": { 1476 | "php": ">=5.3.3" 1477 | }, 1478 | "require-dev": { 1479 | "phpunit/phpunit": "~4.2" 1480 | }, 1481 | "suggest": { 1482 | "ext-uopz": "*" 1483 | }, 1484 | "type": "library", 1485 | "extra": { 1486 | "branch-alias": { 1487 | "dev-master": "1.0-dev" 1488 | } 1489 | }, 1490 | "autoload": { 1491 | "classmap": [ 1492 | "src/" 1493 | ] 1494 | }, 1495 | "notification-url": "https://packagist.org/downloads/", 1496 | "license": [ 1497 | "BSD-3-Clause" 1498 | ], 1499 | "authors": [ 1500 | { 1501 | "name": "Sebastian Bergmann", 1502 | "email": "sebastian@phpunit.de" 1503 | } 1504 | ], 1505 | "description": "Snapshotting of global state", 1506 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1507 | "keywords": [ 1508 | "global state" 1509 | ], 1510 | "time": "2015-10-12 03:26:01" 1511 | }, 1512 | { 1513 | "name": "sebastian/object-enumerator", 1514 | "version": "1.0.0", 1515 | "source": { 1516 | "type": "git", 1517 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1518 | "reference": "d4ca2fb70344987502567bc50081c03e6192fb26" 1519 | }, 1520 | "dist": { 1521 | "type": "zip", 1522 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/d4ca2fb70344987502567bc50081c03e6192fb26", 1523 | "reference": "d4ca2fb70344987502567bc50081c03e6192fb26", 1524 | "shasum": "" 1525 | }, 1526 | "require": { 1527 | "php": ">=5.6", 1528 | "sebastian/recursion-context": "~1.0" 1529 | }, 1530 | "require-dev": { 1531 | "phpunit/phpunit": "~5" 1532 | }, 1533 | "type": "library", 1534 | "extra": { 1535 | "branch-alias": { 1536 | "dev-master": "1.0.x-dev" 1537 | } 1538 | }, 1539 | "autoload": { 1540 | "classmap": [ 1541 | "src/" 1542 | ] 1543 | }, 1544 | "notification-url": "https://packagist.org/downloads/", 1545 | "license": [ 1546 | "BSD-3-Clause" 1547 | ], 1548 | "authors": [ 1549 | { 1550 | "name": "Sebastian Bergmann", 1551 | "email": "sebastian@phpunit.de" 1552 | } 1553 | ], 1554 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1555 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1556 | "time": "2016-01-28 13:25:10" 1557 | }, 1558 | { 1559 | "name": "sebastian/recursion-context", 1560 | "version": "1.0.2", 1561 | "source": { 1562 | "type": "git", 1563 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1564 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791" 1565 | }, 1566 | "dist": { 1567 | "type": "zip", 1568 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791", 1569 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791", 1570 | "shasum": "" 1571 | }, 1572 | "require": { 1573 | "php": ">=5.3.3" 1574 | }, 1575 | "require-dev": { 1576 | "phpunit/phpunit": "~4.4" 1577 | }, 1578 | "type": "library", 1579 | "extra": { 1580 | "branch-alias": { 1581 | "dev-master": "1.0.x-dev" 1582 | } 1583 | }, 1584 | "autoload": { 1585 | "classmap": [ 1586 | "src/" 1587 | ] 1588 | }, 1589 | "notification-url": "https://packagist.org/downloads/", 1590 | "license": [ 1591 | "BSD-3-Clause" 1592 | ], 1593 | "authors": [ 1594 | { 1595 | "name": "Jeff Welch", 1596 | "email": "whatthejeff@gmail.com" 1597 | }, 1598 | { 1599 | "name": "Sebastian Bergmann", 1600 | "email": "sebastian@phpunit.de" 1601 | }, 1602 | { 1603 | "name": "Adam Harvey", 1604 | "email": "aharvey@php.net" 1605 | } 1606 | ], 1607 | "description": "Provides functionality to recursively process PHP variables", 1608 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1609 | "time": "2015-11-11 19:50:13" 1610 | }, 1611 | { 1612 | "name": "sebastian/resource-operations", 1613 | "version": "1.0.0", 1614 | "source": { 1615 | "type": "git", 1616 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1617 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" 1618 | }, 1619 | "dist": { 1620 | "type": "zip", 1621 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1622 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1623 | "shasum": "" 1624 | }, 1625 | "require": { 1626 | "php": ">=5.6.0" 1627 | }, 1628 | "type": "library", 1629 | "extra": { 1630 | "branch-alias": { 1631 | "dev-master": "1.0.x-dev" 1632 | } 1633 | }, 1634 | "autoload": { 1635 | "classmap": [ 1636 | "src/" 1637 | ] 1638 | }, 1639 | "notification-url": "https://packagist.org/downloads/", 1640 | "license": [ 1641 | "BSD-3-Clause" 1642 | ], 1643 | "authors": [ 1644 | { 1645 | "name": "Sebastian Bergmann", 1646 | "email": "sebastian@phpunit.de" 1647 | } 1648 | ], 1649 | "description": "Provides a list of PHP built-in functions that operate on resources", 1650 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 1651 | "time": "2015-07-28 20:34:47" 1652 | }, 1653 | { 1654 | "name": "sebastian/version", 1655 | "version": "2.0.0", 1656 | "source": { 1657 | "type": "git", 1658 | "url": "https://github.com/sebastianbergmann/version.git", 1659 | "reference": "c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5" 1660 | }, 1661 | "dist": { 1662 | "type": "zip", 1663 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5", 1664 | "reference": "c829badbd8fdf16a0bad8aa7fa7971c029f1b9c5", 1665 | "shasum": "" 1666 | }, 1667 | "require": { 1668 | "php": ">=5.6" 1669 | }, 1670 | "type": "library", 1671 | "extra": { 1672 | "branch-alias": { 1673 | "dev-master": "2.0.x-dev" 1674 | } 1675 | }, 1676 | "autoload": { 1677 | "classmap": [ 1678 | "src/" 1679 | ] 1680 | }, 1681 | "notification-url": "https://packagist.org/downloads/", 1682 | "license": [ 1683 | "BSD-3-Clause" 1684 | ], 1685 | "authors": [ 1686 | { 1687 | "name": "Sebastian Bergmann", 1688 | "email": "sebastian@phpunit.de", 1689 | "role": "lead" 1690 | } 1691 | ], 1692 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1693 | "homepage": "https://github.com/sebastianbergmann/version", 1694 | "time": "2016-02-04 12:56:52" 1695 | }, 1696 | { 1697 | "name": "symfony/yaml", 1698 | "version": "v3.1.2", 1699 | "source": { 1700 | "type": "git", 1701 | "url": "https://github.com/symfony/yaml.git", 1702 | "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de" 1703 | }, 1704 | "dist": { 1705 | "type": "zip", 1706 | "url": "https://api.github.com/repos/symfony/yaml/zipball/2884c26ce4c1d61aebf423a8b912950fe7c764de", 1707 | "reference": "2884c26ce4c1d61aebf423a8b912950fe7c764de", 1708 | "shasum": "" 1709 | }, 1710 | "require": { 1711 | "php": ">=5.5.9" 1712 | }, 1713 | "type": "library", 1714 | "extra": { 1715 | "branch-alias": { 1716 | "dev-master": "3.1-dev" 1717 | } 1718 | }, 1719 | "autoload": { 1720 | "psr-4": { 1721 | "Symfony\\Component\\Yaml\\": "" 1722 | }, 1723 | "exclude-from-classmap": [ 1724 | "/Tests/" 1725 | ] 1726 | }, 1727 | "notification-url": "https://packagist.org/downloads/", 1728 | "license": [ 1729 | "MIT" 1730 | ], 1731 | "authors": [ 1732 | { 1733 | "name": "Fabien Potencier", 1734 | "email": "fabien@symfony.com" 1735 | }, 1736 | { 1737 | "name": "Symfony Community", 1738 | "homepage": "https://symfony.com/contributors" 1739 | } 1740 | ], 1741 | "description": "Symfony Yaml Component", 1742 | "homepage": "https://symfony.com", 1743 | "time": "2016-06-29 05:41:56" 1744 | }, 1745 | { 1746 | "name": "webmozart/assert", 1747 | "version": "1.0.2", 1748 | "source": { 1749 | "type": "git", 1750 | "url": "https://github.com/webmozart/assert.git", 1751 | "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde" 1752 | }, 1753 | "dist": { 1754 | "type": "zip", 1755 | "url": "https://api.github.com/repos/webmozart/assert/zipball/30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde", 1756 | "reference": "30eed06dd6bc88410a4ff7f77b6d22f3ce13dbde", 1757 | "shasum": "" 1758 | }, 1759 | "require": { 1760 | "php": ">=5.3.3" 1761 | }, 1762 | "require-dev": { 1763 | "phpunit/phpunit": "^4.6" 1764 | }, 1765 | "type": "library", 1766 | "extra": { 1767 | "branch-alias": { 1768 | "dev-master": "1.0-dev" 1769 | } 1770 | }, 1771 | "autoload": { 1772 | "psr-4": { 1773 | "Webmozart\\Assert\\": "src/" 1774 | } 1775 | }, 1776 | "notification-url": "https://packagist.org/downloads/", 1777 | "license": [ 1778 | "MIT" 1779 | ], 1780 | "authors": [ 1781 | { 1782 | "name": "Bernhard Schussek", 1783 | "email": "bschussek@gmail.com" 1784 | } 1785 | ], 1786 | "description": "Assertions to validate method input/output with nice error messages.", 1787 | "keywords": [ 1788 | "assert", 1789 | "check", 1790 | "validate" 1791 | ], 1792 | "time": "2015-08-24 13:29:44" 1793 | } 1794 | ], 1795 | "aliases": [], 1796 | "minimum-stability": "stable", 1797 | "stability-flags": [], 1798 | "prefer-stable": false, 1799 | "prefer-lowest": false, 1800 | "platform": { 1801 | "php": ">=5.6" 1802 | }, 1803 | "platform-dev": [] 1804 | } 1805 | --------------------------------------------------------------------------------