├── .gitignore ├── src ├── concerns │ ├── InteractsWithRequest.php │ ├── ObjectAccess.php │ └── InteractsWithHttp.php ├── Exception.php ├── Client.php ├── Group.php ├── Request.php └── request │ └── default.php ├── tests └── ClientTest.php ├── composer.json ├── phpunit.xml.dist ├── README.md └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | vendor/ 3 | .idea/ 4 | -------------------------------------------------------------------------------- /src/concerns/InteractsWithRequest.php: -------------------------------------------------------------------------------- 1 | calendarMonth() 15 | ->withYearMonth('2015-1') 16 | ->request(); 17 | 18 | var_dump($result); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Exception.php: -------------------------------------------------------------------------------- 1 | errorCode = $code; 13 | } 14 | 15 | /** 16 | * 返回错误码 17 | * @return string 18 | */ 19 | public function getErrorCode() 20 | { 21 | return $this->errorCode; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "topthink/think-api", 3 | "license": "Apache-2.0", 4 | "authors": [ 5 | { 6 | "name": "yunwuxin", 7 | "email": "448901948@qq.com" 8 | } 9 | ], 10 | "require": { 11 | "guzzlehttp/guzzle": "^6.5 || ^7.0", 12 | "topthink/think-helper": "^1.0 || ^3.1" 13 | }, 14 | "require-dev": { 15 | "phpunit/phpunit": "^7.0" 16 | }, 17 | "autoload": { 18 | "psr-4": { 19 | "think\\api\\": "src" 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Client.php: -------------------------------------------------------------------------------- 1 | {$method}(...$params); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | ./tests 17 | 18 | 19 | 20 | 21 | ./src 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/concerns/ObjectAccess.php: -------------------------------------------------------------------------------- 1 | data[$name])) { 15 | return null; 16 | } 17 | 18 | return json_decode(json_encode($this->data))->$name; 19 | } 20 | 21 | /** 22 | * @param string $name 23 | * @param mixed $value 24 | */ 25 | public function __set($name, $value) 26 | { 27 | $this->data[$name] = $value; 28 | } 29 | 30 | /** 31 | * @param string $name 32 | * 33 | * @return bool 34 | */ 35 | public function __isset($name) 36 | { 37 | return isset($this->data[$name]); 38 | } 39 | 40 | /** 41 | * @param $name 42 | * 43 | * @return void 44 | */ 45 | public function __unset($name) 46 | { 47 | unset($this->data[$name]); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Group.php: -------------------------------------------------------------------------------- 1 | name = $name; 15 | $this->client = $client; 16 | } 17 | 18 | public function request($method, $uri = '', $options = []) 19 | { 20 | if ($this->name) { 21 | $uri = $this->name . '/' . $uri; 22 | } 23 | return $this->client->request($method, $uri, $options); 24 | } 25 | 26 | protected function getRequestClass($method) 27 | { 28 | $className = ucfirst($method); 29 | if ($this->name) { 30 | $className = $this->name . "\\" . $className; 31 | } 32 | 33 | return "\\think\\api\\request\\" . $className; 34 | } 35 | 36 | public function __call($method, $params) 37 | { 38 | 39 | $reqClass = $this->getRequestClass($method); 40 | 41 | if (class_exists($reqClass)) { 42 | return new $reqClass($this, ...$params); 43 | } 44 | 45 | throw new InvalidArgumentException("Api {$method} not found!"); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Think Api SDK For PHP 2 | 3 | ## `ThinkAPI` 4 | 5 | `ThinkAPI`是`ThinkPHP`官方推出的统一`API`接口服务,提供接口调用服务及开发`SDK`,旨在帮助`ThinkPHP`开发者更方便的调用官方及第三方的提供的各类`API`接口及服务,从而更好的构建开发者生态,详细[参考这里](https://docs.topthink.com/think-api/)。 6 | 7 | 8 | ## 安装依赖 9 | 10 | 如果已在系统上[全局安装 Composer](https://getcomposer.org/doc/00-intro.md#globally) ,请直接在项目目录中运行以下内容来安装 Think Api SDK For PHP 作为依赖项: 11 | ``` 12 | composer require topthink/think-api 13 | ``` 14 | > 一些用户可能由于网络问题无法安装,可以使用[阿里云 Composer 全量镜像](https://developer.aliyun.com/composer) 。 15 | 16 | 17 | ## 快速使用 18 | 19 | 以查询[身份证所属地区]()接口为例 20 | 21 | ~~~ 22 | use think\api\Client; 23 | 24 | $client = new Client("YourAppCode"); 25 | 26 | $result = $client->idcardIndex() 27 | ->withCardno('身份证号码') 28 | ->request(); 29 | ~~~ 30 | 31 | 所有的接口服务和方法都支持IDE自动提示和完成(请务必注意方法大小写必须保持一致),基本上不需要文档即可完成接口开发工作,`ThinkAPI`所有的API调用服务必须设置`appCode`值,用于接口调用的身份认证。 32 | 33 | >`AppCode`的值可以在[官方服务市场](https://market.topthink.com/)`->`我的服务`->`[安全信息](https://market.topthink.com/my/security)里面获取到,每个用户账号拥有一个唯一的`AppCode`值(请不要随意泄露)。 34 | 35 | 该SDK服务仅支持官方已经接入的API接口(所有支持的接口都在官方[API市场](https://market.topthink.com/api)),目前接口数量正在扩充中,你可以联系我们反馈你需要的API接口,我们来统一进行接入。 36 | 37 | ## 返回数据 38 | 39 | `ThinkAPI`所有的接口返回数据为`JSON`格式,通用规范如下: 40 | 41 | | 名称 | 类型 | 说明 | 42 | | --- | --- | --- | 43 | | code | int | 返回码,0 表示成功 其它表示失败 | 44 | | message| string | 返回提示信息 | 45 | | data| object | 返回数据 | 46 | 47 | > 如果为付费接口,则当`code`为0的时候计费,其中`data`包含的数据请参考具体的接口说明。 48 | -------------------------------------------------------------------------------- /src/concerns/InteractsWithHttp.php: -------------------------------------------------------------------------------- 1 | appCode = $appCode; 20 | $this->handleStack = HandlerStack::create($handler); 21 | } 22 | 23 | public function request($method, $uri = '', $options = []) 24 | { 25 | $client = $this->createHttpClient(); 26 | 27 | $response = $client->request($method, $uri, $options); 28 | 29 | return $this->parseResponse($response); 30 | } 31 | 32 | protected function parseResponse(ResponseInterface $response) 33 | { 34 | $result = $response->getBody()->getContents(); 35 | 36 | if (false !== strpos($response->getHeaderLine('Content-Type'), 'application/json')) { 37 | $result = json_decode($result, true); 38 | } 39 | 40 | return $result; 41 | } 42 | 43 | protected function createHttpClient() 44 | { 45 | return new Client([ 46 | 'base_uri' => $this->endpoint, 47 | 'handler' => $this->handleStack, 48 | 'headers' => [ 49 | 'Authorization' => "AppCode {$this->appCode}", 50 | 'User-Agent' => "ThinkApi/1.0", 51 | ], 52 | 'verify' => false, 53 | ]); 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/Request.php: -------------------------------------------------------------------------------- 1 | group = $group; 31 | } 32 | 33 | public function resolveOptions() 34 | { 35 | if ($this->method == 'GET') { 36 | $this->options['query'] = $this->data; 37 | } else { 38 | $this->options['form_params'] = $this->data; 39 | } 40 | } 41 | 42 | public function resolveUri() 43 | { 44 | if (empty($this->uri)) { 45 | $this->uri = Str::snake(class_basename(static::class), "/"); 46 | } 47 | } 48 | 49 | /** 50 | * @param $info bool 获取接口信息 51 | */ 52 | public function request($info = false) 53 | { 54 | $this->resolveOptions(); 55 | $this->resolveUri(); 56 | 57 | $method = $info ? 'OPTIONS' : $this->method; 58 | 59 | try { 60 | return $this->group->request($method, $this->uri, $this->options); 61 | } catch (RequestException $e) { 62 | if ($e->hasResponse()) { 63 | $response = $e->getResponse(); 64 | throw new Exception($response->getStatusCode(), $response->getBody()->getContents()); 65 | } 66 | throw $e; 67 | } 68 | } 69 | 70 | public function __call($name, $arguments) 71 | { 72 | if (strncmp($name, 'with', 4) === 0) { 73 | $parameter = Str::camel(mb_strcut($name, 4)); 74 | 75 | $value = $this->getCallArguments($name, $arguments); 76 | 77 | $this->data[$parameter] = $value; 78 | 79 | return $this; 80 | } 81 | 82 | throw new RuntimeException('Call to undefined method ' . __CLASS__ . '::' . $name . '()'); 83 | } 84 | 85 | /** 86 | * @param string $name 87 | * @param array $arguments 88 | * @param int $index 89 | * 90 | * @return mixed 91 | */ 92 | private function getCallArguments($name, array $arguments, $index = 0) 93 | { 94 | if (!isset($arguments[$index])) { 95 | throw new ArgumentCountError("Missing arguments to method $name"); 96 | } 97 | 98 | return $arguments[$index]; 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /src/request/default.php: -------------------------------------------------------------------------------- 1 | =5.5.0" 118 | }, 119 | "require-dev": { 120 | "phpunit/phpunit": "^4.0" 121 | }, 122 | "type": "library", 123 | "extra": { 124 | "branch-alias": { 125 | "dev-master": "1.4-dev" 126 | } 127 | }, 128 | "autoload": { 129 | "psr-4": { 130 | "GuzzleHttp\\Promise\\": "src/" 131 | }, 132 | "files": [ 133 | "src/functions_include.php" 134 | ] 135 | }, 136 | "notification-url": "https://packagist.org/downloads/", 137 | "license": [ 138 | "MIT" 139 | ], 140 | "authors": [ 141 | { 142 | "name": "Michael Dowling", 143 | "email": "mtdowling@gmail.com", 144 | "homepage": "https://github.com/mtdowling" 145 | } 146 | ], 147 | "description": "Guzzle promises library", 148 | "keywords": [ 149 | "promise" 150 | ], 151 | "time": "2016-12-20T10:07:11+00:00" 152 | }, 153 | { 154 | "name": "guzzlehttp/psr7", 155 | "version": "1.6.1", 156 | "source": { 157 | "type": "git", 158 | "url": "https://github.com/guzzle/psr7.git", 159 | "reference": "239400de7a173fe9901b9ac7c06497751f00727a" 160 | }, 161 | "dist": { 162 | "type": "zip", 163 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", 164 | "reference": "239400de7a173fe9901b9ac7c06497751f00727a", 165 | "shasum": "", 166 | "mirrors": [ 167 | { 168 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 169 | "preferred": true 170 | } 171 | ] 172 | }, 173 | "require": { 174 | "php": ">=5.4.0", 175 | "psr/http-message": "~1.0", 176 | "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" 177 | }, 178 | "provide": { 179 | "psr/http-message-implementation": "1.0" 180 | }, 181 | "require-dev": { 182 | "ext-zlib": "*", 183 | "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" 184 | }, 185 | "suggest": { 186 | "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" 187 | }, 188 | "type": "library", 189 | "extra": { 190 | "branch-alias": { 191 | "dev-master": "1.6-dev" 192 | } 193 | }, 194 | "autoload": { 195 | "psr-4": { 196 | "GuzzleHttp\\Psr7\\": "src/" 197 | }, 198 | "files": [ 199 | "src/functions_include.php" 200 | ] 201 | }, 202 | "notification-url": "https://packagist.org/downloads/", 203 | "license": [ 204 | "MIT" 205 | ], 206 | "authors": [ 207 | { 208 | "name": "Michael Dowling", 209 | "email": "mtdowling@gmail.com", 210 | "homepage": "https://github.com/mtdowling" 211 | }, 212 | { 213 | "name": "Tobias Schultze", 214 | "homepage": "https://github.com/Tobion" 215 | } 216 | ], 217 | "description": "PSR-7 message implementation that also provides common utility methods", 218 | "keywords": [ 219 | "http", 220 | "message", 221 | "psr-7", 222 | "request", 223 | "response", 224 | "stream", 225 | "uri", 226 | "url" 227 | ], 228 | "time": "2019-07-01T23:21:34+00:00" 229 | }, 230 | { 231 | "name": "psr/http-client", 232 | "version": "1.0.1", 233 | "source": { 234 | "type": "git", 235 | "url": "https://github.com/php-fig/http-client.git", 236 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" 237 | }, 238 | "dist": { 239 | "type": "zip", 240 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 241 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 242 | "shasum": "", 243 | "mirrors": [ 244 | { 245 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 246 | "preferred": true 247 | } 248 | ] 249 | }, 250 | "require": { 251 | "php": "^7.0 || ^8.0", 252 | "psr/http-message": "^1.0" 253 | }, 254 | "type": "library", 255 | "extra": { 256 | "branch-alias": { 257 | "dev-master": "1.0.x-dev" 258 | } 259 | }, 260 | "autoload": { 261 | "psr-4": { 262 | "Psr\\Http\\Client\\": "src/" 263 | } 264 | }, 265 | "notification-url": "https://packagist.org/downloads/", 266 | "license": [ 267 | "MIT" 268 | ], 269 | "authors": [ 270 | { 271 | "name": "PHP-FIG", 272 | "homepage": "http://www.php-fig.org/" 273 | } 274 | ], 275 | "description": "Common interface for HTTP clients", 276 | "homepage": "https://github.com/php-fig/http-client", 277 | "keywords": [ 278 | "http", 279 | "http-client", 280 | "psr", 281 | "psr-18" 282 | ], 283 | "time": "2020-06-29T06:28:15+00:00" 284 | }, 285 | { 286 | "name": "psr/http-message", 287 | "version": "1.0.1", 288 | "source": { 289 | "type": "git", 290 | "url": "https://github.com/php-fig/http-message.git", 291 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 292 | }, 293 | "dist": { 294 | "type": "zip", 295 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 296 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 297 | "shasum": "", 298 | "mirrors": [ 299 | { 300 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 301 | "preferred": true 302 | } 303 | ] 304 | }, 305 | "require": { 306 | "php": ">=5.3.0" 307 | }, 308 | "type": "library", 309 | "extra": { 310 | "branch-alias": { 311 | "dev-master": "1.0.x-dev" 312 | } 313 | }, 314 | "autoload": { 315 | "psr-4": { 316 | "Psr\\Http\\Message\\": "src/" 317 | } 318 | }, 319 | "notification-url": "https://packagist.org/downloads/", 320 | "license": [ 321 | "MIT" 322 | ], 323 | "authors": [ 324 | { 325 | "name": "PHP-FIG", 326 | "homepage": "http://www.php-fig.org/" 327 | } 328 | ], 329 | "description": "Common interface for HTTP messages", 330 | "homepage": "https://github.com/php-fig/http-message", 331 | "keywords": [ 332 | "http", 333 | "http-message", 334 | "psr", 335 | "psr-7", 336 | "request", 337 | "response" 338 | ], 339 | "time": "2016-08-06T14:39:51+00:00" 340 | }, 341 | { 342 | "name": "ralouphie/getallheaders", 343 | "version": "3.0.3", 344 | "source": { 345 | "type": "git", 346 | "url": "https://github.com/ralouphie/getallheaders.git", 347 | "reference": "120b605dfeb996808c31b6477290a714d356e822" 348 | }, 349 | "dist": { 350 | "type": "zip", 351 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", 352 | "reference": "120b605dfeb996808c31b6477290a714d356e822", 353 | "shasum": "", 354 | "mirrors": [ 355 | { 356 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 357 | "preferred": true 358 | } 359 | ] 360 | }, 361 | "require": { 362 | "php": ">=5.6" 363 | }, 364 | "require-dev": { 365 | "php-coveralls/php-coveralls": "^2.1", 366 | "phpunit/phpunit": "^5 || ^6.5" 367 | }, 368 | "type": "library", 369 | "autoload": { 370 | "files": [ 371 | "src/getallheaders.php" 372 | ] 373 | }, 374 | "notification-url": "https://packagist.org/downloads/", 375 | "license": [ 376 | "MIT" 377 | ], 378 | "authors": [ 379 | { 380 | "name": "Ralph Khattar", 381 | "email": "ralph.khattar@gmail.com" 382 | } 383 | ], 384 | "description": "A polyfill for getallheaders.", 385 | "time": "2019-03-08T08:55:37+00:00" 386 | }, 387 | { 388 | "name": "topthink/think-helper", 389 | "version": "v3.1.4", 390 | "source": { 391 | "type": "git", 392 | "url": "https://github.com/top-think/think-helper.git", 393 | "reference": "c28d37743bda4a0455286ca85b17b5791d626e10" 394 | }, 395 | "dist": { 396 | "type": "zip", 397 | "url": "https://api.github.com/repos/top-think/think-helper/zipball/c28d37743bda4a0455286ca85b17b5791d626e10", 398 | "reference": "c28d37743bda4a0455286ca85b17b5791d626e10", 399 | "shasum": "", 400 | "mirrors": [ 401 | { 402 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 403 | "preferred": true 404 | } 405 | ] 406 | }, 407 | "require": { 408 | "php": ">=7.1.0" 409 | }, 410 | "type": "library", 411 | "autoload": { 412 | "psr-4": { 413 | "think\\": "src" 414 | }, 415 | "files": [ 416 | "src/helper.php" 417 | ] 418 | }, 419 | "notification-url": "https://packagist.org/downloads/", 420 | "license": [ 421 | "Apache-2.0" 422 | ], 423 | "authors": [ 424 | { 425 | "name": "yunwuxin", 426 | "email": "448901948@qq.com" 427 | } 428 | ], 429 | "description": "The ThinkPHP6 Helper Package", 430 | "time": "2019-11-08T08:01:10+00:00" 431 | } 432 | ], 433 | "packages-dev": [ 434 | { 435 | "name": "doctrine/instantiator", 436 | "version": "1.3.1", 437 | "source": { 438 | "type": "git", 439 | "url": "https://github.com/doctrine/instantiator.git", 440 | "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" 441 | }, 442 | "dist": { 443 | "type": "zip", 444 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", 445 | "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", 446 | "shasum": "", 447 | "mirrors": [ 448 | { 449 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 450 | "preferred": true 451 | } 452 | ] 453 | }, 454 | "require": { 455 | "php": "^7.1 || ^8.0" 456 | }, 457 | "require-dev": { 458 | "doctrine/coding-standard": "^6.0", 459 | "ext-pdo": "*", 460 | "ext-phar": "*", 461 | "phpbench/phpbench": "^0.13", 462 | "phpstan/phpstan-phpunit": "^0.11", 463 | "phpstan/phpstan-shim": "^0.11", 464 | "phpunit/phpunit": "^7.0" 465 | }, 466 | "type": "library", 467 | "extra": { 468 | "branch-alias": { 469 | "dev-master": "1.2.x-dev" 470 | } 471 | }, 472 | "autoload": { 473 | "psr-4": { 474 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 475 | } 476 | }, 477 | "notification-url": "https://packagist.org/downloads/", 478 | "license": [ 479 | "MIT" 480 | ], 481 | "authors": [ 482 | { 483 | "name": "Marco Pivetta", 484 | "email": "ocramius@gmail.com", 485 | "homepage": "http://ocramius.github.com/" 486 | } 487 | ], 488 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 489 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 490 | "keywords": [ 491 | "constructor", 492 | "instantiate" 493 | ], 494 | "time": "2020-05-29T17:27:14+00:00" 495 | }, 496 | { 497 | "name": "myclabs/deep-copy", 498 | "version": "1.10.1", 499 | "source": { 500 | "type": "git", 501 | "url": "https://github.com/myclabs/DeepCopy.git", 502 | "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5" 503 | }, 504 | "dist": { 505 | "type": "zip", 506 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", 507 | "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5", 508 | "shasum": "", 509 | "mirrors": [ 510 | { 511 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 512 | "preferred": true 513 | } 514 | ] 515 | }, 516 | "require": { 517 | "php": "^7.1 || ^8.0" 518 | }, 519 | "replace": { 520 | "myclabs/deep-copy": "self.version" 521 | }, 522 | "require-dev": { 523 | "doctrine/collections": "^1.0", 524 | "doctrine/common": "^2.6", 525 | "phpunit/phpunit": "^7.1" 526 | }, 527 | "type": "library", 528 | "autoload": { 529 | "psr-4": { 530 | "DeepCopy\\": "src/DeepCopy/" 531 | }, 532 | "files": [ 533 | "src/DeepCopy/deep_copy.php" 534 | ] 535 | }, 536 | "notification-url": "https://packagist.org/downloads/", 537 | "license": [ 538 | "MIT" 539 | ], 540 | "description": "Create deep copies (clones) of your objects", 541 | "keywords": [ 542 | "clone", 543 | "copy", 544 | "duplicate", 545 | "object", 546 | "object graph" 547 | ], 548 | "time": "2020-06-29T13:22:24+00:00" 549 | }, 550 | { 551 | "name": "phar-io/manifest", 552 | "version": "1.0.3", 553 | "source": { 554 | "type": "git", 555 | "url": "https://github.com/phar-io/manifest.git", 556 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 557 | }, 558 | "dist": { 559 | "type": "zip", 560 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 561 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 562 | "shasum": "", 563 | "mirrors": [ 564 | { 565 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 566 | "preferred": true 567 | } 568 | ] 569 | }, 570 | "require": { 571 | "ext-dom": "*", 572 | "ext-phar": "*", 573 | "phar-io/version": "^2.0", 574 | "php": "^5.6 || ^7.0" 575 | }, 576 | "type": "library", 577 | "extra": { 578 | "branch-alias": { 579 | "dev-master": "1.0.x-dev" 580 | } 581 | }, 582 | "autoload": { 583 | "classmap": [ 584 | "src/" 585 | ] 586 | }, 587 | "notification-url": "https://packagist.org/downloads/", 588 | "license": [ 589 | "BSD-3-Clause" 590 | ], 591 | "authors": [ 592 | { 593 | "name": "Arne Blankerts", 594 | "email": "arne@blankerts.de", 595 | "role": "Developer" 596 | }, 597 | { 598 | "name": "Sebastian Heuer", 599 | "email": "sebastian@phpeople.de", 600 | "role": "Developer" 601 | }, 602 | { 603 | "name": "Sebastian Bergmann", 604 | "email": "sebastian@phpunit.de", 605 | "role": "Developer" 606 | } 607 | ], 608 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 609 | "time": "2018-07-08T19:23:20+00:00" 610 | }, 611 | { 612 | "name": "phar-io/version", 613 | "version": "2.0.1", 614 | "source": { 615 | "type": "git", 616 | "url": "https://github.com/phar-io/version.git", 617 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 618 | }, 619 | "dist": { 620 | "type": "zip", 621 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 622 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 623 | "shasum": "", 624 | "mirrors": [ 625 | { 626 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 627 | "preferred": true 628 | } 629 | ] 630 | }, 631 | "require": { 632 | "php": "^5.6 || ^7.0" 633 | }, 634 | "type": "library", 635 | "autoload": { 636 | "classmap": [ 637 | "src/" 638 | ] 639 | }, 640 | "notification-url": "https://packagist.org/downloads/", 641 | "license": [ 642 | "BSD-3-Clause" 643 | ], 644 | "authors": [ 645 | { 646 | "name": "Arne Blankerts", 647 | "email": "arne@blankerts.de", 648 | "role": "Developer" 649 | }, 650 | { 651 | "name": "Sebastian Heuer", 652 | "email": "sebastian@phpeople.de", 653 | "role": "Developer" 654 | }, 655 | { 656 | "name": "Sebastian Bergmann", 657 | "email": "sebastian@phpunit.de", 658 | "role": "Developer" 659 | } 660 | ], 661 | "description": "Library for handling version information and constraints", 662 | "time": "2018-07-08T19:19:57+00:00" 663 | }, 664 | { 665 | "name": "phpdocumentor/reflection-common", 666 | "version": "2.2.0", 667 | "source": { 668 | "type": "git", 669 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 670 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 671 | }, 672 | "dist": { 673 | "type": "zip", 674 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 675 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 676 | "shasum": "", 677 | "mirrors": [ 678 | { 679 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 680 | "preferred": true 681 | } 682 | ] 683 | }, 684 | "require": { 685 | "php": "^7.2 || ^8.0" 686 | }, 687 | "type": "library", 688 | "extra": { 689 | "branch-alias": { 690 | "dev-2.x": "2.x-dev" 691 | } 692 | }, 693 | "autoload": { 694 | "psr-4": { 695 | "phpDocumentor\\Reflection\\": "src/" 696 | } 697 | }, 698 | "notification-url": "https://packagist.org/downloads/", 699 | "license": [ 700 | "MIT" 701 | ], 702 | "authors": [ 703 | { 704 | "name": "Jaap van Otterdijk", 705 | "email": "opensource@ijaap.nl" 706 | } 707 | ], 708 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 709 | "homepage": "http://www.phpdoc.org", 710 | "keywords": [ 711 | "FQSEN", 712 | "phpDocumentor", 713 | "phpdoc", 714 | "reflection", 715 | "static analysis" 716 | ], 717 | "time": "2020-06-27T09:03:43+00:00" 718 | }, 719 | { 720 | "name": "phpdocumentor/reflection-docblock", 721 | "version": "5.2.0", 722 | "source": { 723 | "type": "git", 724 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 725 | "reference": "3170448f5769fe19f456173d833734e0ff1b84df" 726 | }, 727 | "dist": { 728 | "type": "zip", 729 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/3170448f5769fe19f456173d833734e0ff1b84df", 730 | "reference": "3170448f5769fe19f456173d833734e0ff1b84df", 731 | "shasum": "", 732 | "mirrors": [ 733 | { 734 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 735 | "preferred": true 736 | } 737 | ] 738 | }, 739 | "require": { 740 | "ext-filter": "*", 741 | "php": "^7.2 || ^8.0", 742 | "phpdocumentor/reflection-common": "^2.2", 743 | "phpdocumentor/type-resolver": "^1.3", 744 | "webmozart/assert": "^1.9.1" 745 | }, 746 | "require-dev": { 747 | "mockery/mockery": "~1.3.2" 748 | }, 749 | "type": "library", 750 | "extra": { 751 | "branch-alias": { 752 | "dev-master": "5.x-dev" 753 | } 754 | }, 755 | "autoload": { 756 | "psr-4": { 757 | "phpDocumentor\\Reflection\\": "src" 758 | } 759 | }, 760 | "notification-url": "https://packagist.org/downloads/", 761 | "license": [ 762 | "MIT" 763 | ], 764 | "authors": [ 765 | { 766 | "name": "Mike van Riel", 767 | "email": "me@mikevanriel.com" 768 | }, 769 | { 770 | "name": "Jaap van Otterdijk", 771 | "email": "account@ijaap.nl" 772 | } 773 | ], 774 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 775 | "time": "2020-07-20T20:05:34+00:00" 776 | }, 777 | { 778 | "name": "phpdocumentor/type-resolver", 779 | "version": "1.3.0", 780 | "source": { 781 | "type": "git", 782 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 783 | "reference": "e878a14a65245fbe78f8080eba03b47c3b705651" 784 | }, 785 | "dist": { 786 | "type": "zip", 787 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651", 788 | "reference": "e878a14a65245fbe78f8080eba03b47c3b705651", 789 | "shasum": "", 790 | "mirrors": [ 791 | { 792 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 793 | "preferred": true 794 | } 795 | ] 796 | }, 797 | "require": { 798 | "php": "^7.2 || ^8.0", 799 | "phpdocumentor/reflection-common": "^2.0" 800 | }, 801 | "require-dev": { 802 | "ext-tokenizer": "*" 803 | }, 804 | "type": "library", 805 | "extra": { 806 | "branch-alias": { 807 | "dev-1.x": "1.x-dev" 808 | } 809 | }, 810 | "autoload": { 811 | "psr-4": { 812 | "phpDocumentor\\Reflection\\": "src" 813 | } 814 | }, 815 | "notification-url": "https://packagist.org/downloads/", 816 | "license": [ 817 | "MIT" 818 | ], 819 | "authors": [ 820 | { 821 | "name": "Mike van Riel", 822 | "email": "me@mikevanriel.com" 823 | } 824 | ], 825 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 826 | "time": "2020-06-27T10:12:23+00:00" 827 | }, 828 | { 829 | "name": "phpspec/prophecy", 830 | "version": "1.11.1", 831 | "source": { 832 | "type": "git", 833 | "url": "https://github.com/phpspec/prophecy.git", 834 | "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160" 835 | }, 836 | "dist": { 837 | "type": "zip", 838 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b20034be5efcdab4fb60ca3a29cba2949aead160", 839 | "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160", 840 | "shasum": "", 841 | "mirrors": [ 842 | { 843 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 844 | "preferred": true 845 | } 846 | ] 847 | }, 848 | "require": { 849 | "doctrine/instantiator": "^1.2", 850 | "php": "^7.2", 851 | "phpdocumentor/reflection-docblock": "^5.0", 852 | "sebastian/comparator": "^3.0 || ^4.0", 853 | "sebastian/recursion-context": "^3.0 || ^4.0" 854 | }, 855 | "require-dev": { 856 | "phpspec/phpspec": "^6.0", 857 | "phpunit/phpunit": "^8.0" 858 | }, 859 | "type": "library", 860 | "extra": { 861 | "branch-alias": { 862 | "dev-master": "1.11.x-dev" 863 | } 864 | }, 865 | "autoload": { 866 | "psr-4": { 867 | "Prophecy\\": "src/Prophecy" 868 | } 869 | }, 870 | "notification-url": "https://packagist.org/downloads/", 871 | "license": [ 872 | "MIT" 873 | ], 874 | "authors": [ 875 | { 876 | "name": "Konstantin Kudryashov", 877 | "email": "ever.zet@gmail.com", 878 | "homepage": "http://everzet.com" 879 | }, 880 | { 881 | "name": "Marcello Duarte", 882 | "email": "marcello.duarte@gmail.com" 883 | } 884 | ], 885 | "description": "Highly opinionated mocking framework for PHP 5.3+", 886 | "homepage": "https://github.com/phpspec/prophecy", 887 | "keywords": [ 888 | "Double", 889 | "Dummy", 890 | "fake", 891 | "mock", 892 | "spy", 893 | "stub" 894 | ], 895 | "time": "2020-07-08T12:44:21+00:00" 896 | }, 897 | { 898 | "name": "phpunit/php-code-coverage", 899 | "version": "6.1.4", 900 | "source": { 901 | "type": "git", 902 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 903 | "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" 904 | }, 905 | "dist": { 906 | "type": "zip", 907 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", 908 | "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", 909 | "shasum": "", 910 | "mirrors": [ 911 | { 912 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 913 | "preferred": true 914 | } 915 | ] 916 | }, 917 | "require": { 918 | "ext-dom": "*", 919 | "ext-xmlwriter": "*", 920 | "php": "^7.1", 921 | "phpunit/php-file-iterator": "^2.0", 922 | "phpunit/php-text-template": "^1.2.1", 923 | "phpunit/php-token-stream": "^3.0", 924 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 925 | "sebastian/environment": "^3.1 || ^4.0", 926 | "sebastian/version": "^2.0.1", 927 | "theseer/tokenizer": "^1.1" 928 | }, 929 | "require-dev": { 930 | "phpunit/phpunit": "^7.0" 931 | }, 932 | "suggest": { 933 | "ext-xdebug": "^2.6.0" 934 | }, 935 | "type": "library", 936 | "extra": { 937 | "branch-alias": { 938 | "dev-master": "6.1-dev" 939 | } 940 | }, 941 | "autoload": { 942 | "classmap": [ 943 | "src/" 944 | ] 945 | }, 946 | "notification-url": "https://packagist.org/downloads/", 947 | "license": [ 948 | "BSD-3-Clause" 949 | ], 950 | "authors": [ 951 | { 952 | "name": "Sebastian Bergmann", 953 | "email": "sebastian@phpunit.de", 954 | "role": "lead" 955 | } 956 | ], 957 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 958 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 959 | "keywords": [ 960 | "coverage", 961 | "testing", 962 | "xunit" 963 | ], 964 | "time": "2018-10-31T16:06:48+00:00" 965 | }, 966 | { 967 | "name": "phpunit/php-file-iterator", 968 | "version": "2.0.2", 969 | "source": { 970 | "type": "git", 971 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 972 | "reference": "050bedf145a257b1ff02746c31894800e5122946" 973 | }, 974 | "dist": { 975 | "type": "zip", 976 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", 977 | "reference": "050bedf145a257b1ff02746c31894800e5122946", 978 | "shasum": "", 979 | "mirrors": [ 980 | { 981 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 982 | "preferred": true 983 | } 984 | ] 985 | }, 986 | "require": { 987 | "php": "^7.1" 988 | }, 989 | "require-dev": { 990 | "phpunit/phpunit": "^7.1" 991 | }, 992 | "type": "library", 993 | "extra": { 994 | "branch-alias": { 995 | "dev-master": "2.0.x-dev" 996 | } 997 | }, 998 | "autoload": { 999 | "classmap": [ 1000 | "src/" 1001 | ] 1002 | }, 1003 | "notification-url": "https://packagist.org/downloads/", 1004 | "license": [ 1005 | "BSD-3-Clause" 1006 | ], 1007 | "authors": [ 1008 | { 1009 | "name": "Sebastian Bergmann", 1010 | "email": "sebastian@phpunit.de", 1011 | "role": "lead" 1012 | } 1013 | ], 1014 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1015 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1016 | "keywords": [ 1017 | "filesystem", 1018 | "iterator" 1019 | ], 1020 | "time": "2018-09-13T20:33:42+00:00" 1021 | }, 1022 | { 1023 | "name": "phpunit/php-text-template", 1024 | "version": "1.2.1", 1025 | "source": { 1026 | "type": "git", 1027 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1028 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1029 | }, 1030 | "dist": { 1031 | "type": "zip", 1032 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1033 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1034 | "shasum": "", 1035 | "mirrors": [ 1036 | { 1037 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1038 | "preferred": true 1039 | } 1040 | ] 1041 | }, 1042 | "require": { 1043 | "php": ">=5.3.3" 1044 | }, 1045 | "type": "library", 1046 | "autoload": { 1047 | "classmap": [ 1048 | "src/" 1049 | ] 1050 | }, 1051 | "notification-url": "https://packagist.org/downloads/", 1052 | "license": [ 1053 | "BSD-3-Clause" 1054 | ], 1055 | "authors": [ 1056 | { 1057 | "name": "Sebastian Bergmann", 1058 | "email": "sebastian@phpunit.de", 1059 | "role": "lead" 1060 | } 1061 | ], 1062 | "description": "Simple template engine.", 1063 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1064 | "keywords": [ 1065 | "template" 1066 | ], 1067 | "time": "2015-06-21T13:50:34+00:00" 1068 | }, 1069 | { 1070 | "name": "phpunit/php-timer", 1071 | "version": "2.1.2", 1072 | "source": { 1073 | "type": "git", 1074 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1075 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" 1076 | }, 1077 | "dist": { 1078 | "type": "zip", 1079 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", 1080 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", 1081 | "shasum": "", 1082 | "mirrors": [ 1083 | { 1084 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1085 | "preferred": true 1086 | } 1087 | ] 1088 | }, 1089 | "require": { 1090 | "php": "^7.1" 1091 | }, 1092 | "require-dev": { 1093 | "phpunit/phpunit": "^7.0" 1094 | }, 1095 | "type": "library", 1096 | "extra": { 1097 | "branch-alias": { 1098 | "dev-master": "2.1-dev" 1099 | } 1100 | }, 1101 | "autoload": { 1102 | "classmap": [ 1103 | "src/" 1104 | ] 1105 | }, 1106 | "notification-url": "https://packagist.org/downloads/", 1107 | "license": [ 1108 | "BSD-3-Clause" 1109 | ], 1110 | "authors": [ 1111 | { 1112 | "name": "Sebastian Bergmann", 1113 | "email": "sebastian@phpunit.de", 1114 | "role": "lead" 1115 | } 1116 | ], 1117 | "description": "Utility class for timing", 1118 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1119 | "keywords": [ 1120 | "timer" 1121 | ], 1122 | "time": "2019-06-07T04:22:29+00:00" 1123 | }, 1124 | { 1125 | "name": "phpunit/php-token-stream", 1126 | "version": "3.1.1", 1127 | "source": { 1128 | "type": "git", 1129 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1130 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" 1131 | }, 1132 | "dist": { 1133 | "type": "zip", 1134 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", 1135 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", 1136 | "shasum": "", 1137 | "mirrors": [ 1138 | { 1139 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1140 | "preferred": true 1141 | } 1142 | ] 1143 | }, 1144 | "require": { 1145 | "ext-tokenizer": "*", 1146 | "php": "^7.1" 1147 | }, 1148 | "require-dev": { 1149 | "phpunit/phpunit": "^7.0" 1150 | }, 1151 | "type": "library", 1152 | "extra": { 1153 | "branch-alias": { 1154 | "dev-master": "3.1-dev" 1155 | } 1156 | }, 1157 | "autoload": { 1158 | "classmap": [ 1159 | "src/" 1160 | ] 1161 | }, 1162 | "notification-url": "https://packagist.org/downloads/", 1163 | "license": [ 1164 | "BSD-3-Clause" 1165 | ], 1166 | "authors": [ 1167 | { 1168 | "name": "Sebastian Bergmann", 1169 | "email": "sebastian@phpunit.de" 1170 | } 1171 | ], 1172 | "description": "Wrapper around PHP's tokenizer extension.", 1173 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1174 | "keywords": [ 1175 | "tokenizer" 1176 | ], 1177 | "time": "2019-09-17T06:23:10+00:00" 1178 | }, 1179 | { 1180 | "name": "phpunit/phpunit", 1181 | "version": "7.5.20", 1182 | "source": { 1183 | "type": "git", 1184 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1185 | "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" 1186 | }, 1187 | "dist": { 1188 | "type": "zip", 1189 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", 1190 | "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", 1191 | "shasum": "", 1192 | "mirrors": [ 1193 | { 1194 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1195 | "preferred": true 1196 | } 1197 | ] 1198 | }, 1199 | "require": { 1200 | "doctrine/instantiator": "^1.1", 1201 | "ext-dom": "*", 1202 | "ext-json": "*", 1203 | "ext-libxml": "*", 1204 | "ext-mbstring": "*", 1205 | "ext-xml": "*", 1206 | "myclabs/deep-copy": "^1.7", 1207 | "phar-io/manifest": "^1.0.2", 1208 | "phar-io/version": "^2.0", 1209 | "php": "^7.1", 1210 | "phpspec/prophecy": "^1.7", 1211 | "phpunit/php-code-coverage": "^6.0.7", 1212 | "phpunit/php-file-iterator": "^2.0.1", 1213 | "phpunit/php-text-template": "^1.2.1", 1214 | "phpunit/php-timer": "^2.1", 1215 | "sebastian/comparator": "^3.0", 1216 | "sebastian/diff": "^3.0", 1217 | "sebastian/environment": "^4.0", 1218 | "sebastian/exporter": "^3.1", 1219 | "sebastian/global-state": "^2.0", 1220 | "sebastian/object-enumerator": "^3.0.3", 1221 | "sebastian/resource-operations": "^2.0", 1222 | "sebastian/version": "^2.0.1" 1223 | }, 1224 | "conflict": { 1225 | "phpunit/phpunit-mock-objects": "*" 1226 | }, 1227 | "require-dev": { 1228 | "ext-pdo": "*" 1229 | }, 1230 | "suggest": { 1231 | "ext-soap": "*", 1232 | "ext-xdebug": "*", 1233 | "phpunit/php-invoker": "^2.0" 1234 | }, 1235 | "bin": [ 1236 | "phpunit" 1237 | ], 1238 | "type": "library", 1239 | "extra": { 1240 | "branch-alias": { 1241 | "dev-master": "7.5-dev" 1242 | } 1243 | }, 1244 | "autoload": { 1245 | "classmap": [ 1246 | "src/" 1247 | ] 1248 | }, 1249 | "notification-url": "https://packagist.org/downloads/", 1250 | "license": [ 1251 | "BSD-3-Clause" 1252 | ], 1253 | "authors": [ 1254 | { 1255 | "name": "Sebastian Bergmann", 1256 | "email": "sebastian@phpunit.de", 1257 | "role": "lead" 1258 | } 1259 | ], 1260 | "description": "The PHP Unit Testing framework.", 1261 | "homepage": "https://phpunit.de/", 1262 | "keywords": [ 1263 | "phpunit", 1264 | "testing", 1265 | "xunit" 1266 | ], 1267 | "time": "2020-01-08T08:45:45+00:00" 1268 | }, 1269 | { 1270 | "name": "sebastian/code-unit-reverse-lookup", 1271 | "version": "1.0.1", 1272 | "source": { 1273 | "type": "git", 1274 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1275 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 1276 | }, 1277 | "dist": { 1278 | "type": "zip", 1279 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1280 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1281 | "shasum": "", 1282 | "mirrors": [ 1283 | { 1284 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1285 | "preferred": true 1286 | } 1287 | ] 1288 | }, 1289 | "require": { 1290 | "php": "^5.6 || ^7.0" 1291 | }, 1292 | "require-dev": { 1293 | "phpunit/phpunit": "^5.7 || ^6.0" 1294 | }, 1295 | "type": "library", 1296 | "extra": { 1297 | "branch-alias": { 1298 | "dev-master": "1.0.x-dev" 1299 | } 1300 | }, 1301 | "autoload": { 1302 | "classmap": [ 1303 | "src/" 1304 | ] 1305 | }, 1306 | "notification-url": "https://packagist.org/downloads/", 1307 | "license": [ 1308 | "BSD-3-Clause" 1309 | ], 1310 | "authors": [ 1311 | { 1312 | "name": "Sebastian Bergmann", 1313 | "email": "sebastian@phpunit.de" 1314 | } 1315 | ], 1316 | "description": "Looks up which function or method a line of code belongs to", 1317 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1318 | "time": "2017-03-04T06:30:41+00:00" 1319 | }, 1320 | { 1321 | "name": "sebastian/comparator", 1322 | "version": "3.0.2", 1323 | "source": { 1324 | "type": "git", 1325 | "url": "https://github.com/sebastianbergmann/comparator.git", 1326 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" 1327 | }, 1328 | "dist": { 1329 | "type": "zip", 1330 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 1331 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 1332 | "shasum": "", 1333 | "mirrors": [ 1334 | { 1335 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1336 | "preferred": true 1337 | } 1338 | ] 1339 | }, 1340 | "require": { 1341 | "php": "^7.1", 1342 | "sebastian/diff": "^3.0", 1343 | "sebastian/exporter": "^3.1" 1344 | }, 1345 | "require-dev": { 1346 | "phpunit/phpunit": "^7.1" 1347 | }, 1348 | "type": "library", 1349 | "extra": { 1350 | "branch-alias": { 1351 | "dev-master": "3.0-dev" 1352 | } 1353 | }, 1354 | "autoload": { 1355 | "classmap": [ 1356 | "src/" 1357 | ] 1358 | }, 1359 | "notification-url": "https://packagist.org/downloads/", 1360 | "license": [ 1361 | "BSD-3-Clause" 1362 | ], 1363 | "authors": [ 1364 | { 1365 | "name": "Jeff Welch", 1366 | "email": "whatthejeff@gmail.com" 1367 | }, 1368 | { 1369 | "name": "Volker Dusch", 1370 | "email": "github@wallbash.com" 1371 | }, 1372 | { 1373 | "name": "Bernhard Schussek", 1374 | "email": "bschussek@2bepublished.at" 1375 | }, 1376 | { 1377 | "name": "Sebastian Bergmann", 1378 | "email": "sebastian@phpunit.de" 1379 | } 1380 | ], 1381 | "description": "Provides the functionality to compare PHP values for equality", 1382 | "homepage": "https://github.com/sebastianbergmann/comparator", 1383 | "keywords": [ 1384 | "comparator", 1385 | "compare", 1386 | "equality" 1387 | ], 1388 | "time": "2018-07-12T15:12:46+00:00" 1389 | }, 1390 | { 1391 | "name": "sebastian/diff", 1392 | "version": "3.0.2", 1393 | "source": { 1394 | "type": "git", 1395 | "url": "https://github.com/sebastianbergmann/diff.git", 1396 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" 1397 | }, 1398 | "dist": { 1399 | "type": "zip", 1400 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 1401 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 1402 | "shasum": "", 1403 | "mirrors": [ 1404 | { 1405 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1406 | "preferred": true 1407 | } 1408 | ] 1409 | }, 1410 | "require": { 1411 | "php": "^7.1" 1412 | }, 1413 | "require-dev": { 1414 | "phpunit/phpunit": "^7.5 || ^8.0", 1415 | "symfony/process": "^2 || ^3.3 || ^4" 1416 | }, 1417 | "type": "library", 1418 | "extra": { 1419 | "branch-alias": { 1420 | "dev-master": "3.0-dev" 1421 | } 1422 | }, 1423 | "autoload": { 1424 | "classmap": [ 1425 | "src/" 1426 | ] 1427 | }, 1428 | "notification-url": "https://packagist.org/downloads/", 1429 | "license": [ 1430 | "BSD-3-Clause" 1431 | ], 1432 | "authors": [ 1433 | { 1434 | "name": "Kore Nordmann", 1435 | "email": "mail@kore-nordmann.de" 1436 | }, 1437 | { 1438 | "name": "Sebastian Bergmann", 1439 | "email": "sebastian@phpunit.de" 1440 | } 1441 | ], 1442 | "description": "Diff implementation", 1443 | "homepage": "https://github.com/sebastianbergmann/diff", 1444 | "keywords": [ 1445 | "diff", 1446 | "udiff", 1447 | "unidiff", 1448 | "unified diff" 1449 | ], 1450 | "time": "2019-02-04T06:01:07+00:00" 1451 | }, 1452 | { 1453 | "name": "sebastian/environment", 1454 | "version": "4.2.3", 1455 | "source": { 1456 | "type": "git", 1457 | "url": "https://github.com/sebastianbergmann/environment.git", 1458 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" 1459 | }, 1460 | "dist": { 1461 | "type": "zip", 1462 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 1463 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 1464 | "shasum": "", 1465 | "mirrors": [ 1466 | { 1467 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1468 | "preferred": true 1469 | } 1470 | ] 1471 | }, 1472 | "require": { 1473 | "php": "^7.1" 1474 | }, 1475 | "require-dev": { 1476 | "phpunit/phpunit": "^7.5" 1477 | }, 1478 | "suggest": { 1479 | "ext-posix": "*" 1480 | }, 1481 | "type": "library", 1482 | "extra": { 1483 | "branch-alias": { 1484 | "dev-master": "4.2-dev" 1485 | } 1486 | }, 1487 | "autoload": { 1488 | "classmap": [ 1489 | "src/" 1490 | ] 1491 | }, 1492 | "notification-url": "https://packagist.org/downloads/", 1493 | "license": [ 1494 | "BSD-3-Clause" 1495 | ], 1496 | "authors": [ 1497 | { 1498 | "name": "Sebastian Bergmann", 1499 | "email": "sebastian@phpunit.de" 1500 | } 1501 | ], 1502 | "description": "Provides functionality to handle HHVM/PHP environments", 1503 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1504 | "keywords": [ 1505 | "Xdebug", 1506 | "environment", 1507 | "hhvm" 1508 | ], 1509 | "time": "2019-11-20T08:46:58+00:00" 1510 | }, 1511 | { 1512 | "name": "sebastian/exporter", 1513 | "version": "3.1.2", 1514 | "source": { 1515 | "type": "git", 1516 | "url": "https://github.com/sebastianbergmann/exporter.git", 1517 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" 1518 | }, 1519 | "dist": { 1520 | "type": "zip", 1521 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", 1522 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", 1523 | "shasum": "", 1524 | "mirrors": [ 1525 | { 1526 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1527 | "preferred": true 1528 | } 1529 | ] 1530 | }, 1531 | "require": { 1532 | "php": "^7.0", 1533 | "sebastian/recursion-context": "^3.0" 1534 | }, 1535 | "require-dev": { 1536 | "ext-mbstring": "*", 1537 | "phpunit/phpunit": "^6.0" 1538 | }, 1539 | "type": "library", 1540 | "extra": { 1541 | "branch-alias": { 1542 | "dev-master": "3.1.x-dev" 1543 | } 1544 | }, 1545 | "autoload": { 1546 | "classmap": [ 1547 | "src/" 1548 | ] 1549 | }, 1550 | "notification-url": "https://packagist.org/downloads/", 1551 | "license": [ 1552 | "BSD-3-Clause" 1553 | ], 1554 | "authors": [ 1555 | { 1556 | "name": "Sebastian Bergmann", 1557 | "email": "sebastian@phpunit.de" 1558 | }, 1559 | { 1560 | "name": "Jeff Welch", 1561 | "email": "whatthejeff@gmail.com" 1562 | }, 1563 | { 1564 | "name": "Volker Dusch", 1565 | "email": "github@wallbash.com" 1566 | }, 1567 | { 1568 | "name": "Adam Harvey", 1569 | "email": "aharvey@php.net" 1570 | }, 1571 | { 1572 | "name": "Bernhard Schussek", 1573 | "email": "bschussek@gmail.com" 1574 | } 1575 | ], 1576 | "description": "Provides the functionality to export PHP variables for visualization", 1577 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1578 | "keywords": [ 1579 | "export", 1580 | "exporter" 1581 | ], 1582 | "time": "2019-09-14T09:02:43+00:00" 1583 | }, 1584 | { 1585 | "name": "sebastian/global-state", 1586 | "version": "2.0.0", 1587 | "source": { 1588 | "type": "git", 1589 | "url": "https://github.com/sebastianbergmann/global-state.git", 1590 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" 1591 | }, 1592 | "dist": { 1593 | "type": "zip", 1594 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1595 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1596 | "shasum": "", 1597 | "mirrors": [ 1598 | { 1599 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1600 | "preferred": true 1601 | } 1602 | ] 1603 | }, 1604 | "require": { 1605 | "php": "^7.0" 1606 | }, 1607 | "require-dev": { 1608 | "phpunit/phpunit": "^6.0" 1609 | }, 1610 | "suggest": { 1611 | "ext-uopz": "*" 1612 | }, 1613 | "type": "library", 1614 | "extra": { 1615 | "branch-alias": { 1616 | "dev-master": "2.0-dev" 1617 | } 1618 | }, 1619 | "autoload": { 1620 | "classmap": [ 1621 | "src/" 1622 | ] 1623 | }, 1624 | "notification-url": "https://packagist.org/downloads/", 1625 | "license": [ 1626 | "BSD-3-Clause" 1627 | ], 1628 | "authors": [ 1629 | { 1630 | "name": "Sebastian Bergmann", 1631 | "email": "sebastian@phpunit.de" 1632 | } 1633 | ], 1634 | "description": "Snapshotting of global state", 1635 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1636 | "keywords": [ 1637 | "global state" 1638 | ], 1639 | "time": "2017-04-27T15:39:26+00:00" 1640 | }, 1641 | { 1642 | "name": "sebastian/object-enumerator", 1643 | "version": "3.0.3", 1644 | "source": { 1645 | "type": "git", 1646 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1647 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 1648 | }, 1649 | "dist": { 1650 | "type": "zip", 1651 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1652 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1653 | "shasum": "", 1654 | "mirrors": [ 1655 | { 1656 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1657 | "preferred": true 1658 | } 1659 | ] 1660 | }, 1661 | "require": { 1662 | "php": "^7.0", 1663 | "sebastian/object-reflector": "^1.1.1", 1664 | "sebastian/recursion-context": "^3.0" 1665 | }, 1666 | "require-dev": { 1667 | "phpunit/phpunit": "^6.0" 1668 | }, 1669 | "type": "library", 1670 | "extra": { 1671 | "branch-alias": { 1672 | "dev-master": "3.0.x-dev" 1673 | } 1674 | }, 1675 | "autoload": { 1676 | "classmap": [ 1677 | "src/" 1678 | ] 1679 | }, 1680 | "notification-url": "https://packagist.org/downloads/", 1681 | "license": [ 1682 | "BSD-3-Clause" 1683 | ], 1684 | "authors": [ 1685 | { 1686 | "name": "Sebastian Bergmann", 1687 | "email": "sebastian@phpunit.de" 1688 | } 1689 | ], 1690 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1691 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1692 | "time": "2017-08-03T12:35:26+00:00" 1693 | }, 1694 | { 1695 | "name": "sebastian/object-reflector", 1696 | "version": "1.1.1", 1697 | "source": { 1698 | "type": "git", 1699 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 1700 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 1701 | }, 1702 | "dist": { 1703 | "type": "zip", 1704 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 1705 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 1706 | "shasum": "", 1707 | "mirrors": [ 1708 | { 1709 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1710 | "preferred": true 1711 | } 1712 | ] 1713 | }, 1714 | "require": { 1715 | "php": "^7.0" 1716 | }, 1717 | "require-dev": { 1718 | "phpunit/phpunit": "^6.0" 1719 | }, 1720 | "type": "library", 1721 | "extra": { 1722 | "branch-alias": { 1723 | "dev-master": "1.1-dev" 1724 | } 1725 | }, 1726 | "autoload": { 1727 | "classmap": [ 1728 | "src/" 1729 | ] 1730 | }, 1731 | "notification-url": "https://packagist.org/downloads/", 1732 | "license": [ 1733 | "BSD-3-Clause" 1734 | ], 1735 | "authors": [ 1736 | { 1737 | "name": "Sebastian Bergmann", 1738 | "email": "sebastian@phpunit.de" 1739 | } 1740 | ], 1741 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 1742 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 1743 | "time": "2017-03-29T09:07:27+00:00" 1744 | }, 1745 | { 1746 | "name": "sebastian/recursion-context", 1747 | "version": "3.0.0", 1748 | "source": { 1749 | "type": "git", 1750 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1751 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 1752 | }, 1753 | "dist": { 1754 | "type": "zip", 1755 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1756 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1757 | "shasum": "", 1758 | "mirrors": [ 1759 | { 1760 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1761 | "preferred": true 1762 | } 1763 | ] 1764 | }, 1765 | "require": { 1766 | "php": "^7.0" 1767 | }, 1768 | "require-dev": { 1769 | "phpunit/phpunit": "^6.0" 1770 | }, 1771 | "type": "library", 1772 | "extra": { 1773 | "branch-alias": { 1774 | "dev-master": "3.0.x-dev" 1775 | } 1776 | }, 1777 | "autoload": { 1778 | "classmap": [ 1779 | "src/" 1780 | ] 1781 | }, 1782 | "notification-url": "https://packagist.org/downloads/", 1783 | "license": [ 1784 | "BSD-3-Clause" 1785 | ], 1786 | "authors": [ 1787 | { 1788 | "name": "Jeff Welch", 1789 | "email": "whatthejeff@gmail.com" 1790 | }, 1791 | { 1792 | "name": "Sebastian Bergmann", 1793 | "email": "sebastian@phpunit.de" 1794 | }, 1795 | { 1796 | "name": "Adam Harvey", 1797 | "email": "aharvey@php.net" 1798 | } 1799 | ], 1800 | "description": "Provides functionality to recursively process PHP variables", 1801 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1802 | "time": "2017-03-03T06:23:57+00:00" 1803 | }, 1804 | { 1805 | "name": "sebastian/resource-operations", 1806 | "version": "2.0.1", 1807 | "source": { 1808 | "type": "git", 1809 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1810 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" 1811 | }, 1812 | "dist": { 1813 | "type": "zip", 1814 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 1815 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 1816 | "shasum": "", 1817 | "mirrors": [ 1818 | { 1819 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1820 | "preferred": true 1821 | } 1822 | ] 1823 | }, 1824 | "require": { 1825 | "php": "^7.1" 1826 | }, 1827 | "type": "library", 1828 | "extra": { 1829 | "branch-alias": { 1830 | "dev-master": "2.0-dev" 1831 | } 1832 | }, 1833 | "autoload": { 1834 | "classmap": [ 1835 | "src/" 1836 | ] 1837 | }, 1838 | "notification-url": "https://packagist.org/downloads/", 1839 | "license": [ 1840 | "BSD-3-Clause" 1841 | ], 1842 | "authors": [ 1843 | { 1844 | "name": "Sebastian Bergmann", 1845 | "email": "sebastian@phpunit.de" 1846 | } 1847 | ], 1848 | "description": "Provides a list of PHP built-in functions that operate on resources", 1849 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 1850 | "time": "2018-10-04T04:07:39+00:00" 1851 | }, 1852 | { 1853 | "name": "sebastian/version", 1854 | "version": "2.0.1", 1855 | "source": { 1856 | "type": "git", 1857 | "url": "https://github.com/sebastianbergmann/version.git", 1858 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 1859 | }, 1860 | "dist": { 1861 | "type": "zip", 1862 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 1863 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 1864 | "shasum": "", 1865 | "mirrors": [ 1866 | { 1867 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1868 | "preferred": true 1869 | } 1870 | ] 1871 | }, 1872 | "require": { 1873 | "php": ">=5.6" 1874 | }, 1875 | "type": "library", 1876 | "extra": { 1877 | "branch-alias": { 1878 | "dev-master": "2.0.x-dev" 1879 | } 1880 | }, 1881 | "autoload": { 1882 | "classmap": [ 1883 | "src/" 1884 | ] 1885 | }, 1886 | "notification-url": "https://packagist.org/downloads/", 1887 | "license": [ 1888 | "BSD-3-Clause" 1889 | ], 1890 | "authors": [ 1891 | { 1892 | "name": "Sebastian Bergmann", 1893 | "email": "sebastian@phpunit.de", 1894 | "role": "lead" 1895 | } 1896 | ], 1897 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1898 | "homepage": "https://github.com/sebastianbergmann/version", 1899 | "time": "2016-10-03T07:35:21+00:00" 1900 | }, 1901 | { 1902 | "name": "symfony/polyfill-ctype", 1903 | "version": "v1.18.0", 1904 | "source": { 1905 | "type": "git", 1906 | "url": "https://github.com/symfony/polyfill-ctype.git", 1907 | "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" 1908 | }, 1909 | "dist": { 1910 | "type": "zip", 1911 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", 1912 | "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", 1913 | "shasum": "", 1914 | "mirrors": [ 1915 | { 1916 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1917 | "preferred": true 1918 | } 1919 | ] 1920 | }, 1921 | "require": { 1922 | "php": ">=5.3.3" 1923 | }, 1924 | "suggest": { 1925 | "ext-ctype": "For best performance" 1926 | }, 1927 | "type": "library", 1928 | "extra": { 1929 | "branch-alias": { 1930 | "dev-master": "1.18-dev" 1931 | }, 1932 | "thanks": { 1933 | "name": "symfony/polyfill", 1934 | "url": "https://github.com/symfony/polyfill" 1935 | } 1936 | }, 1937 | "autoload": { 1938 | "psr-4": { 1939 | "Symfony\\Polyfill\\Ctype\\": "" 1940 | }, 1941 | "files": [ 1942 | "bootstrap.php" 1943 | ] 1944 | }, 1945 | "notification-url": "https://packagist.org/downloads/", 1946 | "license": [ 1947 | "MIT" 1948 | ], 1949 | "authors": [ 1950 | { 1951 | "name": "Gert de Pagter", 1952 | "email": "BackEndTea@gmail.com" 1953 | }, 1954 | { 1955 | "name": "Symfony Community", 1956 | "homepage": "https://symfony.com/contributors" 1957 | } 1958 | ], 1959 | "description": "Symfony polyfill for ctype functions", 1960 | "homepage": "https://symfony.com", 1961 | "keywords": [ 1962 | "compatibility", 1963 | "ctype", 1964 | "polyfill", 1965 | "portable" 1966 | ], 1967 | "time": "2020-07-14T12:35:20+00:00" 1968 | }, 1969 | { 1970 | "name": "theseer/tokenizer", 1971 | "version": "1.2.0", 1972 | "source": { 1973 | "type": "git", 1974 | "url": "https://github.com/theseer/tokenizer.git", 1975 | "reference": "75a63c33a8577608444246075ea0af0d052e452a" 1976 | }, 1977 | "dist": { 1978 | "type": "zip", 1979 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", 1980 | "reference": "75a63c33a8577608444246075ea0af0d052e452a", 1981 | "shasum": "", 1982 | "mirrors": [ 1983 | { 1984 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 1985 | "preferred": true 1986 | } 1987 | ] 1988 | }, 1989 | "require": { 1990 | "ext-dom": "*", 1991 | "ext-tokenizer": "*", 1992 | "ext-xmlwriter": "*", 1993 | "php": "^7.2 || ^8.0" 1994 | }, 1995 | "type": "library", 1996 | "autoload": { 1997 | "classmap": [ 1998 | "src/" 1999 | ] 2000 | }, 2001 | "notification-url": "https://packagist.org/downloads/", 2002 | "license": [ 2003 | "BSD-3-Clause" 2004 | ], 2005 | "authors": [ 2006 | { 2007 | "name": "Arne Blankerts", 2008 | "email": "arne@blankerts.de", 2009 | "role": "Developer" 2010 | } 2011 | ], 2012 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2013 | "time": "2020-07-12T23:59:07+00:00" 2014 | }, 2015 | { 2016 | "name": "webmozart/assert", 2017 | "version": "1.9.1", 2018 | "source": { 2019 | "type": "git", 2020 | "url": "https://github.com/webmozart/assert.git", 2021 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" 2022 | }, 2023 | "dist": { 2024 | "type": "zip", 2025 | "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", 2026 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", 2027 | "shasum": "", 2028 | "mirrors": [ 2029 | { 2030 | "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", 2031 | "preferred": true 2032 | } 2033 | ] 2034 | }, 2035 | "require": { 2036 | "php": "^5.3.3 || ^7.0 || ^8.0", 2037 | "symfony/polyfill-ctype": "^1.8" 2038 | }, 2039 | "conflict": { 2040 | "phpstan/phpstan": "<0.12.20", 2041 | "vimeo/psalm": "<3.9.1" 2042 | }, 2043 | "require-dev": { 2044 | "phpunit/phpunit": "^4.8.36 || ^7.5.13" 2045 | }, 2046 | "type": "library", 2047 | "autoload": { 2048 | "psr-4": { 2049 | "Webmozart\\Assert\\": "src/" 2050 | } 2051 | }, 2052 | "notification-url": "https://packagist.org/downloads/", 2053 | "license": [ 2054 | "MIT" 2055 | ], 2056 | "authors": [ 2057 | { 2058 | "name": "Bernhard Schussek", 2059 | "email": "bschussek@gmail.com" 2060 | } 2061 | ], 2062 | "description": "Assertions to validate method input/output with nice error messages.", 2063 | "keywords": [ 2064 | "assert", 2065 | "check", 2066 | "validate" 2067 | ], 2068 | "time": "2020-07-08T17:02:28+00:00" 2069 | } 2070 | ], 2071 | "aliases": [], 2072 | "minimum-stability": "stable", 2073 | "stability-flags": [], 2074 | "prefer-stable": false, 2075 | "prefer-lowest": false, 2076 | "platform": [], 2077 | "platform-dev": [] 2078 | } 2079 | --------------------------------------------------------------------------------