├── LICENSE ├── Plugin.php ├── README.md ├── composer.json └── composer.lock /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 lichunqiang 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /Plugin.php: -------------------------------------------------------------------------------- 1 | 20 | * @version 1.0.0 21 | * @license MIT 22 | */ 23 | class Plugin implements PluginInterface, EventSubscriberInterface 24 | { 25 | /** 26 | * @var Composer 27 | */ 28 | protected $composer; 29 | /** 30 | * @var Config 31 | */ 32 | protected $config; 33 | /** 34 | * @var Filesystem 35 | */ 36 | protected $fileSystem; 37 | 38 | /** 39 | * @inheritdoc 40 | */ 41 | public function activate(Composer $composer, IOInterface $io) 42 | { 43 | $this->composer = $composer; 44 | $this->config = $composer->getConfig(); 45 | $this->fileSystem = new Filesystem(); 46 | } 47 | 48 | /** 49 | * @inheritdoc 50 | */ 51 | public static function getSubscribedEvents() 52 | { 53 | return [ 54 | ScriptEvents::POST_AUTOLOAD_DUMP => 'onPostAutoloadDump', 55 | ]; 56 | } 57 | 58 | /** 59 | * @param Event $event 60 | */ 61 | public function onPostAutoloadDump(Event $event) 62 | { 63 | /** @var Package $package */ 64 | $package = $this->composer->getPackage(); 65 | $extra = $package->getExtra(); 66 | 67 | $ignoreList = isset($extra['light-ignore-plugin']) ? $extra['light-ignore-plugin'] : null; 68 | 69 | if (!$ignoreList) { 70 | return; 71 | } 72 | 73 | $vendor_dir = $this->config->get('vendor-dir'); 74 | 75 | foreach ($ignoreList as $vendor => $files) { 76 | $root = $this->fileSystem->normalizePath("{$vendor_dir}/{$vendor}"); 77 | $this->ignorePath($root, $files); 78 | } 79 | } 80 | 81 | /** 82 | * @param string $root 83 | * @param array $files 84 | */ 85 | protected function ignorePath($root, array $files) 86 | { 87 | foreach ($files as $file) { 88 | $_file = $this->fileSystem->normalizePath("{$root}/{$file}"); 89 | if (is_dir($_file)) { 90 | $this->fileSystem->removeDirectory($_file); 91 | } else { 92 | $finder = Finder::create()->in($root)->ignoreVCS(false)->ignoreDotFiles(false)->name($file)->files(); 93 | 94 | foreach ($finder as $item) { 95 | $this->fileSystem->remove($item->getRealPath()); 96 | } 97 | } 98 | } 99 | } 100 | 101 | public function deactivate(Composer $composer, IOInterface $io) 102 | { 103 | } 104 | 105 | public function uninstall(Composer $composer, IOInterface $io) 106 | { 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Composer Ignore Plugin [![version](https://img.shields.io/packagist/v/light/composer-ignore-plugin.svg?style=flat-square)](https://packagist.org/packages/light/composer-ignore-plugin) [![Download](https://img.shields.io/packagist/dt/light/composer-ignore-plugin.svg?style=flat-square)](https://packagist.org/packages/light/composer-ignore-plugin) 2 | ---- 3 | 4 | This plugin help us to remove the unused file or directories in vendor. 5 | 6 | ## Installation 7 | 8 | Both global or local install can work well. 9 | 10 | 1.Install globally, so every project can use the plugin. 11 | 12 | ``` 13 | $ composer global require "light/composer-ignore-plugin:~2.0" 14 | ``` 15 | 16 | 2.Install locally 17 | 18 | ``` 19 | $ composer require "light/composer-ignore-plugin:~2.0" --dev 20 | ``` 21 | 22 | ## Usage 23 | 24 | Define the ignore file or directory in composer.json, for example: 25 | 26 | Before: 27 | 28 | ``` 29 | fzaninotto/faker/ 30 | ├── CHANGELOG.md 31 | ├── composer.json 32 | ├── CONTRIBUTING.md 33 | ├── LICENSE 34 | ├── Makefile 35 | ├── phpunit.xml.dist 36 | ├── readme.md 37 | ├── src 38 | └── test 39 | ``` 40 | 41 | Configuration in `composer.json`: 42 | 43 | ```json 44 | { 45 | "extra": { 46 | "light-ignore-plugin": { 47 | "fzaninotto/faker": [ 48 | "test", 49 | "*.md", 50 | "LICENSE", 51 | "Makefile", 52 | "phpunit.xml.dist" 53 | ] 54 | } 55 | } 56 | } 57 | 58 | ``` 59 | 60 | After executed `composer install`, `composer update`, `composer dump-autoload`, The files will be removed. 61 | 62 | > When execute the `composer install` or `composer update` will finally trigger the autoload dump event 63 | 64 | After: 65 | 66 | ``` 67 | fzaninotto/faker/ 68 | ├── composer.json 69 | └── src 70 | ``` 71 | 72 | ## Why this? 73 | 74 | Thanks to open source, there are many useful packages helped us. 75 | 76 | Generally, some files or folder in the installed package is useless, and when deploy to production system, reduce the files can make deploy clean. 77 | 78 | Of cause, a lot of package had done this by add `.gitattributes` file, But also not all, [`fzaninotto/faker`](https://github.com/fzaninotto/Faker/pull/1085) for example. 79 | 80 | ## LICENSE 81 | 82 | [MIT](LICENSE) 83 | 84 | 85 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "light/composer-ignore-plugin", 3 | "description": "ignore files by yourself", 4 | "keywords": [ 5 | ".gitattributes", 6 | "ignore", 7 | "remove", 8 | "delete", 9 | "ignore file", 10 | "remove file", 11 | "delete file", 12 | "composer", 13 | "plugin" 14 | ], 15 | "type": "composer-plugin", 16 | "require": { 17 | "composer-plugin-api": "^2.0", 18 | "symfony/finder": "~3.1" 19 | }, 20 | "require-dev": { 21 | "composer/composer": "~2.0" 22 | }, 23 | "license": "MIT", 24 | "authors": [ 25 | { 26 | "name": "lichunqiang", 27 | "email": "light-li@hotmail.com" 28 | } 29 | ], 30 | "autoload": { 31 | "psr-4": { 32 | "Light\\Composer\\": "" 33 | } 34 | }, 35 | "extra": { 36 | "class": "Light\\Composer\\Plugin" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /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#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "6f70e8e53b91aff9ca6be2b8d1a78835", 8 | "packages": [ 9 | { 10 | "name": "symfony/finder", 11 | "version": "v3.4.47", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/symfony/finder.git", 15 | "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/symfony/finder/zipball/b6b6ad3db3edb1b4b1c1896b1975fb684994de6e", 20 | "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^5.5.9|>=7.0.8" 25 | }, 26 | "type": "library", 27 | "autoload": { 28 | "psr-4": { 29 | "Symfony\\Component\\Finder\\": "" 30 | }, 31 | "exclude-from-classmap": [ 32 | "/Tests/" 33 | ] 34 | }, 35 | "notification-url": "https://packagist.org/downloads/", 36 | "license": [ 37 | "MIT" 38 | ], 39 | "authors": [ 40 | { 41 | "name": "Fabien Potencier", 42 | "email": "fabien@symfony.com" 43 | }, 44 | { 45 | "name": "Symfony Community", 46 | "homepage": "https://symfony.com/contributors" 47 | } 48 | ], 49 | "description": "Symfony Finder Component", 50 | "homepage": "https://symfony.com", 51 | "support": { 52 | "source": "https://github.com/symfony/finder/tree/v3.4.47" 53 | }, 54 | "funding": [ 55 | { 56 | "url": "https://symfony.com/sponsor", 57 | "type": "custom" 58 | }, 59 | { 60 | "url": "https://github.com/fabpot", 61 | "type": "github" 62 | }, 63 | { 64 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 65 | "type": "tidelift" 66 | } 67 | ], 68 | "time": "2020-11-16T17:02:08+00:00" 69 | } 70 | ], 71 | "packages-dev": [ 72 | { 73 | "name": "composer/ca-bundle", 74 | "version": "1.3.1", 75 | "source": { 76 | "type": "git", 77 | "url": "https://github.com/composer/ca-bundle.git", 78 | "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b" 79 | }, 80 | "dist": { 81 | "type": "zip", 82 | "url": "https://api.github.com/repos/composer/ca-bundle/zipball/4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", 83 | "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", 84 | "shasum": "" 85 | }, 86 | "require": { 87 | "ext-openssl": "*", 88 | "ext-pcre": "*", 89 | "php": "^5.3.2 || ^7.0 || ^8.0" 90 | }, 91 | "require-dev": { 92 | "phpstan/phpstan": "^0.12.55", 93 | "psr/log": "^1.0", 94 | "symfony/phpunit-bridge": "^4.2 || ^5", 95 | "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" 96 | }, 97 | "type": "library", 98 | "extra": { 99 | "branch-alias": { 100 | "dev-main": "1.x-dev" 101 | } 102 | }, 103 | "autoload": { 104 | "psr-4": { 105 | "Composer\\CaBundle\\": "src" 106 | } 107 | }, 108 | "notification-url": "https://packagist.org/downloads/", 109 | "license": [ 110 | "MIT" 111 | ], 112 | "authors": [ 113 | { 114 | "name": "Jordi Boggiano", 115 | "email": "j.boggiano@seld.be", 116 | "homepage": "http://seld.be" 117 | } 118 | ], 119 | "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", 120 | "keywords": [ 121 | "cabundle", 122 | "cacert", 123 | "certificate", 124 | "ssl", 125 | "tls" 126 | ], 127 | "support": { 128 | "irc": "irc://irc.freenode.org/composer", 129 | "issues": "https://github.com/composer/ca-bundle/issues", 130 | "source": "https://github.com/composer/ca-bundle/tree/1.3.1" 131 | }, 132 | "funding": [ 133 | { 134 | "url": "https://packagist.com", 135 | "type": "custom" 136 | }, 137 | { 138 | "url": "https://github.com/composer", 139 | "type": "github" 140 | }, 141 | { 142 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 143 | "type": "tidelift" 144 | } 145 | ], 146 | "time": "2021-10-28T20:44:15+00:00" 147 | }, 148 | { 149 | "name": "composer/composer", 150 | "version": "2.2.12", 151 | "source": { 152 | "type": "git", 153 | "url": "https://github.com/composer/composer.git", 154 | "reference": "ba61e768b410736efe61df01b61f1ec44f51474f" 155 | }, 156 | "dist": { 157 | "type": "zip", 158 | "url": "https://api.github.com/repos/composer/composer/zipball/ba61e768b410736efe61df01b61f1ec44f51474f", 159 | "reference": "ba61e768b410736efe61df01b61f1ec44f51474f", 160 | "shasum": "" 161 | }, 162 | "require": { 163 | "composer/ca-bundle": "^1.0", 164 | "composer/metadata-minifier": "^1.0", 165 | "composer/pcre": "^1.0", 166 | "composer/semver": "^3.0", 167 | "composer/spdx-licenses": "^1.2", 168 | "composer/xdebug-handler": "^2.0 || ^3.0", 169 | "justinrainbow/json-schema": "^5.2.11", 170 | "php": "^5.3.2 || ^7.0 || ^8.0", 171 | "psr/log": "^1.0 || ^2.0", 172 | "react/promise": "^1.2 || ^2.7", 173 | "seld/jsonlint": "^1.4", 174 | "seld/phar-utils": "^1.0", 175 | "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", 176 | "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", 177 | "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", 178 | "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" 179 | }, 180 | "require-dev": { 181 | "phpspec/prophecy": "^1.10", 182 | "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" 183 | }, 184 | "suggest": { 185 | "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", 186 | "ext-zip": "Enabling the zip extension allows you to unzip archives", 187 | "ext-zlib": "Allow gzip compression of HTTP requests" 188 | }, 189 | "bin": [ 190 | "bin/composer" 191 | ], 192 | "type": "library", 193 | "extra": { 194 | "branch-alias": { 195 | "dev-main": "2.2-dev" 196 | } 197 | }, 198 | "autoload": { 199 | "psr-4": { 200 | "Composer\\": "src/Composer" 201 | } 202 | }, 203 | "notification-url": "https://packagist.org/downloads/", 204 | "license": [ 205 | "MIT" 206 | ], 207 | "authors": [ 208 | { 209 | "name": "Nils Adermann", 210 | "email": "naderman@naderman.de", 211 | "homepage": "https://www.naderman.de" 212 | }, 213 | { 214 | "name": "Jordi Boggiano", 215 | "email": "j.boggiano@seld.be", 216 | "homepage": "https://seld.be" 217 | } 218 | ], 219 | "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", 220 | "homepage": "https://getcomposer.org/", 221 | "keywords": [ 222 | "autoload", 223 | "dependency", 224 | "package" 225 | ], 226 | "support": { 227 | "irc": "ircs://irc.libera.chat:6697/composer", 228 | "issues": "https://github.com/composer/composer/issues", 229 | "source": "https://github.com/composer/composer/tree/2.2.12" 230 | }, 231 | "funding": [ 232 | { 233 | "url": "https://packagist.com", 234 | "type": "custom" 235 | }, 236 | { 237 | "url": "https://github.com/composer", 238 | "type": "github" 239 | }, 240 | { 241 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 242 | "type": "tidelift" 243 | } 244 | ], 245 | "time": "2022-04-13T14:42:25+00:00" 246 | }, 247 | { 248 | "name": "composer/metadata-minifier", 249 | "version": "1.0.0", 250 | "source": { 251 | "type": "git", 252 | "url": "https://github.com/composer/metadata-minifier.git", 253 | "reference": "c549d23829536f0d0e984aaabbf02af91f443207" 254 | }, 255 | "dist": { 256 | "type": "zip", 257 | "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207", 258 | "reference": "c549d23829536f0d0e984aaabbf02af91f443207", 259 | "shasum": "" 260 | }, 261 | "require": { 262 | "php": "^5.3.2 || ^7.0 || ^8.0" 263 | }, 264 | "require-dev": { 265 | "composer/composer": "^2", 266 | "phpstan/phpstan": "^0.12.55", 267 | "symfony/phpunit-bridge": "^4.2 || ^5" 268 | }, 269 | "type": "library", 270 | "extra": { 271 | "branch-alias": { 272 | "dev-main": "1.x-dev" 273 | } 274 | }, 275 | "autoload": { 276 | "psr-4": { 277 | "Composer\\MetadataMinifier\\": "src" 278 | } 279 | }, 280 | "notification-url": "https://packagist.org/downloads/", 281 | "license": [ 282 | "MIT" 283 | ], 284 | "authors": [ 285 | { 286 | "name": "Jordi Boggiano", 287 | "email": "j.boggiano@seld.be", 288 | "homepage": "http://seld.be" 289 | } 290 | ], 291 | "description": "Small utility library that handles metadata minification and expansion.", 292 | "keywords": [ 293 | "composer", 294 | "compression" 295 | ], 296 | "support": { 297 | "issues": "https://github.com/composer/metadata-minifier/issues", 298 | "source": "https://github.com/composer/metadata-minifier/tree/1.0.0" 299 | }, 300 | "funding": [ 301 | { 302 | "url": "https://packagist.com", 303 | "type": "custom" 304 | }, 305 | { 306 | "url": "https://github.com/composer", 307 | "type": "github" 308 | }, 309 | { 310 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 311 | "type": "tidelift" 312 | } 313 | ], 314 | "time": "2021-04-07T13:37:33+00:00" 315 | }, 316 | { 317 | "name": "composer/pcre", 318 | "version": "1.0.1", 319 | "source": { 320 | "type": "git", 321 | "url": "https://github.com/composer/pcre.git", 322 | "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560" 323 | }, 324 | "dist": { 325 | "type": "zip", 326 | "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560", 327 | "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560", 328 | "shasum": "" 329 | }, 330 | "require": { 331 | "php": "^5.3.2 || ^7.0 || ^8.0" 332 | }, 333 | "require-dev": { 334 | "phpstan/phpstan": "^1.3", 335 | "phpstan/phpstan-strict-rules": "^1.1", 336 | "symfony/phpunit-bridge": "^4.2 || ^5" 337 | }, 338 | "type": "library", 339 | "extra": { 340 | "branch-alias": { 341 | "dev-main": "1.x-dev" 342 | } 343 | }, 344 | "autoload": { 345 | "psr-4": { 346 | "Composer\\Pcre\\": "src" 347 | } 348 | }, 349 | "notification-url": "https://packagist.org/downloads/", 350 | "license": [ 351 | "MIT" 352 | ], 353 | "authors": [ 354 | { 355 | "name": "Jordi Boggiano", 356 | "email": "j.boggiano@seld.be", 357 | "homepage": "http://seld.be" 358 | } 359 | ], 360 | "description": "PCRE wrapping library that offers type-safe preg_* replacements.", 361 | "keywords": [ 362 | "PCRE", 363 | "preg", 364 | "regex", 365 | "regular expression" 366 | ], 367 | "support": { 368 | "issues": "https://github.com/composer/pcre/issues", 369 | "source": "https://github.com/composer/pcre/tree/1.0.1" 370 | }, 371 | "funding": [ 372 | { 373 | "url": "https://packagist.com", 374 | "type": "custom" 375 | }, 376 | { 377 | "url": "https://github.com/composer", 378 | "type": "github" 379 | }, 380 | { 381 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 382 | "type": "tidelift" 383 | } 384 | ], 385 | "time": "2022-01-21T20:24:37+00:00" 386 | }, 387 | { 388 | "name": "composer/semver", 389 | "version": "3.3.2", 390 | "source": { 391 | "type": "git", 392 | "url": "https://github.com/composer/semver.git", 393 | "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" 394 | }, 395 | "dist": { 396 | "type": "zip", 397 | "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", 398 | "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", 399 | "shasum": "" 400 | }, 401 | "require": { 402 | "php": "^5.3.2 || ^7.0 || ^8.0" 403 | }, 404 | "require-dev": { 405 | "phpstan/phpstan": "^1.4", 406 | "symfony/phpunit-bridge": "^4.2 || ^5" 407 | }, 408 | "type": "library", 409 | "extra": { 410 | "branch-alias": { 411 | "dev-main": "3.x-dev" 412 | } 413 | }, 414 | "autoload": { 415 | "psr-4": { 416 | "Composer\\Semver\\": "src" 417 | } 418 | }, 419 | "notification-url": "https://packagist.org/downloads/", 420 | "license": [ 421 | "MIT" 422 | ], 423 | "authors": [ 424 | { 425 | "name": "Nils Adermann", 426 | "email": "naderman@naderman.de", 427 | "homepage": "http://www.naderman.de" 428 | }, 429 | { 430 | "name": "Jordi Boggiano", 431 | "email": "j.boggiano@seld.be", 432 | "homepage": "http://seld.be" 433 | }, 434 | { 435 | "name": "Rob Bast", 436 | "email": "rob.bast@gmail.com", 437 | "homepage": "http://robbast.nl" 438 | } 439 | ], 440 | "description": "Semver library that offers utilities, version constraint parsing and validation.", 441 | "keywords": [ 442 | "semantic", 443 | "semver", 444 | "validation", 445 | "versioning" 446 | ], 447 | "support": { 448 | "irc": "irc://irc.freenode.org/composer", 449 | "issues": "https://github.com/composer/semver/issues", 450 | "source": "https://github.com/composer/semver/tree/3.3.2" 451 | }, 452 | "funding": [ 453 | { 454 | "url": "https://packagist.com", 455 | "type": "custom" 456 | }, 457 | { 458 | "url": "https://github.com/composer", 459 | "type": "github" 460 | }, 461 | { 462 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 463 | "type": "tidelift" 464 | } 465 | ], 466 | "time": "2022-04-01T19:23:25+00:00" 467 | }, 468 | { 469 | "name": "composer/spdx-licenses", 470 | "version": "1.5.6", 471 | "source": { 472 | "type": "git", 473 | "url": "https://github.com/composer/spdx-licenses.git", 474 | "reference": "a30d487169d799745ca7280bc90fdfa693536901" 475 | }, 476 | "dist": { 477 | "type": "zip", 478 | "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a30d487169d799745ca7280bc90fdfa693536901", 479 | "reference": "a30d487169d799745ca7280bc90fdfa693536901", 480 | "shasum": "" 481 | }, 482 | "require": { 483 | "php": "^5.3.2 || ^7.0 || ^8.0" 484 | }, 485 | "require-dev": { 486 | "phpstan/phpstan": "^0.12.55", 487 | "symfony/phpunit-bridge": "^4.2 || ^5" 488 | }, 489 | "type": "library", 490 | "extra": { 491 | "branch-alias": { 492 | "dev-main": "1.x-dev" 493 | } 494 | }, 495 | "autoload": { 496 | "psr-4": { 497 | "Composer\\Spdx\\": "src" 498 | } 499 | }, 500 | "notification-url": "https://packagist.org/downloads/", 501 | "license": [ 502 | "MIT" 503 | ], 504 | "authors": [ 505 | { 506 | "name": "Nils Adermann", 507 | "email": "naderman@naderman.de", 508 | "homepage": "http://www.naderman.de" 509 | }, 510 | { 511 | "name": "Jordi Boggiano", 512 | "email": "j.boggiano@seld.be", 513 | "homepage": "http://seld.be" 514 | }, 515 | { 516 | "name": "Rob Bast", 517 | "email": "rob.bast@gmail.com", 518 | "homepage": "http://robbast.nl" 519 | } 520 | ], 521 | "description": "SPDX licenses list and validation library.", 522 | "keywords": [ 523 | "license", 524 | "spdx", 525 | "validator" 526 | ], 527 | "support": { 528 | "irc": "irc://irc.freenode.org/composer", 529 | "issues": "https://github.com/composer/spdx-licenses/issues", 530 | "source": "https://github.com/composer/spdx-licenses/tree/1.5.6" 531 | }, 532 | "funding": [ 533 | { 534 | "url": "https://packagist.com", 535 | "type": "custom" 536 | }, 537 | { 538 | "url": "https://github.com/composer", 539 | "type": "github" 540 | }, 541 | { 542 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 543 | "type": "tidelift" 544 | } 545 | ], 546 | "time": "2021-11-18T10:14:14+00:00" 547 | }, 548 | { 549 | "name": "composer/xdebug-handler", 550 | "version": "3.0.3", 551 | "source": { 552 | "type": "git", 553 | "url": "https://github.com/composer/xdebug-handler.git", 554 | "reference": "ced299686f41dce890debac69273b47ffe98a40c" 555 | }, 556 | "dist": { 557 | "type": "zip", 558 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", 559 | "reference": "ced299686f41dce890debac69273b47ffe98a40c", 560 | "shasum": "" 561 | }, 562 | "require": { 563 | "composer/pcre": "^1 || ^2 || ^3", 564 | "php": "^7.2.5 || ^8.0", 565 | "psr/log": "^1 || ^2 || ^3" 566 | }, 567 | "require-dev": { 568 | "phpstan/phpstan": "^1.0", 569 | "phpstan/phpstan-strict-rules": "^1.1", 570 | "symfony/phpunit-bridge": "^6.0" 571 | }, 572 | "type": "library", 573 | "autoload": { 574 | "psr-4": { 575 | "Composer\\XdebugHandler\\": "src" 576 | } 577 | }, 578 | "notification-url": "https://packagist.org/downloads/", 579 | "license": [ 580 | "MIT" 581 | ], 582 | "authors": [ 583 | { 584 | "name": "John Stevenson", 585 | "email": "john-stevenson@blueyonder.co.uk" 586 | } 587 | ], 588 | "description": "Restarts a process without Xdebug.", 589 | "keywords": [ 590 | "Xdebug", 591 | "performance" 592 | ], 593 | "support": { 594 | "irc": "irc://irc.freenode.org/composer", 595 | "issues": "https://github.com/composer/xdebug-handler/issues", 596 | "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" 597 | }, 598 | "funding": [ 599 | { 600 | "url": "https://packagist.com", 601 | "type": "custom" 602 | }, 603 | { 604 | "url": "https://github.com/composer", 605 | "type": "github" 606 | }, 607 | { 608 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 609 | "type": "tidelift" 610 | } 611 | ], 612 | "time": "2022-02-25T21:32:43+00:00" 613 | }, 614 | { 615 | "name": "justinrainbow/json-schema", 616 | "version": "5.2.12", 617 | "source": { 618 | "type": "git", 619 | "url": "https://github.com/justinrainbow/json-schema.git", 620 | "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" 621 | }, 622 | "dist": { 623 | "type": "zip", 624 | "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", 625 | "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", 626 | "shasum": "" 627 | }, 628 | "require": { 629 | "php": ">=5.3.3" 630 | }, 631 | "require-dev": { 632 | "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", 633 | "json-schema/json-schema-test-suite": "1.2.0", 634 | "phpunit/phpunit": "^4.8.35" 635 | }, 636 | "bin": [ 637 | "bin/validate-json" 638 | ], 639 | "type": "library", 640 | "extra": { 641 | "branch-alias": { 642 | "dev-master": "5.0.x-dev" 643 | } 644 | }, 645 | "autoload": { 646 | "psr-4": { 647 | "JsonSchema\\": "src/JsonSchema/" 648 | } 649 | }, 650 | "notification-url": "https://packagist.org/downloads/", 651 | "license": [ 652 | "MIT" 653 | ], 654 | "authors": [ 655 | { 656 | "name": "Bruno Prieto Reis", 657 | "email": "bruno.p.reis@gmail.com" 658 | }, 659 | { 660 | "name": "Justin Rainbow", 661 | "email": "justin.rainbow@gmail.com" 662 | }, 663 | { 664 | "name": "Igor Wiedler", 665 | "email": "igor@wiedler.ch" 666 | }, 667 | { 668 | "name": "Robert Schönthal", 669 | "email": "seroscho@googlemail.com" 670 | } 671 | ], 672 | "description": "A library to validate a json schema.", 673 | "homepage": "https://github.com/justinrainbow/json-schema", 674 | "keywords": [ 675 | "json", 676 | "schema" 677 | ], 678 | "support": { 679 | "issues": "https://github.com/justinrainbow/json-schema/issues", 680 | "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" 681 | }, 682 | "time": "2022-04-13T08:02:27+00:00" 683 | }, 684 | { 685 | "name": "psr/container", 686 | "version": "1.1.2", 687 | "source": { 688 | "type": "git", 689 | "url": "https://github.com/php-fig/container.git", 690 | "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" 691 | }, 692 | "dist": { 693 | "type": "zip", 694 | "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", 695 | "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", 696 | "shasum": "" 697 | }, 698 | "require": { 699 | "php": ">=7.4.0" 700 | }, 701 | "type": "library", 702 | "autoload": { 703 | "psr-4": { 704 | "Psr\\Container\\": "src/" 705 | } 706 | }, 707 | "notification-url": "https://packagist.org/downloads/", 708 | "license": [ 709 | "MIT" 710 | ], 711 | "authors": [ 712 | { 713 | "name": "PHP-FIG", 714 | "homepage": "https://www.php-fig.org/" 715 | } 716 | ], 717 | "description": "Common Container Interface (PHP FIG PSR-11)", 718 | "homepage": "https://github.com/php-fig/container", 719 | "keywords": [ 720 | "PSR-11", 721 | "container", 722 | "container-interface", 723 | "container-interop", 724 | "psr" 725 | ], 726 | "support": { 727 | "issues": "https://github.com/php-fig/container/issues", 728 | "source": "https://github.com/php-fig/container/tree/1.1.2" 729 | }, 730 | "time": "2021-11-05T16:50:12+00:00" 731 | }, 732 | { 733 | "name": "psr/log", 734 | "version": "1.1.4", 735 | "source": { 736 | "type": "git", 737 | "url": "https://github.com/php-fig/log.git", 738 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11" 739 | }, 740 | "dist": { 741 | "type": "zip", 742 | "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", 743 | "reference": "d49695b909c3b7628b6289db5479a1c204601f11", 744 | "shasum": "" 745 | }, 746 | "require": { 747 | "php": ">=5.3.0" 748 | }, 749 | "type": "library", 750 | "extra": { 751 | "branch-alias": { 752 | "dev-master": "1.1.x-dev" 753 | } 754 | }, 755 | "autoload": { 756 | "psr-4": { 757 | "Psr\\Log\\": "Psr/Log/" 758 | } 759 | }, 760 | "notification-url": "https://packagist.org/downloads/", 761 | "license": [ 762 | "MIT" 763 | ], 764 | "authors": [ 765 | { 766 | "name": "PHP-FIG", 767 | "homepage": "https://www.php-fig.org/" 768 | } 769 | ], 770 | "description": "Common interface for logging libraries", 771 | "homepage": "https://github.com/php-fig/log", 772 | "keywords": [ 773 | "log", 774 | "psr", 775 | "psr-3" 776 | ], 777 | "support": { 778 | "source": "https://github.com/php-fig/log/tree/1.1.4" 779 | }, 780 | "time": "2021-05-03T11:20:27+00:00" 781 | }, 782 | { 783 | "name": "react/promise", 784 | "version": "v2.9.0", 785 | "source": { 786 | "type": "git", 787 | "url": "https://github.com/reactphp/promise.git", 788 | "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910" 789 | }, 790 | "dist": { 791 | "type": "zip", 792 | "url": "https://api.github.com/repos/reactphp/promise/zipball/234f8fd1023c9158e2314fa9d7d0e6a83db42910", 793 | "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910", 794 | "shasum": "" 795 | }, 796 | "require": { 797 | "php": ">=5.4.0" 798 | }, 799 | "require-dev": { 800 | "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" 801 | }, 802 | "type": "library", 803 | "autoload": { 804 | "files": [ 805 | "src/functions_include.php" 806 | ], 807 | "psr-4": { 808 | "React\\Promise\\": "src/" 809 | } 810 | }, 811 | "notification-url": "https://packagist.org/downloads/", 812 | "license": [ 813 | "MIT" 814 | ], 815 | "authors": [ 816 | { 817 | "name": "Jan Sorgalla", 818 | "email": "jsorgalla@gmail.com", 819 | "homepage": "https://sorgalla.com/" 820 | }, 821 | { 822 | "name": "Christian Lück", 823 | "email": "christian@clue.engineering", 824 | "homepage": "https://clue.engineering/" 825 | }, 826 | { 827 | "name": "Cees-Jan Kiewiet", 828 | "email": "reactphp@ceesjankiewiet.nl", 829 | "homepage": "https://wyrihaximus.net/" 830 | }, 831 | { 832 | "name": "Chris Boden", 833 | "email": "cboden@gmail.com", 834 | "homepage": "https://cboden.dev/" 835 | } 836 | ], 837 | "description": "A lightweight implementation of CommonJS Promises/A for PHP", 838 | "keywords": [ 839 | "promise", 840 | "promises" 841 | ], 842 | "support": { 843 | "issues": "https://github.com/reactphp/promise/issues", 844 | "source": "https://github.com/reactphp/promise/tree/v2.9.0" 845 | }, 846 | "funding": [ 847 | { 848 | "url": "https://github.com/WyriHaximus", 849 | "type": "github" 850 | }, 851 | { 852 | "url": "https://github.com/clue", 853 | "type": "github" 854 | } 855 | ], 856 | "time": "2022-02-11T10:27:51+00:00" 857 | }, 858 | { 859 | "name": "seld/jsonlint", 860 | "version": "1.9.0", 861 | "source": { 862 | "type": "git", 863 | "url": "https://github.com/Seldaek/jsonlint.git", 864 | "reference": "4211420d25eba80712bff236a98960ef68b866b7" 865 | }, 866 | "dist": { 867 | "type": "zip", 868 | "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/4211420d25eba80712bff236a98960ef68b866b7", 869 | "reference": "4211420d25eba80712bff236a98960ef68b866b7", 870 | "shasum": "" 871 | }, 872 | "require": { 873 | "php": "^5.3 || ^7.0 || ^8.0" 874 | }, 875 | "require-dev": { 876 | "phpstan/phpstan": "^1.5", 877 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" 878 | }, 879 | "bin": [ 880 | "bin/jsonlint" 881 | ], 882 | "type": "library", 883 | "autoload": { 884 | "psr-4": { 885 | "Seld\\JsonLint\\": "src/Seld/JsonLint/" 886 | } 887 | }, 888 | "notification-url": "https://packagist.org/downloads/", 889 | "license": [ 890 | "MIT" 891 | ], 892 | "authors": [ 893 | { 894 | "name": "Jordi Boggiano", 895 | "email": "j.boggiano@seld.be", 896 | "homepage": "http://seld.be" 897 | } 898 | ], 899 | "description": "JSON Linter", 900 | "keywords": [ 901 | "json", 902 | "linter", 903 | "parser", 904 | "validator" 905 | ], 906 | "support": { 907 | "issues": "https://github.com/Seldaek/jsonlint/issues", 908 | "source": "https://github.com/Seldaek/jsonlint/tree/1.9.0" 909 | }, 910 | "funding": [ 911 | { 912 | "url": "https://github.com/Seldaek", 913 | "type": "github" 914 | }, 915 | { 916 | "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", 917 | "type": "tidelift" 918 | } 919 | ], 920 | "time": "2022-04-01T13:37:23+00:00" 921 | }, 922 | { 923 | "name": "seld/phar-utils", 924 | "version": "1.2.0", 925 | "source": { 926 | "type": "git", 927 | "url": "https://github.com/Seldaek/phar-utils.git", 928 | "reference": "9f3452c93ff423469c0d56450431562ca423dcee" 929 | }, 930 | "dist": { 931 | "type": "zip", 932 | "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/9f3452c93ff423469c0d56450431562ca423dcee", 933 | "reference": "9f3452c93ff423469c0d56450431562ca423dcee", 934 | "shasum": "" 935 | }, 936 | "require": { 937 | "php": ">=5.3" 938 | }, 939 | "type": "library", 940 | "extra": { 941 | "branch-alias": { 942 | "dev-master": "1.x-dev" 943 | } 944 | }, 945 | "autoload": { 946 | "psr-4": { 947 | "Seld\\PharUtils\\": "src/" 948 | } 949 | }, 950 | "notification-url": "https://packagist.org/downloads/", 951 | "license": [ 952 | "MIT" 953 | ], 954 | "authors": [ 955 | { 956 | "name": "Jordi Boggiano", 957 | "email": "j.boggiano@seld.be" 958 | } 959 | ], 960 | "description": "PHAR file format utilities, for when PHP phars you up", 961 | "keywords": [ 962 | "phar" 963 | ], 964 | "support": { 965 | "issues": "https://github.com/Seldaek/phar-utils/issues", 966 | "source": "https://github.com/Seldaek/phar-utils/tree/1.2.0" 967 | }, 968 | "time": "2021-12-10T11:20:11+00:00" 969 | }, 970 | { 971 | "name": "symfony/console", 972 | "version": "v5.4.7", 973 | "source": { 974 | "type": "git", 975 | "url": "https://github.com/symfony/console.git", 976 | "reference": "900275254f0a1a2afff1ab0e11abd5587a10e1d6" 977 | }, 978 | "dist": { 979 | "type": "zip", 980 | "url": "https://api.github.com/repos/symfony/console/zipball/900275254f0a1a2afff1ab0e11abd5587a10e1d6", 981 | "reference": "900275254f0a1a2afff1ab0e11abd5587a10e1d6", 982 | "shasum": "" 983 | }, 984 | "require": { 985 | "php": ">=7.2.5", 986 | "symfony/deprecation-contracts": "^2.1|^3", 987 | "symfony/polyfill-mbstring": "~1.0", 988 | "symfony/polyfill-php73": "^1.9", 989 | "symfony/polyfill-php80": "^1.16", 990 | "symfony/service-contracts": "^1.1|^2|^3", 991 | "symfony/string": "^5.1|^6.0" 992 | }, 993 | "conflict": { 994 | "psr/log": ">=3", 995 | "symfony/dependency-injection": "<4.4", 996 | "symfony/dotenv": "<5.1", 997 | "symfony/event-dispatcher": "<4.4", 998 | "symfony/lock": "<4.4", 999 | "symfony/process": "<4.4" 1000 | }, 1001 | "provide": { 1002 | "psr/log-implementation": "1.0|2.0" 1003 | }, 1004 | "require-dev": { 1005 | "psr/log": "^1|^2", 1006 | "symfony/config": "^4.4|^5.0|^6.0", 1007 | "symfony/dependency-injection": "^4.4|^5.0|^6.0", 1008 | "symfony/event-dispatcher": "^4.4|^5.0|^6.0", 1009 | "symfony/lock": "^4.4|^5.0|^6.0", 1010 | "symfony/process": "^4.4|^5.0|^6.0", 1011 | "symfony/var-dumper": "^4.4|^5.0|^6.0" 1012 | }, 1013 | "suggest": { 1014 | "psr/log": "For using the console logger", 1015 | "symfony/event-dispatcher": "", 1016 | "symfony/lock": "", 1017 | "symfony/process": "" 1018 | }, 1019 | "type": "library", 1020 | "autoload": { 1021 | "psr-4": { 1022 | "Symfony\\Component\\Console\\": "" 1023 | }, 1024 | "exclude-from-classmap": [ 1025 | "/Tests/" 1026 | ] 1027 | }, 1028 | "notification-url": "https://packagist.org/downloads/", 1029 | "license": [ 1030 | "MIT" 1031 | ], 1032 | "authors": [ 1033 | { 1034 | "name": "Fabien Potencier", 1035 | "email": "fabien@symfony.com" 1036 | }, 1037 | { 1038 | "name": "Symfony Community", 1039 | "homepage": "https://symfony.com/contributors" 1040 | } 1041 | ], 1042 | "description": "Eases the creation of beautiful and testable command line interfaces", 1043 | "homepage": "https://symfony.com", 1044 | "keywords": [ 1045 | "cli", 1046 | "command line", 1047 | "console", 1048 | "terminal" 1049 | ], 1050 | "support": { 1051 | "source": "https://github.com/symfony/console/tree/v5.4.7" 1052 | }, 1053 | "funding": [ 1054 | { 1055 | "url": "https://symfony.com/sponsor", 1056 | "type": "custom" 1057 | }, 1058 | { 1059 | "url": "https://github.com/fabpot", 1060 | "type": "github" 1061 | }, 1062 | { 1063 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1064 | "type": "tidelift" 1065 | } 1066 | ], 1067 | "time": "2022-03-31T17:09:19+00:00" 1068 | }, 1069 | { 1070 | "name": "symfony/deprecation-contracts", 1071 | "version": "v2.5.1", 1072 | "source": { 1073 | "type": "git", 1074 | "url": "https://github.com/symfony/deprecation-contracts.git", 1075 | "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" 1076 | }, 1077 | "dist": { 1078 | "type": "zip", 1079 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", 1080 | "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", 1081 | "shasum": "" 1082 | }, 1083 | "require": { 1084 | "php": ">=7.1" 1085 | }, 1086 | "type": "library", 1087 | "extra": { 1088 | "branch-alias": { 1089 | "dev-main": "2.5-dev" 1090 | }, 1091 | "thanks": { 1092 | "name": "symfony/contracts", 1093 | "url": "https://github.com/symfony/contracts" 1094 | } 1095 | }, 1096 | "autoload": { 1097 | "files": [ 1098 | "function.php" 1099 | ] 1100 | }, 1101 | "notification-url": "https://packagist.org/downloads/", 1102 | "license": [ 1103 | "MIT" 1104 | ], 1105 | "authors": [ 1106 | { 1107 | "name": "Nicolas Grekas", 1108 | "email": "p@tchwork.com" 1109 | }, 1110 | { 1111 | "name": "Symfony Community", 1112 | "homepage": "https://symfony.com/contributors" 1113 | } 1114 | ], 1115 | "description": "A generic function and convention to trigger deprecation notices", 1116 | "homepage": "https://symfony.com", 1117 | "support": { 1118 | "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" 1119 | }, 1120 | "funding": [ 1121 | { 1122 | "url": "https://symfony.com/sponsor", 1123 | "type": "custom" 1124 | }, 1125 | { 1126 | "url": "https://github.com/fabpot", 1127 | "type": "github" 1128 | }, 1129 | { 1130 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1131 | "type": "tidelift" 1132 | } 1133 | ], 1134 | "time": "2022-01-02T09:53:40+00:00" 1135 | }, 1136 | { 1137 | "name": "symfony/filesystem", 1138 | "version": "v5.4.7", 1139 | "source": { 1140 | "type": "git", 1141 | "url": "https://github.com/symfony/filesystem.git", 1142 | "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f" 1143 | }, 1144 | "dist": { 1145 | "type": "zip", 1146 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/3a4442138d80c9f7b600fb297534ac718b61d37f", 1147 | "reference": "3a4442138d80c9f7b600fb297534ac718b61d37f", 1148 | "shasum": "" 1149 | }, 1150 | "require": { 1151 | "php": ">=7.2.5", 1152 | "symfony/polyfill-ctype": "~1.8", 1153 | "symfony/polyfill-mbstring": "~1.8", 1154 | "symfony/polyfill-php80": "^1.16" 1155 | }, 1156 | "type": "library", 1157 | "autoload": { 1158 | "psr-4": { 1159 | "Symfony\\Component\\Filesystem\\": "" 1160 | }, 1161 | "exclude-from-classmap": [ 1162 | "/Tests/" 1163 | ] 1164 | }, 1165 | "notification-url": "https://packagist.org/downloads/", 1166 | "license": [ 1167 | "MIT" 1168 | ], 1169 | "authors": [ 1170 | { 1171 | "name": "Fabien Potencier", 1172 | "email": "fabien@symfony.com" 1173 | }, 1174 | { 1175 | "name": "Symfony Community", 1176 | "homepage": "https://symfony.com/contributors" 1177 | } 1178 | ], 1179 | "description": "Provides basic utilities for the filesystem", 1180 | "homepage": "https://symfony.com", 1181 | "support": { 1182 | "source": "https://github.com/symfony/filesystem/tree/v5.4.7" 1183 | }, 1184 | "funding": [ 1185 | { 1186 | "url": "https://symfony.com/sponsor", 1187 | "type": "custom" 1188 | }, 1189 | { 1190 | "url": "https://github.com/fabpot", 1191 | "type": "github" 1192 | }, 1193 | { 1194 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1195 | "type": "tidelift" 1196 | } 1197 | ], 1198 | "time": "2022-04-01T12:33:59+00:00" 1199 | }, 1200 | { 1201 | "name": "symfony/polyfill-ctype", 1202 | "version": "v1.25.0", 1203 | "source": { 1204 | "type": "git", 1205 | "url": "https://github.com/symfony/polyfill-ctype.git", 1206 | "reference": "30885182c981ab175d4d034db0f6f469898070ab" 1207 | }, 1208 | "dist": { 1209 | "type": "zip", 1210 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", 1211 | "reference": "30885182c981ab175d4d034db0f6f469898070ab", 1212 | "shasum": "" 1213 | }, 1214 | "require": { 1215 | "php": ">=7.1" 1216 | }, 1217 | "provide": { 1218 | "ext-ctype": "*" 1219 | }, 1220 | "suggest": { 1221 | "ext-ctype": "For best performance" 1222 | }, 1223 | "type": "library", 1224 | "extra": { 1225 | "branch-alias": { 1226 | "dev-main": "1.23-dev" 1227 | }, 1228 | "thanks": { 1229 | "name": "symfony/polyfill", 1230 | "url": "https://github.com/symfony/polyfill" 1231 | } 1232 | }, 1233 | "autoload": { 1234 | "files": [ 1235 | "bootstrap.php" 1236 | ], 1237 | "psr-4": { 1238 | "Symfony\\Polyfill\\Ctype\\": "" 1239 | } 1240 | }, 1241 | "notification-url": "https://packagist.org/downloads/", 1242 | "license": [ 1243 | "MIT" 1244 | ], 1245 | "authors": [ 1246 | { 1247 | "name": "Gert de Pagter", 1248 | "email": "BackEndTea@gmail.com" 1249 | }, 1250 | { 1251 | "name": "Symfony Community", 1252 | "homepage": "https://symfony.com/contributors" 1253 | } 1254 | ], 1255 | "description": "Symfony polyfill for ctype functions", 1256 | "homepage": "https://symfony.com", 1257 | "keywords": [ 1258 | "compatibility", 1259 | "ctype", 1260 | "polyfill", 1261 | "portable" 1262 | ], 1263 | "support": { 1264 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" 1265 | }, 1266 | "funding": [ 1267 | { 1268 | "url": "https://symfony.com/sponsor", 1269 | "type": "custom" 1270 | }, 1271 | { 1272 | "url": "https://github.com/fabpot", 1273 | "type": "github" 1274 | }, 1275 | { 1276 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1277 | "type": "tidelift" 1278 | } 1279 | ], 1280 | "time": "2021-10-20T20:35:02+00:00" 1281 | }, 1282 | { 1283 | "name": "symfony/polyfill-intl-grapheme", 1284 | "version": "v1.25.0", 1285 | "source": { 1286 | "type": "git", 1287 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 1288 | "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" 1289 | }, 1290 | "dist": { 1291 | "type": "zip", 1292 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", 1293 | "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", 1294 | "shasum": "" 1295 | }, 1296 | "require": { 1297 | "php": ">=7.1" 1298 | }, 1299 | "suggest": { 1300 | "ext-intl": "For best performance" 1301 | }, 1302 | "type": "library", 1303 | "extra": { 1304 | "branch-alias": { 1305 | "dev-main": "1.23-dev" 1306 | }, 1307 | "thanks": { 1308 | "name": "symfony/polyfill", 1309 | "url": "https://github.com/symfony/polyfill" 1310 | } 1311 | }, 1312 | "autoload": { 1313 | "files": [ 1314 | "bootstrap.php" 1315 | ], 1316 | "psr-4": { 1317 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 1318 | } 1319 | }, 1320 | "notification-url": "https://packagist.org/downloads/", 1321 | "license": [ 1322 | "MIT" 1323 | ], 1324 | "authors": [ 1325 | { 1326 | "name": "Nicolas Grekas", 1327 | "email": "p@tchwork.com" 1328 | }, 1329 | { 1330 | "name": "Symfony Community", 1331 | "homepage": "https://symfony.com/contributors" 1332 | } 1333 | ], 1334 | "description": "Symfony polyfill for intl's grapheme_* functions", 1335 | "homepage": "https://symfony.com", 1336 | "keywords": [ 1337 | "compatibility", 1338 | "grapheme", 1339 | "intl", 1340 | "polyfill", 1341 | "portable", 1342 | "shim" 1343 | ], 1344 | "support": { 1345 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" 1346 | }, 1347 | "funding": [ 1348 | { 1349 | "url": "https://symfony.com/sponsor", 1350 | "type": "custom" 1351 | }, 1352 | { 1353 | "url": "https://github.com/fabpot", 1354 | "type": "github" 1355 | }, 1356 | { 1357 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1358 | "type": "tidelift" 1359 | } 1360 | ], 1361 | "time": "2021-11-23T21:10:46+00:00" 1362 | }, 1363 | { 1364 | "name": "symfony/polyfill-intl-normalizer", 1365 | "version": "v1.25.0", 1366 | "source": { 1367 | "type": "git", 1368 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 1369 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" 1370 | }, 1371 | "dist": { 1372 | "type": "zip", 1373 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", 1374 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", 1375 | "shasum": "" 1376 | }, 1377 | "require": { 1378 | "php": ">=7.1" 1379 | }, 1380 | "suggest": { 1381 | "ext-intl": "For best performance" 1382 | }, 1383 | "type": "library", 1384 | "extra": { 1385 | "branch-alias": { 1386 | "dev-main": "1.23-dev" 1387 | }, 1388 | "thanks": { 1389 | "name": "symfony/polyfill", 1390 | "url": "https://github.com/symfony/polyfill" 1391 | } 1392 | }, 1393 | "autoload": { 1394 | "files": [ 1395 | "bootstrap.php" 1396 | ], 1397 | "psr-4": { 1398 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 1399 | }, 1400 | "classmap": [ 1401 | "Resources/stubs" 1402 | ] 1403 | }, 1404 | "notification-url": "https://packagist.org/downloads/", 1405 | "license": [ 1406 | "MIT" 1407 | ], 1408 | "authors": [ 1409 | { 1410 | "name": "Nicolas Grekas", 1411 | "email": "p@tchwork.com" 1412 | }, 1413 | { 1414 | "name": "Symfony Community", 1415 | "homepage": "https://symfony.com/contributors" 1416 | } 1417 | ], 1418 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 1419 | "homepage": "https://symfony.com", 1420 | "keywords": [ 1421 | "compatibility", 1422 | "intl", 1423 | "normalizer", 1424 | "polyfill", 1425 | "portable", 1426 | "shim" 1427 | ], 1428 | "support": { 1429 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" 1430 | }, 1431 | "funding": [ 1432 | { 1433 | "url": "https://symfony.com/sponsor", 1434 | "type": "custom" 1435 | }, 1436 | { 1437 | "url": "https://github.com/fabpot", 1438 | "type": "github" 1439 | }, 1440 | { 1441 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1442 | "type": "tidelift" 1443 | } 1444 | ], 1445 | "time": "2021-02-19T12:13:01+00:00" 1446 | }, 1447 | { 1448 | "name": "symfony/polyfill-mbstring", 1449 | "version": "v1.25.0", 1450 | "source": { 1451 | "type": "git", 1452 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1453 | "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" 1454 | }, 1455 | "dist": { 1456 | "type": "zip", 1457 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", 1458 | "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", 1459 | "shasum": "" 1460 | }, 1461 | "require": { 1462 | "php": ">=7.1" 1463 | }, 1464 | "provide": { 1465 | "ext-mbstring": "*" 1466 | }, 1467 | "suggest": { 1468 | "ext-mbstring": "For best performance" 1469 | }, 1470 | "type": "library", 1471 | "extra": { 1472 | "branch-alias": { 1473 | "dev-main": "1.23-dev" 1474 | }, 1475 | "thanks": { 1476 | "name": "symfony/polyfill", 1477 | "url": "https://github.com/symfony/polyfill" 1478 | } 1479 | }, 1480 | "autoload": { 1481 | "files": [ 1482 | "bootstrap.php" 1483 | ], 1484 | "psr-4": { 1485 | "Symfony\\Polyfill\\Mbstring\\": "" 1486 | } 1487 | }, 1488 | "notification-url": "https://packagist.org/downloads/", 1489 | "license": [ 1490 | "MIT" 1491 | ], 1492 | "authors": [ 1493 | { 1494 | "name": "Nicolas Grekas", 1495 | "email": "p@tchwork.com" 1496 | }, 1497 | { 1498 | "name": "Symfony Community", 1499 | "homepage": "https://symfony.com/contributors" 1500 | } 1501 | ], 1502 | "description": "Symfony polyfill for the Mbstring extension", 1503 | "homepage": "https://symfony.com", 1504 | "keywords": [ 1505 | "compatibility", 1506 | "mbstring", 1507 | "polyfill", 1508 | "portable", 1509 | "shim" 1510 | ], 1511 | "support": { 1512 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" 1513 | }, 1514 | "funding": [ 1515 | { 1516 | "url": "https://symfony.com/sponsor", 1517 | "type": "custom" 1518 | }, 1519 | { 1520 | "url": "https://github.com/fabpot", 1521 | "type": "github" 1522 | }, 1523 | { 1524 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1525 | "type": "tidelift" 1526 | } 1527 | ], 1528 | "time": "2021-11-30T18:21:41+00:00" 1529 | }, 1530 | { 1531 | "name": "symfony/polyfill-php73", 1532 | "version": "v1.25.0", 1533 | "source": { 1534 | "type": "git", 1535 | "url": "https://github.com/symfony/polyfill-php73.git", 1536 | "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" 1537 | }, 1538 | "dist": { 1539 | "type": "zip", 1540 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", 1541 | "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", 1542 | "shasum": "" 1543 | }, 1544 | "require": { 1545 | "php": ">=7.1" 1546 | }, 1547 | "type": "library", 1548 | "extra": { 1549 | "branch-alias": { 1550 | "dev-main": "1.23-dev" 1551 | }, 1552 | "thanks": { 1553 | "name": "symfony/polyfill", 1554 | "url": "https://github.com/symfony/polyfill" 1555 | } 1556 | }, 1557 | "autoload": { 1558 | "files": [ 1559 | "bootstrap.php" 1560 | ], 1561 | "psr-4": { 1562 | "Symfony\\Polyfill\\Php73\\": "" 1563 | }, 1564 | "classmap": [ 1565 | "Resources/stubs" 1566 | ] 1567 | }, 1568 | "notification-url": "https://packagist.org/downloads/", 1569 | "license": [ 1570 | "MIT" 1571 | ], 1572 | "authors": [ 1573 | { 1574 | "name": "Nicolas Grekas", 1575 | "email": "p@tchwork.com" 1576 | }, 1577 | { 1578 | "name": "Symfony Community", 1579 | "homepage": "https://symfony.com/contributors" 1580 | } 1581 | ], 1582 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 1583 | "homepage": "https://symfony.com", 1584 | "keywords": [ 1585 | "compatibility", 1586 | "polyfill", 1587 | "portable", 1588 | "shim" 1589 | ], 1590 | "support": { 1591 | "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" 1592 | }, 1593 | "funding": [ 1594 | { 1595 | "url": "https://symfony.com/sponsor", 1596 | "type": "custom" 1597 | }, 1598 | { 1599 | "url": "https://github.com/fabpot", 1600 | "type": "github" 1601 | }, 1602 | { 1603 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1604 | "type": "tidelift" 1605 | } 1606 | ], 1607 | "time": "2021-06-05T21:20:04+00:00" 1608 | }, 1609 | { 1610 | "name": "symfony/polyfill-php80", 1611 | "version": "v1.25.0", 1612 | "source": { 1613 | "type": "git", 1614 | "url": "https://github.com/symfony/polyfill-php80.git", 1615 | "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" 1616 | }, 1617 | "dist": { 1618 | "type": "zip", 1619 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", 1620 | "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", 1621 | "shasum": "" 1622 | }, 1623 | "require": { 1624 | "php": ">=7.1" 1625 | }, 1626 | "type": "library", 1627 | "extra": { 1628 | "branch-alias": { 1629 | "dev-main": "1.23-dev" 1630 | }, 1631 | "thanks": { 1632 | "name": "symfony/polyfill", 1633 | "url": "https://github.com/symfony/polyfill" 1634 | } 1635 | }, 1636 | "autoload": { 1637 | "files": [ 1638 | "bootstrap.php" 1639 | ], 1640 | "psr-4": { 1641 | "Symfony\\Polyfill\\Php80\\": "" 1642 | }, 1643 | "classmap": [ 1644 | "Resources/stubs" 1645 | ] 1646 | }, 1647 | "notification-url": "https://packagist.org/downloads/", 1648 | "license": [ 1649 | "MIT" 1650 | ], 1651 | "authors": [ 1652 | { 1653 | "name": "Ion Bazan", 1654 | "email": "ion.bazan@gmail.com" 1655 | }, 1656 | { 1657 | "name": "Nicolas Grekas", 1658 | "email": "p@tchwork.com" 1659 | }, 1660 | { 1661 | "name": "Symfony Community", 1662 | "homepage": "https://symfony.com/contributors" 1663 | } 1664 | ], 1665 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 1666 | "homepage": "https://symfony.com", 1667 | "keywords": [ 1668 | "compatibility", 1669 | "polyfill", 1670 | "portable", 1671 | "shim" 1672 | ], 1673 | "support": { 1674 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" 1675 | }, 1676 | "funding": [ 1677 | { 1678 | "url": "https://symfony.com/sponsor", 1679 | "type": "custom" 1680 | }, 1681 | { 1682 | "url": "https://github.com/fabpot", 1683 | "type": "github" 1684 | }, 1685 | { 1686 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1687 | "type": "tidelift" 1688 | } 1689 | ], 1690 | "time": "2022-03-04T08:16:47+00:00" 1691 | }, 1692 | { 1693 | "name": "symfony/process", 1694 | "version": "v5.4.7", 1695 | "source": { 1696 | "type": "git", 1697 | "url": "https://github.com/symfony/process.git", 1698 | "reference": "38a44b2517b470a436e1c944bf9b9ba3961137fb" 1699 | }, 1700 | "dist": { 1701 | "type": "zip", 1702 | "url": "https://api.github.com/repos/symfony/process/zipball/38a44b2517b470a436e1c944bf9b9ba3961137fb", 1703 | "reference": "38a44b2517b470a436e1c944bf9b9ba3961137fb", 1704 | "shasum": "" 1705 | }, 1706 | "require": { 1707 | "php": ">=7.2.5", 1708 | "symfony/polyfill-php80": "^1.16" 1709 | }, 1710 | "type": "library", 1711 | "autoload": { 1712 | "psr-4": { 1713 | "Symfony\\Component\\Process\\": "" 1714 | }, 1715 | "exclude-from-classmap": [ 1716 | "/Tests/" 1717 | ] 1718 | }, 1719 | "notification-url": "https://packagist.org/downloads/", 1720 | "license": [ 1721 | "MIT" 1722 | ], 1723 | "authors": [ 1724 | { 1725 | "name": "Fabien Potencier", 1726 | "email": "fabien@symfony.com" 1727 | }, 1728 | { 1729 | "name": "Symfony Community", 1730 | "homepage": "https://symfony.com/contributors" 1731 | } 1732 | ], 1733 | "description": "Executes commands in sub-processes", 1734 | "homepage": "https://symfony.com", 1735 | "support": { 1736 | "source": "https://github.com/symfony/process/tree/v5.4.7" 1737 | }, 1738 | "funding": [ 1739 | { 1740 | "url": "https://symfony.com/sponsor", 1741 | "type": "custom" 1742 | }, 1743 | { 1744 | "url": "https://github.com/fabpot", 1745 | "type": "github" 1746 | }, 1747 | { 1748 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1749 | "type": "tidelift" 1750 | } 1751 | ], 1752 | "time": "2022-03-18T16:18:52+00:00" 1753 | }, 1754 | { 1755 | "name": "symfony/service-contracts", 1756 | "version": "v2.5.1", 1757 | "source": { 1758 | "type": "git", 1759 | "url": "https://github.com/symfony/service-contracts.git", 1760 | "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" 1761 | }, 1762 | "dist": { 1763 | "type": "zip", 1764 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", 1765 | "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", 1766 | "shasum": "" 1767 | }, 1768 | "require": { 1769 | "php": ">=7.2.5", 1770 | "psr/container": "^1.1", 1771 | "symfony/deprecation-contracts": "^2.1|^3" 1772 | }, 1773 | "conflict": { 1774 | "ext-psr": "<1.1|>=2" 1775 | }, 1776 | "suggest": { 1777 | "symfony/service-implementation": "" 1778 | }, 1779 | "type": "library", 1780 | "extra": { 1781 | "branch-alias": { 1782 | "dev-main": "2.5-dev" 1783 | }, 1784 | "thanks": { 1785 | "name": "symfony/contracts", 1786 | "url": "https://github.com/symfony/contracts" 1787 | } 1788 | }, 1789 | "autoload": { 1790 | "psr-4": { 1791 | "Symfony\\Contracts\\Service\\": "" 1792 | } 1793 | }, 1794 | "notification-url": "https://packagist.org/downloads/", 1795 | "license": [ 1796 | "MIT" 1797 | ], 1798 | "authors": [ 1799 | { 1800 | "name": "Nicolas Grekas", 1801 | "email": "p@tchwork.com" 1802 | }, 1803 | { 1804 | "name": "Symfony Community", 1805 | "homepage": "https://symfony.com/contributors" 1806 | } 1807 | ], 1808 | "description": "Generic abstractions related to writing services", 1809 | "homepage": "https://symfony.com", 1810 | "keywords": [ 1811 | "abstractions", 1812 | "contracts", 1813 | "decoupling", 1814 | "interfaces", 1815 | "interoperability", 1816 | "standards" 1817 | ], 1818 | "support": { 1819 | "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" 1820 | }, 1821 | "funding": [ 1822 | { 1823 | "url": "https://symfony.com/sponsor", 1824 | "type": "custom" 1825 | }, 1826 | { 1827 | "url": "https://github.com/fabpot", 1828 | "type": "github" 1829 | }, 1830 | { 1831 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1832 | "type": "tidelift" 1833 | } 1834 | ], 1835 | "time": "2022-03-13T20:07:29+00:00" 1836 | }, 1837 | { 1838 | "name": "symfony/string", 1839 | "version": "v5.4.3", 1840 | "source": { 1841 | "type": "git", 1842 | "url": "https://github.com/symfony/string.git", 1843 | "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10" 1844 | }, 1845 | "dist": { 1846 | "type": "zip", 1847 | "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10", 1848 | "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10", 1849 | "shasum": "" 1850 | }, 1851 | "require": { 1852 | "php": ">=7.2.5", 1853 | "symfony/polyfill-ctype": "~1.8", 1854 | "symfony/polyfill-intl-grapheme": "~1.0", 1855 | "symfony/polyfill-intl-normalizer": "~1.0", 1856 | "symfony/polyfill-mbstring": "~1.0", 1857 | "symfony/polyfill-php80": "~1.15" 1858 | }, 1859 | "conflict": { 1860 | "symfony/translation-contracts": ">=3.0" 1861 | }, 1862 | "require-dev": { 1863 | "symfony/error-handler": "^4.4|^5.0|^6.0", 1864 | "symfony/http-client": "^4.4|^5.0|^6.0", 1865 | "symfony/translation-contracts": "^1.1|^2", 1866 | "symfony/var-exporter": "^4.4|^5.0|^6.0" 1867 | }, 1868 | "type": "library", 1869 | "autoload": { 1870 | "files": [ 1871 | "Resources/functions.php" 1872 | ], 1873 | "psr-4": { 1874 | "Symfony\\Component\\String\\": "" 1875 | }, 1876 | "exclude-from-classmap": [ 1877 | "/Tests/" 1878 | ] 1879 | }, 1880 | "notification-url": "https://packagist.org/downloads/", 1881 | "license": [ 1882 | "MIT" 1883 | ], 1884 | "authors": [ 1885 | { 1886 | "name": "Nicolas Grekas", 1887 | "email": "p@tchwork.com" 1888 | }, 1889 | { 1890 | "name": "Symfony Community", 1891 | "homepage": "https://symfony.com/contributors" 1892 | } 1893 | ], 1894 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 1895 | "homepage": "https://symfony.com", 1896 | "keywords": [ 1897 | "grapheme", 1898 | "i18n", 1899 | "string", 1900 | "unicode", 1901 | "utf-8", 1902 | "utf8" 1903 | ], 1904 | "support": { 1905 | "source": "https://github.com/symfony/string/tree/v5.4.3" 1906 | }, 1907 | "funding": [ 1908 | { 1909 | "url": "https://symfony.com/sponsor", 1910 | "type": "custom" 1911 | }, 1912 | { 1913 | "url": "https://github.com/fabpot", 1914 | "type": "github" 1915 | }, 1916 | { 1917 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1918 | "type": "tidelift" 1919 | } 1920 | ], 1921 | "time": "2022-01-02T09:53:40+00:00" 1922 | } 1923 | ], 1924 | "aliases": [], 1925 | "minimum-stability": "stable", 1926 | "stability-flags": [], 1927 | "prefer-stable": false, 1928 | "prefer-lowest": false, 1929 | "platform": { 1930 | "composer-plugin-api": "^2.0" 1931 | }, 1932 | "platform-dev": [], 1933 | "plugin-api-version": "2.3.0" 1934 | } 1935 | --------------------------------------------------------------------------------