├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── codeception.yml ├── composer.json ├── composer.lock ├── src ├── Smartdown.php ├── events │ └── Parse.php ├── icon.svg ├── services │ └── Smartdown.php └── web │ └── twig │ └── Extension.php └── tests ├── _data └── .gitkeep ├── _output └── .gitignore ├── _support ├── Helper │ └── Unit.php ├── UnitTester.php └── _generated │ └── .gitignore ├── unit.suite.yml └── unit ├── _bootstrap.php └── services └── SmartdownCest.php /.gitignore: -------------------------------------------------------------------------------- 1 | # System 2 | .DS_Store 3 | /node_modules/ 4 | /tmp/ 5 | 6 | # Editor 7 | /tags 8 | 9 | # Package manager 10 | vendor/ 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | php: 3 | - '7.1' 4 | - '7.2' 5 | - nightly 6 | install: 7 | - composer install --prefer-dist -o -n 8 | script: 9 | - ./vendor/bin/codecept run 10 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 3.0.1 - 2018-08-31 4 | 5 | ### Added 6 | - Add license to `composer.json` (fixes [#7]) 7 | 8 | [#7]: https://github.com/experience/smartdown.craft-plugin/issues/7 9 | 10 | ### Changed 11 | - Remove PHP version requirement (fixes [#11]) 12 | 13 | [#11]: https://github.com/experience/smartdown.craft-plugin/issues/11 14 | 15 | ## 3.0.0 - 2018-03-31 16 | 17 | ### Added 18 | - Update for Craft 3. 19 | 20 | ## 2.1.0 - 2017-02-17 21 | 22 | ### Added 23 | - Add Travis CI configuration. 24 | - Add documentation URL. 25 | - Add schema version. 26 | - Add releases feed. 27 | 28 | ### Changed 29 | - Reorganise plugin according to current best practices. 30 | - Use present tense in CHANGELOG. 31 | 32 | ### Fixed 33 | - Update parser to accept objects with a `__toString` method. 34 | 35 | ## 2.0.1 - 2016-01-01 36 | 37 | ### Fixed 38 | - Fix copying of README in build process. 39 | 40 | ## 2.0.0 - 2015-12-31 41 | 42 | ### Added 43 | - Add CHANGELOG 44 | - Implement unit tests for 'utility' classes. 45 | - Implement build process. 46 | 47 | ### Changed 48 | - Rename plugin from SmartDown to Smartdown. Beware case-insensitive version control systems. 49 | - Rename 'SmartDownService' to 'SmartdownService'. 50 | - Remove deprecated 'markdown' and 'smartypants' Twig filter options. 51 | - Update MarkdownExtra to version 1.6. 52 | - Update SmartyPants to version 1.6 beta 53 | 54 | ### Fixed 55 | - Fix issue with SmartyPants dependency containing errant '.git' folder 56 | 57 | ## 1.0.0 - 2015-07-29 58 | 59 | ### Added 60 | - Add 'SmartDownService'. 61 | - Add 'modifySmartdownMarkupInput' hook. 62 | - Add 'modifySmartdownMarkupOutput' hook. 63 | - Add 'modifySmartdownTypographyInput' hook. 64 | - Add 'modifySmartdownTypographyOutput' hook. 65 | 66 | ### Changed 67 | - Deprecate 'markdown' Twig filter option. Use 'markup' instead. 68 | - Deprecate 'smartypants' Twig filter option. Use 'typography' instead. 69 | 70 | ## 0.1.0 - 2013-08-20 71 | 72 | ### Added 73 | - Add 'smartdown' Twig filter, which runs a string through MarkdownExtra and SmartyPants. 74 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Experience 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Smartdown for Craft # 2 | 3 | [![Build Status](https://travis-ci.org/experience/smartdown.craft-plugin.svg?branch=master)](https://travis-ci.org/experience/smartdown.craft-plugin) 4 | 5 | Smartdown for Craft is a Twig Filter which brings the unbridled joy of [Markdown Extra][md_extra] and [SmartyPants][smartypants] to [Craft][craft]. 6 | 7 | [craft]:https://craftcms.com 8 | [md_extra]:https://michelf.ca/projects/php-markdown/ 9 | [smartypants]:https://michelf.ca/projects/php-smartypants/ 10 | 11 | Craft already supports standard Markdown, but sadly standard Markdown doesn't support lots of useful things such as footnotes, fenced code blocks, and tables. It also does nothing to spruce up your typography, leaving your site with an embarrassment of straight quotes, and faux ellipses. 12 | 13 | Smartdown plugs both of these gaps, turning your website into a typographic dreamboat. 14 | 15 | ## Requirements ## 16 | Each release of Smartdown is [automatically tested][travis] against PHP 7.1 and above. It's also manually tested on the most recent version of Craft. 17 | 18 | [travis]: https://travis-ci.org/experience/smartdown.craft-plugin "See the Smartdown build status on Travis CI" 19 | 20 | ### PHP 7.0 support ### 21 | In theory, Smartdown _should_ be compatible with PHP 7.0. In practise, it's impossible to test this, because the Codeception dependency tree includes components which only work with PHP 7.1+. 22 | 23 | Unfortunately there's nothing we can do about that. 24 | 25 | ## Installation ## 26 | To install Smartdown, either search for "Smartdown" in the Craft Plugin Store, or add it as a [Composer][composer] dependency. 27 | 28 | [composer]: https://getcomposer.org "Composer is a PHP dependency manager" 29 | 30 | Here's how to install Smartdown using Composer. 31 | 32 | 1. Open your terminal, and navigate to your Craft project: 33 | 34 | cd /path/to/project 35 | 36 | 2. Add Smartdown as a project dependency: 37 | 38 | composer require experience/smartdown 39 | 40 | 3. In the Control Panel, go to "Settings → Plugins", and click the "Install" button for Smartdown 41 | 42 | ## Basic usage ## 43 | Use the Smartdown filter in exactly the same way as any other Twig filter. 44 | 45 | {{ myVariable|smartdown }} 46 | 47 | This will parse your content with both Markdown Extra, and SmartyPants, turning this: 48 | 49 | "Outside of a dog, a book is a man's best friend. Inside a dog it's too dark to read..." 50 | 51 | Into this: 52 | 53 | > "Outside of a dog, a book is a man's best friend. Inside a dog it's too dark to read..." 54 | 55 | ## Filter parameters ## 56 | 57 | ### markup ### 58 | The `markup` filter parameter controls whether the text will be parsed using Markdown Extra. The default value is `true`. 59 | 60 | Example usage: 61 | 62 | {{ content|smartdown(markup=false) }} 63 | 64 | ### typography ### 65 | The `typography` filter parameter controls whether the text will be parsed using SmartyPants. The default value is `true`. 66 | 67 | Example usage: 68 | 69 | {{ content|smartdown(typography=false) }} 70 | -------------------------------------------------------------------------------- /codeception.yml: -------------------------------------------------------------------------------- 1 | paths: 2 | tests: tests 3 | output: tests/_output 4 | data: tests/_data 5 | support: tests/_support 6 | envs: tests/_envs 7 | actor_suffix: Tester 8 | extensions: 9 | enabled: 10 | - Codeception\Extension\RunFailed 11 | settings: 12 | bootstrap: _bootstrap.php 13 | colors: true 14 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "experience/smartdown", 3 | "description": "Bringing the unbridled joy of Markdown Extra and Smartypants to your Craft websites.", 4 | "type": "craft-plugin", 5 | "version": "3.0.1", 6 | "keywords": [ 7 | "craft", 8 | "cms", 9 | "craftcms", 10 | "craft-plugin", 11 | "markdown", 12 | "smartypants", 13 | "typography" 14 | ], 15 | "support": { 16 | "docs": "https://github.com/experience/smartdown.craft-plugin/blob/master/README.md", 17 | "issues": "https://github.com/experience/smartdown.craft-plugin/issues" 18 | }, 19 | "license": "MIT", 20 | "authors": [ 21 | { 22 | "name": "Experience", 23 | "homepage": "https://experiencehq.net" 24 | } 25 | ], 26 | "require": { 27 | "craftcms/cms": "^3.0.0", 28 | "michelf/php-markdown": "^1.8", 29 | "michelf/php-smartypants": "^1.8" 30 | }, 31 | "autoload": { 32 | "psr-4": { 33 | "experience\\smartdown\\": "src/", 34 | "experience\\smartdown\\tests\\": "tests/" 35 | } 36 | }, 37 | "extra": { 38 | "changelogUrl": "https://github.com/experience/smartdown.craft-plugin/blob/master/CHANGELOG.md", 39 | "components": { 40 | "smartdown": "experience\\smartdown\\services\\Smartdown" 41 | }, 42 | "class": "experience\\smartdown\\Smartdown", 43 | "handle": "smartdown", 44 | "hasCpSection": false, 45 | "hasSettings": false, 46 | "name": "Smartdown", 47 | "sourceLanguage": "en-GB" 48 | }, 49 | "require-dev": { 50 | "codeception/codeception": "dev-master" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /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 | "content-hash": "de5e43774787cc82e2ec320e50e95e66", 8 | "packages": [ 9 | { 10 | "name": "michelf/php-markdown", 11 | "version": "1.8.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/michelf/php-markdown.git", 15 | "reference": "01ab082b355bf188d907b9929cd99b2923053495" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/michelf/php-markdown/zipball/01ab082b355bf188d907b9929cd99b2923053495", 20 | "reference": "01ab082b355bf188d907b9929cd99b2923053495", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": ">=5.3.0" 25 | }, 26 | "type": "library", 27 | "autoload": { 28 | "psr-4": { 29 | "Michelf\\": "Michelf/" 30 | } 31 | }, 32 | "notification-url": "https://packagist.org/downloads/", 33 | "license": [ 34 | "BSD-3-Clause" 35 | ], 36 | "authors": [ 37 | { 38 | "name": "Michel Fortin", 39 | "email": "michel.fortin@michelf.ca", 40 | "homepage": "https://michelf.ca/", 41 | "role": "Developer" 42 | }, 43 | { 44 | "name": "John Gruber", 45 | "homepage": "https://daringfireball.net/" 46 | } 47 | ], 48 | "description": "PHP Markdown", 49 | "homepage": "https://michelf.ca/projects/php-markdown/", 50 | "keywords": [ 51 | "markdown" 52 | ], 53 | "time": "2018-01-15T00:49:33+00:00" 54 | }, 55 | { 56 | "name": "michelf/php-smartypants", 57 | "version": "1.8.1", 58 | "source": { 59 | "type": "git", 60 | "url": "https://github.com/michelf/php-smartypants.git", 61 | "reference": "47d17c90a4dfd0ccf1f87e25c65e6c8012415aad" 62 | }, 63 | "dist": { 64 | "type": "zip", 65 | "url": "https://api.github.com/repos/michelf/php-smartypants/zipball/47d17c90a4dfd0ccf1f87e25c65e6c8012415aad", 66 | "reference": "47d17c90a4dfd0ccf1f87e25c65e6c8012415aad", 67 | "shasum": "" 68 | }, 69 | "require": { 70 | "php": ">=5.3.0" 71 | }, 72 | "type": "library", 73 | "autoload": { 74 | "psr-0": { 75 | "Michelf": "" 76 | } 77 | }, 78 | "notification-url": "https://packagist.org/downloads/", 79 | "license": [ 80 | "BSD-3-Clause" 81 | ], 82 | "authors": [ 83 | { 84 | "name": "Michel Fortin", 85 | "email": "michel.fortin@michelf.ca", 86 | "homepage": "https://michelf.ca/", 87 | "role": "Developer" 88 | }, 89 | { 90 | "name": "John Gruber", 91 | "homepage": "https://daringfireball.net/" 92 | } 93 | ], 94 | "description": "PHP SmartyPants", 95 | "homepage": "https://michelf.ca/projects/php-smartypants/", 96 | "keywords": [ 97 | "dashes", 98 | "quotes", 99 | "spaces", 100 | "typographer", 101 | "typography" 102 | ], 103 | "time": "2016-12-13T01:01:17+00:00" 104 | } 105 | ], 106 | "packages-dev": [ 107 | { 108 | "name": "behat/gherkin", 109 | "version": "v4.4.5", 110 | "source": { 111 | "type": "git", 112 | "url": "https://github.com/Behat/Gherkin.git", 113 | "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74" 114 | }, 115 | "dist": { 116 | "type": "zip", 117 | "url": "https://api.github.com/repos/Behat/Gherkin/zipball/5c14cff4f955b17d20d088dec1bde61c0539ec74", 118 | "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74", 119 | "shasum": "" 120 | }, 121 | "require": { 122 | "php": ">=5.3.1" 123 | }, 124 | "require-dev": { 125 | "phpunit/phpunit": "~4.5|~5", 126 | "symfony/phpunit-bridge": "~2.7|~3", 127 | "symfony/yaml": "~2.3|~3" 128 | }, 129 | "suggest": { 130 | "symfony/yaml": "If you want to parse features, represented in YAML files" 131 | }, 132 | "type": "library", 133 | "extra": { 134 | "branch-alias": { 135 | "dev-master": "4.4-dev" 136 | } 137 | }, 138 | "autoload": { 139 | "psr-0": { 140 | "Behat\\Gherkin": "src/" 141 | } 142 | }, 143 | "notification-url": "https://packagist.org/downloads/", 144 | "license": [ 145 | "MIT" 146 | ], 147 | "authors": [ 148 | { 149 | "name": "Konstantin Kudryashov", 150 | "email": "ever.zet@gmail.com", 151 | "homepage": "http://everzet.com" 152 | } 153 | ], 154 | "description": "Gherkin DSL parser for PHP 5.3", 155 | "homepage": "http://behat.org/", 156 | "keywords": [ 157 | "BDD", 158 | "Behat", 159 | "Cucumber", 160 | "DSL", 161 | "gherkin", 162 | "parser" 163 | ], 164 | "time": "2016-10-30T11:50:56+00:00" 165 | }, 166 | { 167 | "name": "cebe/markdown", 168 | "version": "1.1.2", 169 | "source": { 170 | "type": "git", 171 | "url": "https://github.com/cebe/markdown.git", 172 | "reference": "25b28bae8a6f185b5030673af77b32e1163d5c6e" 173 | }, 174 | "dist": { 175 | "type": "zip", 176 | "url": "https://api.github.com/repos/cebe/markdown/zipball/25b28bae8a6f185b5030673af77b32e1163d5c6e", 177 | "reference": "25b28bae8a6f185b5030673af77b32e1163d5c6e", 178 | "shasum": "" 179 | }, 180 | "require": { 181 | "lib-pcre": "*", 182 | "php": ">=5.4.0" 183 | }, 184 | "require-dev": { 185 | "cebe/indent": "*", 186 | "facebook/xhprof": "*@dev", 187 | "phpunit/phpunit": "4.1.*" 188 | }, 189 | "bin": [ 190 | "bin/markdown" 191 | ], 192 | "type": "library", 193 | "extra": { 194 | "branch-alias": { 195 | "dev-master": "1.1.x-dev" 196 | } 197 | }, 198 | "autoload": { 199 | "psr-4": { 200 | "cebe\\markdown\\": "" 201 | } 202 | }, 203 | "notification-url": "https://packagist.org/downloads/", 204 | "license": [ 205 | "MIT" 206 | ], 207 | "authors": [ 208 | { 209 | "name": "Carsten Brandt", 210 | "email": "mail@cebe.cc", 211 | "homepage": "http://cebe.cc/", 212 | "role": "Creator" 213 | } 214 | ], 215 | "description": "A super fast, highly extensible markdown parser for PHP", 216 | "homepage": "https://github.com/cebe/markdown#readme", 217 | "keywords": [ 218 | "extensible", 219 | "fast", 220 | "gfm", 221 | "markdown", 222 | "markdown-extra" 223 | ], 224 | "time": "2017-07-16T21:13:23+00:00" 225 | }, 226 | { 227 | "name": "codeception/codeception", 228 | "version": "dev-master", 229 | "source": { 230 | "type": "git", 231 | "url": "https://github.com/Codeception/Codeception.git", 232 | "reference": "85d7f492b4c37e0507eb011bb0c7e30f0d6c5b7a" 233 | }, 234 | "dist": { 235 | "type": "zip", 236 | "url": "https://api.github.com/repos/Codeception/Codeception/zipball/85d7f492b4c37e0507eb011bb0c7e30f0d6c5b7a", 237 | "reference": "85d7f492b4c37e0507eb011bb0c7e30f0d6c5b7a", 238 | "shasum": "" 239 | }, 240 | "require": { 241 | "behat/gherkin": "~4.4.0", 242 | "ext-json": "*", 243 | "ext-mbstring": "*", 244 | "facebook/webdriver": ">=1.1.3 <2.0", 245 | "guzzlehttp/guzzle": ">=4.1.4 <7.0", 246 | "guzzlehttp/psr7": "~1.0", 247 | "php": ">=5.4.0 <8.0", 248 | "phpunit/php-code-coverage": ">=2.2.4 <6.0", 249 | "phpunit/phpunit": ">4.8.20 <7.0", 250 | "phpunit/phpunit-mock-objects": ">2.3 <5.0", 251 | "sebastian/comparator": ">1.1 <3.0", 252 | "sebastian/diff": "^1.4", 253 | "stecman/symfony-console-completion": "^0.7.0", 254 | "symfony/browser-kit": ">=2.7 <4.0", 255 | "symfony/console": ">=2.7 <4.0", 256 | "symfony/css-selector": ">=2.7 <4.0", 257 | "symfony/dom-crawler": ">=2.7.5 <4.0", 258 | "symfony/event-dispatcher": ">=2.7 <4.0", 259 | "symfony/finder": ">=2.7 <4.0", 260 | "symfony/yaml": ">=2.7 <4.0" 261 | }, 262 | "require-dev": { 263 | "codeception/specify": "~0.3", 264 | "facebook/graph-sdk": "~5.3", 265 | "flow/jsonpath": "~0.2", 266 | "league/factory-muffin": "^3.0", 267 | "league/factory-muffin-faker": "^1.0", 268 | "mongodb/mongodb": "^1.0", 269 | "monolog/monolog": "~1.8", 270 | "pda/pheanstalk": "~3.0", 271 | "php-amqplib/php-amqplib": "~2.4", 272 | "predis/predis": "^1.0", 273 | "squizlabs/php_codesniffer": "~2.0", 274 | "symfony/process": ">=2.7 <4.0", 275 | "vlucas/phpdotenv": "^2.4.0" 276 | }, 277 | "suggest": { 278 | "codeception/specify": "BDD-style code blocks", 279 | "codeception/verify": "BDD-style assertions", 280 | "flow/jsonpath": "For using JSONPath in REST module", 281 | "league/factory-muffin": "For DataFactory module", 282 | "league/factory-muffin-faker": "For Faker support in DataFactory module", 283 | "phpseclib/phpseclib": "for SFTP option in FTP Module", 284 | "symfony/phpunit-bridge": "For phpunit-bridge support" 285 | }, 286 | "bin": [ 287 | "codecept" 288 | ], 289 | "type": "library", 290 | "extra": { 291 | "branch-alias": [] 292 | }, 293 | "autoload": { 294 | "psr-4": { 295 | "Codeception\\": "src\\Codeception", 296 | "Codeception\\Extension\\": "ext" 297 | } 298 | }, 299 | "notification-url": "https://packagist.org/downloads/", 300 | "license": [ 301 | "MIT" 302 | ], 303 | "authors": [ 304 | { 305 | "name": "Michael Bodnarchuk", 306 | "email": "davert@mail.ua", 307 | "homepage": "http://codegyre.com" 308 | } 309 | ], 310 | "description": "BDD-style testing framework", 311 | "homepage": "http://codeception.com/", 312 | "keywords": [ 313 | "BDD", 314 | "TDD", 315 | "acceptance testing", 316 | "functional testing", 317 | "unit testing" 318 | ], 319 | "time": "2018-03-28T21:49:30+00:00" 320 | }, 321 | { 322 | "name": "composer/ca-bundle", 323 | "version": "1.1.1", 324 | "source": { 325 | "type": "git", 326 | "url": "https://github.com/composer/ca-bundle.git", 327 | "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169" 328 | }, 329 | "dist": { 330 | "type": "zip", 331 | "url": "https://api.github.com/repos/composer/ca-bundle/zipball/d2c0a83b7533d6912e8d516756ebd34f893e9169", 332 | "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169", 333 | "shasum": "" 334 | }, 335 | "require": { 336 | "ext-openssl": "*", 337 | "ext-pcre": "*", 338 | "php": "^5.3.2 || ^7.0" 339 | }, 340 | "require-dev": { 341 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", 342 | "psr/log": "^1.0", 343 | "symfony/process": "^2.5 || ^3.0 || ^4.0" 344 | }, 345 | "type": "library", 346 | "extra": { 347 | "branch-alias": { 348 | "dev-master": "1.x-dev" 349 | } 350 | }, 351 | "autoload": { 352 | "psr-4": { 353 | "Composer\\CaBundle\\": "src" 354 | } 355 | }, 356 | "notification-url": "https://packagist.org/downloads/", 357 | "license": [ 358 | "MIT" 359 | ], 360 | "authors": [ 361 | { 362 | "name": "Jordi Boggiano", 363 | "email": "j.boggiano@seld.be", 364 | "homepage": "http://seld.be" 365 | } 366 | ], 367 | "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", 368 | "keywords": [ 369 | "cabundle", 370 | "cacert", 371 | "certificate", 372 | "ssl", 373 | "tls" 374 | ], 375 | "time": "2018-03-29T19:57:20+00:00" 376 | }, 377 | { 378 | "name": "composer/composer", 379 | "version": "1.5.6", 380 | "source": { 381 | "type": "git", 382 | "url": "https://github.com/composer/composer.git", 383 | "reference": "4f7f9c12753ec43f1e4629e2a71cabe81f2a4eab" 384 | }, 385 | "dist": { 386 | "type": "zip", 387 | "url": "https://api.github.com/repos/composer/composer/zipball/4f7f9c12753ec43f1e4629e2a71cabe81f2a4eab", 388 | "reference": "4f7f9c12753ec43f1e4629e2a71cabe81f2a4eab", 389 | "shasum": "" 390 | }, 391 | "require": { 392 | "composer/ca-bundle": "^1.0", 393 | "composer/semver": "^1.0", 394 | "composer/spdx-licenses": "^1.0", 395 | "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", 396 | "php": "^5.3.2 || ^7.0", 397 | "psr/log": "^1.0", 398 | "seld/cli-prompt": "^1.0", 399 | "seld/jsonlint": "^1.4", 400 | "seld/phar-utils": "^1.0", 401 | "symfony/console": "^2.7 || ^3.0", 402 | "symfony/filesystem": "^2.7 || ^3.0", 403 | "symfony/finder": "^2.7 || ^3.0", 404 | "symfony/process": "^2.7 || ^3.0" 405 | }, 406 | "require-dev": { 407 | "phpunit/phpunit": "^4.5 || ^5.0.5", 408 | "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" 409 | }, 410 | "suggest": { 411 | "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", 412 | "ext-zip": "Enabling the zip extension allows you to unzip archives", 413 | "ext-zlib": "Allow gzip compression of HTTP requests" 414 | }, 415 | "bin": [ 416 | "bin/composer" 417 | ], 418 | "type": "library", 419 | "extra": { 420 | "branch-alias": { 421 | "dev-master": "1.5-dev" 422 | } 423 | }, 424 | "autoload": { 425 | "psr-4": { 426 | "Composer\\": "src/Composer" 427 | } 428 | }, 429 | "notification-url": "https://packagist.org/downloads/", 430 | "license": [ 431 | "MIT" 432 | ], 433 | "authors": [ 434 | { 435 | "name": "Nils Adermann", 436 | "email": "naderman@naderman.de", 437 | "homepage": "http://www.naderman.de" 438 | }, 439 | { 440 | "name": "Jordi Boggiano", 441 | "email": "j.boggiano@seld.be", 442 | "homepage": "http://seld.be" 443 | } 444 | ], 445 | "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", 446 | "homepage": "https://getcomposer.org/", 447 | "keywords": [ 448 | "autoload", 449 | "dependency", 450 | "package" 451 | ], 452 | "time": "2017-12-18T11:09:18+00:00" 453 | }, 454 | { 455 | "name": "composer/semver", 456 | "version": "1.4.2", 457 | "source": { 458 | "type": "git", 459 | "url": "https://github.com/composer/semver.git", 460 | "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" 461 | }, 462 | "dist": { 463 | "type": "zip", 464 | "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", 465 | "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", 466 | "shasum": "" 467 | }, 468 | "require": { 469 | "php": "^5.3.2 || ^7.0" 470 | }, 471 | "require-dev": { 472 | "phpunit/phpunit": "^4.5 || ^5.0.5", 473 | "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" 474 | }, 475 | "type": "library", 476 | "extra": { 477 | "branch-alias": { 478 | "dev-master": "1.x-dev" 479 | } 480 | }, 481 | "autoload": { 482 | "psr-4": { 483 | "Composer\\Semver\\": "src" 484 | } 485 | }, 486 | "notification-url": "https://packagist.org/downloads/", 487 | "license": [ 488 | "MIT" 489 | ], 490 | "authors": [ 491 | { 492 | "name": "Nils Adermann", 493 | "email": "naderman@naderman.de", 494 | "homepage": "http://www.naderman.de" 495 | }, 496 | { 497 | "name": "Jordi Boggiano", 498 | "email": "j.boggiano@seld.be", 499 | "homepage": "http://seld.be" 500 | }, 501 | { 502 | "name": "Rob Bast", 503 | "email": "rob.bast@gmail.com", 504 | "homepage": "http://robbast.nl" 505 | } 506 | ], 507 | "description": "Semver library that offers utilities, version constraint parsing and validation.", 508 | "keywords": [ 509 | "semantic", 510 | "semver", 511 | "validation", 512 | "versioning" 513 | ], 514 | "time": "2016-08-30T16:08:34+00:00" 515 | }, 516 | { 517 | "name": "composer/spdx-licenses", 518 | "version": "1.3.0", 519 | "source": { 520 | "type": "git", 521 | "url": "https://github.com/composer/spdx-licenses.git", 522 | "reference": "7e111c50db92fa2ced140f5ba23b4e261bc77a30" 523 | }, 524 | "dist": { 525 | "type": "zip", 526 | "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7e111c50db92fa2ced140f5ba23b4e261bc77a30", 527 | "reference": "7e111c50db92fa2ced140f5ba23b4e261bc77a30", 528 | "shasum": "" 529 | }, 530 | "require": { 531 | "php": "^5.3.2 || ^7.0" 532 | }, 533 | "require-dev": { 534 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", 535 | "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" 536 | }, 537 | "type": "library", 538 | "extra": { 539 | "branch-alias": { 540 | "dev-master": "1.x-dev" 541 | } 542 | }, 543 | "autoload": { 544 | "psr-4": { 545 | "Composer\\Spdx\\": "src" 546 | } 547 | }, 548 | "notification-url": "https://packagist.org/downloads/", 549 | "license": [ 550 | "MIT" 551 | ], 552 | "authors": [ 553 | { 554 | "name": "Nils Adermann", 555 | "email": "naderman@naderman.de", 556 | "homepage": "http://www.naderman.de" 557 | }, 558 | { 559 | "name": "Jordi Boggiano", 560 | "email": "j.boggiano@seld.be", 561 | "homepage": "http://seld.be" 562 | }, 563 | { 564 | "name": "Rob Bast", 565 | "email": "rob.bast@gmail.com", 566 | "homepage": "http://robbast.nl" 567 | } 568 | ], 569 | "description": "SPDX licenses list and validation library.", 570 | "keywords": [ 571 | "license", 572 | "spdx", 573 | "validator" 574 | ], 575 | "time": "2018-01-31T13:17:27+00:00" 576 | }, 577 | { 578 | "name": "craftcms/cms", 579 | "version": "3.0.0-RC17.1", 580 | "source": { 581 | "type": "git", 582 | "url": "https://github.com/craftcms/cms.git", 583 | "reference": "c638b66f752656ac56706a514d0e945319bd70ba" 584 | }, 585 | "dist": { 586 | "type": "zip", 587 | "url": "https://api.github.com/repos/craftcms/cms/zipball/c638b66f752656ac56706a514d0e945319bd70ba", 588 | "reference": "c638b66f752656ac56706a514d0e945319bd70ba", 589 | "shasum": "" 590 | }, 591 | "require": { 592 | "composer/composer": "~1.5.2", 593 | "craftcms/oauth2-craftid": "~1.0.0", 594 | "craftcms/plugin-installer": "~1.5.0", 595 | "craftcms/server-check": "~1.1.0", 596 | "creocoder/yii2-nested-sets": "~0.9.0", 597 | "danielstjules/stringy": "~3.1.0", 598 | "elvanto/litemoji": "^1.3.1", 599 | "enshrined/svg-sanitize": "~0.8.2", 600 | "ext-curl": "*", 601 | "ext-dom": "*", 602 | "ext-json": "*", 603 | "ext-mbstring": "*", 604 | "ext-openssl": "*", 605 | "ext-pcre": "*", 606 | "ext-pdo": "*", 607 | "ext-zip": "*", 608 | "guzzlehttp/guzzle": "~6.3.0", 609 | "league/flysystem": "~1.0.35", 610 | "league/oauth2-client": "~2.2.1", 611 | "mikehaertl/php-shellcommand": "~1.2.5", 612 | "php": ">=7.0.0", 613 | "pixelandtonic/imagine": "~0.7.1.2", 614 | "seld/cli-prompt": "~1.0.3", 615 | "twig/twig": "~2.4.4", 616 | "yiisoft/yii2": "~2.0.15.1", 617 | "yiisoft/yii2-debug": "~2.0.10", 618 | "yiisoft/yii2-queue": "~2.0.1", 619 | "yiisoft/yii2-swiftmailer": "~2.1.0", 620 | "zendframework/zend-feed": "~2.8.0" 621 | }, 622 | "provide": { 623 | "bower-asset/bootstrap": "3.3.* | 3.2.* | 3.1.*", 624 | "bower-asset/inputmask": "~3.2.2 | ~3.3.5", 625 | "bower-asset/jquery": "3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", 626 | "bower-asset/punycode": "1.3.*", 627 | "bower-asset/yii2-pjax": "~2.0.1" 628 | }, 629 | "require-dev": { 630 | "codeception/codeception": "~2.3.3", 631 | "codeception/mockery-module": "~0.2.2", 632 | "codeception/specify": "~0.4.6", 633 | "codeception/verify": "~0.3.3" 634 | }, 635 | "suggest": { 636 | "ext-iconv": "Adds support for more character encodings than PHP’s built-in mb_convert_encoding() function, which Craft will take advantage of when converting strings to UTF-8.", 637 | "ext-imagick": "Adds support for more image processing formats and options.", 638 | "ext-intl": "Adds rich internationalization support." 639 | }, 640 | "type": "library", 641 | "autoload": { 642 | "psr-4": { 643 | "craft\\": "src/" 644 | } 645 | }, 646 | "notification-url": "https://packagist.org/downloads/", 647 | "license": [ 648 | "proprietary" 649 | ], 650 | "description": "Craft CMS", 651 | "homepage": "https://craftcms.com", 652 | "keywords": [ 653 | "cms", 654 | "craftcms", 655 | "yii2" 656 | ], 657 | "time": "2018-03-29T22:24:07+00:00" 658 | }, 659 | { 660 | "name": "craftcms/oauth2-craftid", 661 | "version": "1.0.0.1", 662 | "source": { 663 | "type": "git", 664 | "url": "https://github.com/craftcms/oauth2-craftid.git", 665 | "reference": "3f18364139d72d83fb50546d85130beaaa868836" 666 | }, 667 | "dist": { 668 | "type": "zip", 669 | "url": "https://api.github.com/repos/craftcms/oauth2-craftid/zipball/3f18364139d72d83fb50546d85130beaaa868836", 670 | "reference": "3f18364139d72d83fb50546d85130beaaa868836", 671 | "shasum": "" 672 | }, 673 | "require": { 674 | "league/oauth2-client": "^2.2.1" 675 | }, 676 | "require-dev": { 677 | "phpunit/phpunit": "^5.0", 678 | "satooshi/php-coveralls": "^1.0", 679 | "squizlabs/php_codesniffer": "^2.0" 680 | }, 681 | "type": "library", 682 | "autoload": { 683 | "psr-4": { 684 | "craftcms\\oauth2\\client\\": "src/" 685 | } 686 | }, 687 | "notification-url": "https://packagist.org/downloads/", 688 | "license": [ 689 | "MIT" 690 | ], 691 | "authors": [ 692 | { 693 | "name": "Pixel & Tonic", 694 | "homepage": "https://pixelandtonic.com/" 695 | } 696 | ], 697 | "description": "Craft OAuth 2.0 Client Provider for The PHP League OAuth2-Client", 698 | "keywords": [ 699 | "Authentication", 700 | "authorization", 701 | "client", 702 | "cms", 703 | "craftcms", 704 | "craftid", 705 | "oauth", 706 | "oauth2" 707 | ], 708 | "time": "2017-11-22T19:46:18+00:00" 709 | }, 710 | { 711 | "name": "craftcms/plugin-installer", 712 | "version": "1.5.2", 713 | "source": { 714 | "type": "git", 715 | "url": "https://github.com/craftcms/plugin-installer.git", 716 | "reference": "2b75646ce7091d24ef053e8d0b45f89cab04b16f" 717 | }, 718 | "dist": { 719 | "type": "zip", 720 | "url": "https://api.github.com/repos/craftcms/plugin-installer/zipball/2b75646ce7091d24ef053e8d0b45f89cab04b16f", 721 | "reference": "2b75646ce7091d24ef053e8d0b45f89cab04b16f", 722 | "shasum": "" 723 | }, 724 | "require": { 725 | "composer-plugin-api": "^1.0" 726 | }, 727 | "type": "composer-plugin", 728 | "extra": { 729 | "class": "craft\\composer\\Plugin" 730 | }, 731 | "autoload": { 732 | "psr-4": { 733 | "craft\\composer\\": "src/" 734 | } 735 | }, 736 | "notification-url": "https://packagist.org/downloads/", 737 | "license": [ 738 | "MIT" 739 | ], 740 | "description": "Craft CMS Plugin Installer", 741 | "homepage": "https://craftcms.com/", 742 | "keywords": [ 743 | "cms", 744 | "composer", 745 | "craftcms", 746 | "installer", 747 | "plugin" 748 | ], 749 | "time": "2017-07-25T13:26:24+00:00" 750 | }, 751 | { 752 | "name": "craftcms/server-check", 753 | "version": "1.1.1", 754 | "source": { 755 | "type": "git", 756 | "url": "https://github.com/craftcms/server-check.git", 757 | "reference": "a39dea7f05c66751532a0ad09d51cae46da3f9cf" 758 | }, 759 | "dist": { 760 | "type": "zip", 761 | "url": "https://api.github.com/repos/craftcms/server-check/zipball/a39dea7f05c66751532a0ad09d51cae46da3f9cf", 762 | "reference": "a39dea7f05c66751532a0ad09d51cae46da3f9cf", 763 | "shasum": "" 764 | }, 765 | "type": "library", 766 | "autoload": { 767 | "classmap": [ 768 | "server/requirements" 769 | ] 770 | }, 771 | "notification-url": "https://packagist.org/downloads/", 772 | "license": [ 773 | "MIT" 774 | ], 775 | "description": "Craft CMS Server Check", 776 | "homepage": "https://craftcms.com/", 777 | "keywords": [ 778 | "cms", 779 | "craftcms", 780 | "requirements", 781 | "yii2" 782 | ], 783 | "time": "2017-12-15T16:00:57+00:00" 784 | }, 785 | { 786 | "name": "creocoder/yii2-nested-sets", 787 | "version": "0.9.0", 788 | "source": { 789 | "type": "git", 790 | "url": "https://github.com/creocoder/yii2-nested-sets.git", 791 | "reference": "cb8635a459b6246e5a144f096b992dcc30cf9954" 792 | }, 793 | "dist": { 794 | "type": "zip", 795 | "url": "https://api.github.com/repos/creocoder/yii2-nested-sets/zipball/cb8635a459b6246e5a144f096b992dcc30cf9954", 796 | "reference": "cb8635a459b6246e5a144f096b992dcc30cf9954", 797 | "shasum": "" 798 | }, 799 | "require": { 800 | "yiisoft/yii2": "*" 801 | }, 802 | "type": "yii2-extension", 803 | "autoload": { 804 | "psr-4": { 805 | "creocoder\\nestedsets\\": "src" 806 | } 807 | }, 808 | "notification-url": "https://packagist.org/downloads/", 809 | "license": [ 810 | "BSD-3-Clause" 811 | ], 812 | "authors": [ 813 | { 814 | "name": "Alexander Kochetov", 815 | "email": "creocoder@gmail.com" 816 | } 817 | ], 818 | "description": "The nested sets behavior for the Yii framework", 819 | "keywords": [ 820 | "nested sets", 821 | "yii2" 822 | ], 823 | "time": "2015-01-27T10:53:51+00:00" 824 | }, 825 | { 826 | "name": "danielstjules/stringy", 827 | "version": "3.1.0", 828 | "source": { 829 | "type": "git", 830 | "url": "https://github.com/danielstjules/Stringy.git", 831 | "reference": "df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e" 832 | }, 833 | "dist": { 834 | "type": "zip", 835 | "url": "https://api.github.com/repos/danielstjules/Stringy/zipball/df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e", 836 | "reference": "df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e", 837 | "shasum": "" 838 | }, 839 | "require": { 840 | "php": ">=5.4.0", 841 | "symfony/polyfill-mbstring": "~1.1" 842 | }, 843 | "require-dev": { 844 | "phpunit/phpunit": "~4.0" 845 | }, 846 | "type": "library", 847 | "autoload": { 848 | "psr-4": { 849 | "Stringy\\": "src/" 850 | }, 851 | "files": [ 852 | "src/Create.php" 853 | ] 854 | }, 855 | "notification-url": "https://packagist.org/downloads/", 856 | "license": [ 857 | "MIT" 858 | ], 859 | "authors": [ 860 | { 861 | "name": "Daniel St. Jules", 862 | "email": "danielst.jules@gmail.com", 863 | "homepage": "http://www.danielstjules.com" 864 | } 865 | ], 866 | "description": "A string manipulation library with multibyte support", 867 | "homepage": "https://github.com/danielstjules/Stringy", 868 | "keywords": [ 869 | "UTF", 870 | "helpers", 871 | "manipulation", 872 | "methods", 873 | "multibyte", 874 | "string", 875 | "utf-8", 876 | "utility", 877 | "utils" 878 | ], 879 | "time": "2017-06-12T01:10:27+00:00" 880 | }, 881 | { 882 | "name": "doctrine/instantiator", 883 | "version": "1.1.0", 884 | "source": { 885 | "type": "git", 886 | "url": "https://github.com/doctrine/instantiator.git", 887 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" 888 | }, 889 | "dist": { 890 | "type": "zip", 891 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 892 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 893 | "shasum": "" 894 | }, 895 | "require": { 896 | "php": "^7.1" 897 | }, 898 | "require-dev": { 899 | "athletic/athletic": "~0.1.8", 900 | "ext-pdo": "*", 901 | "ext-phar": "*", 902 | "phpunit/phpunit": "^6.2.3", 903 | "squizlabs/php_codesniffer": "^3.0.2" 904 | }, 905 | "type": "library", 906 | "extra": { 907 | "branch-alias": { 908 | "dev-master": "1.2.x-dev" 909 | } 910 | }, 911 | "autoload": { 912 | "psr-4": { 913 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 914 | } 915 | }, 916 | "notification-url": "https://packagist.org/downloads/", 917 | "license": [ 918 | "MIT" 919 | ], 920 | "authors": [ 921 | { 922 | "name": "Marco Pivetta", 923 | "email": "ocramius@gmail.com", 924 | "homepage": "http://ocramius.github.com/" 925 | } 926 | ], 927 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 928 | "homepage": "https://github.com/doctrine/instantiator", 929 | "keywords": [ 930 | "constructor", 931 | "instantiate" 932 | ], 933 | "time": "2017-07-22T11:58:36+00:00" 934 | }, 935 | { 936 | "name": "doctrine/lexer", 937 | "version": "v1.0.1", 938 | "source": { 939 | "type": "git", 940 | "url": "https://github.com/doctrine/lexer.git", 941 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" 942 | }, 943 | "dist": { 944 | "type": "zip", 945 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", 946 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", 947 | "shasum": "" 948 | }, 949 | "require": { 950 | "php": ">=5.3.2" 951 | }, 952 | "type": "library", 953 | "extra": { 954 | "branch-alias": { 955 | "dev-master": "1.0.x-dev" 956 | } 957 | }, 958 | "autoload": { 959 | "psr-0": { 960 | "Doctrine\\Common\\Lexer\\": "lib/" 961 | } 962 | }, 963 | "notification-url": "https://packagist.org/downloads/", 964 | "license": [ 965 | "MIT" 966 | ], 967 | "authors": [ 968 | { 969 | "name": "Roman Borschel", 970 | "email": "roman@code-factory.org" 971 | }, 972 | { 973 | "name": "Guilherme Blanco", 974 | "email": "guilhermeblanco@gmail.com" 975 | }, 976 | { 977 | "name": "Johannes Schmitt", 978 | "email": "schmittjoh@gmail.com" 979 | } 980 | ], 981 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", 982 | "homepage": "http://www.doctrine-project.org", 983 | "keywords": [ 984 | "lexer", 985 | "parser" 986 | ], 987 | "time": "2014-09-09T13:34:57+00:00" 988 | }, 989 | { 990 | "name": "egulias/email-validator", 991 | "version": "2.1.3", 992 | "source": { 993 | "type": "git", 994 | "url": "https://github.com/egulias/EmailValidator.git", 995 | "reference": "1bec00a10039b823cc94eef4eddd47dcd3b2ca04" 996 | }, 997 | "dist": { 998 | "type": "zip", 999 | "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/1bec00a10039b823cc94eef4eddd47dcd3b2ca04", 1000 | "reference": "1bec00a10039b823cc94eef4eddd47dcd3b2ca04", 1001 | "shasum": "" 1002 | }, 1003 | "require": { 1004 | "doctrine/lexer": "^1.0.1", 1005 | "php": ">= 5.5" 1006 | }, 1007 | "require-dev": { 1008 | "dominicsayers/isemail": "dev-master", 1009 | "phpunit/phpunit": "^4.8.35", 1010 | "satooshi/php-coveralls": "^1.0.1" 1011 | }, 1012 | "suggest": { 1013 | "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" 1014 | }, 1015 | "type": "library", 1016 | "extra": { 1017 | "branch-alias": { 1018 | "dev-master": "2.0.x-dev" 1019 | } 1020 | }, 1021 | "autoload": { 1022 | "psr-4": { 1023 | "Egulias\\EmailValidator\\": "EmailValidator" 1024 | } 1025 | }, 1026 | "notification-url": "https://packagist.org/downloads/", 1027 | "license": [ 1028 | "MIT" 1029 | ], 1030 | "authors": [ 1031 | { 1032 | "name": "Eduardo Gulias Davis" 1033 | } 1034 | ], 1035 | "description": "A library for validating emails against several RFCs", 1036 | "homepage": "https://github.com/egulias/EmailValidator", 1037 | "keywords": [ 1038 | "email", 1039 | "emailvalidation", 1040 | "emailvalidator", 1041 | "validation", 1042 | "validator" 1043 | ], 1044 | "time": "2017-11-15T23:40:40+00:00" 1045 | }, 1046 | { 1047 | "name": "elvanto/litemoji", 1048 | "version": "1.3.1", 1049 | "source": { 1050 | "type": "git", 1051 | "url": "https://github.com/elvanto/litemoji.git", 1052 | "reference": "fc1d2b8b3d174ee9425ac506430377dc3b50cdfb" 1053 | }, 1054 | "dist": { 1055 | "type": "zip", 1056 | "url": "https://api.github.com/repos/elvanto/litemoji/zipball/fc1d2b8b3d174ee9425ac506430377dc3b50cdfb", 1057 | "reference": "fc1d2b8b3d174ee9425ac506430377dc3b50cdfb", 1058 | "shasum": "" 1059 | }, 1060 | "require": { 1061 | "php": ">=5.4" 1062 | }, 1063 | "require-dev": { 1064 | "milesj/emojibase": "*", 1065 | "phpunit/phpunit": "^5.0" 1066 | }, 1067 | "type": "library", 1068 | "autoload": { 1069 | "psr-4": { 1070 | "LitEmoji\\": "src/" 1071 | } 1072 | }, 1073 | "notification-url": "https://packagist.org/downloads/", 1074 | "license": [ 1075 | "MIT" 1076 | ], 1077 | "description": "A PHP library simplifying the conversion of unicode, HTML and shortcode emoji.", 1078 | "keywords": [ 1079 | "emoji", 1080 | "php-emoji" 1081 | ], 1082 | "time": "2017-10-09T01:54:36+00:00" 1083 | }, 1084 | { 1085 | "name": "enshrined/svg-sanitize", 1086 | "version": "0.8.2", 1087 | "source": { 1088 | "type": "git", 1089 | "url": "https://github.com/darylldoyle/svg-sanitizer.git", 1090 | "reference": "432fc4fc7e95b8a866790ba27e35076b9dd96ebe" 1091 | }, 1092 | "dist": { 1093 | "type": "zip", 1094 | "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/432fc4fc7e95b8a866790ba27e35076b9dd96ebe", 1095 | "reference": "432fc4fc7e95b8a866790ba27e35076b9dd96ebe", 1096 | "shasum": "" 1097 | }, 1098 | "require-dev": { 1099 | "codeclimate/php-test-reporter": "^0.1.2", 1100 | "phpunit/phpunit": "^4.7" 1101 | }, 1102 | "type": "library", 1103 | "autoload": { 1104 | "psr-4": { 1105 | "enshrined\\svgSanitize\\": "src" 1106 | } 1107 | }, 1108 | "notification-url": "https://packagist.org/downloads/", 1109 | "license": [ 1110 | "GPL-2.0+" 1111 | ], 1112 | "authors": [ 1113 | { 1114 | "name": "Daryll Doyle", 1115 | "email": "daryll@enshrined.co.uk" 1116 | } 1117 | ], 1118 | "description": "An SVG sanitizer for PHP", 1119 | "time": "2017-12-06T15:31:26+00:00" 1120 | }, 1121 | { 1122 | "name": "ezyang/htmlpurifier", 1123 | "version": "v4.10.0", 1124 | "source": { 1125 | "type": "git", 1126 | "url": "https://github.com/ezyang/htmlpurifier.git", 1127 | "reference": "d85d39da4576a6934b72480be6978fb10c860021" 1128 | }, 1129 | "dist": { 1130 | "type": "zip", 1131 | "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d85d39da4576a6934b72480be6978fb10c860021", 1132 | "reference": "d85d39da4576a6934b72480be6978fb10c860021", 1133 | "shasum": "" 1134 | }, 1135 | "require": { 1136 | "php": ">=5.2" 1137 | }, 1138 | "require-dev": { 1139 | "simpletest/simpletest": "^1.1" 1140 | }, 1141 | "type": "library", 1142 | "autoload": { 1143 | "psr-0": { 1144 | "HTMLPurifier": "library/" 1145 | }, 1146 | "files": [ 1147 | "library/HTMLPurifier.composer.php" 1148 | ] 1149 | }, 1150 | "notification-url": "https://packagist.org/downloads/", 1151 | "license": [ 1152 | "LGPL" 1153 | ], 1154 | "authors": [ 1155 | { 1156 | "name": "Edward Z. Yang", 1157 | "email": "admin@htmlpurifier.org", 1158 | "homepage": "http://ezyang.com" 1159 | } 1160 | ], 1161 | "description": "Standards compliant HTML filter written in PHP", 1162 | "homepage": "http://htmlpurifier.org/", 1163 | "keywords": [ 1164 | "html" 1165 | ], 1166 | "time": "2018-02-23T01:58:20+00:00" 1167 | }, 1168 | { 1169 | "name": "facebook/webdriver", 1170 | "version": "1.5.0", 1171 | "source": { 1172 | "type": "git", 1173 | "url": "https://github.com/facebook/php-webdriver.git", 1174 | "reference": "86b5ca2f67173c9d34340845dd690149c886a605" 1175 | }, 1176 | "dist": { 1177 | "type": "zip", 1178 | "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/86b5ca2f67173c9d34340845dd690149c886a605", 1179 | "reference": "86b5ca2f67173c9d34340845dd690149c886a605", 1180 | "shasum": "" 1181 | }, 1182 | "require": { 1183 | "ext-curl": "*", 1184 | "ext-zip": "*", 1185 | "php": "^5.6 || ~7.0", 1186 | "symfony/process": "^2.8 || ^3.1 || ^4.0" 1187 | }, 1188 | "require-dev": { 1189 | "friendsofphp/php-cs-fixer": "^2.0", 1190 | "guzzle/guzzle": "^3.4.1", 1191 | "php-coveralls/php-coveralls": "^1.0.2", 1192 | "php-mock/php-mock-phpunit": "^1.1", 1193 | "phpunit/phpunit": "^5.7", 1194 | "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", 1195 | "squizlabs/php_codesniffer": "^2.6", 1196 | "symfony/var-dumper": "^3.3 || ^4.0" 1197 | }, 1198 | "type": "library", 1199 | "extra": { 1200 | "branch-alias": { 1201 | "dev-community": "1.5-dev" 1202 | } 1203 | }, 1204 | "autoload": { 1205 | "psr-4": { 1206 | "Facebook\\WebDriver\\": "lib/" 1207 | } 1208 | }, 1209 | "notification-url": "https://packagist.org/downloads/", 1210 | "license": [ 1211 | "Apache-2.0" 1212 | ], 1213 | "description": "A PHP client for Selenium WebDriver", 1214 | "homepage": "https://github.com/facebook/php-webdriver", 1215 | "keywords": [ 1216 | "facebook", 1217 | "php", 1218 | "selenium", 1219 | "webdriver" 1220 | ], 1221 | "time": "2017-11-15T11:08:09+00:00" 1222 | }, 1223 | { 1224 | "name": "guzzlehttp/guzzle", 1225 | "version": "6.3.2", 1226 | "source": { 1227 | "type": "git", 1228 | "url": "https://github.com/guzzle/guzzle.git", 1229 | "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90" 1230 | }, 1231 | "dist": { 1232 | "type": "zip", 1233 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/68d0ea14d5a3f42a20e87632a5f84931e2709c90", 1234 | "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90", 1235 | "shasum": "" 1236 | }, 1237 | "require": { 1238 | "guzzlehttp/promises": "^1.0", 1239 | "guzzlehttp/psr7": "^1.4", 1240 | "php": ">=5.5" 1241 | }, 1242 | "require-dev": { 1243 | "ext-curl": "*", 1244 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4", 1245 | "psr/log": "^1.0" 1246 | }, 1247 | "suggest": { 1248 | "psr/log": "Required for using the Log middleware" 1249 | }, 1250 | "type": "library", 1251 | "extra": { 1252 | "branch-alias": { 1253 | "dev-master": "6.3-dev" 1254 | } 1255 | }, 1256 | "autoload": { 1257 | "files": [ 1258 | "src/functions_include.php" 1259 | ], 1260 | "psr-4": { 1261 | "GuzzleHttp\\": "src/" 1262 | } 1263 | }, 1264 | "notification-url": "https://packagist.org/downloads/", 1265 | "license": [ 1266 | "MIT" 1267 | ], 1268 | "authors": [ 1269 | { 1270 | "name": "Michael Dowling", 1271 | "email": "mtdowling@gmail.com", 1272 | "homepage": "https://github.com/mtdowling" 1273 | } 1274 | ], 1275 | "description": "Guzzle is a PHP HTTP client library", 1276 | "homepage": "http://guzzlephp.org/", 1277 | "keywords": [ 1278 | "client", 1279 | "curl", 1280 | "framework", 1281 | "http", 1282 | "http client", 1283 | "rest", 1284 | "web service" 1285 | ], 1286 | "time": "2018-03-26T16:33:04+00:00" 1287 | }, 1288 | { 1289 | "name": "guzzlehttp/promises", 1290 | "version": "v1.3.1", 1291 | "source": { 1292 | "type": "git", 1293 | "url": "https://github.com/guzzle/promises.git", 1294 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" 1295 | }, 1296 | "dist": { 1297 | "type": "zip", 1298 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", 1299 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", 1300 | "shasum": "" 1301 | }, 1302 | "require": { 1303 | "php": ">=5.5.0" 1304 | }, 1305 | "require-dev": { 1306 | "phpunit/phpunit": "^4.0" 1307 | }, 1308 | "type": "library", 1309 | "extra": { 1310 | "branch-alias": { 1311 | "dev-master": "1.4-dev" 1312 | } 1313 | }, 1314 | "autoload": { 1315 | "psr-4": { 1316 | "GuzzleHttp\\Promise\\": "src/" 1317 | }, 1318 | "files": [ 1319 | "src/functions_include.php" 1320 | ] 1321 | }, 1322 | "notification-url": "https://packagist.org/downloads/", 1323 | "license": [ 1324 | "MIT" 1325 | ], 1326 | "authors": [ 1327 | { 1328 | "name": "Michael Dowling", 1329 | "email": "mtdowling@gmail.com", 1330 | "homepage": "https://github.com/mtdowling" 1331 | } 1332 | ], 1333 | "description": "Guzzle promises library", 1334 | "keywords": [ 1335 | "promise" 1336 | ], 1337 | "time": "2016-12-20T10:07:11+00:00" 1338 | }, 1339 | { 1340 | "name": "guzzlehttp/psr7", 1341 | "version": "1.4.2", 1342 | "source": { 1343 | "type": "git", 1344 | "url": "https://github.com/guzzle/psr7.git", 1345 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" 1346 | }, 1347 | "dist": { 1348 | "type": "zip", 1349 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 1350 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 1351 | "shasum": "" 1352 | }, 1353 | "require": { 1354 | "php": ">=5.4.0", 1355 | "psr/http-message": "~1.0" 1356 | }, 1357 | "provide": { 1358 | "psr/http-message-implementation": "1.0" 1359 | }, 1360 | "require-dev": { 1361 | "phpunit/phpunit": "~4.0" 1362 | }, 1363 | "type": "library", 1364 | "extra": { 1365 | "branch-alias": { 1366 | "dev-master": "1.4-dev" 1367 | } 1368 | }, 1369 | "autoload": { 1370 | "psr-4": { 1371 | "GuzzleHttp\\Psr7\\": "src/" 1372 | }, 1373 | "files": [ 1374 | "src/functions_include.php" 1375 | ] 1376 | }, 1377 | "notification-url": "https://packagist.org/downloads/", 1378 | "license": [ 1379 | "MIT" 1380 | ], 1381 | "authors": [ 1382 | { 1383 | "name": "Michael Dowling", 1384 | "email": "mtdowling@gmail.com", 1385 | "homepage": "https://github.com/mtdowling" 1386 | }, 1387 | { 1388 | "name": "Tobias Schultze", 1389 | "homepage": "https://github.com/Tobion" 1390 | } 1391 | ], 1392 | "description": "PSR-7 message implementation that also provides common utility methods", 1393 | "keywords": [ 1394 | "http", 1395 | "message", 1396 | "request", 1397 | "response", 1398 | "stream", 1399 | "uri", 1400 | "url" 1401 | ], 1402 | "time": "2017-03-20T17:10:46+00:00" 1403 | }, 1404 | { 1405 | "name": "justinrainbow/json-schema", 1406 | "version": "5.2.7", 1407 | "source": { 1408 | "type": "git", 1409 | "url": "https://github.com/justinrainbow/json-schema.git", 1410 | "reference": "8560d4314577199ba51bf2032f02cd1315587c23" 1411 | }, 1412 | "dist": { 1413 | "type": "zip", 1414 | "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8560d4314577199ba51bf2032f02cd1315587c23", 1415 | "reference": "8560d4314577199ba51bf2032f02cd1315587c23", 1416 | "shasum": "" 1417 | }, 1418 | "require": { 1419 | "php": ">=5.3.3" 1420 | }, 1421 | "require-dev": { 1422 | "friendsofphp/php-cs-fixer": "^2.1", 1423 | "json-schema/json-schema-test-suite": "1.2.0", 1424 | "phpunit/phpunit": "^4.8.35" 1425 | }, 1426 | "bin": [ 1427 | "bin/validate-json" 1428 | ], 1429 | "type": "library", 1430 | "extra": { 1431 | "branch-alias": { 1432 | "dev-master": "5.0.x-dev" 1433 | } 1434 | }, 1435 | "autoload": { 1436 | "psr-4": { 1437 | "JsonSchema\\": "src/JsonSchema/" 1438 | } 1439 | }, 1440 | "notification-url": "https://packagist.org/downloads/", 1441 | "license": [ 1442 | "MIT" 1443 | ], 1444 | "authors": [ 1445 | { 1446 | "name": "Bruno Prieto Reis", 1447 | "email": "bruno.p.reis@gmail.com" 1448 | }, 1449 | { 1450 | "name": "Justin Rainbow", 1451 | "email": "justin.rainbow@gmail.com" 1452 | }, 1453 | { 1454 | "name": "Igor Wiedler", 1455 | "email": "igor@wiedler.ch" 1456 | }, 1457 | { 1458 | "name": "Robert Schönthal", 1459 | "email": "seroscho@googlemail.com" 1460 | } 1461 | ], 1462 | "description": "A library to validate a json schema.", 1463 | "homepage": "https://github.com/justinrainbow/json-schema", 1464 | "keywords": [ 1465 | "json", 1466 | "schema" 1467 | ], 1468 | "time": "2018-02-14T22:26:30+00:00" 1469 | }, 1470 | { 1471 | "name": "league/flysystem", 1472 | "version": "1.0.43", 1473 | "source": { 1474 | "type": "git", 1475 | "url": "https://github.com/thephpleague/flysystem.git", 1476 | "reference": "1ce7cc142d906ba58dc54c82915d355a9191c8a8" 1477 | }, 1478 | "dist": { 1479 | "type": "zip", 1480 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1ce7cc142d906ba58dc54c82915d355a9191c8a8", 1481 | "reference": "1ce7cc142d906ba58dc54c82915d355a9191c8a8", 1482 | "shasum": "" 1483 | }, 1484 | "require": { 1485 | "php": ">=5.5.9" 1486 | }, 1487 | "conflict": { 1488 | "league/flysystem-sftp": "<1.0.6" 1489 | }, 1490 | "require-dev": { 1491 | "ext-fileinfo": "*", 1492 | "phpspec/phpspec": "^3.4", 1493 | "phpunit/phpunit": "^5.7" 1494 | }, 1495 | "suggest": { 1496 | "ext-fileinfo": "Required for MimeType", 1497 | "ext-ftp": "Allows you to use FTP server storage", 1498 | "ext-openssl": "Allows you to use FTPS server storage", 1499 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", 1500 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", 1501 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", 1502 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", 1503 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", 1504 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", 1505 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", 1506 | "league/flysystem-webdav": "Allows you to use WebDAV storage", 1507 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", 1508 | "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", 1509 | "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" 1510 | }, 1511 | "type": "library", 1512 | "extra": { 1513 | "branch-alias": { 1514 | "dev-master": "1.1-dev" 1515 | } 1516 | }, 1517 | "autoload": { 1518 | "psr-4": { 1519 | "League\\Flysystem\\": "src/" 1520 | } 1521 | }, 1522 | "notification-url": "https://packagist.org/downloads/", 1523 | "license": [ 1524 | "MIT" 1525 | ], 1526 | "authors": [ 1527 | { 1528 | "name": "Frank de Jonge", 1529 | "email": "info@frenky.net" 1530 | } 1531 | ], 1532 | "description": "Filesystem abstraction: Many filesystems, one API.", 1533 | "keywords": [ 1534 | "Cloud Files", 1535 | "WebDAV", 1536 | "abstraction", 1537 | "aws", 1538 | "cloud", 1539 | "copy.com", 1540 | "dropbox", 1541 | "file systems", 1542 | "files", 1543 | "filesystem", 1544 | "filesystems", 1545 | "ftp", 1546 | "rackspace", 1547 | "remote", 1548 | "s3", 1549 | "sftp", 1550 | "storage" 1551 | ], 1552 | "time": "2018-03-01T10:27:04+00:00" 1553 | }, 1554 | { 1555 | "name": "league/oauth2-client", 1556 | "version": "2.2.1", 1557 | "source": { 1558 | "type": "git", 1559 | "url": "https://github.com/thephpleague/oauth2-client.git", 1560 | "reference": "313250eab923e673a5c0c8f463f443ee79f4383f" 1561 | }, 1562 | "dist": { 1563 | "type": "zip", 1564 | "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/313250eab923e673a5c0c8f463f443ee79f4383f", 1565 | "reference": "313250eab923e673a5c0c8f463f443ee79f4383f", 1566 | "shasum": "" 1567 | }, 1568 | "require": { 1569 | "guzzlehttp/guzzle": "^6.0", 1570 | "paragonie/random_compat": "^1|^2", 1571 | "php": ">=5.6.0" 1572 | }, 1573 | "require-dev": { 1574 | "eloquent/liberator": "^2.0", 1575 | "eloquent/phony": "^0.14.1", 1576 | "jakub-onderka/php-parallel-lint": "~0.9", 1577 | "phpunit/phpunit": "^5.0", 1578 | "squizlabs/php_codesniffer": "^2.0" 1579 | }, 1580 | "type": "library", 1581 | "extra": { 1582 | "branch-alias": { 1583 | "dev-2.x": "2.0.x-dev" 1584 | } 1585 | }, 1586 | "autoload": { 1587 | "psr-4": { 1588 | "League\\OAuth2\\Client\\": "src/" 1589 | } 1590 | }, 1591 | "notification-url": "https://packagist.org/downloads/", 1592 | "license": [ 1593 | "MIT" 1594 | ], 1595 | "authors": [ 1596 | { 1597 | "name": "Alex Bilbie", 1598 | "email": "hello@alexbilbie.com", 1599 | "homepage": "http://www.alexbilbie.com", 1600 | "role": "Developer" 1601 | }, 1602 | { 1603 | "name": "Woody Gilk", 1604 | "homepage": "https://github.com/shadowhand", 1605 | "role": "Contributor" 1606 | } 1607 | ], 1608 | "description": "OAuth 2.0 Client Library", 1609 | "keywords": [ 1610 | "Authentication", 1611 | "SSO", 1612 | "authorization", 1613 | "identity", 1614 | "idp", 1615 | "oauth", 1616 | "oauth2", 1617 | "single sign on" 1618 | ], 1619 | "time": "2017-04-25T14:43:14+00:00" 1620 | }, 1621 | { 1622 | "name": "mikehaertl/php-shellcommand", 1623 | "version": "1.2.5", 1624 | "source": { 1625 | "type": "git", 1626 | "url": "https://github.com/mikehaertl/php-shellcommand.git", 1627 | "reference": "35a81f344bd771b0b1c1ae3f4dc986dddfd234b9" 1628 | }, 1629 | "dist": { 1630 | "type": "zip", 1631 | "url": "https://api.github.com/repos/mikehaertl/php-shellcommand/zipball/35a81f344bd771b0b1c1ae3f4dc986dddfd234b9", 1632 | "reference": "35a81f344bd771b0b1c1ae3f4dc986dddfd234b9", 1633 | "shasum": "" 1634 | }, 1635 | "type": "library", 1636 | "autoload": { 1637 | "psr-4": { 1638 | "mikehaertl\\shellcommand\\": "src/" 1639 | } 1640 | }, 1641 | "notification-url": "https://packagist.org/downloads/", 1642 | "license": [ 1643 | "MIT" 1644 | ], 1645 | "authors": [ 1646 | { 1647 | "name": "Michael Härtl", 1648 | "email": "haertl.mike@gmail.com" 1649 | } 1650 | ], 1651 | "description": "An object oriented interface to shell commands", 1652 | "keywords": [ 1653 | "shell" 1654 | ], 1655 | "time": "2017-06-30T06:21:01+00:00" 1656 | }, 1657 | { 1658 | "name": "myclabs/deep-copy", 1659 | "version": "1.7.0", 1660 | "source": { 1661 | "type": "git", 1662 | "url": "https://github.com/myclabs/DeepCopy.git", 1663 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" 1664 | }, 1665 | "dist": { 1666 | "type": "zip", 1667 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 1668 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 1669 | "shasum": "" 1670 | }, 1671 | "require": { 1672 | "php": "^5.6 || ^7.0" 1673 | }, 1674 | "require-dev": { 1675 | "doctrine/collections": "^1.0", 1676 | "doctrine/common": "^2.6", 1677 | "phpunit/phpunit": "^4.1" 1678 | }, 1679 | "type": "library", 1680 | "autoload": { 1681 | "psr-4": { 1682 | "DeepCopy\\": "src/DeepCopy/" 1683 | }, 1684 | "files": [ 1685 | "src/DeepCopy/deep_copy.php" 1686 | ] 1687 | }, 1688 | "notification-url": "https://packagist.org/downloads/", 1689 | "license": [ 1690 | "MIT" 1691 | ], 1692 | "description": "Create deep copies (clones) of your objects", 1693 | "keywords": [ 1694 | "clone", 1695 | "copy", 1696 | "duplicate", 1697 | "object", 1698 | "object graph" 1699 | ], 1700 | "time": "2017-10-19T19:58:43+00:00" 1701 | }, 1702 | { 1703 | "name": "paragonie/random_compat", 1704 | "version": "v2.0.11", 1705 | "source": { 1706 | "type": "git", 1707 | "url": "https://github.com/paragonie/random_compat.git", 1708 | "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8" 1709 | }, 1710 | "dist": { 1711 | "type": "zip", 1712 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8", 1713 | "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8", 1714 | "shasum": "" 1715 | }, 1716 | "require": { 1717 | "php": ">=5.2.0" 1718 | }, 1719 | "require-dev": { 1720 | "phpunit/phpunit": "4.*|5.*" 1721 | }, 1722 | "suggest": { 1723 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 1724 | }, 1725 | "type": "library", 1726 | "autoload": { 1727 | "files": [ 1728 | "lib/random.php" 1729 | ] 1730 | }, 1731 | "notification-url": "https://packagist.org/downloads/", 1732 | "license": [ 1733 | "MIT" 1734 | ], 1735 | "authors": [ 1736 | { 1737 | "name": "Paragon Initiative Enterprises", 1738 | "email": "security@paragonie.com", 1739 | "homepage": "https://paragonie.com" 1740 | } 1741 | ], 1742 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 1743 | "keywords": [ 1744 | "csprng", 1745 | "pseudorandom", 1746 | "random" 1747 | ], 1748 | "time": "2017-09-27T21:40:39+00:00" 1749 | }, 1750 | { 1751 | "name": "phar-io/manifest", 1752 | "version": "1.0.1", 1753 | "source": { 1754 | "type": "git", 1755 | "url": "https://github.com/phar-io/manifest.git", 1756 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" 1757 | }, 1758 | "dist": { 1759 | "type": "zip", 1760 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", 1761 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", 1762 | "shasum": "" 1763 | }, 1764 | "require": { 1765 | "ext-dom": "*", 1766 | "ext-phar": "*", 1767 | "phar-io/version": "^1.0.1", 1768 | "php": "^5.6 || ^7.0" 1769 | }, 1770 | "type": "library", 1771 | "extra": { 1772 | "branch-alias": { 1773 | "dev-master": "1.0.x-dev" 1774 | } 1775 | }, 1776 | "autoload": { 1777 | "classmap": [ 1778 | "src/" 1779 | ] 1780 | }, 1781 | "notification-url": "https://packagist.org/downloads/", 1782 | "license": [ 1783 | "BSD-3-Clause" 1784 | ], 1785 | "authors": [ 1786 | { 1787 | "name": "Arne Blankerts", 1788 | "email": "arne@blankerts.de", 1789 | "role": "Developer" 1790 | }, 1791 | { 1792 | "name": "Sebastian Heuer", 1793 | "email": "sebastian@phpeople.de", 1794 | "role": "Developer" 1795 | }, 1796 | { 1797 | "name": "Sebastian Bergmann", 1798 | "email": "sebastian@phpunit.de", 1799 | "role": "Developer" 1800 | } 1801 | ], 1802 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 1803 | "time": "2017-03-05T18:14:27+00:00" 1804 | }, 1805 | { 1806 | "name": "phar-io/version", 1807 | "version": "1.0.1", 1808 | "source": { 1809 | "type": "git", 1810 | "url": "https://github.com/phar-io/version.git", 1811 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" 1812 | }, 1813 | "dist": { 1814 | "type": "zip", 1815 | "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", 1816 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", 1817 | "shasum": "" 1818 | }, 1819 | "require": { 1820 | "php": "^5.6 || ^7.0" 1821 | }, 1822 | "type": "library", 1823 | "autoload": { 1824 | "classmap": [ 1825 | "src/" 1826 | ] 1827 | }, 1828 | "notification-url": "https://packagist.org/downloads/", 1829 | "license": [ 1830 | "BSD-3-Clause" 1831 | ], 1832 | "authors": [ 1833 | { 1834 | "name": "Arne Blankerts", 1835 | "email": "arne@blankerts.de", 1836 | "role": "Developer" 1837 | }, 1838 | { 1839 | "name": "Sebastian Heuer", 1840 | "email": "sebastian@phpeople.de", 1841 | "role": "Developer" 1842 | }, 1843 | { 1844 | "name": "Sebastian Bergmann", 1845 | "email": "sebastian@phpunit.de", 1846 | "role": "Developer" 1847 | } 1848 | ], 1849 | "description": "Library for handling version information and constraints", 1850 | "time": "2017-03-05T17:38:23+00:00" 1851 | }, 1852 | { 1853 | "name": "phpdocumentor/reflection-common", 1854 | "version": "1.0.1", 1855 | "source": { 1856 | "type": "git", 1857 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 1858 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 1859 | }, 1860 | "dist": { 1861 | "type": "zip", 1862 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 1863 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 1864 | "shasum": "" 1865 | }, 1866 | "require": { 1867 | "php": ">=5.5" 1868 | }, 1869 | "require-dev": { 1870 | "phpunit/phpunit": "^4.6" 1871 | }, 1872 | "type": "library", 1873 | "extra": { 1874 | "branch-alias": { 1875 | "dev-master": "1.0.x-dev" 1876 | } 1877 | }, 1878 | "autoload": { 1879 | "psr-4": { 1880 | "phpDocumentor\\Reflection\\": [ 1881 | "src" 1882 | ] 1883 | } 1884 | }, 1885 | "notification-url": "https://packagist.org/downloads/", 1886 | "license": [ 1887 | "MIT" 1888 | ], 1889 | "authors": [ 1890 | { 1891 | "name": "Jaap van Otterdijk", 1892 | "email": "opensource@ijaap.nl" 1893 | } 1894 | ], 1895 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 1896 | "homepage": "http://www.phpdoc.org", 1897 | "keywords": [ 1898 | "FQSEN", 1899 | "phpDocumentor", 1900 | "phpdoc", 1901 | "reflection", 1902 | "static analysis" 1903 | ], 1904 | "time": "2017-09-11T18:02:19+00:00" 1905 | }, 1906 | { 1907 | "name": "phpdocumentor/reflection-docblock", 1908 | "version": "4.3.0", 1909 | "source": { 1910 | "type": "git", 1911 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 1912 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08" 1913 | }, 1914 | "dist": { 1915 | "type": "zip", 1916 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", 1917 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08", 1918 | "shasum": "" 1919 | }, 1920 | "require": { 1921 | "php": "^7.0", 1922 | "phpdocumentor/reflection-common": "^1.0.0", 1923 | "phpdocumentor/type-resolver": "^0.4.0", 1924 | "webmozart/assert": "^1.0" 1925 | }, 1926 | "require-dev": { 1927 | "doctrine/instantiator": "~1.0.5", 1928 | "mockery/mockery": "^1.0", 1929 | "phpunit/phpunit": "^6.4" 1930 | }, 1931 | "type": "library", 1932 | "extra": { 1933 | "branch-alias": { 1934 | "dev-master": "4.x-dev" 1935 | } 1936 | }, 1937 | "autoload": { 1938 | "psr-4": { 1939 | "phpDocumentor\\Reflection\\": [ 1940 | "src/" 1941 | ] 1942 | } 1943 | }, 1944 | "notification-url": "https://packagist.org/downloads/", 1945 | "license": [ 1946 | "MIT" 1947 | ], 1948 | "authors": [ 1949 | { 1950 | "name": "Mike van Riel", 1951 | "email": "me@mikevanriel.com" 1952 | } 1953 | ], 1954 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 1955 | "time": "2017-11-30T07:14:17+00:00" 1956 | }, 1957 | { 1958 | "name": "phpdocumentor/type-resolver", 1959 | "version": "0.4.0", 1960 | "source": { 1961 | "type": "git", 1962 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 1963 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 1964 | }, 1965 | "dist": { 1966 | "type": "zip", 1967 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 1968 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 1969 | "shasum": "" 1970 | }, 1971 | "require": { 1972 | "php": "^5.5 || ^7.0", 1973 | "phpdocumentor/reflection-common": "^1.0" 1974 | }, 1975 | "require-dev": { 1976 | "mockery/mockery": "^0.9.4", 1977 | "phpunit/phpunit": "^5.2||^4.8.24" 1978 | }, 1979 | "type": "library", 1980 | "extra": { 1981 | "branch-alias": { 1982 | "dev-master": "1.0.x-dev" 1983 | } 1984 | }, 1985 | "autoload": { 1986 | "psr-4": { 1987 | "phpDocumentor\\Reflection\\": [ 1988 | "src/" 1989 | ] 1990 | } 1991 | }, 1992 | "notification-url": "https://packagist.org/downloads/", 1993 | "license": [ 1994 | "MIT" 1995 | ], 1996 | "authors": [ 1997 | { 1998 | "name": "Mike van Riel", 1999 | "email": "me@mikevanriel.com" 2000 | } 2001 | ], 2002 | "time": "2017-07-14T14:27:02+00:00" 2003 | }, 2004 | { 2005 | "name": "phpspec/prophecy", 2006 | "version": "1.7.5", 2007 | "source": { 2008 | "type": "git", 2009 | "url": "https://github.com/phpspec/prophecy.git", 2010 | "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401" 2011 | }, 2012 | "dist": { 2013 | "type": "zip", 2014 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401", 2015 | "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401", 2016 | "shasum": "" 2017 | }, 2018 | "require": { 2019 | "doctrine/instantiator": "^1.0.2", 2020 | "php": "^5.3|^7.0", 2021 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 2022 | "sebastian/comparator": "^1.1|^2.0", 2023 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 2024 | }, 2025 | "require-dev": { 2026 | "phpspec/phpspec": "^2.5|^3.2", 2027 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" 2028 | }, 2029 | "type": "library", 2030 | "extra": { 2031 | "branch-alias": { 2032 | "dev-master": "1.7.x-dev" 2033 | } 2034 | }, 2035 | "autoload": { 2036 | "psr-0": { 2037 | "Prophecy\\": "src/" 2038 | } 2039 | }, 2040 | "notification-url": "https://packagist.org/downloads/", 2041 | "license": [ 2042 | "MIT" 2043 | ], 2044 | "authors": [ 2045 | { 2046 | "name": "Konstantin Kudryashov", 2047 | "email": "ever.zet@gmail.com", 2048 | "homepage": "http://everzet.com" 2049 | }, 2050 | { 2051 | "name": "Marcello Duarte", 2052 | "email": "marcello.duarte@gmail.com" 2053 | } 2054 | ], 2055 | "description": "Highly opinionated mocking framework for PHP 5.3+", 2056 | "homepage": "https://github.com/phpspec/prophecy", 2057 | "keywords": [ 2058 | "Double", 2059 | "Dummy", 2060 | "fake", 2061 | "mock", 2062 | "spy", 2063 | "stub" 2064 | ], 2065 | "time": "2018-02-19T10:16:54+00:00" 2066 | }, 2067 | { 2068 | "name": "phpunit/php-code-coverage", 2069 | "version": "5.3.0", 2070 | "source": { 2071 | "type": "git", 2072 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 2073 | "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1" 2074 | }, 2075 | "dist": { 2076 | "type": "zip", 2077 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1", 2078 | "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1", 2079 | "shasum": "" 2080 | }, 2081 | "require": { 2082 | "ext-dom": "*", 2083 | "ext-xmlwriter": "*", 2084 | "php": "^7.0", 2085 | "phpunit/php-file-iterator": "^1.4.2", 2086 | "phpunit/php-text-template": "^1.2.1", 2087 | "phpunit/php-token-stream": "^2.0.1", 2088 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 2089 | "sebastian/environment": "^3.0", 2090 | "sebastian/version": "^2.0.1", 2091 | "theseer/tokenizer": "^1.1" 2092 | }, 2093 | "require-dev": { 2094 | "phpunit/phpunit": "^6.0" 2095 | }, 2096 | "suggest": { 2097 | "ext-xdebug": "^2.5.5" 2098 | }, 2099 | "type": "library", 2100 | "extra": { 2101 | "branch-alias": { 2102 | "dev-master": "5.3.x-dev" 2103 | } 2104 | }, 2105 | "autoload": { 2106 | "classmap": [ 2107 | "src/" 2108 | ] 2109 | }, 2110 | "notification-url": "https://packagist.org/downloads/", 2111 | "license": [ 2112 | "BSD-3-Clause" 2113 | ], 2114 | "authors": [ 2115 | { 2116 | "name": "Sebastian Bergmann", 2117 | "email": "sebastian@phpunit.de", 2118 | "role": "lead" 2119 | } 2120 | ], 2121 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 2122 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 2123 | "keywords": [ 2124 | "coverage", 2125 | "testing", 2126 | "xunit" 2127 | ], 2128 | "time": "2017-12-06T09:29:45+00:00" 2129 | }, 2130 | { 2131 | "name": "phpunit/php-file-iterator", 2132 | "version": "1.4.5", 2133 | "source": { 2134 | "type": "git", 2135 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 2136 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" 2137 | }, 2138 | "dist": { 2139 | "type": "zip", 2140 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", 2141 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", 2142 | "shasum": "" 2143 | }, 2144 | "require": { 2145 | "php": ">=5.3.3" 2146 | }, 2147 | "type": "library", 2148 | "extra": { 2149 | "branch-alias": { 2150 | "dev-master": "1.4.x-dev" 2151 | } 2152 | }, 2153 | "autoload": { 2154 | "classmap": [ 2155 | "src/" 2156 | ] 2157 | }, 2158 | "notification-url": "https://packagist.org/downloads/", 2159 | "license": [ 2160 | "BSD-3-Clause" 2161 | ], 2162 | "authors": [ 2163 | { 2164 | "name": "Sebastian Bergmann", 2165 | "email": "sb@sebastian-bergmann.de", 2166 | "role": "lead" 2167 | } 2168 | ], 2169 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 2170 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 2171 | "keywords": [ 2172 | "filesystem", 2173 | "iterator" 2174 | ], 2175 | "time": "2017-11-27T13:52:08+00:00" 2176 | }, 2177 | { 2178 | "name": "phpunit/php-text-template", 2179 | "version": "1.2.1", 2180 | "source": { 2181 | "type": "git", 2182 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 2183 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 2184 | }, 2185 | "dist": { 2186 | "type": "zip", 2187 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2188 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2189 | "shasum": "" 2190 | }, 2191 | "require": { 2192 | "php": ">=5.3.3" 2193 | }, 2194 | "type": "library", 2195 | "autoload": { 2196 | "classmap": [ 2197 | "src/" 2198 | ] 2199 | }, 2200 | "notification-url": "https://packagist.org/downloads/", 2201 | "license": [ 2202 | "BSD-3-Clause" 2203 | ], 2204 | "authors": [ 2205 | { 2206 | "name": "Sebastian Bergmann", 2207 | "email": "sebastian@phpunit.de", 2208 | "role": "lead" 2209 | } 2210 | ], 2211 | "description": "Simple template engine.", 2212 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 2213 | "keywords": [ 2214 | "template" 2215 | ], 2216 | "time": "2015-06-21T13:50:34+00:00" 2217 | }, 2218 | { 2219 | "name": "phpunit/php-timer", 2220 | "version": "1.0.9", 2221 | "source": { 2222 | "type": "git", 2223 | "url": "https://github.com/sebastianbergmann/php-timer.git", 2224 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 2225 | }, 2226 | "dist": { 2227 | "type": "zip", 2228 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 2229 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 2230 | "shasum": "" 2231 | }, 2232 | "require": { 2233 | "php": "^5.3.3 || ^7.0" 2234 | }, 2235 | "require-dev": { 2236 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 2237 | }, 2238 | "type": "library", 2239 | "extra": { 2240 | "branch-alias": { 2241 | "dev-master": "1.0-dev" 2242 | } 2243 | }, 2244 | "autoload": { 2245 | "classmap": [ 2246 | "src/" 2247 | ] 2248 | }, 2249 | "notification-url": "https://packagist.org/downloads/", 2250 | "license": [ 2251 | "BSD-3-Clause" 2252 | ], 2253 | "authors": [ 2254 | { 2255 | "name": "Sebastian Bergmann", 2256 | "email": "sb@sebastian-bergmann.de", 2257 | "role": "lead" 2258 | } 2259 | ], 2260 | "description": "Utility class for timing", 2261 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 2262 | "keywords": [ 2263 | "timer" 2264 | ], 2265 | "time": "2017-02-26T11:10:40+00:00" 2266 | }, 2267 | { 2268 | "name": "phpunit/php-token-stream", 2269 | "version": "2.0.2", 2270 | "source": { 2271 | "type": "git", 2272 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 2273 | "reference": "791198a2c6254db10131eecfe8c06670700904db" 2274 | }, 2275 | "dist": { 2276 | "type": "zip", 2277 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", 2278 | "reference": "791198a2c6254db10131eecfe8c06670700904db", 2279 | "shasum": "" 2280 | }, 2281 | "require": { 2282 | "ext-tokenizer": "*", 2283 | "php": "^7.0" 2284 | }, 2285 | "require-dev": { 2286 | "phpunit/phpunit": "^6.2.4" 2287 | }, 2288 | "type": "library", 2289 | "extra": { 2290 | "branch-alias": { 2291 | "dev-master": "2.0-dev" 2292 | } 2293 | }, 2294 | "autoload": { 2295 | "classmap": [ 2296 | "src/" 2297 | ] 2298 | }, 2299 | "notification-url": "https://packagist.org/downloads/", 2300 | "license": [ 2301 | "BSD-3-Clause" 2302 | ], 2303 | "authors": [ 2304 | { 2305 | "name": "Sebastian Bergmann", 2306 | "email": "sebastian@phpunit.de" 2307 | } 2308 | ], 2309 | "description": "Wrapper around PHP's tokenizer extension.", 2310 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 2311 | "keywords": [ 2312 | "tokenizer" 2313 | ], 2314 | "time": "2017-11-27T05:48:46+00:00" 2315 | }, 2316 | { 2317 | "name": "phpunit/phpunit", 2318 | "version": "6.2.4", 2319 | "source": { 2320 | "type": "git", 2321 | "url": "https://github.com/sebastianbergmann/phpunit.git", 2322 | "reference": "ff3a76a58ac293657808aefd58c8aaf05945f4d9" 2323 | }, 2324 | "dist": { 2325 | "type": "zip", 2326 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ff3a76a58ac293657808aefd58c8aaf05945f4d9", 2327 | "reference": "ff3a76a58ac293657808aefd58c8aaf05945f4d9", 2328 | "shasum": "" 2329 | }, 2330 | "require": { 2331 | "ext-dom": "*", 2332 | "ext-json": "*", 2333 | "ext-libxml": "*", 2334 | "ext-mbstring": "*", 2335 | "ext-xml": "*", 2336 | "myclabs/deep-copy": "^1.3", 2337 | "phar-io/manifest": "^1.0.1", 2338 | "phar-io/version": "^1.0", 2339 | "php": "^7.0", 2340 | "phpspec/prophecy": "^1.7", 2341 | "phpunit/php-code-coverage": "^5.2", 2342 | "phpunit/php-file-iterator": "^1.4", 2343 | "phpunit/php-text-template": "^1.2", 2344 | "phpunit/php-timer": "^1.0.6", 2345 | "phpunit/phpunit-mock-objects": "^4.0", 2346 | "sebastian/comparator": "^2.0", 2347 | "sebastian/diff": "^1.4.3", 2348 | "sebastian/environment": "^3.0.2", 2349 | "sebastian/exporter": "^3.1", 2350 | "sebastian/global-state": "^1.1 || ^2.0", 2351 | "sebastian/object-enumerator": "^3.0.2", 2352 | "sebastian/resource-operations": "^1.0", 2353 | "sebastian/version": "^2.0" 2354 | }, 2355 | "conflict": { 2356 | "phpdocumentor/reflection-docblock": "3.0.2", 2357 | "phpunit/dbunit": "<3.0" 2358 | }, 2359 | "require-dev": { 2360 | "ext-pdo": "*" 2361 | }, 2362 | "suggest": { 2363 | "ext-xdebug": "*", 2364 | "phpunit/php-invoker": "^1.1" 2365 | }, 2366 | "bin": [ 2367 | "phpunit" 2368 | ], 2369 | "type": "library", 2370 | "extra": { 2371 | "branch-alias": { 2372 | "dev-master": "6.2.x-dev" 2373 | } 2374 | }, 2375 | "autoload": { 2376 | "classmap": [ 2377 | "src/" 2378 | ] 2379 | }, 2380 | "notification-url": "https://packagist.org/downloads/", 2381 | "license": [ 2382 | "BSD-3-Clause" 2383 | ], 2384 | "authors": [ 2385 | { 2386 | "name": "Sebastian Bergmann", 2387 | "email": "sebastian@phpunit.de", 2388 | "role": "lead" 2389 | } 2390 | ], 2391 | "description": "The PHP Unit Testing framework.", 2392 | "homepage": "https://phpunit.de/", 2393 | "keywords": [ 2394 | "phpunit", 2395 | "testing", 2396 | "xunit" 2397 | ], 2398 | "time": "2017-08-03T13:59:28+00:00" 2399 | }, 2400 | { 2401 | "name": "phpunit/phpunit-mock-objects", 2402 | "version": "4.0.4", 2403 | "source": { 2404 | "type": "git", 2405 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 2406 | "reference": "2f789b59ab89669015ad984afa350c4ec577ade0" 2407 | }, 2408 | "dist": { 2409 | "type": "zip", 2410 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/2f789b59ab89669015ad984afa350c4ec577ade0", 2411 | "reference": "2f789b59ab89669015ad984afa350c4ec577ade0", 2412 | "shasum": "" 2413 | }, 2414 | "require": { 2415 | "doctrine/instantiator": "^1.0.5", 2416 | "php": "^7.0", 2417 | "phpunit/php-text-template": "^1.2.1", 2418 | "sebastian/exporter": "^3.0" 2419 | }, 2420 | "conflict": { 2421 | "phpunit/phpunit": "<6.0" 2422 | }, 2423 | "require-dev": { 2424 | "phpunit/phpunit": "^6.0" 2425 | }, 2426 | "suggest": { 2427 | "ext-soap": "*" 2428 | }, 2429 | "type": "library", 2430 | "extra": { 2431 | "branch-alias": { 2432 | "dev-master": "4.0.x-dev" 2433 | } 2434 | }, 2435 | "autoload": { 2436 | "classmap": [ 2437 | "src/" 2438 | ] 2439 | }, 2440 | "notification-url": "https://packagist.org/downloads/", 2441 | "license": [ 2442 | "BSD-3-Clause" 2443 | ], 2444 | "authors": [ 2445 | { 2446 | "name": "Sebastian Bergmann", 2447 | "email": "sb@sebastian-bergmann.de", 2448 | "role": "lead" 2449 | } 2450 | ], 2451 | "description": "Mock Object library for PHPUnit", 2452 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 2453 | "keywords": [ 2454 | "mock", 2455 | "xunit" 2456 | ], 2457 | "time": "2017-08-03T14:08:16+00:00" 2458 | }, 2459 | { 2460 | "name": "pixelandtonic/imagine", 2461 | "version": "v0.7.1.3", 2462 | "source": { 2463 | "type": "git", 2464 | "url": "https://github.com/pixelandtonic/Imagine.git", 2465 | "reference": "989656b05410446fde623540bbf83af15087e4ea" 2466 | }, 2467 | "dist": { 2468 | "type": "zip", 2469 | "url": "https://api.github.com/repos/pixelandtonic/Imagine/zipball/989656b05410446fde623540bbf83af15087e4ea", 2470 | "reference": "989656b05410446fde623540bbf83af15087e4ea", 2471 | "shasum": "" 2472 | }, 2473 | "require": { 2474 | "php": ">=5.3.2" 2475 | }, 2476 | "require-dev": { 2477 | "sami/sami": "^3.3", 2478 | "symfony/phpunit-bridge": "^3.2" 2479 | }, 2480 | "suggest": { 2481 | "ext-gd": "to use the GD implementation", 2482 | "ext-gmagick": "to use the Gmagick implementation", 2483 | "ext-imagick": "to use the Imagick implementation" 2484 | }, 2485 | "type": "library", 2486 | "extra": { 2487 | "branch-alias": { 2488 | "dev-develop": "0.7-dev" 2489 | } 2490 | }, 2491 | "autoload": { 2492 | "psr-0": { 2493 | "Imagine": "lib/" 2494 | } 2495 | }, 2496 | "notification-url": "https://packagist.org/downloads/", 2497 | "license": [ 2498 | "MIT" 2499 | ], 2500 | "authors": [ 2501 | { 2502 | "name": "Bulat Shakirzyanov", 2503 | "email": "mallluhuct@gmail.com", 2504 | "homepage": "http://avalanche123.com" 2505 | } 2506 | ], 2507 | "description": "Image processing for PHP 5.3", 2508 | "homepage": "http://imagine.readthedocs.org/", 2509 | "keywords": [ 2510 | "drawing", 2511 | "graphics", 2512 | "image manipulation", 2513 | "image processing" 2514 | ], 2515 | "time": "2017-10-26T13:18:33+00:00" 2516 | }, 2517 | { 2518 | "name": "psr/http-message", 2519 | "version": "1.0.1", 2520 | "source": { 2521 | "type": "git", 2522 | "url": "https://github.com/php-fig/http-message.git", 2523 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 2524 | }, 2525 | "dist": { 2526 | "type": "zip", 2527 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 2528 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 2529 | "shasum": "" 2530 | }, 2531 | "require": { 2532 | "php": ">=5.3.0" 2533 | }, 2534 | "type": "library", 2535 | "extra": { 2536 | "branch-alias": { 2537 | "dev-master": "1.0.x-dev" 2538 | } 2539 | }, 2540 | "autoload": { 2541 | "psr-4": { 2542 | "Psr\\Http\\Message\\": "src/" 2543 | } 2544 | }, 2545 | "notification-url": "https://packagist.org/downloads/", 2546 | "license": [ 2547 | "MIT" 2548 | ], 2549 | "authors": [ 2550 | { 2551 | "name": "PHP-FIG", 2552 | "homepage": "http://www.php-fig.org/" 2553 | } 2554 | ], 2555 | "description": "Common interface for HTTP messages", 2556 | "homepage": "https://github.com/php-fig/http-message", 2557 | "keywords": [ 2558 | "http", 2559 | "http-message", 2560 | "psr", 2561 | "psr-7", 2562 | "request", 2563 | "response" 2564 | ], 2565 | "time": "2016-08-06T14:39:51+00:00" 2566 | }, 2567 | { 2568 | "name": "psr/log", 2569 | "version": "1.0.2", 2570 | "source": { 2571 | "type": "git", 2572 | "url": "https://github.com/php-fig/log.git", 2573 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" 2574 | }, 2575 | "dist": { 2576 | "type": "zip", 2577 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 2578 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 2579 | "shasum": "" 2580 | }, 2581 | "require": { 2582 | "php": ">=5.3.0" 2583 | }, 2584 | "type": "library", 2585 | "extra": { 2586 | "branch-alias": { 2587 | "dev-master": "1.0.x-dev" 2588 | } 2589 | }, 2590 | "autoload": { 2591 | "psr-4": { 2592 | "Psr\\Log\\": "Psr/Log/" 2593 | } 2594 | }, 2595 | "notification-url": "https://packagist.org/downloads/", 2596 | "license": [ 2597 | "MIT" 2598 | ], 2599 | "authors": [ 2600 | { 2601 | "name": "PHP-FIG", 2602 | "homepage": "http://www.php-fig.org/" 2603 | } 2604 | ], 2605 | "description": "Common interface for logging libraries", 2606 | "homepage": "https://github.com/php-fig/log", 2607 | "keywords": [ 2608 | "log", 2609 | "psr", 2610 | "psr-3" 2611 | ], 2612 | "time": "2016-10-10T12:19:37+00:00" 2613 | }, 2614 | { 2615 | "name": "sebastian/code-unit-reverse-lookup", 2616 | "version": "1.0.1", 2617 | "source": { 2618 | "type": "git", 2619 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 2620 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 2621 | }, 2622 | "dist": { 2623 | "type": "zip", 2624 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 2625 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 2626 | "shasum": "" 2627 | }, 2628 | "require": { 2629 | "php": "^5.6 || ^7.0" 2630 | }, 2631 | "require-dev": { 2632 | "phpunit/phpunit": "^5.7 || ^6.0" 2633 | }, 2634 | "type": "library", 2635 | "extra": { 2636 | "branch-alias": { 2637 | "dev-master": "1.0.x-dev" 2638 | } 2639 | }, 2640 | "autoload": { 2641 | "classmap": [ 2642 | "src/" 2643 | ] 2644 | }, 2645 | "notification-url": "https://packagist.org/downloads/", 2646 | "license": [ 2647 | "BSD-3-Clause" 2648 | ], 2649 | "authors": [ 2650 | { 2651 | "name": "Sebastian Bergmann", 2652 | "email": "sebastian@phpunit.de" 2653 | } 2654 | ], 2655 | "description": "Looks up which function or method a line of code belongs to", 2656 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 2657 | "time": "2017-03-04T06:30:41+00:00" 2658 | }, 2659 | { 2660 | "name": "sebastian/comparator", 2661 | "version": "2.0.0", 2662 | "source": { 2663 | "type": "git", 2664 | "url": "https://github.com/sebastianbergmann/comparator.git", 2665 | "reference": "20f84f468cb67efee293246e6a09619b891f55f0" 2666 | }, 2667 | "dist": { 2668 | "type": "zip", 2669 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/20f84f468cb67efee293246e6a09619b891f55f0", 2670 | "reference": "20f84f468cb67efee293246e6a09619b891f55f0", 2671 | "shasum": "" 2672 | }, 2673 | "require": { 2674 | "php": "^7.0", 2675 | "sebastian/diff": "^1.2", 2676 | "sebastian/exporter": "^3.0" 2677 | }, 2678 | "require-dev": { 2679 | "phpunit/phpunit": "^6.0" 2680 | }, 2681 | "type": "library", 2682 | "extra": { 2683 | "branch-alias": { 2684 | "dev-master": "2.0.x-dev" 2685 | } 2686 | }, 2687 | "autoload": { 2688 | "classmap": [ 2689 | "src/" 2690 | ] 2691 | }, 2692 | "notification-url": "https://packagist.org/downloads/", 2693 | "license": [ 2694 | "BSD-3-Clause" 2695 | ], 2696 | "authors": [ 2697 | { 2698 | "name": "Jeff Welch", 2699 | "email": "whatthejeff@gmail.com" 2700 | }, 2701 | { 2702 | "name": "Volker Dusch", 2703 | "email": "github@wallbash.com" 2704 | }, 2705 | { 2706 | "name": "Bernhard Schussek", 2707 | "email": "bschussek@2bepublished.at" 2708 | }, 2709 | { 2710 | "name": "Sebastian Bergmann", 2711 | "email": "sebastian@phpunit.de" 2712 | } 2713 | ], 2714 | "description": "Provides the functionality to compare PHP values for equality", 2715 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 2716 | "keywords": [ 2717 | "comparator", 2718 | "compare", 2719 | "equality" 2720 | ], 2721 | "time": "2017-03-03T06:26:08+00:00" 2722 | }, 2723 | { 2724 | "name": "sebastian/diff", 2725 | "version": "1.4.3", 2726 | "source": { 2727 | "type": "git", 2728 | "url": "https://github.com/sebastianbergmann/diff.git", 2729 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" 2730 | }, 2731 | "dist": { 2732 | "type": "zip", 2733 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", 2734 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", 2735 | "shasum": "" 2736 | }, 2737 | "require": { 2738 | "php": "^5.3.3 || ^7.0" 2739 | }, 2740 | "require-dev": { 2741 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 2742 | }, 2743 | "type": "library", 2744 | "extra": { 2745 | "branch-alias": { 2746 | "dev-master": "1.4-dev" 2747 | } 2748 | }, 2749 | "autoload": { 2750 | "classmap": [ 2751 | "src/" 2752 | ] 2753 | }, 2754 | "notification-url": "https://packagist.org/downloads/", 2755 | "license": [ 2756 | "BSD-3-Clause" 2757 | ], 2758 | "authors": [ 2759 | { 2760 | "name": "Kore Nordmann", 2761 | "email": "mail@kore-nordmann.de" 2762 | }, 2763 | { 2764 | "name": "Sebastian Bergmann", 2765 | "email": "sebastian@phpunit.de" 2766 | } 2767 | ], 2768 | "description": "Diff implementation", 2769 | "homepage": "https://github.com/sebastianbergmann/diff", 2770 | "keywords": [ 2771 | "diff" 2772 | ], 2773 | "time": "2017-05-22T07:24:03+00:00" 2774 | }, 2775 | { 2776 | "name": "sebastian/environment", 2777 | "version": "3.1.0", 2778 | "source": { 2779 | "type": "git", 2780 | "url": "https://github.com/sebastianbergmann/environment.git", 2781 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" 2782 | }, 2783 | "dist": { 2784 | "type": "zip", 2785 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 2786 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 2787 | "shasum": "" 2788 | }, 2789 | "require": { 2790 | "php": "^7.0" 2791 | }, 2792 | "require-dev": { 2793 | "phpunit/phpunit": "^6.1" 2794 | }, 2795 | "type": "library", 2796 | "extra": { 2797 | "branch-alias": { 2798 | "dev-master": "3.1.x-dev" 2799 | } 2800 | }, 2801 | "autoload": { 2802 | "classmap": [ 2803 | "src/" 2804 | ] 2805 | }, 2806 | "notification-url": "https://packagist.org/downloads/", 2807 | "license": [ 2808 | "BSD-3-Clause" 2809 | ], 2810 | "authors": [ 2811 | { 2812 | "name": "Sebastian Bergmann", 2813 | "email": "sebastian@phpunit.de" 2814 | } 2815 | ], 2816 | "description": "Provides functionality to handle HHVM/PHP environments", 2817 | "homepage": "http://www.github.com/sebastianbergmann/environment", 2818 | "keywords": [ 2819 | "Xdebug", 2820 | "environment", 2821 | "hhvm" 2822 | ], 2823 | "time": "2017-07-01T08:51:00+00:00" 2824 | }, 2825 | { 2826 | "name": "sebastian/exporter", 2827 | "version": "3.1.0", 2828 | "source": { 2829 | "type": "git", 2830 | "url": "https://github.com/sebastianbergmann/exporter.git", 2831 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" 2832 | }, 2833 | "dist": { 2834 | "type": "zip", 2835 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", 2836 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", 2837 | "shasum": "" 2838 | }, 2839 | "require": { 2840 | "php": "^7.0", 2841 | "sebastian/recursion-context": "^3.0" 2842 | }, 2843 | "require-dev": { 2844 | "ext-mbstring": "*", 2845 | "phpunit/phpunit": "^6.0" 2846 | }, 2847 | "type": "library", 2848 | "extra": { 2849 | "branch-alias": { 2850 | "dev-master": "3.1.x-dev" 2851 | } 2852 | }, 2853 | "autoload": { 2854 | "classmap": [ 2855 | "src/" 2856 | ] 2857 | }, 2858 | "notification-url": "https://packagist.org/downloads/", 2859 | "license": [ 2860 | "BSD-3-Clause" 2861 | ], 2862 | "authors": [ 2863 | { 2864 | "name": "Jeff Welch", 2865 | "email": "whatthejeff@gmail.com" 2866 | }, 2867 | { 2868 | "name": "Volker Dusch", 2869 | "email": "github@wallbash.com" 2870 | }, 2871 | { 2872 | "name": "Bernhard Schussek", 2873 | "email": "bschussek@2bepublished.at" 2874 | }, 2875 | { 2876 | "name": "Sebastian Bergmann", 2877 | "email": "sebastian@phpunit.de" 2878 | }, 2879 | { 2880 | "name": "Adam Harvey", 2881 | "email": "aharvey@php.net" 2882 | } 2883 | ], 2884 | "description": "Provides the functionality to export PHP variables for visualization", 2885 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 2886 | "keywords": [ 2887 | "export", 2888 | "exporter" 2889 | ], 2890 | "time": "2017-04-03T13:19:02+00:00" 2891 | }, 2892 | { 2893 | "name": "sebastian/global-state", 2894 | "version": "2.0.0", 2895 | "source": { 2896 | "type": "git", 2897 | "url": "https://github.com/sebastianbergmann/global-state.git", 2898 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" 2899 | }, 2900 | "dist": { 2901 | "type": "zip", 2902 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 2903 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 2904 | "shasum": "" 2905 | }, 2906 | "require": { 2907 | "php": "^7.0" 2908 | }, 2909 | "require-dev": { 2910 | "phpunit/phpunit": "^6.0" 2911 | }, 2912 | "suggest": { 2913 | "ext-uopz": "*" 2914 | }, 2915 | "type": "library", 2916 | "extra": { 2917 | "branch-alias": { 2918 | "dev-master": "2.0-dev" 2919 | } 2920 | }, 2921 | "autoload": { 2922 | "classmap": [ 2923 | "src/" 2924 | ] 2925 | }, 2926 | "notification-url": "https://packagist.org/downloads/", 2927 | "license": [ 2928 | "BSD-3-Clause" 2929 | ], 2930 | "authors": [ 2931 | { 2932 | "name": "Sebastian Bergmann", 2933 | "email": "sebastian@phpunit.de" 2934 | } 2935 | ], 2936 | "description": "Snapshotting of global state", 2937 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2938 | "keywords": [ 2939 | "global state" 2940 | ], 2941 | "time": "2017-04-27T15:39:26+00:00" 2942 | }, 2943 | { 2944 | "name": "sebastian/object-enumerator", 2945 | "version": "3.0.3", 2946 | "source": { 2947 | "type": "git", 2948 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2949 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 2950 | }, 2951 | "dist": { 2952 | "type": "zip", 2953 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 2954 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 2955 | "shasum": "" 2956 | }, 2957 | "require": { 2958 | "php": "^7.0", 2959 | "sebastian/object-reflector": "^1.1.1", 2960 | "sebastian/recursion-context": "^3.0" 2961 | }, 2962 | "require-dev": { 2963 | "phpunit/phpunit": "^6.0" 2964 | }, 2965 | "type": "library", 2966 | "extra": { 2967 | "branch-alias": { 2968 | "dev-master": "3.0.x-dev" 2969 | } 2970 | }, 2971 | "autoload": { 2972 | "classmap": [ 2973 | "src/" 2974 | ] 2975 | }, 2976 | "notification-url": "https://packagist.org/downloads/", 2977 | "license": [ 2978 | "BSD-3-Clause" 2979 | ], 2980 | "authors": [ 2981 | { 2982 | "name": "Sebastian Bergmann", 2983 | "email": "sebastian@phpunit.de" 2984 | } 2985 | ], 2986 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2987 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2988 | "time": "2017-08-03T12:35:26+00:00" 2989 | }, 2990 | { 2991 | "name": "sebastian/object-reflector", 2992 | "version": "1.1.1", 2993 | "source": { 2994 | "type": "git", 2995 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2996 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 2997 | }, 2998 | "dist": { 2999 | "type": "zip", 3000 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 3001 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 3002 | "shasum": "" 3003 | }, 3004 | "require": { 3005 | "php": "^7.0" 3006 | }, 3007 | "require-dev": { 3008 | "phpunit/phpunit": "^6.0" 3009 | }, 3010 | "type": "library", 3011 | "extra": { 3012 | "branch-alias": { 3013 | "dev-master": "1.1-dev" 3014 | } 3015 | }, 3016 | "autoload": { 3017 | "classmap": [ 3018 | "src/" 3019 | ] 3020 | }, 3021 | "notification-url": "https://packagist.org/downloads/", 3022 | "license": [ 3023 | "BSD-3-Clause" 3024 | ], 3025 | "authors": [ 3026 | { 3027 | "name": "Sebastian Bergmann", 3028 | "email": "sebastian@phpunit.de" 3029 | } 3030 | ], 3031 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 3032 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 3033 | "time": "2017-03-29T09:07:27+00:00" 3034 | }, 3035 | { 3036 | "name": "sebastian/recursion-context", 3037 | "version": "3.0.0", 3038 | "source": { 3039 | "type": "git", 3040 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 3041 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 3042 | }, 3043 | "dist": { 3044 | "type": "zip", 3045 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 3046 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 3047 | "shasum": "" 3048 | }, 3049 | "require": { 3050 | "php": "^7.0" 3051 | }, 3052 | "require-dev": { 3053 | "phpunit/phpunit": "^6.0" 3054 | }, 3055 | "type": "library", 3056 | "extra": { 3057 | "branch-alias": { 3058 | "dev-master": "3.0.x-dev" 3059 | } 3060 | }, 3061 | "autoload": { 3062 | "classmap": [ 3063 | "src/" 3064 | ] 3065 | }, 3066 | "notification-url": "https://packagist.org/downloads/", 3067 | "license": [ 3068 | "BSD-3-Clause" 3069 | ], 3070 | "authors": [ 3071 | { 3072 | "name": "Jeff Welch", 3073 | "email": "whatthejeff@gmail.com" 3074 | }, 3075 | { 3076 | "name": "Sebastian Bergmann", 3077 | "email": "sebastian@phpunit.de" 3078 | }, 3079 | { 3080 | "name": "Adam Harvey", 3081 | "email": "aharvey@php.net" 3082 | } 3083 | ], 3084 | "description": "Provides functionality to recursively process PHP variables", 3085 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 3086 | "time": "2017-03-03T06:23:57+00:00" 3087 | }, 3088 | { 3089 | "name": "sebastian/resource-operations", 3090 | "version": "1.0.0", 3091 | "source": { 3092 | "type": "git", 3093 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 3094 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" 3095 | }, 3096 | "dist": { 3097 | "type": "zip", 3098 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 3099 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 3100 | "shasum": "" 3101 | }, 3102 | "require": { 3103 | "php": ">=5.6.0" 3104 | }, 3105 | "type": "library", 3106 | "extra": { 3107 | "branch-alias": { 3108 | "dev-master": "1.0.x-dev" 3109 | } 3110 | }, 3111 | "autoload": { 3112 | "classmap": [ 3113 | "src/" 3114 | ] 3115 | }, 3116 | "notification-url": "https://packagist.org/downloads/", 3117 | "license": [ 3118 | "BSD-3-Clause" 3119 | ], 3120 | "authors": [ 3121 | { 3122 | "name": "Sebastian Bergmann", 3123 | "email": "sebastian@phpunit.de" 3124 | } 3125 | ], 3126 | "description": "Provides a list of PHP built-in functions that operate on resources", 3127 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 3128 | "time": "2015-07-28T20:34:47+00:00" 3129 | }, 3130 | { 3131 | "name": "sebastian/version", 3132 | "version": "2.0.1", 3133 | "source": { 3134 | "type": "git", 3135 | "url": "https://github.com/sebastianbergmann/version.git", 3136 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 3137 | }, 3138 | "dist": { 3139 | "type": "zip", 3140 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 3141 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 3142 | "shasum": "" 3143 | }, 3144 | "require": { 3145 | "php": ">=5.6" 3146 | }, 3147 | "type": "library", 3148 | "extra": { 3149 | "branch-alias": { 3150 | "dev-master": "2.0.x-dev" 3151 | } 3152 | }, 3153 | "autoload": { 3154 | "classmap": [ 3155 | "src/" 3156 | ] 3157 | }, 3158 | "notification-url": "https://packagist.org/downloads/", 3159 | "license": [ 3160 | "BSD-3-Clause" 3161 | ], 3162 | "authors": [ 3163 | { 3164 | "name": "Sebastian Bergmann", 3165 | "email": "sebastian@phpunit.de", 3166 | "role": "lead" 3167 | } 3168 | ], 3169 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 3170 | "homepage": "https://github.com/sebastianbergmann/version", 3171 | "time": "2016-10-03T07:35:21+00:00" 3172 | }, 3173 | { 3174 | "name": "seld/cli-prompt", 3175 | "version": "1.0.3", 3176 | "source": { 3177 | "type": "git", 3178 | "url": "https://github.com/Seldaek/cli-prompt.git", 3179 | "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" 3180 | }, 3181 | "dist": { 3182 | "type": "zip", 3183 | "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", 3184 | "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", 3185 | "shasum": "" 3186 | }, 3187 | "require": { 3188 | "php": ">=5.3" 3189 | }, 3190 | "type": "library", 3191 | "extra": { 3192 | "branch-alias": { 3193 | "dev-master": "1.x-dev" 3194 | } 3195 | }, 3196 | "autoload": { 3197 | "psr-4": { 3198 | "Seld\\CliPrompt\\": "src/" 3199 | } 3200 | }, 3201 | "notification-url": "https://packagist.org/downloads/", 3202 | "license": [ 3203 | "MIT" 3204 | ], 3205 | "authors": [ 3206 | { 3207 | "name": "Jordi Boggiano", 3208 | "email": "j.boggiano@seld.be" 3209 | } 3210 | ], 3211 | "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", 3212 | "keywords": [ 3213 | "cli", 3214 | "console", 3215 | "hidden", 3216 | "input", 3217 | "prompt" 3218 | ], 3219 | "time": "2017-03-18T11:32:45+00:00" 3220 | }, 3221 | { 3222 | "name": "seld/jsonlint", 3223 | "version": "1.7.1", 3224 | "source": { 3225 | "type": "git", 3226 | "url": "https://github.com/Seldaek/jsonlint.git", 3227 | "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38" 3228 | }, 3229 | "dist": { 3230 | "type": "zip", 3231 | "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38", 3232 | "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38", 3233 | "shasum": "" 3234 | }, 3235 | "require": { 3236 | "php": "^5.3 || ^7.0" 3237 | }, 3238 | "require-dev": { 3239 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 3240 | }, 3241 | "bin": [ 3242 | "bin/jsonlint" 3243 | ], 3244 | "type": "library", 3245 | "autoload": { 3246 | "psr-4": { 3247 | "Seld\\JsonLint\\": "src/Seld/JsonLint/" 3248 | } 3249 | }, 3250 | "notification-url": "https://packagist.org/downloads/", 3251 | "license": [ 3252 | "MIT" 3253 | ], 3254 | "authors": [ 3255 | { 3256 | "name": "Jordi Boggiano", 3257 | "email": "j.boggiano@seld.be", 3258 | "homepage": "http://seld.be" 3259 | } 3260 | ], 3261 | "description": "JSON Linter", 3262 | "keywords": [ 3263 | "json", 3264 | "linter", 3265 | "parser", 3266 | "validator" 3267 | ], 3268 | "time": "2018-01-24T12:46:19+00:00" 3269 | }, 3270 | { 3271 | "name": "seld/phar-utils", 3272 | "version": "1.0.1", 3273 | "source": { 3274 | "type": "git", 3275 | "url": "https://github.com/Seldaek/phar-utils.git", 3276 | "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" 3277 | }, 3278 | "dist": { 3279 | "type": "zip", 3280 | "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", 3281 | "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", 3282 | "shasum": "" 3283 | }, 3284 | "require": { 3285 | "php": ">=5.3" 3286 | }, 3287 | "type": "library", 3288 | "extra": { 3289 | "branch-alias": { 3290 | "dev-master": "1.x-dev" 3291 | } 3292 | }, 3293 | "autoload": { 3294 | "psr-4": { 3295 | "Seld\\PharUtils\\": "src/" 3296 | } 3297 | }, 3298 | "notification-url": "https://packagist.org/downloads/", 3299 | "license": [ 3300 | "MIT" 3301 | ], 3302 | "authors": [ 3303 | { 3304 | "name": "Jordi Boggiano", 3305 | "email": "j.boggiano@seld.be" 3306 | } 3307 | ], 3308 | "description": "PHAR file format utilities, for when PHP phars you up", 3309 | "keywords": [ 3310 | "phra" 3311 | ], 3312 | "time": "2015-10-13T18:44:15+00:00" 3313 | }, 3314 | { 3315 | "name": "stecman/symfony-console-completion", 3316 | "version": "0.7.0", 3317 | "source": { 3318 | "type": "git", 3319 | "url": "https://github.com/stecman/symfony-console-completion.git", 3320 | "reference": "5461d43e53092b3d3b9dbd9d999f2054730f4bbb" 3321 | }, 3322 | "dist": { 3323 | "type": "zip", 3324 | "url": "https://api.github.com/repos/stecman/symfony-console-completion/zipball/5461d43e53092b3d3b9dbd9d999f2054730f4bbb", 3325 | "reference": "5461d43e53092b3d3b9dbd9d999f2054730f4bbb", 3326 | "shasum": "" 3327 | }, 3328 | "require": { 3329 | "php": ">=5.3.2", 3330 | "symfony/console": "~2.3 || ~3.0" 3331 | }, 3332 | "require-dev": { 3333 | "phpunit/phpunit": "~4.4" 3334 | }, 3335 | "type": "library", 3336 | "extra": { 3337 | "branch-alias": { 3338 | "dev-master": "0.6.x-dev" 3339 | } 3340 | }, 3341 | "autoload": { 3342 | "psr-4": { 3343 | "Stecman\\Component\\Symfony\\Console\\BashCompletion\\": "src/" 3344 | } 3345 | }, 3346 | "notification-url": "https://packagist.org/downloads/", 3347 | "license": [ 3348 | "MIT" 3349 | ], 3350 | "authors": [ 3351 | { 3352 | "name": "Stephen Holdaway", 3353 | "email": "stephen@stecman.co.nz" 3354 | } 3355 | ], 3356 | "description": "Automatic BASH completion for Symfony Console Component based applications.", 3357 | "time": "2016-02-24T05:08:54+00:00" 3358 | }, 3359 | { 3360 | "name": "swiftmailer/swiftmailer", 3361 | "version": "v6.0.2", 3362 | "source": { 3363 | "type": "git", 3364 | "url": "https://github.com/swiftmailer/swiftmailer.git", 3365 | "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc" 3366 | }, 3367 | "dist": { 3368 | "type": "zip", 3369 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/412333372fb6c8ffb65496a2bbd7321af75733fc", 3370 | "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc", 3371 | "shasum": "" 3372 | }, 3373 | "require": { 3374 | "egulias/email-validator": "~2.0", 3375 | "php": ">=7.0.0" 3376 | }, 3377 | "require-dev": { 3378 | "mockery/mockery": "~0.9.1", 3379 | "symfony/phpunit-bridge": "~3.3@dev" 3380 | }, 3381 | "type": "library", 3382 | "extra": { 3383 | "branch-alias": { 3384 | "dev-master": "6.0-dev" 3385 | } 3386 | }, 3387 | "autoload": { 3388 | "files": [ 3389 | "lib/swift_required.php" 3390 | ] 3391 | }, 3392 | "notification-url": "https://packagist.org/downloads/", 3393 | "license": [ 3394 | "MIT" 3395 | ], 3396 | "authors": [ 3397 | { 3398 | "name": "Chris Corbyn" 3399 | }, 3400 | { 3401 | "name": "Fabien Potencier", 3402 | "email": "fabien@symfony.com" 3403 | } 3404 | ], 3405 | "description": "Swiftmailer, free feature-rich PHP mailer", 3406 | "homepage": "http://swiftmailer.symfony.com", 3407 | "keywords": [ 3408 | "email", 3409 | "mail", 3410 | "mailer" 3411 | ], 3412 | "time": "2017-09-30T22:39:41+00:00" 3413 | }, 3414 | { 3415 | "name": "symfony/browser-kit", 3416 | "version": "v3.4.6", 3417 | "source": { 3418 | "type": "git", 3419 | "url": "https://github.com/symfony/browser-kit.git", 3420 | "reference": "490f27762705c8489bd042fe3e9377a191dba9b4" 3421 | }, 3422 | "dist": { 3423 | "type": "zip", 3424 | "url": "https://api.github.com/repos/symfony/browser-kit/zipball/490f27762705c8489bd042fe3e9377a191dba9b4", 3425 | "reference": "490f27762705c8489bd042fe3e9377a191dba9b4", 3426 | "shasum": "" 3427 | }, 3428 | "require": { 3429 | "php": "^5.5.9|>=7.0.8", 3430 | "symfony/dom-crawler": "~2.8|~3.0|~4.0" 3431 | }, 3432 | "require-dev": { 3433 | "symfony/css-selector": "~2.8|~3.0|~4.0", 3434 | "symfony/process": "~2.8|~3.0|~4.0" 3435 | }, 3436 | "suggest": { 3437 | "symfony/process": "" 3438 | }, 3439 | "type": "library", 3440 | "extra": { 3441 | "branch-alias": { 3442 | "dev-master": "3.4-dev" 3443 | } 3444 | }, 3445 | "autoload": { 3446 | "psr-4": { 3447 | "Symfony\\Component\\BrowserKit\\": "" 3448 | }, 3449 | "exclude-from-classmap": [ 3450 | "/Tests/" 3451 | ] 3452 | }, 3453 | "notification-url": "https://packagist.org/downloads/", 3454 | "license": [ 3455 | "MIT" 3456 | ], 3457 | "authors": [ 3458 | { 3459 | "name": "Fabien Potencier", 3460 | "email": "fabien@symfony.com" 3461 | }, 3462 | { 3463 | "name": "Symfony Community", 3464 | "homepage": "https://symfony.com/contributors" 3465 | } 3466 | ], 3467 | "description": "Symfony BrowserKit Component", 3468 | "homepage": "https://symfony.com", 3469 | "time": "2018-01-03T07:37:34+00:00" 3470 | }, 3471 | { 3472 | "name": "symfony/console", 3473 | "version": "v3.4.6", 3474 | "source": { 3475 | "type": "git", 3476 | "url": "https://github.com/symfony/console.git", 3477 | "reference": "067339e9b8ec30d5f19f5950208893ff026b94f7" 3478 | }, 3479 | "dist": { 3480 | "type": "zip", 3481 | "url": "https://api.github.com/repos/symfony/console/zipball/067339e9b8ec30d5f19f5950208893ff026b94f7", 3482 | "reference": "067339e9b8ec30d5f19f5950208893ff026b94f7", 3483 | "shasum": "" 3484 | }, 3485 | "require": { 3486 | "php": "^5.5.9|>=7.0.8", 3487 | "symfony/debug": "~2.8|~3.0|~4.0", 3488 | "symfony/polyfill-mbstring": "~1.0" 3489 | }, 3490 | "conflict": { 3491 | "symfony/dependency-injection": "<3.4", 3492 | "symfony/process": "<3.3" 3493 | }, 3494 | "require-dev": { 3495 | "psr/log": "~1.0", 3496 | "symfony/config": "~3.3|~4.0", 3497 | "symfony/dependency-injection": "~3.4|~4.0", 3498 | "symfony/event-dispatcher": "~2.8|~3.0|~4.0", 3499 | "symfony/lock": "~3.4|~4.0", 3500 | "symfony/process": "~3.3|~4.0" 3501 | }, 3502 | "suggest": { 3503 | "psr/log": "For using the console logger", 3504 | "symfony/event-dispatcher": "", 3505 | "symfony/lock": "", 3506 | "symfony/process": "" 3507 | }, 3508 | "type": "library", 3509 | "extra": { 3510 | "branch-alias": { 3511 | "dev-master": "3.4-dev" 3512 | } 3513 | }, 3514 | "autoload": { 3515 | "psr-4": { 3516 | "Symfony\\Component\\Console\\": "" 3517 | }, 3518 | "exclude-from-classmap": [ 3519 | "/Tests/" 3520 | ] 3521 | }, 3522 | "notification-url": "https://packagist.org/downloads/", 3523 | "license": [ 3524 | "MIT" 3525 | ], 3526 | "authors": [ 3527 | { 3528 | "name": "Fabien Potencier", 3529 | "email": "fabien@symfony.com" 3530 | }, 3531 | { 3532 | "name": "Symfony Community", 3533 | "homepage": "https://symfony.com/contributors" 3534 | } 3535 | ], 3536 | "description": "Symfony Console Component", 3537 | "homepage": "https://symfony.com", 3538 | "time": "2018-02-26T15:46:28+00:00" 3539 | }, 3540 | { 3541 | "name": "symfony/css-selector", 3542 | "version": "v3.4.6", 3543 | "source": { 3544 | "type": "git", 3545 | "url": "https://github.com/symfony/css-selector.git", 3546 | "reference": "544655f1fc078a9cd839fdda2b7b1e64627c826a" 3547 | }, 3548 | "dist": { 3549 | "type": "zip", 3550 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/544655f1fc078a9cd839fdda2b7b1e64627c826a", 3551 | "reference": "544655f1fc078a9cd839fdda2b7b1e64627c826a", 3552 | "shasum": "" 3553 | }, 3554 | "require": { 3555 | "php": "^5.5.9|>=7.0.8" 3556 | }, 3557 | "type": "library", 3558 | "extra": { 3559 | "branch-alias": { 3560 | "dev-master": "3.4-dev" 3561 | } 3562 | }, 3563 | "autoload": { 3564 | "psr-4": { 3565 | "Symfony\\Component\\CssSelector\\": "" 3566 | }, 3567 | "exclude-from-classmap": [ 3568 | "/Tests/" 3569 | ] 3570 | }, 3571 | "notification-url": "https://packagist.org/downloads/", 3572 | "license": [ 3573 | "MIT" 3574 | ], 3575 | "authors": [ 3576 | { 3577 | "name": "Jean-François Simon", 3578 | "email": "jeanfrancois.simon@sensiolabs.com" 3579 | }, 3580 | { 3581 | "name": "Fabien Potencier", 3582 | "email": "fabien@symfony.com" 3583 | }, 3584 | { 3585 | "name": "Symfony Community", 3586 | "homepage": "https://symfony.com/contributors" 3587 | } 3588 | ], 3589 | "description": "Symfony CssSelector Component", 3590 | "homepage": "https://symfony.com", 3591 | "time": "2018-02-03T14:55:07+00:00" 3592 | }, 3593 | { 3594 | "name": "symfony/debug", 3595 | "version": "v4.0.6", 3596 | "source": { 3597 | "type": "git", 3598 | "url": "https://github.com/symfony/debug.git", 3599 | "reference": "1721e4e7effb23480966690cdcdc7d2a4152d489" 3600 | }, 3601 | "dist": { 3602 | "type": "zip", 3603 | "url": "https://api.github.com/repos/symfony/debug/zipball/1721e4e7effb23480966690cdcdc7d2a4152d489", 3604 | "reference": "1721e4e7effb23480966690cdcdc7d2a4152d489", 3605 | "shasum": "" 3606 | }, 3607 | "require": { 3608 | "php": "^7.1.3", 3609 | "psr/log": "~1.0" 3610 | }, 3611 | "conflict": { 3612 | "symfony/http-kernel": "<3.4" 3613 | }, 3614 | "require-dev": { 3615 | "symfony/http-kernel": "~3.4|~4.0" 3616 | }, 3617 | "type": "library", 3618 | "extra": { 3619 | "branch-alias": { 3620 | "dev-master": "4.0-dev" 3621 | } 3622 | }, 3623 | "autoload": { 3624 | "psr-4": { 3625 | "Symfony\\Component\\Debug\\": "" 3626 | }, 3627 | "exclude-from-classmap": [ 3628 | "/Tests/" 3629 | ] 3630 | }, 3631 | "notification-url": "https://packagist.org/downloads/", 3632 | "license": [ 3633 | "MIT" 3634 | ], 3635 | "authors": [ 3636 | { 3637 | "name": "Fabien Potencier", 3638 | "email": "fabien@symfony.com" 3639 | }, 3640 | { 3641 | "name": "Symfony Community", 3642 | "homepage": "https://symfony.com/contributors" 3643 | } 3644 | ], 3645 | "description": "Symfony Debug Component", 3646 | "homepage": "https://symfony.com", 3647 | "time": "2018-02-28T21:50:02+00:00" 3648 | }, 3649 | { 3650 | "name": "symfony/dom-crawler", 3651 | "version": "v3.4.6", 3652 | "source": { 3653 | "type": "git", 3654 | "url": "https://github.com/symfony/dom-crawler.git", 3655 | "reference": "2bb5d3101cc01f4fe580e536daf4f1959bc2d24d" 3656 | }, 3657 | "dist": { 3658 | "type": "zip", 3659 | "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2bb5d3101cc01f4fe580e536daf4f1959bc2d24d", 3660 | "reference": "2bb5d3101cc01f4fe580e536daf4f1959bc2d24d", 3661 | "shasum": "" 3662 | }, 3663 | "require": { 3664 | "php": "^5.5.9|>=7.0.8", 3665 | "symfony/polyfill-mbstring": "~1.0" 3666 | }, 3667 | "require-dev": { 3668 | "symfony/css-selector": "~2.8|~3.0|~4.0" 3669 | }, 3670 | "suggest": { 3671 | "symfony/css-selector": "" 3672 | }, 3673 | "type": "library", 3674 | "extra": { 3675 | "branch-alias": { 3676 | "dev-master": "3.4-dev" 3677 | } 3678 | }, 3679 | "autoload": { 3680 | "psr-4": { 3681 | "Symfony\\Component\\DomCrawler\\": "" 3682 | }, 3683 | "exclude-from-classmap": [ 3684 | "/Tests/" 3685 | ] 3686 | }, 3687 | "notification-url": "https://packagist.org/downloads/", 3688 | "license": [ 3689 | "MIT" 3690 | ], 3691 | "authors": [ 3692 | { 3693 | "name": "Fabien Potencier", 3694 | "email": "fabien@symfony.com" 3695 | }, 3696 | { 3697 | "name": "Symfony Community", 3698 | "homepage": "https://symfony.com/contributors" 3699 | } 3700 | ], 3701 | "description": "Symfony DomCrawler Component", 3702 | "homepage": "https://symfony.com", 3703 | "time": "2018-02-22T10:48:49+00:00" 3704 | }, 3705 | { 3706 | "name": "symfony/event-dispatcher", 3707 | "version": "v3.4.6", 3708 | "source": { 3709 | "type": "git", 3710 | "url": "https://github.com/symfony/event-dispatcher.git", 3711 | "reference": "58990682ac3fdc1f563b7e705452921372aad11d" 3712 | }, 3713 | "dist": { 3714 | "type": "zip", 3715 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/58990682ac3fdc1f563b7e705452921372aad11d", 3716 | "reference": "58990682ac3fdc1f563b7e705452921372aad11d", 3717 | "shasum": "" 3718 | }, 3719 | "require": { 3720 | "php": "^5.5.9|>=7.0.8" 3721 | }, 3722 | "conflict": { 3723 | "symfony/dependency-injection": "<3.3" 3724 | }, 3725 | "require-dev": { 3726 | "psr/log": "~1.0", 3727 | "symfony/config": "~2.8|~3.0|~4.0", 3728 | "symfony/dependency-injection": "~3.3|~4.0", 3729 | "symfony/expression-language": "~2.8|~3.0|~4.0", 3730 | "symfony/stopwatch": "~2.8|~3.0|~4.0" 3731 | }, 3732 | "suggest": { 3733 | "symfony/dependency-injection": "", 3734 | "symfony/http-kernel": "" 3735 | }, 3736 | "type": "library", 3737 | "extra": { 3738 | "branch-alias": { 3739 | "dev-master": "3.4-dev" 3740 | } 3741 | }, 3742 | "autoload": { 3743 | "psr-4": { 3744 | "Symfony\\Component\\EventDispatcher\\": "" 3745 | }, 3746 | "exclude-from-classmap": [ 3747 | "/Tests/" 3748 | ] 3749 | }, 3750 | "notification-url": "https://packagist.org/downloads/", 3751 | "license": [ 3752 | "MIT" 3753 | ], 3754 | "authors": [ 3755 | { 3756 | "name": "Fabien Potencier", 3757 | "email": "fabien@symfony.com" 3758 | }, 3759 | { 3760 | "name": "Symfony Community", 3761 | "homepage": "https://symfony.com/contributors" 3762 | } 3763 | ], 3764 | "description": "Symfony EventDispatcher Component", 3765 | "homepage": "https://symfony.com", 3766 | "time": "2018-02-14T10:03:57+00:00" 3767 | }, 3768 | { 3769 | "name": "symfony/filesystem", 3770 | "version": "v3.4.6", 3771 | "source": { 3772 | "type": "git", 3773 | "url": "https://github.com/symfony/filesystem.git", 3774 | "reference": "253a4490b528597aa14d2bf5aeded6f5e5e4a541" 3775 | }, 3776 | "dist": { 3777 | "type": "zip", 3778 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/253a4490b528597aa14d2bf5aeded6f5e5e4a541", 3779 | "reference": "253a4490b528597aa14d2bf5aeded6f5e5e4a541", 3780 | "shasum": "" 3781 | }, 3782 | "require": { 3783 | "php": "^5.5.9|>=7.0.8" 3784 | }, 3785 | "type": "library", 3786 | "extra": { 3787 | "branch-alias": { 3788 | "dev-master": "3.4-dev" 3789 | } 3790 | }, 3791 | "autoload": { 3792 | "psr-4": { 3793 | "Symfony\\Component\\Filesystem\\": "" 3794 | }, 3795 | "exclude-from-classmap": [ 3796 | "/Tests/" 3797 | ] 3798 | }, 3799 | "notification-url": "https://packagist.org/downloads/", 3800 | "license": [ 3801 | "MIT" 3802 | ], 3803 | "authors": [ 3804 | { 3805 | "name": "Fabien Potencier", 3806 | "email": "fabien@symfony.com" 3807 | }, 3808 | { 3809 | "name": "Symfony Community", 3810 | "homepage": "https://symfony.com/contributors" 3811 | } 3812 | ], 3813 | "description": "Symfony Filesystem Component", 3814 | "homepage": "https://symfony.com", 3815 | "time": "2018-02-22T10:48:49+00:00" 3816 | }, 3817 | { 3818 | "name": "symfony/finder", 3819 | "version": "v3.4.6", 3820 | "source": { 3821 | "type": "git", 3822 | "url": "https://github.com/symfony/finder.git", 3823 | "reference": "a479817ce0a9e4adfd7d39c6407c95d97c254625" 3824 | }, 3825 | "dist": { 3826 | "type": "zip", 3827 | "url": "https://api.github.com/repos/symfony/finder/zipball/a479817ce0a9e4adfd7d39c6407c95d97c254625", 3828 | "reference": "a479817ce0a9e4adfd7d39c6407c95d97c254625", 3829 | "shasum": "" 3830 | }, 3831 | "require": { 3832 | "php": "^5.5.9|>=7.0.8" 3833 | }, 3834 | "type": "library", 3835 | "extra": { 3836 | "branch-alias": { 3837 | "dev-master": "3.4-dev" 3838 | } 3839 | }, 3840 | "autoload": { 3841 | "psr-4": { 3842 | "Symfony\\Component\\Finder\\": "" 3843 | }, 3844 | "exclude-from-classmap": [ 3845 | "/Tests/" 3846 | ] 3847 | }, 3848 | "notification-url": "https://packagist.org/downloads/", 3849 | "license": [ 3850 | "MIT" 3851 | ], 3852 | "authors": [ 3853 | { 3854 | "name": "Fabien Potencier", 3855 | "email": "fabien@symfony.com" 3856 | }, 3857 | { 3858 | "name": "Symfony Community", 3859 | "homepage": "https://symfony.com/contributors" 3860 | } 3861 | ], 3862 | "description": "Symfony Finder Component", 3863 | "homepage": "https://symfony.com", 3864 | "time": "2018-03-05T18:28:11+00:00" 3865 | }, 3866 | { 3867 | "name": "symfony/polyfill-mbstring", 3868 | "version": "v1.7.0", 3869 | "source": { 3870 | "type": "git", 3871 | "url": "https://github.com/symfony/polyfill-mbstring.git", 3872 | "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" 3873 | }, 3874 | "dist": { 3875 | "type": "zip", 3876 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", 3877 | "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", 3878 | "shasum": "" 3879 | }, 3880 | "require": { 3881 | "php": ">=5.3.3" 3882 | }, 3883 | "suggest": { 3884 | "ext-mbstring": "For best performance" 3885 | }, 3886 | "type": "library", 3887 | "extra": { 3888 | "branch-alias": { 3889 | "dev-master": "1.7-dev" 3890 | } 3891 | }, 3892 | "autoload": { 3893 | "psr-4": { 3894 | "Symfony\\Polyfill\\Mbstring\\": "" 3895 | }, 3896 | "files": [ 3897 | "bootstrap.php" 3898 | ] 3899 | }, 3900 | "notification-url": "https://packagist.org/downloads/", 3901 | "license": [ 3902 | "MIT" 3903 | ], 3904 | "authors": [ 3905 | { 3906 | "name": "Nicolas Grekas", 3907 | "email": "p@tchwork.com" 3908 | }, 3909 | { 3910 | "name": "Symfony Community", 3911 | "homepage": "https://symfony.com/contributors" 3912 | } 3913 | ], 3914 | "description": "Symfony polyfill for the Mbstring extension", 3915 | "homepage": "https://symfony.com", 3916 | "keywords": [ 3917 | "compatibility", 3918 | "mbstring", 3919 | "polyfill", 3920 | "portable", 3921 | "shim" 3922 | ], 3923 | "time": "2018-01-30T19:27:44+00:00" 3924 | }, 3925 | { 3926 | "name": "symfony/process", 3927 | "version": "v3.4.6", 3928 | "source": { 3929 | "type": "git", 3930 | "url": "https://github.com/symfony/process.git", 3931 | "reference": "cc4aea21f619116aaf1c58016a944e4821c8e8af" 3932 | }, 3933 | "dist": { 3934 | "type": "zip", 3935 | "url": "https://api.github.com/repos/symfony/process/zipball/cc4aea21f619116aaf1c58016a944e4821c8e8af", 3936 | "reference": "cc4aea21f619116aaf1c58016a944e4821c8e8af", 3937 | "shasum": "" 3938 | }, 3939 | "require": { 3940 | "php": "^5.5.9|>=7.0.8" 3941 | }, 3942 | "type": "library", 3943 | "extra": { 3944 | "branch-alias": { 3945 | "dev-master": "3.4-dev" 3946 | } 3947 | }, 3948 | "autoload": { 3949 | "psr-4": { 3950 | "Symfony\\Component\\Process\\": "" 3951 | }, 3952 | "exclude-from-classmap": [ 3953 | "/Tests/" 3954 | ] 3955 | }, 3956 | "notification-url": "https://packagist.org/downloads/", 3957 | "license": [ 3958 | "MIT" 3959 | ], 3960 | "authors": [ 3961 | { 3962 | "name": "Fabien Potencier", 3963 | "email": "fabien@symfony.com" 3964 | }, 3965 | { 3966 | "name": "Symfony Community", 3967 | "homepage": "https://symfony.com/contributors" 3968 | } 3969 | ], 3970 | "description": "Symfony Process Component", 3971 | "homepage": "https://symfony.com", 3972 | "time": "2018-02-12T17:55:00+00:00" 3973 | }, 3974 | { 3975 | "name": "symfony/yaml", 3976 | "version": "v3.4.6", 3977 | "source": { 3978 | "type": "git", 3979 | "url": "https://github.com/symfony/yaml.git", 3980 | "reference": "6af42631dcf89e9c616242c900d6c52bd53bd1bb" 3981 | }, 3982 | "dist": { 3983 | "type": "zip", 3984 | "url": "https://api.github.com/repos/symfony/yaml/zipball/6af42631dcf89e9c616242c900d6c52bd53bd1bb", 3985 | "reference": "6af42631dcf89e9c616242c900d6c52bd53bd1bb", 3986 | "shasum": "" 3987 | }, 3988 | "require": { 3989 | "php": "^5.5.9|>=7.0.8" 3990 | }, 3991 | "conflict": { 3992 | "symfony/console": "<3.4" 3993 | }, 3994 | "require-dev": { 3995 | "symfony/console": "~3.4|~4.0" 3996 | }, 3997 | "suggest": { 3998 | "symfony/console": "For validating YAML files using the lint command" 3999 | }, 4000 | "type": "library", 4001 | "extra": { 4002 | "branch-alias": { 4003 | "dev-master": "3.4-dev" 4004 | } 4005 | }, 4006 | "autoload": { 4007 | "psr-4": { 4008 | "Symfony\\Component\\Yaml\\": "" 4009 | }, 4010 | "exclude-from-classmap": [ 4011 | "/Tests/" 4012 | ] 4013 | }, 4014 | "notification-url": "https://packagist.org/downloads/", 4015 | "license": [ 4016 | "MIT" 4017 | ], 4018 | "authors": [ 4019 | { 4020 | "name": "Fabien Potencier", 4021 | "email": "fabien@symfony.com" 4022 | }, 4023 | { 4024 | "name": "Symfony Community", 4025 | "homepage": "https://symfony.com/contributors" 4026 | } 4027 | ], 4028 | "description": "Symfony Yaml Component", 4029 | "homepage": "https://symfony.com", 4030 | "time": "2018-02-16T09:50:28+00:00" 4031 | }, 4032 | { 4033 | "name": "theseer/tokenizer", 4034 | "version": "1.1.0", 4035 | "source": { 4036 | "type": "git", 4037 | "url": "https://github.com/theseer/tokenizer.git", 4038 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" 4039 | }, 4040 | "dist": { 4041 | "type": "zip", 4042 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", 4043 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", 4044 | "shasum": "" 4045 | }, 4046 | "require": { 4047 | "ext-dom": "*", 4048 | "ext-tokenizer": "*", 4049 | "ext-xmlwriter": "*", 4050 | "php": "^7.0" 4051 | }, 4052 | "type": "library", 4053 | "autoload": { 4054 | "classmap": [ 4055 | "src/" 4056 | ] 4057 | }, 4058 | "notification-url": "https://packagist.org/downloads/", 4059 | "license": [ 4060 | "BSD-3-Clause" 4061 | ], 4062 | "authors": [ 4063 | { 4064 | "name": "Arne Blankerts", 4065 | "email": "arne@blankerts.de", 4066 | "role": "Developer" 4067 | } 4068 | ], 4069 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 4070 | "time": "2017-04-07T12:08:54+00:00" 4071 | }, 4072 | { 4073 | "name": "twig/twig", 4074 | "version": "v2.4.7", 4075 | "source": { 4076 | "type": "git", 4077 | "url": "https://github.com/twigphp/Twig.git", 4078 | "reference": "69aacd44dbbaa3199d5afb68605c996d577896fc" 4079 | }, 4080 | "dist": { 4081 | "type": "zip", 4082 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/69aacd44dbbaa3199d5afb68605c996d577896fc", 4083 | "reference": "69aacd44dbbaa3199d5afb68605c996d577896fc", 4084 | "shasum": "" 4085 | }, 4086 | "require": { 4087 | "php": "^7.0", 4088 | "symfony/polyfill-mbstring": "~1.0" 4089 | }, 4090 | "require-dev": { 4091 | "psr/container": "^1.0", 4092 | "symfony/debug": "^2.7", 4093 | "symfony/phpunit-bridge": "^3.3" 4094 | }, 4095 | "type": "library", 4096 | "extra": { 4097 | "branch-alias": { 4098 | "dev-master": "2.4-dev" 4099 | } 4100 | }, 4101 | "autoload": { 4102 | "psr-0": { 4103 | "Twig_": "lib/" 4104 | }, 4105 | "psr-4": { 4106 | "Twig\\": "src/" 4107 | } 4108 | }, 4109 | "notification-url": "https://packagist.org/downloads/", 4110 | "license": [ 4111 | "BSD-3-Clause" 4112 | ], 4113 | "authors": [ 4114 | { 4115 | "name": "Fabien Potencier", 4116 | "email": "fabien@symfony.com", 4117 | "homepage": "http://fabien.potencier.org", 4118 | "role": "Lead Developer" 4119 | }, 4120 | { 4121 | "name": "Armin Ronacher", 4122 | "email": "armin.ronacher@active-4.com", 4123 | "role": "Project Founder" 4124 | }, 4125 | { 4126 | "name": "Twig Team", 4127 | "homepage": "http://twig.sensiolabs.org/contributors", 4128 | "role": "Contributors" 4129 | } 4130 | ], 4131 | "description": "Twig, the flexible, fast, and secure template language for PHP", 4132 | "homepage": "http://twig.sensiolabs.org", 4133 | "keywords": [ 4134 | "templating" 4135 | ], 4136 | "time": "2018-03-20T04:31:17+00:00" 4137 | }, 4138 | { 4139 | "name": "webmozart/assert", 4140 | "version": "1.3.0", 4141 | "source": { 4142 | "type": "git", 4143 | "url": "https://github.com/webmozart/assert.git", 4144 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a" 4145 | }, 4146 | "dist": { 4147 | "type": "zip", 4148 | "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", 4149 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a", 4150 | "shasum": "" 4151 | }, 4152 | "require": { 4153 | "php": "^5.3.3 || ^7.0" 4154 | }, 4155 | "require-dev": { 4156 | "phpunit/phpunit": "^4.6", 4157 | "sebastian/version": "^1.0.1" 4158 | }, 4159 | "type": "library", 4160 | "extra": { 4161 | "branch-alias": { 4162 | "dev-master": "1.3-dev" 4163 | } 4164 | }, 4165 | "autoload": { 4166 | "psr-4": { 4167 | "Webmozart\\Assert\\": "src/" 4168 | } 4169 | }, 4170 | "notification-url": "https://packagist.org/downloads/", 4171 | "license": [ 4172 | "MIT" 4173 | ], 4174 | "authors": [ 4175 | { 4176 | "name": "Bernhard Schussek", 4177 | "email": "bschussek@gmail.com" 4178 | } 4179 | ], 4180 | "description": "Assertions to validate method input/output with nice error messages.", 4181 | "keywords": [ 4182 | "assert", 4183 | "check", 4184 | "validate" 4185 | ], 4186 | "time": "2018-01-29T19:49:41+00:00" 4187 | }, 4188 | { 4189 | "name": "yiisoft/yii2", 4190 | "version": "2.0.15.1", 4191 | "source": { 4192 | "type": "git", 4193 | "url": "https://github.com/yiisoft/yii2-framework.git", 4194 | "reference": "ed3a9e1c4abe206e1c3ce48a6b3624119b79850d" 4195 | }, 4196 | "dist": { 4197 | "type": "zip", 4198 | "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/ed3a9e1c4abe206e1c3ce48a6b3624119b79850d", 4199 | "reference": "ed3a9e1c4abe206e1c3ce48a6b3624119b79850d", 4200 | "shasum": "" 4201 | }, 4202 | "require": { 4203 | "bower-asset/inputmask": "~3.2.2 | ~3.3.5", 4204 | "bower-asset/jquery": "3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable", 4205 | "bower-asset/punycode": "1.3.*", 4206 | "bower-asset/yii2-pjax": "~2.0.1", 4207 | "cebe/markdown": "~1.0.0 | ~1.1.0", 4208 | "ext-ctype": "*", 4209 | "ext-mbstring": "*", 4210 | "ezyang/htmlpurifier": "~4.6", 4211 | "lib-pcre": "*", 4212 | "php": ">=5.4.0", 4213 | "yiisoft/yii2-composer": "~2.0.4" 4214 | }, 4215 | "bin": [ 4216 | "yii" 4217 | ], 4218 | "type": "library", 4219 | "extra": { 4220 | "branch-alias": { 4221 | "dev-master": "2.0.x-dev" 4222 | } 4223 | }, 4224 | "autoload": { 4225 | "psr-4": { 4226 | "yii\\": "" 4227 | } 4228 | }, 4229 | "notification-url": "https://packagist.org/downloads/", 4230 | "license": [ 4231 | "BSD-3-Clause" 4232 | ], 4233 | "authors": [ 4234 | { 4235 | "name": "Qiang Xue", 4236 | "email": "qiang.xue@gmail.com", 4237 | "homepage": "http://www.yiiframework.com/", 4238 | "role": "Founder and project lead" 4239 | }, 4240 | { 4241 | "name": "Alexander Makarov", 4242 | "email": "sam@rmcreative.ru", 4243 | "homepage": "http://rmcreative.ru/", 4244 | "role": "Core framework development" 4245 | }, 4246 | { 4247 | "name": "Maurizio Domba", 4248 | "homepage": "http://mdomba.info/", 4249 | "role": "Core framework development" 4250 | }, 4251 | { 4252 | "name": "Carsten Brandt", 4253 | "email": "mail@cebe.cc", 4254 | "homepage": "http://cebe.cc/", 4255 | "role": "Core framework development" 4256 | }, 4257 | { 4258 | "name": "Timur Ruziev", 4259 | "email": "resurtm@gmail.com", 4260 | "homepage": "http://resurtm.com/", 4261 | "role": "Core framework development" 4262 | }, 4263 | { 4264 | "name": "Paul Klimov", 4265 | "email": "klimov.paul@gmail.com", 4266 | "role": "Core framework development" 4267 | }, 4268 | { 4269 | "name": "Dmitry Naumenko", 4270 | "email": "d.naumenko.a@gmail.com", 4271 | "role": "Core framework development" 4272 | }, 4273 | { 4274 | "name": "Boudewijn Vahrmeijer", 4275 | "email": "info@dynasource.eu", 4276 | "homepage": "http://dynasource.eu", 4277 | "role": "Core framework development" 4278 | } 4279 | ], 4280 | "description": "Yii PHP Framework Version 2", 4281 | "homepage": "http://www.yiiframework.com/", 4282 | "keywords": [ 4283 | "framework", 4284 | "yii2" 4285 | ], 4286 | "time": "2018-03-21T18:36:53+00:00" 4287 | }, 4288 | { 4289 | "name": "yiisoft/yii2-bootstrap", 4290 | "version": "2.0.8", 4291 | "source": { 4292 | "type": "git", 4293 | "url": "https://github.com/yiisoft/yii2-bootstrap.git", 4294 | "reference": "3f49c47924bb9fa5363c3fc7b073d954168cf438" 4295 | }, 4296 | "dist": { 4297 | "type": "zip", 4298 | "url": "https://api.github.com/repos/yiisoft/yii2-bootstrap/zipball/3f49c47924bb9fa5363c3fc7b073d954168cf438", 4299 | "reference": "3f49c47924bb9fa5363c3fc7b073d954168cf438", 4300 | "shasum": "" 4301 | }, 4302 | "require": { 4303 | "bower-asset/bootstrap": "3.3.* | 3.2.* | 3.1.*", 4304 | "yiisoft/yii2": "~2.0.6" 4305 | }, 4306 | "type": "yii2-extension", 4307 | "extra": { 4308 | "branch-alias": { 4309 | "dev-master": "2.0.x-dev" 4310 | } 4311 | }, 4312 | "autoload": { 4313 | "psr-4": { 4314 | "yii\\bootstrap\\": "src" 4315 | } 4316 | }, 4317 | "notification-url": "https://packagist.org/downloads/", 4318 | "license": [ 4319 | "BSD-3-Clause" 4320 | ], 4321 | "authors": [ 4322 | { 4323 | "name": "Paul Klimov", 4324 | "email": "klimov.paul@gmail.com" 4325 | }, 4326 | { 4327 | "name": "Alexander Makarov", 4328 | "email": "sam@rmcreative.ru", 4329 | "homepage": "http://rmcreative.ru/" 4330 | }, 4331 | { 4332 | "name": "Antonio Ramirez", 4333 | "email": "amigo.cobos@gmail.com" 4334 | }, 4335 | { 4336 | "name": "Qiang Xue", 4337 | "email": "qiang.xue@gmail.com", 4338 | "homepage": "http://www.yiiframework.com/" 4339 | } 4340 | ], 4341 | "description": "The Twitter Bootstrap extension for the Yii framework", 4342 | "keywords": [ 4343 | "bootstrap", 4344 | "yii2" 4345 | ], 4346 | "time": "2018-02-16T10:41:52+00:00" 4347 | }, 4348 | { 4349 | "name": "yiisoft/yii2-composer", 4350 | "version": "2.0.6", 4351 | "source": { 4352 | "type": "git", 4353 | "url": "https://github.com/yiisoft/yii2-composer.git", 4354 | "reference": "163419f1f197e02f015713b0d4f85598d8f8aa80" 4355 | }, 4356 | "dist": { 4357 | "type": "zip", 4358 | "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/163419f1f197e02f015713b0d4f85598d8f8aa80", 4359 | "reference": "163419f1f197e02f015713b0d4f85598d8f8aa80", 4360 | "shasum": "" 4361 | }, 4362 | "require": { 4363 | "composer-plugin-api": "^1.0" 4364 | }, 4365 | "require-dev": { 4366 | "composer/composer": "^1.0" 4367 | }, 4368 | "type": "composer-plugin", 4369 | "extra": { 4370 | "class": "yii\\composer\\Plugin", 4371 | "branch-alias": { 4372 | "dev-master": "2.0.x-dev" 4373 | } 4374 | }, 4375 | "autoload": { 4376 | "psr-4": { 4377 | "yii\\composer\\": "" 4378 | } 4379 | }, 4380 | "notification-url": "https://packagist.org/downloads/", 4381 | "license": [ 4382 | "BSD-3-Clause" 4383 | ], 4384 | "authors": [ 4385 | { 4386 | "name": "Qiang Xue", 4387 | "email": "qiang.xue@gmail.com" 4388 | }, 4389 | { 4390 | "name": "Carsten Brandt", 4391 | "email": "mail@cebe.cc" 4392 | } 4393 | ], 4394 | "description": "The composer plugin for Yii extension installer", 4395 | "keywords": [ 4396 | "composer", 4397 | "extension installer", 4398 | "yii2" 4399 | ], 4400 | "time": "2018-03-21T16:15:55+00:00" 4401 | }, 4402 | { 4403 | "name": "yiisoft/yii2-debug", 4404 | "version": "2.0.13", 4405 | "source": { 4406 | "type": "git", 4407 | "url": "https://github.com/yiisoft/yii2-debug.git", 4408 | "reference": "b37f414959c2fafefb332020b42037cd17c1cb7f" 4409 | }, 4410 | "dist": { 4411 | "type": "zip", 4412 | "url": "https://api.github.com/repos/yiisoft/yii2-debug/zipball/b37f414959c2fafefb332020b42037cd17c1cb7f", 4413 | "reference": "b37f414959c2fafefb332020b42037cd17c1cb7f", 4414 | "shasum": "" 4415 | }, 4416 | "require": { 4417 | "yiisoft/yii2": "~2.0.13", 4418 | "yiisoft/yii2-bootstrap": "~2.0.0" 4419 | }, 4420 | "type": "yii2-extension", 4421 | "extra": { 4422 | "branch-alias": { 4423 | "dev-master": "2.0.x-dev" 4424 | } 4425 | }, 4426 | "autoload": { 4427 | "psr-4": { 4428 | "yii\\debug\\": "" 4429 | } 4430 | }, 4431 | "notification-url": "https://packagist.org/downloads/", 4432 | "license": [ 4433 | "BSD-3-Clause" 4434 | ], 4435 | "authors": [ 4436 | { 4437 | "name": "Qiang Xue", 4438 | "email": "qiang.xue@gmail.com" 4439 | } 4440 | ], 4441 | "description": "The debugger extension for the Yii framework", 4442 | "keywords": [ 4443 | "debug", 4444 | "debugger", 4445 | "yii2" 4446 | ], 4447 | "time": "2017-12-05T07:36:23+00:00" 4448 | }, 4449 | { 4450 | "name": "yiisoft/yii2-queue", 4451 | "version": "2.0.2", 4452 | "source": { 4453 | "type": "git", 4454 | "url": "https://github.com/yiisoft/yii2-queue.git", 4455 | "reference": "8c2b337f7d9ea934c2affdfc21c9fb387d0a0773" 4456 | }, 4457 | "dist": { 4458 | "type": "zip", 4459 | "url": "https://api.github.com/repos/yiisoft/yii2-queue/zipball/8c2b337f7d9ea934c2affdfc21c9fb387d0a0773", 4460 | "reference": "8c2b337f7d9ea934c2affdfc21c9fb387d0a0773", 4461 | "shasum": "" 4462 | }, 4463 | "require": { 4464 | "php": ">=5.5.0", 4465 | "symfony/process": "*", 4466 | "yiisoft/yii2": "~2.0.13" 4467 | }, 4468 | "require-dev": { 4469 | "enqueue/amqp-lib": "^0.8", 4470 | "jeremeamia/superclosure": "*", 4471 | "pda/pheanstalk": "*", 4472 | "php-amqplib/php-amqplib": "*", 4473 | "phpunit/phpunit": "~4.4", 4474 | "yiisoft/yii2-debug": "*", 4475 | "yiisoft/yii2-gii": "*", 4476 | "yiisoft/yii2-redis": "*" 4477 | }, 4478 | "suggest": { 4479 | "enqueue/amqp-lib": "Need for AMQP interop queue.", 4480 | "ext-gearman": "Need for Gearman queue.", 4481 | "ext-pcntl": "Need for process signals.", 4482 | "pda/pheanstalk": "Need for Beanstalk queue.", 4483 | "php-amqplib/php-amqplib": "Need for AMQP queue.", 4484 | "yiisoft/yii2-redis": "Need for Redis queue." 4485 | }, 4486 | "type": "yii2-extension", 4487 | "extra": { 4488 | "branch-alias": { 4489 | "dev-master": "2.0.x-dev" 4490 | } 4491 | }, 4492 | "autoload": { 4493 | "psr-4": { 4494 | "yii\\queue\\": "src", 4495 | "yii\\queue\\amqp\\": "src/drivers/amqp", 4496 | "yii\\queue\\amqp_interop\\": "src/drivers/amqp_interop", 4497 | "yii\\queue\\beanstalk\\": "src/drivers/beanstalk", 4498 | "yii\\queue\\db\\": "src/drivers/db", 4499 | "yii\\queue\\file\\": "src/drivers/file", 4500 | "yii\\queue\\gearman\\": "src/drivers/gearman", 4501 | "yii\\queue\\redis\\": "src/drivers/redis", 4502 | "yii\\queue\\sync\\": "src/drivers/sync" 4503 | } 4504 | }, 4505 | "notification-url": "https://packagist.org/downloads/", 4506 | "license": [ 4507 | "BSD-3-Clause" 4508 | ], 4509 | "authors": [ 4510 | { 4511 | "name": "Roman Zhuravlev", 4512 | "email": "zhuravljov@gmail.com" 4513 | } 4514 | ], 4515 | "description": "Yii2 Queue Extension which supported DB, Redis, RabbitMQ, Beanstalk and Gearman", 4516 | "keywords": [ 4517 | "async", 4518 | "beanstalk", 4519 | "db", 4520 | "gearman", 4521 | "gii", 4522 | "queue", 4523 | "rabbitmq", 4524 | "redis", 4525 | "yii" 4526 | ], 4527 | "time": "2017-12-26T17:16:14+00:00" 4528 | }, 4529 | { 4530 | "name": "yiisoft/yii2-swiftmailer", 4531 | "version": "2.1.0", 4532 | "source": { 4533 | "type": "git", 4534 | "url": "https://github.com/yiisoft/yii2-swiftmailer.git", 4535 | "reference": "563570c9aa19ca47c1b22e3032983229378e9274" 4536 | }, 4537 | "dist": { 4538 | "type": "zip", 4539 | "url": "https://api.github.com/repos/yiisoft/yii2-swiftmailer/zipball/563570c9aa19ca47c1b22e3032983229378e9274", 4540 | "reference": "563570c9aa19ca47c1b22e3032983229378e9274", 4541 | "shasum": "" 4542 | }, 4543 | "require": { 4544 | "swiftmailer/swiftmailer": "~6.0", 4545 | "yiisoft/yii2": "~2.0.4" 4546 | }, 4547 | "type": "yii2-extension", 4548 | "extra": { 4549 | "branch-alias": { 4550 | "dev-master": "2.0.x-dev" 4551 | } 4552 | }, 4553 | "autoload": { 4554 | "psr-4": { 4555 | "yii\\swiftmailer\\": "" 4556 | } 4557 | }, 4558 | "notification-url": "https://packagist.org/downloads/", 4559 | "license": [ 4560 | "BSD-3-Clause" 4561 | ], 4562 | "authors": [ 4563 | { 4564 | "name": "Paul Klimov", 4565 | "email": "klimov.paul@gmail.com" 4566 | } 4567 | ], 4568 | "description": "The SwiftMailer integration for the Yii framework", 4569 | "keywords": [ 4570 | "email", 4571 | "mail", 4572 | "mailer", 4573 | "swift", 4574 | "swiftmailer", 4575 | "yii2" 4576 | ], 4577 | "time": "2017-08-04T10:48:17+00:00" 4578 | }, 4579 | { 4580 | "name": "zendframework/zend-escaper", 4581 | "version": "2.5.2", 4582 | "source": { 4583 | "type": "git", 4584 | "url": "https://github.com/zendframework/zend-escaper.git", 4585 | "reference": "2dcd14b61a72d8b8e27d579c6344e12c26141d4e" 4586 | }, 4587 | "dist": { 4588 | "type": "zip", 4589 | "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/2dcd14b61a72d8b8e27d579c6344e12c26141d4e", 4590 | "reference": "2dcd14b61a72d8b8e27d579c6344e12c26141d4e", 4591 | "shasum": "" 4592 | }, 4593 | "require": { 4594 | "php": ">=5.5" 4595 | }, 4596 | "require-dev": { 4597 | "fabpot/php-cs-fixer": "1.7.*", 4598 | "phpunit/phpunit": "~4.0" 4599 | }, 4600 | "type": "library", 4601 | "extra": { 4602 | "branch-alias": { 4603 | "dev-master": "2.5-dev", 4604 | "dev-develop": "2.6-dev" 4605 | } 4606 | }, 4607 | "autoload": { 4608 | "psr-4": { 4609 | "Zend\\Escaper\\": "src/" 4610 | } 4611 | }, 4612 | "notification-url": "https://packagist.org/downloads/", 4613 | "license": [ 4614 | "BSD-3-Clause" 4615 | ], 4616 | "homepage": "https://github.com/zendframework/zend-escaper", 4617 | "keywords": [ 4618 | "escaper", 4619 | "zf2" 4620 | ], 4621 | "time": "2016-06-30T19:48:38+00:00" 4622 | }, 4623 | { 4624 | "name": "zendframework/zend-feed", 4625 | "version": "2.8.0", 4626 | "source": { 4627 | "type": "git", 4628 | "url": "https://github.com/zendframework/zend-feed.git", 4629 | "reference": "94579e805dd108683209fe14b3b5d4276de3de6e" 4630 | }, 4631 | "dist": { 4632 | "type": "zip", 4633 | "url": "https://api.github.com/repos/zendframework/zend-feed/zipball/94579e805dd108683209fe14b3b5d4276de3de6e", 4634 | "reference": "94579e805dd108683209fe14b3b5d4276de3de6e", 4635 | "shasum": "" 4636 | }, 4637 | "require": { 4638 | "php": "^5.6 || ^7.0", 4639 | "zendframework/zend-escaper": "^2.5", 4640 | "zendframework/zend-stdlib": "^2.7 || ^3.1" 4641 | }, 4642 | "require-dev": { 4643 | "phpunit/phpunit": "^6.0.8 || ^5.7.15", 4644 | "psr/http-message": "^1.0", 4645 | "zendframework/zend-cache": "^2.6", 4646 | "zendframework/zend-coding-standard": "~1.0.0", 4647 | "zendframework/zend-db": "^2.7", 4648 | "zendframework/zend-http": "^2.5.4", 4649 | "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", 4650 | "zendframework/zend-validator": "^2.6" 4651 | }, 4652 | "suggest": { 4653 | "psr/http-message": "PSR-7 ^1.0, if you wish to use Zend\\Feed\\Reader\\Http\\Psr7ResponseDecorator", 4654 | "zendframework/zend-cache": "Zend\\Cache component, for optionally caching feeds between requests", 4655 | "zendframework/zend-db": "Zend\\Db component, for use with PubSubHubbub", 4656 | "zendframework/zend-http": "Zend\\Http for PubSubHubbub, and optionally for use with Zend\\Feed\\Reader", 4657 | "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for easily extending ExtensionManager implementations", 4658 | "zendframework/zend-validator": "Zend\\Validator component, for validating email addresses used in Atom feeds and entries ehen using the Writer subcomponent" 4659 | }, 4660 | "type": "library", 4661 | "extra": { 4662 | "branch-alias": { 4663 | "dev-master": "2.8-dev", 4664 | "dev-develop": "2.9-dev" 4665 | } 4666 | }, 4667 | "autoload": { 4668 | "psr-4": { 4669 | "Zend\\Feed\\": "src/" 4670 | } 4671 | }, 4672 | "notification-url": "https://packagist.org/downloads/", 4673 | "license": [ 4674 | "BSD-3-Clause" 4675 | ], 4676 | "description": "provides functionality for consuming RSS and Atom feeds", 4677 | "homepage": "https://github.com/zendframework/zend-feed", 4678 | "keywords": [ 4679 | "feed", 4680 | "zf2" 4681 | ], 4682 | "time": "2017-04-01T15:03:14+00:00" 4683 | }, 4684 | { 4685 | "name": "zendframework/zend-stdlib", 4686 | "version": "3.1.0", 4687 | "source": { 4688 | "type": "git", 4689 | "url": "https://github.com/zendframework/zend-stdlib.git", 4690 | "reference": "debedcfc373a293f9250cc9aa03cf121428c8e78" 4691 | }, 4692 | "dist": { 4693 | "type": "zip", 4694 | "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/debedcfc373a293f9250cc9aa03cf121428c8e78", 4695 | "reference": "debedcfc373a293f9250cc9aa03cf121428c8e78", 4696 | "shasum": "" 4697 | }, 4698 | "require": { 4699 | "php": "^5.6 || ^7.0" 4700 | }, 4701 | "require-dev": { 4702 | "athletic/athletic": "~0.1", 4703 | "phpunit/phpunit": "~4.0", 4704 | "squizlabs/php_codesniffer": "^2.6.2" 4705 | }, 4706 | "type": "library", 4707 | "extra": { 4708 | "branch-alias": { 4709 | "dev-master": "3.1-dev", 4710 | "dev-develop": "3.2-dev" 4711 | } 4712 | }, 4713 | "autoload": { 4714 | "psr-4": { 4715 | "Zend\\Stdlib\\": "src/" 4716 | } 4717 | }, 4718 | "notification-url": "https://packagist.org/downloads/", 4719 | "license": [ 4720 | "BSD-3-Clause" 4721 | ], 4722 | "homepage": "https://github.com/zendframework/zend-stdlib", 4723 | "keywords": [ 4724 | "stdlib", 4725 | "zf2" 4726 | ], 4727 | "time": "2016-09-13T14:38:50+00:00" 4728 | } 4729 | ], 4730 | "aliases": [], 4731 | "minimum-stability": "dev", 4732 | "stability-flags": { 4733 | "codeception/codeception": 20 4734 | }, 4735 | "prefer-stable": true, 4736 | "prefer-lowest": false, 4737 | "platform": { 4738 | "php": "^7.1.0" 4739 | }, 4740 | "platform-dev": [] 4741 | } 4742 | -------------------------------------------------------------------------------- /src/Smartdown.php: -------------------------------------------------------------------------------- 1 | request->getIsSiteRequest()) { 19 | Craft::$app->view->registerTwigExtension(new Extension); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/events/Parse.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/services/Smartdown.php: -------------------------------------------------------------------------------- 1 | markupParser = new MarkdownExtra(); 49 | $this->typographyParser = new SmartyPants(); 50 | } 51 | 52 | /** 53 | * Run the given string through all of the available parsers. 54 | * 55 | * @param $input 56 | * 57 | * @return string 58 | */ 59 | public function parseAll($input): string 60 | { 61 | if (! $this->isStringable($input)) { 62 | $this->logError(__METHOD__ . ' expects a string'); 63 | 64 | return ''; 65 | } 66 | 67 | return $this->parseTypography($this->parseMarkup($input)); 68 | } 69 | 70 | /** 71 | * Return a boolean indicating whether the given input can be converted to 72 | * a string. 73 | * 74 | * @param mixed $input 75 | * 76 | * @return bool 77 | */ 78 | protected function isStringable($input): bool 79 | { 80 | return is_string($input) or method_exists($input, '__toString'); 81 | } 82 | 83 | /** 84 | * Log the given error. 85 | * 86 | * @param string $message 87 | */ 88 | protected function logError(string $message) 89 | { 90 | Craft::error($message, 'smartdown'); 91 | } 92 | 93 | /** 94 | * Run the given string through "typography" parser. 95 | * 96 | * @param string $input 97 | * 98 | * @return string 99 | */ 100 | public function parseTypography($input): string 101 | { 102 | if (! $this->isStringable($input)) { 103 | $this->logError(__METHOD__ . ' expects a string'); 104 | 105 | return ''; 106 | } 107 | 108 | // Allow event listeners to modify the input, before it is parsed. 109 | $input = $this->callListeners( 110 | static::EVENT_BEFORE_PARSE_TYPOGRAPHY, $input); 111 | 112 | // Parse the input. 113 | $output = $this->typographyParser->transform($input); 114 | 115 | // Allow event listeners to modify the parsed string. 116 | $output = $this->callListeners( 117 | static::EVENT_AFTER_PARSE_TYPOGRAPHY, $output); 118 | 119 | return $output; 120 | } 121 | 122 | /** 123 | * Run the given string through "markup" parser. 124 | * 125 | * @param $input 126 | * 127 | * @return string 128 | */ 129 | public function parseMarkup($input): string 130 | { 131 | if (! $this->isStringable($input)) { 132 | $this->logError(__METHOD__ . ' expects a string'); 133 | 134 | return ''; 135 | } 136 | 137 | // Allow event listeners to modify the input, before it is parsed. 138 | $input = $this->callListeners( 139 | static::EVENT_BEFORE_PARSE_MARKUP, $input); 140 | 141 | $output = $this->markupParser->transform($input); 142 | 143 | // Allow plugins to modify the output. 144 | $output = $this->callListeners( 145 | static::EVENT_AFTER_PARSE_MARKUP, $output); 146 | 147 | return $output; 148 | } 149 | 150 | /** 151 | * Call the event listeners for the given event, and pass them the given 152 | * content. Return the content after any transformations. 153 | * 154 | * @param string $eventName 155 | * @param string $content 156 | * 157 | * @return string 158 | */ 159 | protected function callListeners(string $eventName, string $content): string 160 | { 161 | $event = new Parse(['content' => $content]); 162 | 163 | $this->trigger($eventName, $event); 164 | 165 | return $event->content; 166 | } 167 | } 168 | -------------------------------------------------------------------------------- /src/web/twig/Extension.php: -------------------------------------------------------------------------------- 1 | new Twig_SimpleFilter( 41 | 'smartdown', 42 | [$this, 'smartdownFilter'], 43 | ['markup' => true, 'typography' => true] 44 | ), 45 | ]; 46 | } 47 | 48 | /** 49 | * Run the given string through the filter, and return the result. 50 | * 51 | * Usage: 52 | * {{ 'Gives us "pretty quotes" and an ellipsis'|smartdown }} 53 | * 54 | * @param string $source The string to parse. 55 | * @param bool $markup Run the string through the markup filter? 56 | * @param bool $typography Run the string through the typography filter? 57 | * 58 | * @return string 59 | */ 60 | public function smartdownFilter( 61 | string $source, 62 | bool $markup = true, 63 | bool $typography = true 64 | ): string { 65 | $markup = ($markup !== false); 66 | $typography = ($typography !== false); 67 | 68 | return new Twig_Markup( 69 | $this->parseInput($source, $markup, $typography), 70 | $this->getTwigCharset() 71 | ); 72 | } 73 | 74 | /** 75 | * Run the given input string through the specified parsers. 76 | * 77 | * @param string $input 78 | * @param bool $markup 79 | * @param bool $typography 80 | * 81 | * @return string 82 | */ 83 | protected function parseInput( 84 | string $input, 85 | bool $markup, 86 | bool $typography 87 | ): string { 88 | $output = $input; 89 | 90 | if ($markup) { 91 | $output = static::$plugin->smartdown->parseMarkup($output); 92 | } 93 | 94 | if ($typography) { 95 | $output = static::$plugin->smartdown->parseTypography($output); 96 | } 97 | 98 | return $output; 99 | } 100 | 101 | /** 102 | * Return the Twig character set. 103 | * 104 | * @return string 105 | */ 106 | protected function getTwigCharset(): string 107 | { 108 | return Craft::$app->view->getTwig()->getCharset(); 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /tests/_data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/manifestuk/smartdown.craft-plugin/1413e2c67523ef9c06ac3d150823289a14f054ce/tests/_data/.gitkeep -------------------------------------------------------------------------------- /tests/_output/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /tests/_support/Helper/Unit.php: -------------------------------------------------------------------------------- 1 | subject = new Smartdown; 19 | } 20 | 21 | public function parseMarkup(UnitTester $I) 22 | { 23 | $I->wantTo('convert markdown into markup'); 24 | 25 | $input = 'This should be _italic_'; 26 | $output = $this->normalize($this->subject->parseMarkup($input)); 27 | $expected = '

This should be italic

'; 28 | 29 | $I->assertEquals($expected, $output); 30 | } 31 | 32 | /** 33 | * Remove leading and trailing whitespace and line-breaks 34 | * 35 | * @param string $result 36 | * 37 | * @return string 38 | */ 39 | protected function normalize(string $result): string 40 | { 41 | return trim($result); 42 | } 43 | 44 | public function parseMarkupToString(UnitTester $I) 45 | { 46 | $I->wantTo('convert markdown of object'); 47 | 48 | $input = new Stringable('This should be _italic_'); 49 | $output = $this->normalize($this->subject->parseMarkup($input)); 50 | $expected = '

This should be italic

'; 51 | 52 | $I->assertEquals($expected, $output); 53 | } 54 | 55 | public function parseMarkupNonString(UnitTester $I) 56 | { 57 | $I->wantToTest('parse markup with non-string returns an empty string'); 58 | 59 | $input = ['Epic fail ahead']; 60 | $output = $this->normalize($this->subject->parseMarkup($input)); 61 | 62 | $I->assertEquals('', $output); 63 | } 64 | 65 | public function parseMarkupBefore(UnitTester $I) 66 | { 67 | $I->wantTo('modify markdown before it is parsed'); 68 | 69 | $input = 'This should be _italic_'; 70 | 71 | $this->subject->on( 72 | Smartdown::EVENT_BEFORE_PARSE_MARKUP, 73 | function (Parse $e) { 74 | $e->content = str_replace('_italic_', '**bold**', $e->content); 75 | } 76 | ); 77 | 78 | $expected = '

This should be bold

'; 79 | $output = $this->normalize($this->subject->parseMarkup($input)); 80 | 81 | $I->assertEquals($expected, $output); 82 | } 83 | 84 | public function parseMarkupAfter(UnitTester $I) 85 | { 86 | $I->wantTo('modify markup after it is parsed'); 87 | 88 | $input = 'This should be _italic_'; 89 | 90 | $this->subject->on( 91 | Smartdown::EVENT_AFTER_PARSE_MARKUP, 92 | function (Parse $e) { 93 | $e->content = str_replace('p>', 'h1>', $e->content); 94 | } 95 | ); 96 | 97 | $expected = '

This should be italic

'; 98 | $output = $this->normalize($this->subject->parseMarkup($input)); 99 | 100 | $I->assertEquals($expected, $output); 101 | } 102 | 103 | public function parseTypography(UnitTester $I) 104 | { 105 | $I->wantTo('fancy up the typography'); 106 | 107 | $input = 'These should be "fancy quote marks"...'; 108 | $output = $this->normalize($this->subject->parseTypography($input)); 109 | $expected = 'These should be “fancy quote marks”…'; 110 | 111 | $I->assertEquals($expected, $output); 112 | } 113 | 114 | public function parseTypographyToString(UnitTester $I) 115 | { 116 | $I->wantTo('fancy up the typography of object'); 117 | 118 | $input = new Stringable('These should be "fancy quote marks"...'); 119 | $output = $this->normalize($this->subject->parseTypography($input)); 120 | $expected = 'These should be “fancy quote marks”…'; 121 | 122 | $I->assertEquals($expected, $output); 123 | } 124 | 125 | public function parseTypographyNonString(UnitTester $I) 126 | { 127 | $I->wantToTest('parse typography with non-string returns an empty string'); 128 | 129 | $input = ['Epic fail ahead']; 130 | $output = $this->normalize($this->subject->parseTypography($input)); 131 | 132 | $I->assertEquals('', $output); 133 | } 134 | 135 | public function parseTypographyBefore(UnitTester $I) 136 | { 137 | $I->wantTo('modify typography before it is parsed'); 138 | 139 | $input = 'A simple string'; 140 | 141 | $this->subject->on( 142 | Smartdown::EVENT_BEFORE_PARSE_TYPOGRAPHY, 143 | function (Parse $e) { 144 | $e->content = str_replace('simple', '"simple"', $e->content); 145 | } 146 | ); 147 | 148 | $expected = 'A “simple” string'; 149 | $output = $this->normalize($this->subject->parseTypography($input)); 150 | 151 | $I->assertEquals($expected, $output); 152 | } 153 | 154 | public function parseTypographyAfter(UnitTester $I) 155 | { 156 | $I->wantTo('modify typography after it is parsed'); 157 | 158 | $input = 'A "simple" string'; 159 | 160 | $this->subject->on( 161 | Smartdown::EVENT_AFTER_PARSE_TYPOGRAPHY, 162 | function (Parse $e) { 163 | $e->content = str_replace('̶', '̀', $e->content); 164 | } 165 | ); 166 | 167 | $expected = 'A ₀simple₁ string'; 168 | $output = $this->normalize($this->subject->parseTypography($input)); 169 | 170 | $I->assertEquals($expected, $output); 171 | } 172 | 173 | public function parseAll(UnitTester $I) 174 | { 175 | $I->wantTo('convert markdown and typography'); 176 | 177 | $input = 'These should be "_fancy_ quote marks"...'; 178 | $output = $this->normalize($this->subject->parseAll($input)); 179 | $expected = '

These should be “fancy quote marks”…

'; 180 | 181 | $I->assertEquals($expected, $output); 182 | } 183 | 184 | public function parseAllToString(UnitTester $I) 185 | { 186 | $I->wantTo('convert markdown and typography of object'); 187 | 188 | $input = new Stringable('These should be "_fancy_ quote marks"...'); 189 | $output = $this->normalize($this->subject->parseAll($input)); 190 | $expected = '

These should be “fancy quote marks”…

'; 191 | 192 | $I->assertEquals($expected, $output); 193 | } 194 | 195 | public function parseAllNonString(UnitTester $I) 196 | { 197 | $I->wantToTest('parse all with non-string returns an empty string'); 198 | 199 | $input = ['Epic fail ahead']; 200 | $output = $this->normalize($this->subject->parseAll($input)); 201 | 202 | $I->assertEquals('', $output); 203 | } 204 | } 205 | 206 | class Stringable 207 | { 208 | protected $value; 209 | 210 | public function __construct(string $value) 211 | { 212 | $this->value = $value; 213 | } 214 | 215 | public function __toString(): string 216 | { 217 | return $this->value; 218 | } 219 | } 220 | --------------------------------------------------------------------------------