From 46b64572601f9a18143ad63f777181f4b884396e Mon Sep 17 00:00:00 2001
From: zhoudw <zhoudw@infobird.com>
Date: Mon, 27 Dec 2021 09:28:55 +0800
Subject: [PATCH] hy
---
runtime/container/classes.cache | 1
config/autoload/databases.php | 39
config/autoload/commands.php | 13
app/Utils/guid.php | 78
config/autoload/logger.php | 30
runtime/container/proxy/App_Controller_WebsocketController.proxy.php | 211 +
config/autoload/cache.php | 18
app/Controller/WebsocketController.php | 203 +
index.html | 75
config/autoload/processes.php | 13
config/autoload/listeners.php | 13
runtime/hyperf.pid | 1
composer.lock | 7102 +++++++++++++++++++++++++++++++++++++++++++++++
config/autoload/devtool.php | 44
composer.json | 78
runtime/container/proxy/App_Service_TransferService.proxy.php | 102
config/autoload/redis.php | 27
config/routes.php | 16
app/Utils/Http.php | 196 +
config/autoload/exceptions.php | 20
config/container.php | 24
config/autoload/server.php | 53
app/Utils/HashMap.php | 122
config/autoload/aspects.php | 13
config/config.php | 33
app/Service/TransferService.php | 110
runtime/container/aspects.cache | 1
runtime/container/proxy/App_Utils_Http.proxy.php | 145
app/Model/Model.php | 18
bin/hyperf.php | 23
config/autoload/annotations.php | 21
runtime/container/scan.cache | 1
app/Exception/Handler/AppExceptionHandler.php | 43
config/autoload/middlewares.php | 15
app/Listener/DbQueryExecutedListener.php | 61
config/autoload/dependencies.php | 13
36 files changed, 8,976 insertions(+), 0 deletions(-)
diff --git a/app/Controller/WebsocketController.php b/app/Controller/WebsocketController.php
new file mode 100644
index 0000000..4f9fc70
--- /dev/null
+++ b/app/Controller/WebsocketController.php
@@ -0,0 +1,203 @@
+<?php
+/*
+ * @Author: your name
+ * @Date: 2021-12-24 10:26:10
+ * @LastEditTime: 2021-12-24 17:21:42
+ * @LastEditors: Please set LastEditors
+ * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ * @FilePath: /hy-websocket/app/Controller/WebsocketController.php
+ */
+
+declare(strict_types=1);
+
+namespace App\Controller;
+
+use Hyperf\Contract\OnCloseInterface;
+use Hyperf\Contract\OnMessageInterface;
+use Hyperf\Contract\OnOpenInterface;
+use Swoole\Http\Request;
+use Swoole\Http\Response;
+use Swoole\WebSocket\Frame;
+use Swoole\WebSocket\Server;
+use Hyperf\Di\Annotation\Inject;
+use App\Service\TransferService;
+use Hyperf\Logger\LoggerFactory;
+use Hyperf\Contract\ConfigInterface;
+
+class WebsocketController implements OnMessageInterface, OnOpenInterface, OnCloseInterface
+{
+ /**
+ * @Inject
+ * @var TransferService
+ */
+ private $transferService;
+ /**
+ *
+ * @var \Psr\Log\LoggerInterface
+ */
+ public $logger;
+
+ /**
+ * @Inject()
+ * @var ConfigInterface
+ */
+ private $config;
+
+ private $server_config;
+
+ private $allow_ip;
+
+ public function __construct(LoggerFactory $loggerFactory)
+ {
+ // 第一个参数对应日志的 name, 第二个参数对应 config/autoload/logger.php 内的 key
+ $this->logger = $loggerFactory->get('log','default');
+ //获取 server.php 里的内容
+ $this->server_config = $this->config->get('server.servers','');
+ $this->allow_ip = $this->server_config[0]['allow_ip'];
+ }
+
+ public function onClose($server, int $fd, int $reactorId): void
+ {
+ //客户端异常关闭
+ //语音文件传输完毕,关闭文件。
+ $host = $this->allow_ip;
+ $group_key = $this->transferService->get($host.':'.$fd.':group');
+ $this->transferService->lrem($group_key,$fd,0);
+ $set_ket = $host.':'.$fd.':group';
+ $this->transferService->delete($set_ket);
+ }
+
+ public function onStart($server): void
+ {
+ $host = $this->allow_ip;
+ $keyList = $this->transferService->keys("*{$host}*");
+ foreach ($keyList as $key => $value) {
+ $this->transferService->delete($value);
+ }
+ }
+ /**
+ * @param Response|Server $server
+ */
+ public function onMessage($server, Frame $frame): void
+ {
+ $ret = array('code' => 0, 'data' => null);
+ $msgData = $this->is_json($frame->data,true);
+ if($msgData){
+ $frameData = $msgData;
+ $url = $frameData['url'];
+ $data = $frameData['data'];
+ $action = substr($url, strrpos($url, "/") + 1);
+ switch ($action)
+ {
+ case "reg":
+ $groupId = $data['group_id'];
+ $session = $data['session_id'];
+ $this->bind($groupId,'',$frame->fd);
+ $key = "practice_scenes_ws_cur_session_info:".$session;
+ $node_key = 'practice_scenes_ws_cur_session_node_info:'.$session;
+ $redisData = $this->transferService->get($key);
+ if($redisData){
+ $ret['data'] =json_decode($redisData,true);
+ $this->transferService->delete($key);
+ }else{
+ $redisData = $this->transferService->get($node_key);
+ if($redisData){
+ $ret['data'] = json_decode($redisData,true);
+ }else{
+ $ret['data'] = '';
+ }
+ }
+ $ret['event'] = "re_bind";
+ $server->push($frame->fd, json_encode($ret));
+ break;
+ case "data":
+ $groupId = $data['group_id'];
+ $ret['event'] = "data";
+ $ret['data'] = $data;
+ $connections = array();
+ if(empty($groupId)){
+ // 获取所有无分组标识在线终端
+ $onlines = count($server->connections);
+ if ($onlines > 0) {
+ $connections = $server->connections;
+ }
+ }else{
+ // 获取所有分组标识在线终端 key = groupID:host
+ $key = $groupId . ':' . $this->allow_ip;
+ $connections = $this->transferService->lrange($key, 0, -1);
+ }
+ $connections = array_unique($connections);
+ // 广播获取的在线终端
+ foreach ($connections as $fd) {
+ $ingfd = (int)$fd;
+ $server->push($ingfd,json_encode($ret));
+ }
+ break;
+ case "ping":
+ $server->push($frame->fd, $data.'pong');
+ break;
+ default:
+ $ret['code'] = 404;
+ $ret['msg'] = 'event no existent';
+ $server->push($frame->fd,json_encode($ret));
+ return;
+ }
+ }else{
+ $ret['code'] = -1;
+ $ret['msg'] = 'data is null or data no json';
+ $server->push($frame->fd, json_encode($ret));
+ return;
+ }
+ }
+
+ public function onOpen($server, Request $request): void
+ {
+ // $server->push($request->fd, 'Opened');
+ // var_dump($request);
+ }
+
+ /**
+ * 功能:1、判断是否是json
+ * @param string $data
+ * @param bool $assoc
+ * @return bool|mixed|string
+ */
+ public function is_json($data = '', $assoc = false)
+ {
+ $data = json_decode($data, $assoc);
+ if ($data && (is_object($data)) || (is_array($data) && ! empty(current($data)))) {
+ return $data;
+ }
+ return false;
+ }
+
+ /**
+ * 当前链接的绑定事件。
+ * 绑定的几种状态:
+ * 1.无分组
+ * host -> fds (获取当前节点的在线链接列表)
+ * host:fd -> value (获取当前节点当前链接的绑定数据)
+ * host:fd:group -> host (获取当前节点当前链接的绑定分组)
+ * 2.有分组
+ * groupID:host -> fds
+ * host:fd -> value
+ * host:fd:group -> groupID:host
+ * @param string $groupID 需要绑定当前链接所在分组的分组标识,如果为空则使用默认分组
+ * @param string $value 需要绑定当前链接对应的业务数据,如果为空则不绑定
+ */
+ public function bind($groupID = '', $value = '',$fd){
+ $host = $this->allow_ip;
+ // 绑定分组和当前链接对应的分组标识
+ if(empty($groupID)){
+ $this->transferService->rpush($host, $fd);
+ $this->transferService->set($host.':'.$fd.':group', $host);
+ }else{
+ $this->transferService->rpush($groupID.':'.$host, $fd);
+ $this->transferService->set($host.':'.$fd.':group', $groupID.':'.$host);
+ }
+ // 绑定业务数据
+ if(!empty($value)){
+ $this->transferService->set($host.':'.$fd, $value);
+ }
+ }
+}
diff --git a/app/Exception/Handler/AppExceptionHandler.php b/app/Exception/Handler/AppExceptionHandler.php
new file mode 100644
index 0000000..188d298
--- /dev/null
+++ b/app/Exception/Handler/AppExceptionHandler.php
@@ -0,0 +1,43 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+namespace App\Exception\Handler;
+
+use Hyperf\Contract\StdoutLoggerInterface;
+use Hyperf\ExceptionHandler\ExceptionHandler;
+use Hyperf\HttpMessage\Stream\SwooleStream;
+use Psr\Http\Message\ResponseInterface;
+use Throwable;
+
+class AppExceptionHandler extends ExceptionHandler
+{
+ /**
+ * @var StdoutLoggerInterface
+ */
+ protected $logger;
+
+ public function __construct(StdoutLoggerInterface $logger)
+ {
+ $this->logger = $logger;
+ }
+
+ public function handle(Throwable $throwable, ResponseInterface $response)
+ {
+ $this->logger->error(sprintf('%s[%s] in %s', $throwable->getMessage(), $throwable->getLine(), $throwable->getFile()));
+ $this->logger->error($throwable->getTraceAsString());
+ return $response->withHeader('Server', 'Hyperf')->withStatus(500)->withBody(new SwooleStream('Internal Server Error.'));
+ }
+
+ public function isValid(Throwable $throwable): bool
+ {
+ return true;
+ }
+}
diff --git a/app/Listener/DbQueryExecutedListener.php b/app/Listener/DbQueryExecutedListener.php
new file mode 100644
index 0000000..abe5a52
--- /dev/null
+++ b/app/Listener/DbQueryExecutedListener.php
@@ -0,0 +1,61 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+namespace App\Listener;
+
+use Hyperf\Database\Events\QueryExecuted;
+use Hyperf\Event\Annotation\Listener;
+use Hyperf\Event\Contract\ListenerInterface;
+use Hyperf\Logger\LoggerFactory;
+use Hyperf\Utils\Arr;
+use Hyperf\Utils\Str;
+use Psr\Container\ContainerInterface;
+use Psr\Log\LoggerInterface;
+
+/**
+ * @Listener
+ */
+class DbQueryExecutedListener implements ListenerInterface
+{
+ /**
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ public function __construct(ContainerInterface $container)
+ {
+ $this->logger = $container->get(LoggerFactory::class)->get('sql');
+ }
+
+ public function listen(): array
+ {
+ return [
+ QueryExecuted::class,
+ ];
+ }
+
+ /**
+ * @param QueryExecuted $event
+ */
+ public function process(object $event)
+ {
+ if ($event instanceof QueryExecuted) {
+ $sql = $event->sql;
+ if (! Arr::isAssoc($event->bindings)) {
+ foreach ($event->bindings as $key => $value) {
+ $sql = Str::replaceFirst('?', "'{$value}'", $sql);
+ }
+ }
+
+ $this->logger->info(sprintf('[%s] %s', $event->time, $sql));
+ }
+ }
+}
diff --git a/app/Model/Model.php b/app/Model/Model.php
new file mode 100644
index 0000000..fe03061
--- /dev/null
+++ b/app/Model/Model.php
@@ -0,0 +1,18 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model as BaseModel;
+
+abstract class Model extends BaseModel
+{
+}
diff --git a/app/Service/TransferService.php b/app/Service/TransferService.php
new file mode 100644
index 0000000..a7d394a
--- /dev/null
+++ b/app/Service/TransferService.php
@@ -0,0 +1,110 @@
+<?php
+namespace App\Service;
+use Hyperf\Redis\Redis;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\Config\Annotation\Value;
+
+use App\Utils\Http;
+
+class TransferService extends Http
+{
+ /**
+ *
+ * @Inject
+ * @var Redis
+ */
+ private $redis;
+
+ public function ping()
+ {
+ $result=$this->redis->ping();
+ }
+
+ public function setnx($strKey,$value)
+ {
+ $this->redis->setnx($strKey,$value);
+ }
+
+ public function set($strKey,$value)
+ {
+ $this->redis->set($strKey,$value);
+ }
+
+ public function get($strKey)
+ {
+ return $this->redis->get($strKey);
+ }
+
+ public function delete($strKey)
+ {
+ $this->redis->del($strKey);
+ }
+
+ public function incrby($str_key,$value=0){
+ $this->redis->incrby($str_key,$value);
+ }
+
+ public function incr($fd){
+ return $this->redis->incr($fd);
+ }
+
+ public function decr($strKey)
+ {
+ return $this->redis->decr($strKey);
+ }
+
+ public function decrby($strKey,$num)
+ {
+ return $this->redis->decrby($strKey,$num);
+ }
+
+ public function lSize($strKey)
+ {
+ return $this->redis->lSize($strKey);
+ }
+
+ public function lGet($strKey,$index)
+ {
+ return $this->redis->lGet($strKey,$index);
+ }
+
+ public function lrem($strKey,$value,$index)
+ {
+ return $this->redis->lrem($strKey,$value,$index);
+ }
+
+ public function lPush($strKey,$value)
+ {
+ $this->redis->lPush($strKey,$value);
+ }
+
+ public function rPush($strKey,$value)
+ {
+ $this->redis->rPush($strKey,$value);
+ }
+
+ public function lPop($strKey)
+ {
+ return $this->redis->lPop($strKey);
+ }
+
+ public function rPop($strKey)
+ {
+ return $this->redis->rPop($strKey);
+ }
+
+ public function lSet($strKey,$index,$value)
+ {
+ return $this->redis->lSet($strKey,$index,$value);
+ }
+
+ public function lrange($strKey,$index,$length)
+ {
+ return $this->redis->lrange($strKey,$index,$length);
+ }
+
+ public function keys($strKey)
+ {
+ return $this->redis->keys($strKey);
+ }
+}
\ No newline at end of file
diff --git a/app/Utils/HashMap.php b/app/Utils/HashMap.php
new file mode 100644
index 0000000..1836de7
--- /dev/null
+++ b/app/Utils/HashMap.php
@@ -0,0 +1,122 @@
+<?php
+
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+namespace App\Utils;
+
+class HashMap
+{
+ var $m_table;
+
+
+ public function __construct()
+ {
+ $this->m_table = array ();
+ }
+
+ public function put($key, $value)
+ {
+ if (!array_key_exists($key, $this->m_table))
+ {
+ $this->m_table[$key] = $value;
+ return null;
+ }
+ else
+ {
+ $tempValue = $this->m_table[$key];
+ $this->m_table[$key] = $value;
+ return $tempValue;
+ }
+ }
+
+
+ public function get($key)
+ {
+ if (array_key_exists($key, $this->m_table))
+ return $this->m_table[$key];
+ return null;
+ }
+
+ public function remove($key)
+ {
+ if(array_key_exists($key, $this->m_table))
+ {
+ unset($this->m_table[$key]);
+ }
+ return $this->m_table;
+ }
+
+ public function keys()
+ {
+ return array_keys($this->m_table);
+ }
+
+ public function values()
+ {
+ return array_values($this->m_table);
+ }
+
+ public function put_all($map)
+ {
+ if(!$map->isEmpty()&& $map->size()>0)
+ {
+ $keys = $map->keys();
+ foreach($keys as $key)
+ {
+ $this->put($key,$map->get($key));
+ }
+ }
+ }
+
+ public function clear()
+ {
+ unset($this->m_table);
+ //$this->m_table = null;
+ $this->m_table = array ();
+ }
+
+ public function contains_value($value)
+ {
+ while ($curValue = current($this->m_table))
+ {
+ if ($curValue == $value)
+ {
+ return true;
+ }
+ next($this->m_table);
+ }
+ return false;
+ }
+
+ public function containsKey($key)
+ {
+ if (array_key_exists($key, $this->m_table))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ public function size()
+ {
+ return count($this->m_table);
+ }
+
+ public function is_empty()
+ {
+ return (count($this->m_table) == 0);
+ }
+
+ public function toString()
+ {
+ print_r($this->m_table);
+ }
+}
+
+?>
\ No newline at end of file
diff --git a/app/Utils/Http.php b/app/Utils/Http.php
new file mode 100644
index 0000000..5b2e919
--- /dev/null
+++ b/app/Utils/Http.php
@@ -0,0 +1,196 @@
+<?php
+namespace App\Utils;
+
+use GuzzleHttp\Client;
+use GuzzleHttp\HandlerStack;
+use Hyperf\Guzzle\CoroutineHandler;
+use GuzzleHttp\Exception\ClientException;
+
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\Guzzle\ClientFactory;
+
+class Http {
+
+ /**
+ * @Inject
+ * @var ClientFactory
+ */
+ private $clientFactory;
+
+ function get_host($url,&$path){
+ $pos=strpos($url,"/",8);
+ if (!$pos) {
+ $path="/";
+ return $url;
+ }
+
+ $path=substr($url,$pos);
+ return substr($url,0,$pos);
+ }
+
+ public function get_content_length($url,$time_out=60)
+ {
+ if ($url=="") {
+ return 0;
+ }
+
+ try {
+
+ $options = [
+ 'base_uri' => "",
+ 'handler' => HandlerStack::create(new CoroutineHandler()),
+ 'timeout' => $time_out,
+ 'swoole' => [
+ 'timeout' => $time_out,
+ 'socket_buffer_size' => 1024 * 1024 * 2,
+ ],
+ ];
+
+ $path="";
+ $host=$this->get_host($url,$path);
+ if ($host=="") {
+ return 0;
+ }
+ $options["base_uri"]=$host;
+ $client = $this->clientFactory->create($options);
+ $response=$client->get($path);
+ if ($response->getStatusCode()!=200) {
+ return 0;
+ }
+
+ $str_size = $response->getHeader('Content-Length');
+ $size = intval($str_size[0]);
+ return $size;
+ } catch (ClientException $e) {
+ //获取协程中出现的异常。
+ $response_e=$e->getResponse();
+ }
+
+ return 0;
+ }
+
+ public function get_web_result($url,$time_out=10)
+ {
+ if ($url=="") {
+ return "";
+ }
+
+ $path="";
+ $host=$this->get_host($url,$path);
+ if ($host=="") {
+ return "";
+ }
+ $options = [
+ 'base_uri' => $host,
+ 'handler' => HandlerStack::create(new CoroutineHandler()),
+ 'timeout' => $time_out,
+ 'swoole' => [
+ 'timeout' => $time_out,
+ 'socket_buffer_size' => 1024 * 1024 * 2,
+ ],
+ ];
+
+ try {
+ //var_dump($this->clientFactory);
+ $client = $this->clientFactory->create($options);
+ $response=$client->get($path);
+ if ($response->getStatusCode()==200) {
+ $strContent=$response->getBody()->getContents();
+ //echo "$strContent\r\n";
+ return $strContent;
+ }
+
+ } catch (ClientException $e) {
+ //获取协程中出现的异常。
+ var_dump($e->getResponse());
+ }
+ return "";
+ }
+
+ public function post_web_result($url,$post_data,$time_out=10)
+ {
+
+ if ($url=="") {
+ return "";
+ }
+
+
+ $path="";
+ $host=$this->get_host($url,$path);
+ if ($host=="") {
+ return "";
+ }
+
+ $options = [
+ 'base_uri' => $host,
+ 'handler' => HandlerStack::create(new CoroutineHandler()),
+ 'timeout' => $time_out,
+ 'swoole' => [
+ 'timeout' => $time_out,
+ 'socket_buffer_size' => 1024 * 1024 * 2,
+ ],
+ ];
+
+ try {
+ $client = $this->clientFactory->create($options);
+ $response = $client->request('POST', $url, ['form_params' => $post_data]);
+ //debug
+ //$response = $client->request('POST', $url, ['form_params' => $post_data,'debug' => true]);
+ if ($response->getStatusCode()==200) {
+ $strContent=$response->getBody()->getContents();
+ //echo "$strContent\r\n";
+ return $strContent;
+ }
+
+ } catch (ClientException $e) {
+ //获取协程中出现的异常。
+ //var_dump($e->getResponse());
+ }
+ return "";
+ }
+
+ public function post_json_result($url,$post_data,$time_out=10)
+ {
+
+ if ($url=="") {
+ return "";
+ }
+
+ $path="";
+ $host=$this->get_host($url,$path);
+ if ($host=="") {
+ return "";
+ }
+
+ $options = [
+ 'base_uri' => $host,
+ 'handler' => HandlerStack::create(new CoroutineHandler()),
+ 'timeout' => $time_out,
+ 'swoole' => [
+ 'timeout' => $time_out,
+ 'socket_buffer_size' => 1024 * 1024 * 2,
+ ],
+ ];
+
+ try {
+ $client = $this->clientFactory->create($options);
+ if (is_array($post_data)) {
+ $response = $client->request('POST', $url, ['body' => json_encode($post_data),"headers"=>['Accept'=> 'application/json']]);
+ }else{
+ $response = $client->request('POST', $url, ['body' => $post_data,"headers"=>['Accept'=> 'application/json']]);
+ }
+ //debug
+ //$response = $client->request('POST', $url, ['form_params' => $post_data,'debug' => true]);
+ if ($response->getStatusCode()==200) {
+ $strContent=$response->getBody()->getContents();
+ //echo "$strContent\r\n";
+ return $strContent;
+ }
+
+ } catch (ClientException $e) {
+ //获取协程中出现的异常。
+ var_dump($e->getResponse());
+ }
+ return "";
+ }
+}
\ No newline at end of file
diff --git a/app/Utils/guid.php b/app/Utils/guid.php
new file mode 100644
index 0000000..67a5490
--- /dev/null
+++ b/app/Utils/guid.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ *文件名:UserInfo.php
+ *编写人:杨林康
+ *时间 :2014-04-23
+ *功能 :生成Guid
+ *备注 :使用时GUID::create()生成guid
+ */
+namespace App\Utils;
+
+class guid
+{
+ public static function create()
+ {
+ $microTime = microtime();
+ list($a_dec, $a_sec) = explode(" ", $microTime);
+ $dec_hex = dechex($a_dec* 1000000);
+ $sec_hex = dechex($a_sec);
+ guid::ensureLength($dec_hex, 5);
+ guid::ensureLength($sec_hex, 6);
+ $guid = "";
+ $guid .= $dec_hex;
+ $guid .= guid::createGuidSection(3);
+ $guid .= '-';
+ $guid .= guid::createGuidSection(4);
+ $guid .= '-';
+ $guid .= guid::createGuidSection(4);
+ $guid .= '-';
+ $guid .= guid::createGuidSection(4);
+ $guid .= '-';
+ $guid .= $sec_hex;
+ $guid .= guid::createGuidSection(6);
+ $ret = str_replace("-","",$guid);
+ return $ret;
+ }
+
+ public static function getGuid(){
+ $microTime = microtime();
+ list($a_dec, $a_sec) = explode(" ", $microTime);
+ $dec_hex = dechex($a_dec* 1000000);
+ $sec_hex = dechex($a_sec);
+ guid::ensureLength($dec_hex, 5);
+ guid::ensureLength($sec_hex, 6);
+ $guid = "";
+ $guid .= $dec_hex;
+ $guid .= guid::createGuidSection(3);
+ $guid .= guid::createGuidSection(4);
+ $guid .= guid::createGuidSection(4);
+ $guid .= guid::createGuidSection(4);
+ $guid .= $sec_hex;
+ $guid .= guid::createGuidSection(6);
+ return $guid;
+ }
+
+ public static function ensureLength(&$string, $length)
+ {
+ $strlen = strlen($string);
+ if($strlen < $length)
+ {
+ $string = str_pad($string,$length,"0");
+ }
+ else if($strlen > $length)
+ {
+ $string = substr($string, 0, $length);
+ }
+ }
+
+ public static function createGuidSection($characters)
+ {
+ $return = "";
+ for($i=0; $i<$characters; $i++)
+ {
+ $return .= dechex(mt_rand(0,15));
+ }
+ return $return;
+ }
+}
\ No newline at end of file
diff --git a/bin/hyperf.php b/bin/hyperf.php
new file mode 100644
index 0000000..10edca5
--- /dev/null
+++ b/bin/hyperf.php
@@ -0,0 +1,23 @@
+#!/usr/bin/env php
+<?php
+
+ini_set('display_errors', 'on');
+ini_set('display_startup_errors', 'on');
+ini_set('memory_limit', '1G');
+
+error_reporting(E_ALL);
+
+! defined('BASE_PATH') && define('BASE_PATH', dirname(__DIR__, 1));
+! defined('SWOOLE_HOOK_FLAGS') && define('SWOOLE_HOOK_FLAGS', SWOOLE_HOOK_ALL);
+
+require BASE_PATH . '/vendor/autoload.php';
+
+// Self-called anonymous function that creates its own scope and keep the global namespace clean.
+(function () {
+ Hyperf\Di\ClassLoader::init();
+ /** @var Psr\Container\ContainerInterface $container */
+ $container = require BASE_PATH . '/config/container.php';
+
+ $application = $container->get(Hyperf\Contract\ApplicationInterface::class);
+ $application->run();
+})();
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..73d8516
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,78 @@
+{
+ "name": "hyperf/hyperf-skeleton",
+ "type": "project",
+ "keywords": [
+ "php",
+ "swoole",
+ "framework",
+ "hyperf",
+ "microservice",
+ "middleware"
+ ],
+ "description": "A coroutine framework that focuses on hyperspeed and flexible, specifically use for build microservices and middlewares.",
+ "license": "Apache-2.0",
+ "require": {
+ "php": ">=7.3",
+ "hyperf/cache": "~2.2.0",
+ "hyperf/command": "~2.2.0",
+ "hyperf/config": "~2.2.0",
+ "hyperf/di": "^2.2",
+ "hyperf/framework": "~2.2.0",
+ "hyperf/guzzle": "~2.2.0",
+ "hyperf/http-server": "~2.2.0",
+ "hyperf/logger": "~2.2.0",
+ "hyperf/memory": "~2.2.0",
+ "hyperf/process": "~2.2.0",
+ "hyperf/redis": "~2.2.0",
+ "hyperf/websocket-server": "^2.2"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "hyperf/devtool": "~2.2.0",
+ "hyperf/ide-helper": "~2.2.0",
+ "hyperf/testing": "~2.2.0",
+ "mockery/mockery": "^1.0",
+ "phpstan/phpstan": "^0.12",
+ "swoole/ide-helper": "^4.5"
+ },
+ "suggest": {
+ "ext-openssl": "Required to use HTTPS.",
+ "ext-json": "Required to use JSON.",
+ "ext-pdo": "Required to use MySQL Client.",
+ "ext-pdo_mysql": "Required to use MySQL Client.",
+ "ext-redis": "Required to use Redis Client."
+ },
+ "autoload": {
+ "psr-4": {
+ "App\\": "app/"
+ },
+ "files": []
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "HyperfTest\\": "./test/"
+ }
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true,
+ "config": {
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "extra": [],
+ "scripts": {
+ "post-root-package-install": [
+ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
+ ],
+ "post-autoload-dump": [
+ "rm -rf runtime/container"
+ ],
+ "test": "co-phpunit --prepend test/bootstrap.php -c phpunit.xml --colors=always",
+ "cs-fix": "php-cs-fixer fix $1",
+ "analyse": "phpstan analyse --memory-limit 300M -l 0 -c phpstan.neon ./app ./config",
+ "start": [
+ "Composer\\Config::disableProcessTimeout",
+ "php ./bin/hyperf.php start"
+ ]
+ }
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..b8c599a
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,7102 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "d77fe9d75f0110c1f8eef2addafdad9e",
+ "packages": [
+ {
+ "name": "doctrine/annotations",
+ "version": "1.13.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08",
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "ext-tokenizer": "*",
+ "php": "^7.1 || ^8.0",
+ "psr/cache": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "doctrine/cache": "^1.11 || ^2.0",
+ "doctrine/coding-standard": "^6.0 || ^8.1",
+ "phpstan/phpstan": "^0.12.20",
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5",
+ "symfony/cache": "^4.4 || ^5.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Docblock Annotations Parser",
+ "homepage": "https://www.doctrine-project.org/projects/annotations.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "parser"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/annotations/issues",
+ "source": "https://github.com/doctrine/annotations/tree/1.13.2"
+ },
+ "time": "2021-08-05T19:00:23+00:00"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
+ "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpstan/phpstan-strict-rules": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
+ "vimeo/psalm": "^4.10"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
+ "homepage": "https://www.doctrine-project.org/projects/inflector.html",
+ "keywords": [
+ "inflection",
+ "inflector",
+ "lowercase",
+ "manipulation",
+ "php",
+ "plural",
+ "singular",
+ "strings",
+ "uppercase",
+ "words"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/inflector/issues",
+ "source": "https://github.com/doctrine/inflector/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-22T20:16:43+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.0",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-10T18:47:58+00:00"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "e864bbf5904cb8f5bb334f99209b48018522f042"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042",
+ "reference": "e864bbf5904cb8f5bb334f99209b48018522f042",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpstan/phpstan": "^0.11.8",
+ "phpunit/phpunit": "^8.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "https://www.doctrine-project.org/projects/lexer.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "lexer",
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/lexer/issues",
+ "source": "https://github.com/doctrine/lexer/tree/1.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-25T17:44:05+00:00"
+ },
+ {
+ "name": "fig/http-message-util",
+ "version": "1.1.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message-util.git",
+ "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765",
+ "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3 || ^7.0 || ^8.0"
+ },
+ "suggest": {
+ "psr/http-message": "The package containing the PSR-7 interfaces"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Fig\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Utility classes and constants for use with PSR-7 (psr/http-message)",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/http-message-util/issues",
+ "source": "https://github.com/php-fig/http-message-util/tree/1.1.5"
+ },
+ "time": "2020-11-24T22:02:12+00:00"
+ },
+ {
+ "name": "graham-campbell/result-type",
+ "version": "v1.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/GrahamCampbell/Result-Type.git",
+ "reference": "0690bde05318336c7221785f2a932467f98b64ca"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca",
+ "reference": "0690bde05318336c7221785f2a932467f98b64ca",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0",
+ "phpoption/phpoption": "^1.8"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "GrahamCampbell\\ResultType\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ }
+ ],
+ "description": "An Implementation Of The Result Type",
+ "keywords": [
+ "Graham Campbell",
+ "GrahamCampbell",
+ "Result Type",
+ "Result-Type",
+ "result"
+ ],
+ "support": {
+ "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
+ "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-21T21:41:47+00:00"
+ },
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "7.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79",
+ "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "guzzlehttp/promises": "^1.5",
+ "guzzlehttp/psr7": "^1.8.3 || ^2.1",
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-client": "^1.0",
+ "symfony/deprecation-contracts": "^2.2 || ^3.0"
+ },
+ "provide": {
+ "psr/http-client-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.4.1",
+ "ext-curl": "*",
+ "php-http/client-integration-tests": "^3.0",
+ "phpunit/phpunit": "^8.5.5 || ^9.3.5",
+ "psr/log": "^1.1 || ^2.0 || ^3.0"
+ },
+ "suggest": {
+ "ext-curl": "Required for CURL handler support",
+ "ext-intl": "Required for Internationalized Domain Name (IDN) support",
+ "psr/log": "Required for using the Log middleware"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Jeremy Lindblom",
+ "email": "jeremeamia@gmail.com",
+ "homepage": "https://github.com/jeremeamia"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "psr-18",
+ "psr-7",
+ "rest",
+ "web service"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/guzzle/issues",
+ "source": "https://github.com/guzzle/guzzle/tree/7.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-12-06T18:43:05+00:00"
+ },
+ {
+ "name": "guzzlehttp/promises",
+ "version": "1.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
+ "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^4.4 || ^5.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/1.5.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-22T20:56:57+00:00"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72",
+ "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.0",
+ "ralouphie/getallheaders": "^3.0"
+ },
+ "provide": {
+ "psr/http-factory-implementation": "1.0",
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.4.1",
+ "http-interop/http-factory-tests": "^0.9",
+ "phpunit/phpunit": "^8.5.8 || ^9.3.10"
+ },
+ "suggest": {
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/2.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-06T17:43:30+00:00"
+ },
+ {
+ "name": "hyperf/cache",
+ "version": "v2.2.15",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/cache.git",
+ "reference": "3bafd85dae6f333567231339a9019cea35457379"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/cache/zipball/3bafd85dae6f333567231339a9019cea35457379",
+ "reference": "3bafd85dae6f333567231339a9019cea35457379",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0",
+ "psr/simple-cache": "^1.0"
+ },
+ "suggest": {
+ "hyperf/di": "Use cache annotations.",
+ "hyperf/event": "Use listener to delete annotation cache."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Cache\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A cache component for hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "cache",
+ "hyperf",
+ "php"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-11-02T10:34:27+00:00"
+ },
+ {
+ "name": "hyperf/command",
+ "version": "v2.2.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/command.git",
+ "reference": "eb15924c33532e9eced5c7401f94e064324ed03e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/command/zipball/eb15924c33532e9eced5c7401f94e064324ed03e",
+ "reference": "eb15924c33532e9eced5c7401f94e064324ed03e",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2",
+ "psr/event-dispatcher": "^1.0",
+ "symfony/console": "^5.0"
+ },
+ "suggest": {
+ "hyperf/di": "Required to use annotations."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Command\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Command for hyperf",
+ "keywords": [
+ "command",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "issues": "https://github.com/hyperf/command/issues",
+ "source": "https://github.com/hyperf/command/tree/v2.2.9"
+ },
+ "time": "2021-09-16T07:20:30+00:00"
+ },
+ {
+ "name": "hyperf/config",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/config.git",
+ "reference": "ccdcc79ec244612c04f186e65b222ad778db75e9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/config/zipball/ccdcc79ec244612c04f186e65b222ad778db75e9",
+ "reference": "ccdcc79ec244612c04f186e65b222ad778db75e9",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0",
+ "symfony/finder": "^5.0"
+ },
+ "suggest": {
+ "hyperf/di": "Allows using @Value annotation",
+ "hyperf/event": "Allows using @Value annotation",
+ "hyperf/framework": "Allows using @Value annotation",
+ "vlucas/phpdotenv": "Allows using enviroment value to override the config"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Config\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "files": [
+ "./src/Functions.php"
+ ],
+ "psr-4": {
+ "Hyperf\\Config\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "An independent component that provides configuration container.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "config",
+ "configuration",
+ "hyperf",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-07-18T06:50:14+00:00"
+ },
+ {
+ "name": "hyperf/contract",
+ "version": "v2.2.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/contract.git",
+ "reference": "6fe18888f8f868a7dad78fefe9397e45a39f3b2e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/contract/zipball/6fe18888f8f868a7dad78fefe9397e45a39f3b2e",
+ "reference": "6fe18888f8f868a7dad78fefe9397e45a39f3b2e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Contract\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "The contracts of Hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "hyperf",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-09-08T04:11:54+00:00"
+ },
+ {
+ "name": "hyperf/di",
+ "version": "v2.2.20",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/di.git",
+ "reference": "9efb9451d0df5d9a7636b0eb768f9c36d674a077"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/di/zipball/9efb9451d0df5d9a7636b0eb768f9c36d674a077",
+ "reference": "9efb9451d0df5d9a7636b0eb768f9c36d674a077",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.6",
+ "doctrine/instantiator": "^1.0",
+ "nikic/php-parser": "^4.1",
+ "php": ">=7.3",
+ "php-di/phpdoc-reader": "^2.2",
+ "psr/container": "^1.0|^2.0",
+ "symfony/finder": "^5.0",
+ "vlucas/phpdotenv": "^5.0"
+ },
+ "suggest": {
+ "ext-pcntl": "Required to scan annotations.",
+ "hyperf/config": "Require this component for annotation scan progress to retrieve the scan path."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Di\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Di\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A DI for Hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "annotation",
+ "di",
+ "hyperf",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-12-10T07:57:48+00:00"
+ },
+ {
+ "name": "hyperf/dispatcher",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/dispatcher.git",
+ "reference": "fdd464fe5fac01c60732eddc2da7c3184e93995c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/dispatcher/zipball/fdd464fe5fac01c60732eddc2da7c3184e93995c",
+ "reference": "fdd464fe5fac01c60732eddc2da7c3184e93995c",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0",
+ "psr/http-message": "^1.0",
+ "psr/http-server-middleware": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Dispatcher\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Dispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A HTTP Server for Hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "dispatcher",
+ "filter",
+ "hyperf",
+ "middleware",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-07-18T06:50:14+00:00"
+ },
+ {
+ "name": "hyperf/engine",
+ "version": "v1.1.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/engine.git",
+ "reference": "f583f01f458f8c69080e06e6dce715c86edc9f86"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/engine/zipball/f583f01f458f8c69080e06e6dce715c86edc9f86",
+ "reference": "f583f01f458f8c69080e06e6dce715c86edc9f86",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "phpstan/phpstan": "^0.12",
+ "phpunit/phpunit": "^9.4",
+ "swoole/ide-helper": "dev-master"
+ },
+ "suggest": {
+ "ext-swoole": ">=4.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Engine\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "keywords": [
+ "hyperf",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/hyperf/engine/issues",
+ "source": "https://github.com/hyperf/engine/tree/v1.1.6"
+ },
+ "time": "2021-07-11T10:22:13+00:00"
+ },
+ {
+ "name": "hyperf/event",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/event.git",
+ "reference": "9c2ab56737d080d799b9b1f905716c7bf0d61ef6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/event/zipball/9c2ab56737d080d799b9b1f905716c7bf0d61ef6",
+ "reference": "9c2ab56737d080d799b9b1f905716c7bf0d61ef6",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "php": ">=7.2",
+ "psr/event-dispatcher": "^1.0"
+ },
+ "suggest": {
+ "hyperf/di": "Required to use annotatioins."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Event\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Event\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "an event manager that implements PSR-14.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "event",
+ "hyperf",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-07-18T06:50:14+00:00"
+ },
+ {
+ "name": "hyperf/exception-handler",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/exception-handler.git",
+ "reference": "4e10fc994e06940a91704b248e389bf96f70ca10"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/exception-handler/zipball/4e10fc994e06940a91704b248e389bf96f70ca10",
+ "reference": "4e10fc994e06940a91704b248e389bf96f70ca10",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "hyperf/dispatcher": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\ExceptionHandler\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\ExceptionHandler\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Exception handler for hyperf",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "exception-handler",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-07-18T06:50:14+00:00"
+ },
+ {
+ "name": "hyperf/framework",
+ "version": "v2.2.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/framework.git",
+ "reference": "9210ea3e922914813b290b42b2548bf6ff14f537"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/framework/zipball/9210ea3e922914813b290b42b2548bf6ff14f537",
+ "reference": "9210ea3e922914813b290b42b2548bf6ff14f537",
+ "shasum": ""
+ },
+ "require": {
+ "fig/http-message-util": "^1.1.2",
+ "hyperf/contract": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0",
+ "psr/event-dispatcher": "^1.0",
+ "psr/log": "^1.0|^2.0|^3.0"
+ },
+ "suggest": {
+ "ext-swoole": "Required to use swoole engine.",
+ "hyperf/command": "Required to use Command annotation.",
+ "hyperf/di": "Required to use Command annotation.",
+ "hyperf/dispatcher": "Required to use BootApplication event.",
+ "symfony/event-dispatcher": "Required to use symfony event dispatcher (^5.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Framework\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Framework\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A coroutine framework that focuses on hyperspeed and flexible, specifically use for build microservices and middlewares.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "Microservice",
+ "framework",
+ "hyperf",
+ "middleware",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-10-28T10:13:44+00:00"
+ },
+ {
+ "name": "hyperf/guzzle",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/guzzle.git",
+ "reference": "cae5b639bf41db207618c09d9e227de3bf5efed8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/guzzle/zipball/cae5b639bf41db207618c09d9e227de3bf5efed8",
+ "reference": "cae5b639bf41db207618c09d9e227de3bf5efed8",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/guzzle": "^6.3|^7.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.0",
+ "psr/container": "^1.0|^2.0",
+ "psr/http-message": "^1.0"
+ },
+ "suggest": {
+ "hyperf/pool": "Required to use pool handler."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Guzzle\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Guzzle\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Swoole coroutine handler for guzzle",
+ "keywords": [
+ "Guzzle",
+ "handler",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "issues": "https://github.com/hyperf/guzzle/issues",
+ "source": "https://github.com/hyperf/guzzle/tree/v2.2.0"
+ },
+ "time": "2021-07-18T06:50:14+00:00"
+ },
+ {
+ "name": "hyperf/http-message",
+ "version": "v2.2.19",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/http-message.git",
+ "reference": "eddcfe8242a2ddf635a497e02445cb9a43143f79"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/http-message/zipball/eddcfe8242a2ddf635a497e02445cb9a43143f79",
+ "reference": "eddcfe8242a2ddf635a497e02445cb9a43143f79",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/utils": "~2.2.0",
+ "laminas/laminas-mime": "^2.7",
+ "psr/http-message": "^1.0"
+ },
+ "suggest": {
+ "psr/container": "Required to replace RequestParserInterface."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\HttpMessage\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\HttpMessage\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "microservice framework base on swoole",
+ "keywords": [
+ "http-message",
+ "hyperf",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "issues": "https://github.com/hyperf/http-message/issues",
+ "source": "https://github.com/hyperf/http-message/tree/v2.2.19"
+ },
+ "time": "2021-12-06T02:15:59+00:00"
+ },
+ {
+ "name": "hyperf/http-server",
+ "version": "v2.2.19",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/http-server.git",
+ "reference": "6d4ef300be1e17d53bad79f45cffff805537b9e6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/http-server/zipball/6d4ef300be1e17d53bad79f45cffff805537b9e6",
+ "reference": "6d4ef300be1e17d53bad79f45cffff805537b9e6",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "hyperf/dispatcher": "~2.2.0",
+ "hyperf/event": "~2.2.0",
+ "hyperf/exception-handler": "~2.2.0",
+ "hyperf/http-message": "~2.2.0",
+ "hyperf/macroable": "~2.2.0",
+ "hyperf/server": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "nikic/fast-route": "^1.3",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0"
+ },
+ "suggest": {
+ "hyperf/di": "Required to use annotations."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\HttpServer\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\HttpServer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A HTTP Server for Hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "http",
+ "http-server",
+ "hyperf",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-12-06T02:42:11+00:00"
+ },
+ {
+ "name": "hyperf/logger",
+ "version": "v2.2.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/logger.git",
+ "reference": "7474e7cb4a8d3ec237771b3023707d6da7bdc02b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/logger/zipball/7474e7cb4a8d3ec237771b3023707d6da7bdc02b",
+ "reference": "7474e7cb4a8d3ec237771b3023707d6da7bdc02b",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "monolog/monolog": "^2.0",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0",
+ "psr/log": "^1.0|^2.0|^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Logger\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Logger\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A logger component for hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "hyperf",
+ "logger",
+ "php"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-10-28T10:13:44+00:00"
+ },
+ {
+ "name": "hyperf/macroable",
+ "version": "v2.2.13",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/macroable.git",
+ "reference": "e82df0983d43b2c8c4a801172ca2190ba8c2e0cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/macroable/zipball/e82df0983d43b2c8c4a801172ca2190ba8c2e0cf",
+ "reference": "e82df0983d43b2c8c4a801172ca2190ba8c2e0cf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Macroable\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Hyperf Macroable package which come from illuminate/macroable",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "hyperf",
+ "macroable",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-10-25T01:29:21+00:00"
+ },
+ {
+ "name": "hyperf/memory",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/memory.git",
+ "reference": "e26bfea8c73af4604b217a1b449fbc64a06985d3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/memory/zipball/e26bfea8c73af4604b217a1b449fbc64a06985d3",
+ "reference": "e26bfea8c73af4604b217a1b449fbc64a06985d3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Memory\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Memory\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "An independent component that use to operate and manage memory.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "hyperf",
+ "memory",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-07-18T06:50:14+00:00"
+ },
+ {
+ "name": "hyperf/pool",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/pool.git",
+ "reference": "80c02966b9cb8ac939b8c52f6d4981206d69c57d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/pool/zipball/80c02966b9cb8ac939b8c52f6d4981206d69c57d",
+ "reference": "80c02966b9cb8ac939b8c52f6d4981206d69c57d",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Pool\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Pool\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "An independent universal connection pool component.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "connection-pool",
+ "hyperf",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-07-18T06:50:14+00:00"
+ },
+ {
+ "name": "hyperf/process",
+ "version": "v2.2.20",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/process.git",
+ "reference": "a7c1f79e5b870352c58e3055c79553ccee707066"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/process/zipball/a7c1f79e5b870352c58e3055c79553ccee707066",
+ "reference": "a7c1f79e5b870352c58e3055c79553ccee707066",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0",
+ "psr/event-dispatcher": "^1.0"
+ },
+ "suggest": {
+ "hyperf/di": "Required to use annotations.",
+ "hyperf/event": "Required to dump the message before and after process.",
+ "hyperf/framework": "Required to use BootProcessListener."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Process\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Process\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A process component for hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "hyperf",
+ "php",
+ "process"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-12-06T03:17:19+00:00"
+ },
+ {
+ "name": "hyperf/redis",
+ "version": "v2.2.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/redis.git",
+ "reference": "8f49d3911d14b60cbb15bad3dc09b7a892051430"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/redis/zipball/8f49d3911d14b60cbb15bad3dc09b7a892051430",
+ "reference": "8f49d3911d14b60cbb15bad3dc09b7a892051430",
+ "shasum": ""
+ },
+ "require": {
+ "ext-redis": "*",
+ "hyperf/contract": "~2.2.0",
+ "hyperf/pool": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0"
+ },
+ "suggest": {
+ "ext-redis": "Required to use sentinel mode (>=5.2).",
+ "hyperf/di": "Create the RedisPool via dependency injection."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Redis\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Redis\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A redis component for hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "hyperf",
+ "php",
+ "pool",
+ "redis"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-09-22T01:46:38+00:00"
+ },
+ {
+ "name": "hyperf/server",
+ "version": "v2.2.21",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/server.git",
+ "reference": "ea4278425e30780dab48058112d799032dff8f7a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/server/zipball/ea4278425e30780dab48058112d799032dff8f7a",
+ "reference": "ea4278425e30780dab48058112d799032dff8f7a",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0",
+ "psr/event-dispatcher": "^1.0",
+ "psr/log": "^1.0|^2.0|^3.0",
+ "symfony/console": "^5.0"
+ },
+ "suggest": {
+ "hyperf/event": "Dump the info after server start.",
+ "hyperf/framework": "Dump the info after server start."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Server\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Server\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A base server library for Hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "hyperf",
+ "php",
+ "server",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-12-13T08:49:35+00:00"
+ },
+ {
+ "name": "hyperf/utils",
+ "version": "v2.2.19",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/utils.git",
+ "reference": "28b7658046270e8f869846262d2a2143dda770bb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/utils/zipball/28b7658046270e8f869846262d2a2143dda770bb",
+ "reference": "28b7658046270e8f869846262d2a2143dda770bb",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/inflector": "^2.0",
+ "hyperf/contract": "~2.2.0",
+ "hyperf/engine": "^1.1",
+ "hyperf/macroable": "~2.2.0",
+ "php": ">=7.2"
+ },
+ "suggest": {
+ "ext-swoole": "Required to use methods related to swoole (>=4.5).",
+ "hyperf/di": "Required to use ExceptionNormalizer",
+ "nikic/php-parser": "Required to use PhpParser. (^4.0)",
+ "symfony/property-access": "Required to use SymfonyNormalizer (^5.0)",
+ "symfony/serializer": "Required to use SymfonyNormalizer (^5.0)",
+ "symfony/var-dumper": "Required to use the dd function (^5.0)."
+ },
+ "type": "library",
+ "extra": {
+ "hyperf": {
+ "config": "Hyperf\\Utils\\ConfigProvider"
+ },
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Functions.php"
+ ],
+ "psr-4": {
+ "Hyperf\\Utils\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A tools package that could help developer solved the problem quickly.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "hyperf",
+ "php",
+ "swoole",
+ "utils"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-12-06T01:44:39+00:00"
+ },
+ {
+ "name": "hyperf/websocket-server",
+ "version": "v2.2.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/websocket-server.git",
+ "reference": "367b5deb365306e4ee45f8a84cfa2992f57795b3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/websocket-server/zipball/367b5deb365306e4ee45f8a84cfa2992f57795b3",
+ "reference": "367b5deb365306e4ee45f8a84cfa2992f57795b3",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "hyperf/exception-handler": "~2.2.0",
+ "hyperf/http-server": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2",
+ "psr/container": "^1.0|^2.0",
+ "psr/event-dispatcher": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\WebSocketServer\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\WebSocketServer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A websocket server library for Hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "hyperf",
+ "php",
+ "swoole",
+ "websocket"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-10-28T10:13:44+00:00"
+ },
+ {
+ "name": "laminas/laminas-mime",
+ "version": "2.9.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-mime.git",
+ "reference": "72d21a1b4bb7086d4a4d7058c0abca180b209184"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/72d21a1b4bb7086d4a4d7058c0abca180b209184",
+ "reference": "72d21a1b4bb7086d4a4d7058c0abca180b209184",
+ "shasum": ""
+ },
+ "require": {
+ "laminas/laminas-stdlib": "^2.7 || ^3.0",
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ },
+ "conflict": {
+ "zendframework/zend-mime": "*"
+ },
+ "require-dev": {
+ "laminas/laminas-coding-standard": "~2.2.1",
+ "laminas/laminas-mail": "^2.12",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "laminas/laminas-mail": "Laminas\\Mail component"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Laminas\\Mime\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Create and parse MIME messages and parts",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "laminas",
+ "mime"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-mime/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-mime/issues",
+ "rss": "https://github.com/laminas/laminas-mime/releases.atom",
+ "source": "https://github.com/laminas/laminas-mime"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2021-09-20T21:19:24+00:00"
+ },
+ {
+ "name": "laminas/laminas-stdlib",
+ "version": "3.6.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-stdlib.git",
+ "reference": "6fe0842909638ca6bea8401b7e8168fb154bffb5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/6fe0842909638ca6bea8401b7e8168fb154bffb5",
+ "reference": "6fe0842909638ca6bea8401b7e8168fb154bffb5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ },
+ "conflict": {
+ "zendframework/zend-stdlib": "*"
+ },
+ "require-dev": {
+ "laminas/laminas-coding-standard": "~2.3.0",
+ "phpbench/phpbench": "^0.17.1",
+ "phpunit/phpunit": "~9.3.7",
+ "psalm/plugin-phpunit": "^0.16.0",
+ "vimeo/psalm": "^4.7"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Laminas\\Stdlib\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "SPL extensions, array utilities, error handlers, and more",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "laminas",
+ "stdlib"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-stdlib/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-stdlib/issues",
+ "rss": "https://github.com/laminas/laminas-stdlib/releases.atom",
+ "source": "https://github.com/laminas/laminas-stdlib"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2021-12-07T21:06:58+00:00"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "2.3.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "fd4380d6fc37626e2f799f29d91195040137eba9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9",
+ "reference": "fd4380d6fc37626e2f799f29d91195040137eba9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2",
+ "psr/log": "^1.0.1 || ^2.0 || ^3.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "elasticsearch/elasticsearch": "^7",
+ "graylog2/gelf-php": "^1.4.2",
+ "mongodb/mongodb": "^1.8",
+ "php-amqplib/php-amqplib": "~2.4 || ^3",
+ "php-console/php-console": "^3.1.3",
+ "phpspec/prophecy": "^1.6.1",
+ "phpstan/phpstan": "^0.12.91",
+ "phpunit/phpunit": "^8.5",
+ "predis/predis": "^1.1",
+ "rollbar/rollbar": "^1.3",
+ "ruflin/elastica": ">=0.90@dev",
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
+ "ext-mbstring": "Allow to work properly with unicode symbols",
+ "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
+ "ext-openssl": "Required to send log messages using SSL",
+ "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "https://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "https://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/monolog/issues",
+ "source": "https://github.com/Seldaek/monolog/tree/2.3.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-01T21:08:31+00:00"
+ },
+ {
+ "name": "nikic/fast-route",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/FastRoute.git",
+ "reference": "181d480e08d9476e61381e04a71b34dc0432e812"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812",
+ "reference": "181d480e08d9476e61381e04a71b34dc0432e812",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35|~5.7"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "FastRoute\\": "src/"
+ },
+ "files": [
+ "src/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov",
+ "email": "nikic@php.net"
+ }
+ ],
+ "description": "Fast request router for PHP",
+ "keywords": [
+ "router",
+ "routing"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/FastRoute/issues",
+ "source": "https://github.com/nikic/FastRoute/tree/master"
+ },
+ "time": "2018-02-13T20:26:39+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.13.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
+ },
+ "time": "2021-11-30T19:35:32+00:00"
+ },
+ {
+ "name": "php-di/phpdoc-reader",
+ "version": "2.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHP-DI/PhpDocReader.git",
+ "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/66daff34cbd2627740ffec9469ffbac9f8c8185c",
+ "reference": "66daff34cbd2627740ffec9469ffbac9f8c8185c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "require-dev": {
+ "mnapoli/hard-mode": "~0.3.0",
+ "phpunit/phpunit": "^8.5|^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "PhpDocReader\\": "src/PhpDocReader"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)",
+ "keywords": [
+ "phpdoc",
+ "reflection"
+ ],
+ "support": {
+ "issues": "https://github.com/PHP-DI/PhpDocReader/issues",
+ "source": "https://github.com/PHP-DI/PhpDocReader/tree/2.2.1"
+ },
+ "time": "2020-10-12T12:39:22+00:00"
+ },
+ {
+ "name": "phpoption/phpoption",
+ "version": "1.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/php-option.git",
+ "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15",
+ "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.4.1",
+ "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.8-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpOption\\": "src/PhpOption/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com",
+ "homepage": "https://github.com/schmittjoh"
+ },
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ }
+ ],
+ "description": "Option Type for PHP",
+ "keywords": [
+ "language",
+ "option",
+ "php",
+ "type"
+ ],
+ "support": {
+ "issues": "https://github.com/schmittjoh/php-option/issues",
+ "source": "https://github.com/schmittjoh/php-option/tree/1.8.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-12-04T23:24:31+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/master"
+ },
+ "time": "2016-08-06T20:24:11+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "time": "2021-11-05T16:47:00+00:00"
+ },
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
+ },
+ {
+ "name": "psr/http-client",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
+ "keywords": [
+ "http",
+ "http-client",
+ "psr",
+ "psr-18"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-client/tree/master"
+ },
+ "time": "2020-06-29T06:28:15+00:00"
+ },
+ {
+ "name": "psr/http-factory",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory/tree/master"
+ },
+ "time": "2019-04-30T12:38:16+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/master"
+ },
+ "time": "2016-08-06T14:39:51+00:00"
+ },
+ {
+ "name": "psr/http-server-handler",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-server-handler.git",
+ "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
+ "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Server\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP server-side request handler",
+ "keywords": [
+ "handler",
+ "http",
+ "http-interop",
+ "psr",
+ "psr-15",
+ "psr-7",
+ "request",
+ "response",
+ "server"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/http-server-handler/issues",
+ "source": "https://github.com/php-fig/http-server-handler/tree/master"
+ },
+ "time": "2018-10-30T16:46:14+00:00"
+ },
+ {
+ "name": "psr/http-server-middleware",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-server-middleware.git",
+ "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5",
+ "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0",
+ "psr/http-message": "^1.0",
+ "psr/http-server-handler": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Server\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP server-side middleware",
+ "keywords": [
+ "http",
+ "http-interop",
+ "middleware",
+ "psr",
+ "psr-15",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/http-server-middleware/issues",
+ "source": "https://github.com/php-fig/http-server-middleware/tree/master"
+ },
+ "time": "2018-10-30T17:12:04+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
+ },
+ "time": "2021-05-03T11:20:27+00:00"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/simple-cache/tree/master"
+ },
+ "time": "2017-10-23T01:57:42+00:00"
+ },
+ {
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ },
+ "time": "2019-03-08T08:55:37+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v5.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "9130e1a0fc93cb0faadca4ee917171bd2ca9e5f4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/9130e1a0fc93cb0faadca4ee917171bd2ca9e5f4",
+ "reference": "9130e1a0fc93cb0faadca4ee917171bd2ca9e5f4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.9",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/string": "^5.1|^6.0"
+ },
+ "conflict": {
+ "psr/log": ">=3",
+ "symfony/dependency-injection": "<4.4",
+ "symfony/dotenv": "<5.1",
+ "symfony/event-dispatcher": "<4.4",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<4.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2",
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
+ "symfony/lock": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/var-dumper": "^4.4|^5.0|^6.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v5.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-12-09T11:22:43+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v2.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8",
+ "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-12T14:48:14+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "d2f29dac98e96a98be467627bd49c2efb1bc2590"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/d2f29dac98e96a98be467627bd49c2efb1bc2590",
+ "reference": "d2f29dac98e96a98be467627bd49c2efb1bc2590",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-28T15:25:38+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-02-19T12:13:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-05-27T12:26:48+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-02-19T12:13:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-05-27T12:26:48+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-02-19T12:13:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-28T13:41:28+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v1.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/191afdcb5804db960d26d8566b7e9a2843cab3a0",
+ "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "suggest": {
+ "psr/container": "",
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v1.1.2"
+ },
+ "time": "2019-05-28T07:50:59+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "9ffaaba53c61ba75a3c7a3a779051d1e9ec4fd2d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/9ffaaba53c61ba75a3c7a3a779051d1e9ec4fd2d",
+ "reference": "9ffaaba53c61ba75a3c7a3a779051d1e9ec4fd2d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "~1.15"
+ },
+ "conflict": {
+ "symfony/translation-contracts": ">=3.0"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^4.4|^5.0|^6.0",
+ "symfony/http-client": "^4.4|^5.0|^6.0",
+ "symfony/translation-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.4|^5.0|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "files": [
+ "Resources/functions.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-24T10:02:00+00:00"
+ },
+ {
+ "name": "vlucas/phpdotenv",
+ "version": "v5.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vlucas/phpdotenv.git",
+ "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f",
+ "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "graham-campbell/result-type": "^1.0.2",
+ "php": "^7.1.3 || ^8.0",
+ "phpoption/phpoption": "^1.8",
+ "symfony/polyfill-ctype": "^1.23",
+ "symfony/polyfill-mbstring": "^1.23.1",
+ "symfony/polyfill-php80": "^1.23.1"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.4.1",
+ "ext-filter": "*",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10"
+ },
+ "suggest": {
+ "ext-filter": "Required to use the boolean validator."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Dotenv\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Vance Lucas",
+ "email": "vance@vancelucas.com",
+ "homepage": "https://github.com/vlucas"
+ }
+ ],
+ "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "support": {
+ "issues": "https://github.com/vlucas/phpdotenv/issues",
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-12-12T23:22:04+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "composer/pcre",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/pcre.git",
+ "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/3d322d715c43a1ac36c7fe215fa59336265500f2",
+ "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Pcre\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+ "keywords": [
+ "PCRE",
+ "preg",
+ "regex",
+ "regular expression"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/pcre/issues",
+ "source": "https://github.com/composer/pcre/tree/1.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-12-06T15:17:27+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "3.2.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "83e511e247de329283478496f7a1e114c9517506"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506",
+ "reference": "83e511e247de329283478496f7a1e114c9517506",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.54",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/semver/issues",
+ "source": "https://github.com/composer/semver/tree/3.2.6"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-25T11:34:17+00:00"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "6555461e76962fd0379c444c46fd558a0fcfb65e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6555461e76962fd0379c444c46fd558a0fcfb65e",
+ "reference": "6555461e76962fd0379c444c46fd558a0fcfb65e",
+ "shasum": ""
+ },
+ "require": {
+ "composer/pcre": "^1",
+ "php": "^5.3.2 || ^7.0 || ^8.0",
+ "psr/log": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without Xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues",
+ "source": "https://github.com/composer/xdebug-handler/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-12-08T13:07:32+00:00"
+ },
+ {
+ "name": "friendsofphp/php-cs-fixer",
+ "version": "v3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
+ "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/47177af1cfb9dab5d1cc4daf91b7179c2efe7fad",
+ "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad",
+ "shasum": ""
+ },
+ "require": {
+ "composer/semver": "^3.2",
+ "composer/xdebug-handler": "^2.0",
+ "doctrine/annotations": "^1.12",
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "php": "^7.2.5 || ^8.0",
+ "php-cs-fixer/diff": "^2.0",
+ "symfony/console": "^4.4.20 || ^5.1.3 || ^6.0",
+ "symfony/event-dispatcher": "^4.4.20 || ^5.0 || ^6.0",
+ "symfony/filesystem": "^4.4.20 || ^5.0 || ^6.0",
+ "symfony/finder": "^4.4.20 || ^5.0 || ^6.0",
+ "symfony/options-resolver": "^4.4.20 || ^5.0 || ^6.0",
+ "symfony/polyfill-mbstring": "^1.23",
+ "symfony/polyfill-php80": "^1.23",
+ "symfony/polyfill-php81": "^1.23",
+ "symfony/process": "^4.4.20 || ^5.0 || ^6.0",
+ "symfony/stopwatch": "^4.4.20 || ^5.0 || ^6.0"
+ },
+ "require-dev": {
+ "justinrainbow/json-schema": "^5.2",
+ "keradus/cli-executor": "^1.5",
+ "mikey179/vfsstream": "^1.6.8",
+ "php-coveralls/php-coveralls": "^2.5.2",
+ "php-cs-fixer/accessible-object": "^1.1",
+ "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2",
+ "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1",
+ "phpspec/prophecy": "^1.15",
+ "phpspec/prophecy-phpunit": "^1.1 || ^2.0",
+ "phpunit/phpunit": "^8.5.21 || ^9.5",
+ "phpunitgoodpractices/polyfill": "^1.5",
+ "phpunitgoodpractices/traits": "^1.9.1",
+ "symfony/phpunit-bridge": "^5.2.4 || ^6.0",
+ "symfony/yaml": "^4.4.20 || ^5.0 || ^6.0"
+ },
+ "suggest": {
+ "ext-dom": "For handling output formats in XML",
+ "ext-mbstring": "For handling non-UTF8 characters."
+ },
+ "bin": [
+ "php-cs-fixer"
+ ],
+ "type": "application",
+ "autoload": {
+ "psr-4": {
+ "PhpCsFixer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Dariusz Rumiński",
+ "email": "dariusz.ruminski@gmail.com"
+ }
+ ],
+ "description": "A tool to automatically fix PHP code style",
+ "support": {
+ "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues",
+ "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/keradus",
+ "type": "github"
+ }
+ ],
+ "time": "2021-12-11T16:25:08+00:00"
+ },
+ {
+ "name": "hamcrest/hamcrest-php",
+ "version": "v2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hamcrest/hamcrest-php.git",
+ "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
+ "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3|^7.0|^8.0"
+ },
+ "replace": {
+ "cordoval/hamcrest-php": "*",
+ "davedevelopment/hamcrest-php": "*",
+ "kodova/hamcrest-php": "*"
+ },
+ "require-dev": {
+ "phpunit/php-file-iterator": "^1.4 || ^2.0",
+ "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "hamcrest"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "This is the PHP port of Hamcrest Matchers",
+ "keywords": [
+ "test"
+ ],
+ "support": {
+ "issues": "https://github.com/hamcrest/hamcrest-php/issues",
+ "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
+ },
+ "time": "2020-07-09T08:09:16+00:00"
+ },
+ {
+ "name": "hyperf/devtool",
+ "version": "v2.2.21",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/devtool.git",
+ "reference": "275298f34f752a45cfd258288230e60f7fcd5d4a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/devtool/zipball/275298f34f752a45cfd258288230e60f7fcd5d4a",
+ "reference": "275298f34f752a45cfd258288230e60f7fcd5d4a",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/command": "~2.2.0",
+ "hyperf/contract": "~2.2.0",
+ "hyperf/di": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "hyperf": {
+ "config": "Hyperf\\Devtool\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Devtool\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A Devtool for Hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "devtool",
+ "hyperf",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-12-13T06:53:24+00:00"
+ },
+ {
+ "name": "hyperf/ide-helper",
+ "version": "v2.2.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/ide-helper.git",
+ "reference": "f03e9f03e9f3cf392c7bee43d40d978528c5e116"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/ide-helper/zipball/f03e9f03e9f3cf392c7bee43d40d978528c5e116",
+ "reference": "f03e9f03e9f3cf392c7bee43d40d978528c5e116",
+ "shasum": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "IDE help files for Hyperf.",
+ "homepage": "https://hyperf.io",
+ "keywords": [
+ "hyperf",
+ "ide-helper",
+ "php",
+ "swoole"
+ ],
+ "support": {
+ "docs": "https://hyperf.wiki",
+ "issues": "https://github.com/hyperf/hyperf/issues",
+ "pull-request": "https://github.com/hyperf/hyperf/pulls",
+ "source": "https://github.com/hyperf/hyperf"
+ },
+ "time": "2021-08-23T03:09:11+00:00"
+ },
+ {
+ "name": "hyperf/testing",
+ "version": "v2.2.20",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hyperf/testing.git",
+ "reference": "b279d339b3cf56e3afef9ae3da7aaea9b3478885"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hyperf/testing/zipball/b279d339b3cf56e3afef9ae3da7aaea9b3478885",
+ "reference": "b279d339b3cf56e3afef9ae3da7aaea9b3478885",
+ "shasum": ""
+ },
+ "require": {
+ "hyperf/contract": "~2.2.0",
+ "hyperf/http-message": "~2.2.0",
+ "hyperf/http-server": "~2.2.0",
+ "hyperf/utils": "~2.2.0",
+ "php": ">=7.2",
+ "phpunit/phpunit": "^9.5",
+ "psr/container": "^1.0|^2.0"
+ },
+ "bin": [
+ "co-phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Hyperf\\Testing\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Testing for hyperf",
+ "keywords": [
+ "php",
+ "swoole",
+ "testing"
+ ],
+ "support": {
+ "source": "https://github.com/hyperf/testing/tree/v2.2.20"
+ },
+ "time": "2021-12-11T09:45:51+00:00"
+ },
+ {
+ "name": "mockery/mockery",
+ "version": "1.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mockery/mockery.git",
+ "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/e01123a0e847d52d186c5eb4b9bf58b0c6d00346",
+ "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346",
+ "shasum": ""
+ },
+ "require": {
+ "hamcrest/hamcrest-php": "^2.0.1",
+ "lib-pcre": ">=7.0",
+ "php": "^7.3 || ^8.0"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5 || ^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Mockery": "library/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Pádraic Brady",
+ "email": "padraic.brady@gmail.com",
+ "homepage": "http://blog.astrumfutura.com"
+ },
+ {
+ "name": "Dave Marshall",
+ "email": "dave.marshall@atstsolutions.co.uk",
+ "homepage": "http://davedevelopment.co.uk"
+ }
+ ],
+ "description": "Mockery is a simple yet flexible PHP mock object framework",
+ "homepage": "https://github.com/mockery/mockery",
+ "keywords": [
+ "BDD",
+ "TDD",
+ "library",
+ "mock",
+ "mock objects",
+ "mockery",
+ "stub",
+ "test",
+ "test double",
+ "testing"
+ ],
+ "support": {
+ "issues": "https://github.com/mockery/mockery/issues",
+ "source": "https://github.com/mockery/mockery/tree/1.4.4"
+ },
+ "time": "2021-09-13T15:28:59+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.10.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "replace": {
+ "myclabs/deep-copy": "self.version"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-13T09:40:50+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+ },
+ "time": "2021-07-20T11:28:43+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.1.0"
+ },
+ "time": "2021-02-23T14:00:09+00:00"
+ },
+ {
+ "name": "php-cs-fixer/diff",
+ "version": "v2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHP-CS-Fixer/diff.git",
+ "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3",
+ "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0",
+ "symfony/process": "^3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "sebastian/diff v3 backport support for PHP 5.6+",
+ "homepage": "https://github.com/PHP-CS-Fixer",
+ "keywords": [
+ "diff"
+ ],
+ "support": {
+ "issues": "https://github.com/PHP-CS-Fixer/diff/issues",
+ "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2"
+ },
+ "time": "2020-10-14T08:32:19+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ },
+ "time": "2021-10-19T17:43:47+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae",
+ "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1"
+ },
+ "time": "2021-10-02T14:08:47+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.2",
+ "php": "^7.2 || ~8.0, <8.2",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^6.0 || ^7.0",
+ "phpunit/phpunit": "^8.0 || ^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
+ },
+ "time": "2021-12-08T12:19:24+00:00"
+ },
+ {
+ "name": "phpstan/phpstan",
+ "version": "0.12.99",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan.git",
+ "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7",
+ "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1|^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
+ },
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.12-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "support": {
+ "issues": "https://github.com/phpstan/phpstan/issues",
+ "source": "https://github.com/phpstan/phpstan/tree/0.12.99"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ondrejmirtes",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/phpstan",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/phpstan",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-12T20:09:55+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "9.2.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687",
+ "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.13.0",
+ "php": ">=7.3",
+ "phpunit/php-file-iterator": "^3.0.3",
+ "phpunit/php-text-template": "^2.0.2",
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
+ "sebastian/complexity": "^2.0",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/lines-of-code": "^1.0.3",
+ "sebastian/version": "^3.0.1",
+ "theseer/tokenizer": "^1.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcov": "*",
+ "ext-xdebug": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-12-05T09:12:13+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "3.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-12-02T12:48:52+00:00"
+ },
+ {
+ "name": "phpunit/php-invoker",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "keywords": [
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:58:55+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T05:33:50+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:16:10+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "9.5.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a",
+ "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.3",
+ "phar-io/version": "^3.0.2",
+ "php": ">=7.3",
+ "phpspec/prophecy": "^1.12.1",
+ "phpunit/php-code-coverage": "^9.2.7",
+ "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-invoker": "^3.1.1",
+ "phpunit/php-text-template": "^2.0.3",
+ "phpunit/php-timer": "^5.0.2",
+ "sebastian/cli-parser": "^1.0.1",
+ "sebastian/code-unit": "^1.0.6",
+ "sebastian/comparator": "^4.0.5",
+ "sebastian/diff": "^4.0.3",
+ "sebastian/environment": "^5.1.3",
+ "sebastian/exporter": "^4.0.3",
+ "sebastian/global-state": "^5.0.1",
+ "sebastian/object-enumerator": "^4.0.3",
+ "sebastian/resource-operations": "^3.0.3",
+ "sebastian/type": "^2.3.4",
+ "sebastian/version": "^3.0.2"
+ },
+ "require-dev": {
+ "ext-pdo": "*",
+ "phpspec/prophecy-phpunit": "^2.0.1"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.5-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ],
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10"
+ },
+ "funding": [
+ {
+ "url": "https://phpunit.de/donate.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-09-25T07:38:51+00:00"
+ },
+ {
+ "name": "sebastian/cli-parser",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for parsing CLI options",
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:08:49+00:00"
+ },
+ {
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:08:54+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:30:19+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:49:45+00:00"
+ },
+ {
+ "name": "sebastian/complexity",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.7",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:52:27+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:10:38+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "5.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:52:38+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "https://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-11-11T14:18:36+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49",
+ "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-06-11T13:31:12+00:00"
+ },
+ {
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.6",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for counting the lines of code in PHP source code",
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-28T06:42:11+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:12:34+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:14:26+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:17:30+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:45:17+00:00"
+ },
+ {
+ "name": "sebastian/type",
+ "version": "2.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-06-15T12:49:02+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:39:44+00:00"
+ },
+ {
+ "name": "swoole/ide-helper",
+ "version": "4.8.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/swoole/ide-helper.git",
+ "reference": "feff48c90c87674ee7f1d40dd055edf9a212ad88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/swoole/ide-helper/zipball/feff48c90c87674ee7f1d40dd055edf9a212ad88",
+ "reference": "feff48c90c87674ee7f1d40dd055edf9a212ad88",
+ "shasum": ""
+ },
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Team Swoole",
+ "email": "team@swoole.com"
+ }
+ ],
+ "description": "IDE help files for Swoole.",
+ "support": {
+ "issues": "https://github.com/swoole/ide-helper/issues",
+ "source": "https://github.com/swoole/ide-helper/tree/4.8.4"
+ },
+ "funding": [
+ {
+ "url": "https://gitee.com/swoole/swoole?donate=true",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/swoole",
+ "type": "github"
+ }
+ ],
+ "time": "2021-12-17T05:37:49+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "27d39ae126352b9fa3be5e196ccf4617897be3eb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/27d39ae126352b9fa3be5e196ccf4617897be3eb",
+ "reference": "27d39ae126352b9fa3be5e196ccf4617897be3eb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/event-dispatcher-contracts": "^2|^3",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<4.4"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "2.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/error-handler": "^4.4|^5.0|^6.0",
+ "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/http-foundation": "^4.4|^5.0|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/stopwatch": "^4.4|^5.0|^6.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-23T10:19:22+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v2.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/66bea3b09be61613cd3b4043a65a8ec48cfa6d2a",
+ "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/event-dispatcher": "^1"
+ },
+ "suggest": {
+ "symfony/event-dispatcher-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-12T14:48:14+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "731f917dc31edcffec2c6a777f3698c33bea8f01"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/731f917dc31edcffec2c6a777f3698c33bea8f01",
+ "reference": "731f917dc31edcffec2c6a777f3698c33bea8f01",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.8",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides basic utilities for the filesystem",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-28T13:39:27+00:00"
+ },
+ {
+ "name": "symfony/options-resolver",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "b0fb78576487af19c500aaddb269fd36701d4847"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b0fb78576487af19c500aaddb269fd36701d4847",
+ "reference": "b0fb78576487af19c500aaddb269fd36701d4847",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php73": "~1.0",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an improved replacement for the array_replace PHP function",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/options-resolver/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-23T10:19:22+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php81",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "e66119f3de95efc359483f810c4c3e6436279436"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436",
+ "reference": "e66119f3de95efc359483f810c4c3e6436279436",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php81\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-05-21T13:25:03+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "5be20b3830f726e019162b26223110c8f47cf274"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/5be20b3830f726e019162b26223110c8f47cf274",
+ "reference": "5be20b3830f726e019162b26223110c8f47cf274",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Executes commands in sub-processes",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-28T15:25:38+00:00"
+ },
+ {
+ "name": "symfony/stopwatch",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/stopwatch.git",
+ "reference": "208ef96122bfed82a8f3a61458a07113a08bdcfe"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/208ef96122bfed82a8f3a61458a07113a08bdcfe",
+ "reference": "208ef96122bfed82a8f3a61458a07113a08bdcfe",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/service-contracts": "^1|^2|^3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Stopwatch\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides a way to profile code",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/stopwatch/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-23T10:19:22+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2021-07-28T10:34:58+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ },
+ "time": "2021-03-09T10:59:23+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "dev",
+ "stability-flags": [],
+ "prefer-stable": true,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=7.3"
+ },
+ "platform-dev": [],
+ "plugin-api-version": "2.1.0"
+}
diff --git a/config/autoload/annotations.php b/config/autoload/annotations.php
new file mode 100644
index 0000000..1423a25
--- /dev/null
+++ b/config/autoload/annotations.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+ 'scan' => [
+ 'paths' => [
+ BASE_PATH . '/app',
+ ],
+ 'ignore_annotations' => [
+ 'mixin',
+ ],
+ ],
+];
diff --git a/config/autoload/aspects.php b/config/autoload/aspects.php
new file mode 100644
index 0000000..f46bd96
--- /dev/null
+++ b/config/autoload/aspects.php
@@ -0,0 +1,13 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+];
diff --git a/config/autoload/cache.php b/config/autoload/cache.php
new file mode 100644
index 0000000..def82eb
--- /dev/null
+++ b/config/autoload/cache.php
@@ -0,0 +1,18 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+ 'default' => [
+ 'driver' => Hyperf\Cache\Driver\RedisDriver::class,
+ 'packer' => Hyperf\Utils\Packer\PhpSerializerPacker::class,
+ 'prefix' => 'c:',
+ ],
+];
diff --git a/config/autoload/commands.php b/config/autoload/commands.php
new file mode 100644
index 0000000..f46bd96
--- /dev/null
+++ b/config/autoload/commands.php
@@ -0,0 +1,13 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+];
diff --git a/config/autoload/databases.php b/config/autoload/databases.php
new file mode 100644
index 0000000..b3cfbe7
--- /dev/null
+++ b/config/autoload/databases.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+ 'default' => [
+ 'driver' => env('DB_DRIVER', 'mysql'),
+ 'host' => env('DB_HOST', 'localhost'),
+ 'database' => env('DB_DATABASE', 'hyperf'),
+ 'port' => env('DB_PORT', 3306),
+ 'username' => env('DB_USERNAME', 'root'),
+ 'password' => env('DB_PASSWORD', ''),
+ 'charset' => env('DB_CHARSET', 'utf8'),
+ 'collation' => env('DB_COLLATION', 'utf8_unicode_ci'),
+ 'prefix' => env('DB_PREFIX', ''),
+ 'pool' => [
+ 'min_connections' => 1,
+ 'max_connections' => 10,
+ 'connect_timeout' => 10.0,
+ 'wait_timeout' => 3.0,
+ 'heartbeat' => -1,
+ 'max_idle_time' => (float) env('DB_MAX_IDLE_TIME', 60),
+ ],
+ 'commands' => [
+ 'gen:model' => [
+ 'path' => 'app/Model',
+ 'force_casts' => true,
+ 'inheritance' => 'Model',
+ ],
+ ],
+ ],
+];
diff --git a/config/autoload/dependencies.php b/config/autoload/dependencies.php
new file mode 100644
index 0000000..f46bd96
--- /dev/null
+++ b/config/autoload/dependencies.php
@@ -0,0 +1,13 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+];
diff --git a/config/autoload/devtool.php b/config/autoload/devtool.php
new file mode 100644
index 0000000..3c2f607
--- /dev/null
+++ b/config/autoload/devtool.php
@@ -0,0 +1,44 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+ 'generator' => [
+ 'amqp' => [
+ 'consumer' => [
+ 'namespace' => 'App\\Amqp\\Consumer',
+ ],
+ 'producer' => [
+ 'namespace' => 'App\\Amqp\\Producer',
+ ],
+ ],
+ 'aspect' => [
+ 'namespace' => 'App\\Aspect',
+ ],
+ 'command' => [
+ 'namespace' => 'App\\Command',
+ ],
+ 'controller' => [
+ 'namespace' => 'App\\Controller',
+ ],
+ 'job' => [
+ 'namespace' => 'App\\Job',
+ ],
+ 'listener' => [
+ 'namespace' => 'App\\Listener',
+ ],
+ 'middleware' => [
+ 'namespace' => 'App\\Middleware',
+ ],
+ 'Process' => [
+ 'namespace' => 'App\\Processes',
+ ],
+ ],
+];
diff --git a/config/autoload/exceptions.php b/config/autoload/exceptions.php
new file mode 100644
index 0000000..c9f01b0
--- /dev/null
+++ b/config/autoload/exceptions.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+ 'handler' => [
+ 'http' => [
+ Hyperf\HttpServer\Exception\Handler\HttpExceptionHandler::class,
+ App\Exception\Handler\AppExceptionHandler::class,
+ Hyperf\WebSocketServer\Exception\Handler\WebSocketExceptionHandler::class,
+ ],
+ ],
+];
diff --git a/config/autoload/listeners.php b/config/autoload/listeners.php
new file mode 100644
index 0000000..f46bd96
--- /dev/null
+++ b/config/autoload/listeners.php
@@ -0,0 +1,13 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+];
diff --git a/config/autoload/logger.php b/config/autoload/logger.php
new file mode 100644
index 0000000..8934509
--- /dev/null
+++ b/config/autoload/logger.php
@@ -0,0 +1,30 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+ 'default' => [
+ 'handler' => [
+ 'class' => Monolog\Handler\RotatingFileHandler::class,
+ 'constructor' => [
+ 'filename' => BASE_PATH . '/logs/ws.log',
+ 'level' => Monolog\Logger::DEBUG,
+ ],
+ ],
+ 'formatter' => [
+ 'class' => Monolog\Formatter\LineFormatter::class,
+ 'constructor' => [
+ 'format' => null,
+ 'dateFormat' => 'Y-m-d H:i:s',
+ 'allowInlineLineBreaks' => true,
+ ],
+ ],
+ ],
+];
diff --git a/config/autoload/middlewares.php b/config/autoload/middlewares.php
new file mode 100644
index 0000000..49bdec2
--- /dev/null
+++ b/config/autoload/middlewares.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+ 'http' => [
+ ],
+];
diff --git a/config/autoload/processes.php b/config/autoload/processes.php
new file mode 100644
index 0000000..f46bd96
--- /dev/null
+++ b/config/autoload/processes.php
@@ -0,0 +1,13 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+];
diff --git a/config/autoload/redis.php b/config/autoload/redis.php
new file mode 100644
index 0000000..3180b62
--- /dev/null
+++ b/config/autoload/redis.php
@@ -0,0 +1,27 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+return [
+ 'default' => [
+ 'host' => env('REDIS_HOST', 'localhost'),
+ 'auth' => env('REDIS_AUTH', null),
+ 'port' => (int) env('REDIS_PORT', 6379),
+ 'db' => (int) env('REDIS_DB', 0),
+ 'pool' => [
+ 'min_connections' => 1,
+ 'max_connections' => 10,
+ 'connect_timeout' => 10.0,
+ 'wait_timeout' => 3.0,
+ 'heartbeat' => -1,
+ 'max_idle_time' => (float) env('REDIS_MAX_IDLE_TIME', 60),
+ ],
+ ],
+];
diff --git a/config/autoload/server.php b/config/autoload/server.php
new file mode 100644
index 0000000..ea4dec4
--- /dev/null
+++ b/config/autoload/server.php
@@ -0,0 +1,53 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+use Hyperf\Server\Event;
+use Hyperf\Server\Server;
+use Hyperf\Server\SwooleEvent;
+use Swoole\Constant;
+
+return [
+ 'mode' => SWOOLE_PROCESS,
+ 'servers' => [
+ [
+ 'name' => 'ws',
+ 'type' => Server::SERVER_WEBSOCKET,
+ 'host' => '0.0.0.0',
+ 'port' => 9501,
+ 'sock_type' => SWOOLE_SOCK_TCP,
+ 'allow_ip' => '120.25.156.26.58005',
+ 'callbacks' => [
+ SwooleEvent::ON_HAND_SHAKE => [Hyperf\WebSocketServer\Server::class, 'onHandShake'],
+ SwooleEvent::ON_MESSAGE => [Hyperf\WebSocketServer\Server::class, 'onMessage'],
+ SwooleEvent::ON_CLOSE => [Hyperf\WebSocketServer\Server::class, 'onClose'],
+ SwooleEvent::ON_START => [App\Controller\WebsocketController::class, 'onStart'],
+ ],
+ ],
+ ],
+ 'settings' => [
+ Constant::OPTION_ENABLE_COROUTINE => true,
+ //Constant::OPTION_DAEMONIZE=>1,
+ Constant::OPTION_DISPATCH_MODE=>2,
+ Constant::OPTION_WORKER_NUM => swoole_cpu_num(),
+ Constant::OPTION_PID_FILE => BASE_PATH . '/runtime/hyperf.pid',
+ Constant::OPTION_OPEN_TCP_NODELAY => true,
+ Constant::OPTION_MAX_COROUTINE => 100000,
+ Constant::OPTION_OPEN_HTTP2_PROTOCOL => true,
+ Constant::OPTION_MAX_REQUEST => 100000,
+ Constant::OPTION_SOCKET_BUFFER_SIZE => 2 * 1024 * 1024,
+ Constant::OPTION_BUFFER_OUTPUT_SIZE => 2 * 1024 * 1024,
+ ],
+ 'callbacks' => [
+ Event::ON_WORKER_START => [Hyperf\Framework\Bootstrap\WorkerStartCallback::class, 'onWorkerStart'],
+ Event::ON_PIPE_MESSAGE => [Hyperf\Framework\Bootstrap\PipeMessageCallback::class, 'onPipeMessage'],
+ Event::ON_WORKER_EXIT => [Hyperf\Framework\Bootstrap\WorkerExitCallback::class, 'onWorkerExit'],
+ ],
+];
diff --git a/config/config.php b/config/config.php
new file mode 100644
index 0000000..8e484cc
--- /dev/null
+++ b/config/config.php
@@ -0,0 +1,33 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+use Hyperf\Contract\StdoutLoggerInterface;
+use Psr\Log\LogLevel;
+
+return [
+ 'app_name' => env('APP_NAME', 'skeleton'),
+ 'app_env' => env('APP_ENV', 'dev'),
+ 'node_name' => env('NODE_NAME', 'node_1'),
+ 'file_path'=>ENV("FILE_PATH","../file/"),
+ 'scan_cacheable' => env('SCAN_CACHEABLE', false),
+ StdoutLoggerInterface::class => [
+ 'log_level' => [
+ LogLevel::ALERT,
+ LogLevel::CRITICAL,
+ //LogLevel::DEBUG,
+ LogLevel::EMERGENCY,
+ LogLevel::ERROR,
+ LogLevel::INFO,
+ LogLevel::NOTICE,
+ LogLevel::WARNING,
+ ],
+ ],
+];
diff --git a/config/container.php b/config/container.php
new file mode 100644
index 0000000..2a09133
--- /dev/null
+++ b/config/container.php
@@ -0,0 +1,24 @@
+<?php
+/**
+ * Initialize a dependency injection container that implemented PSR-11 and return the container.
+ */
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+use Hyperf\Di\Container;
+use Hyperf\Di\Definition\DefinitionSourceFactory;
+use Hyperf\Utils\ApplicationContext;
+
+$container = new Container((new DefinitionSourceFactory(true))());
+
+if (! $container instanceof \Psr\Container\ContainerInterface) {
+ throw new RuntimeException('The dependency injection container is invalid.');
+}
+return ApplicationContext::setContainer($container);
diff --git a/config/routes.php b/config/routes.php
new file mode 100644
index 0000000..67289a2
--- /dev/null
+++ b/config/routes.php
@@ -0,0 +1,16 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * This file is part of Hyperf.
+ *
+ * @link https://www.hyperf.io
+ * @document https://hyperf.wiki
+ * @contact group@hyperf.io
+ * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
+ */
+use Hyperf\HttpServer\Router\Router;
+
+Router::addServer('ws', function () {
+ Router::get('/', App\Controller\WebsocketController::class);
+});
diff --git a/index.html b/index.html
new file mode 100755
index 0000000..e486880
--- /dev/null
+++ b/index.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+
+<head>
+ <title>socket demo</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <script type="text/javascript" src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
+</head>
+
+<body>
+ <input type="text" id="msg" />
+ <button id="send">发送</button>
+</body>
+
+</html>
+<script>
+ $(function() {
+ // 创建socket对象
+ var socket = new WebSocket('ws://127.0.0.1:9501');
+
+ // 打开Socket
+ socket.onopen = function(event) {
+
+ $('#send').on('click', function() {
+ var msg = $('#msg').val();
+ var url = 'application/index/data';
+ var fullData = {
+ url: url,
+ data: {
+ session_id: '1a2e0ca9c7404b765a37a5ab07546fa8',
+ group_id: '1a2e0ca9c7404b765a37a5ab07546fa8',
+ msg: msg
+ }
+ };
+ socket.send(JSON.stringify(fullData));
+ console.log(msg);
+ });
+ var url = 'application/index/reg';
+ var fullData = {
+ url: url,
+ data: {
+ session_id: '1a2e0ca9c7404b765a37a5ab07546fa8',
+ group_id: '1a2e0ca9c7404b765a37a5ab07546fa8'
+ }
+ };
+ // 发送一个初始化消息
+ socket.send(JSON.stringify(fullData));
+ if (socket.readyState == 1) {
+ // setInterval(function() {
+ // var fullData = {
+ // url: 'plumeWSService/cluster/ping',
+ // data: 'ping'
+ // };
+ // socket.send(JSON.stringify(fullData));
+ // }, 1000)
+ }
+ // 监听消息
+ socket.onmessage = function(event) {
+ if (event.data == 'pingpong') { //处理心跳接收事件
+
+ } else {
+ var fullData = JSON.parse(event.data);
+ console.log("客户端监听到的消息:", fullData);
+ }
+ };
+
+ // 监听Socket的关闭
+ socket.onclose = function(event) {
+ console.log("Socket关闭了", event);
+ };
+
+ // 关闭Socket....
+ //socket.close()
+ };
+ });
+</script>
\ No newline at end of file
diff --git a/runtime/container/aspects.cache b/runtime/container/aspects.cache
new file mode 100644
index 0000000..cda403a
--- /dev/null
+++ b/runtime/container/aspects.cache
@@ -0,0 +1 @@
+a:2:{i:0;s:36:"Hyperf\Config\Annotation\ValueAspect";i:1;s:33:"Hyperf\Di\Annotation\InjectAspect";}
\ No newline at end of file
diff --git a/runtime/container/classes.cache b/runtime/container/classes.cache
new file mode 100644
index 0000000..beab692
--- /dev/null
+++ b/runtime/container/classes.cache
@@ -0,0 +1 @@
+a:403:{i:0;s:36:"Hyperf\Cache\Listener\DeleteListener";i:1;s:33:"Hyperf\Cache\Listener\DeleteEvent";i:2;s:41:"Hyperf\Cache\Listener\DeleteListenerEvent";i:3;s:41:"Hyperf\Cache\Driver\CoroutineMemoryDriver";i:4;s:41:"Hyperf\Cache\Driver\KeyCollectorInterface";i:5;s:31:"Hyperf\Cache\Driver\RedisDriver";i:6;s:36:"Hyperf\Cache\Driver\FileSystemDriver";i:7;s:26:"Hyperf\Cache\Driver\Driver";i:8;s:35:"Hyperf\Cache\Driver\DriverInterface";i:9;s:18:"Hyperf\Cache\Cache";i:10;s:25:"Hyperf\Cache\CacheManager";i:11;s:38:"Hyperf\Cache\Collector\CoroutineMemory";i:12;s:41:"Hyperf\Cache\Collector\CoroutineMemoryKey";i:13;s:34:"Hyperf\Cache\Collector\FileStorage";i:14;s:33:"Hyperf\Cache\Annotation\FailCache";i:15;s:33:"Hyperf\Cache\Annotation\Cacheable";i:16;s:34:"Hyperf\Cache\Annotation\CacheEvict";i:17;s:32:"Hyperf\Cache\Annotation\CachePut";i:18;s:35:"Hyperf\Cache\CacheListenerCollector";i:19;s:30:"Hyperf\Cache\AnnotationManager";i:20;s:36:"Hyperf\Cache\Aspect\CacheEvictAspect";i:21;s:35:"Hyperf\Cache\Aspect\CacheableAspect";i:22;s:34:"Hyperf\Cache\Aspect\CachePutAspect";i:23;s:35:"Hyperf\Cache\Aspect\FailCacheAspect";i:24;s:27:"Hyperf\Cache\ConfigProvider";i:25;s:32:"Hyperf\Cache\Helper\StringHelper";i:26;s:47:"Hyperf\Cache\Exception\InvalidArgumentException";i:27;s:37:"Hyperf\Cache\Exception\CacheException";i:28;s:54:"Hyperf\Config\Listener\RegisterPropertyHandlerListener";i:29;s:28:"Hyperf\Config\ProviderConfig";i:30;s:36:"Hyperf\Config\Annotation\ValueAspect";i:31;s:30:"Hyperf\Config\Annotation\Value";i:32;s:20:"Hyperf\Config\Config";i:33;s:27:"Hyperf\Config\ConfigFactory";i:34;s:28:"Hyperf\Config\ConfigProvider";i:35;s:36:"Hyperf\Di\ClosureDefinitionCollector";i:36;s:36:"Hyperf\Di\MetadataCollectorInterface";i:37;s:19:"Hyperf\Di\Container";i:38;s:27:"Hyperf\Di\ReflectionManager";i:39;s:40:"Hyperf\Di\LazyLoader\PublicMethodVisitor";i:40;s:31:"Hyperf\Di\LazyLoader\LazyLoader";i:41;s:42:"Hyperf\Di\LazyLoader\ClassLazyProxyBuilder";i:42;s:45:"Hyperf\Di\LazyLoader\FallbackLazyProxyBuilder";i:43;s:45:"Hyperf\Di\LazyLoader\AbstractLazyProxyBuilder";i:44;s:46:"Hyperf\Di\LazyLoader\InterfaceLazyProxyBuilder";i:45;s:21:"Hyperf\Di\ClassLoader";i:46;s:44:"Hyperf\Di\MethodDefinitionCollectorInterface";i:47;s:45:"Hyperf\Di\ClosureDefinitionCollectorInterface";i:48;s:45:"Hyperf\Di\AbstractCallableDefinitionCollector";i:49;s:27:"Hyperf\Di\Annotation\Inject";i:50;s:39:"Hyperf\Di\Annotation\AbstractAnnotation";i:51;s:36:"Hyperf\Di\Annotation\AspectCollector";i:52;s:39:"Hyperf\Di\Annotation\MultipleAnnotation";i:53;s:31:"Hyperf\Di\Annotation\ScanConfig";i:54;s:33:"Hyperf\Di\Annotation\AspectLoader";i:55;s:26:"Hyperf\Di\Annotation\Debug";i:56;s:48:"Hyperf\Di\Annotation\MultipleAnnotationInterface";i:57;s:40:"Hyperf\Di\Annotation\AnnotationCollector";i:58;s:33:"Hyperf\Di\Annotation\InjectAspect";i:59;s:40:"Hyperf\Di\Annotation\AnnotationInterface";i:60;s:28:"Hyperf\Di\Annotation\Scanner";i:61;s:27:"Hyperf\Di\Annotation\Aspect";i:62;s:47:"Hyperf\Di\Annotation\AbstractMultipleAnnotation";i:63;s:37:"Hyperf\Di\Annotation\AnnotationReader";i:64;s:38:"Hyperf\Di\Annotation\RelationCollector";i:65;s:26:"Hyperf\Di\Aop\ProxyManager";i:66;s:29:"Hyperf\Di\Aop\VisitorMetadata";i:67;s:36:"Hyperf\Di\Aop\PropertyHandlerVisitor";i:68;s:32:"Hyperf\Di\Aop\AstVisitorRegistry";i:69;s:43:"Hyperf\Di\Aop\RegisterInjectPropertyHandler";i:70;s:28:"Hyperf\Di\Aop\AbstractAspect";i:71;s:27:"Hyperf\Di\Aop\AspectManager";i:72;s:31:"Hyperf\Di\Aop\RewriteCollection";i:73;s:30:"Hyperf\Di\Aop\ProxyCallVisitor";i:74;s:33:"Hyperf\Di\Aop\ProceedingJoinPoint";i:75;s:22:"Hyperf\Di\Aop\Pipeline";i:76;s:20:"Hyperf\Di\Aop\Aspect";i:77;s:17:"Hyperf\Di\Aop\Ast";i:78;s:32:"Hyperf\Di\Aop\AnnotationMetadata";i:79;s:29:"Hyperf\Di\Aop\AroundInterface";i:80;s:35:"Hyperf\Di\MethodDefinitionCollector";i:81;s:36:"Hyperf\Di\Definition\MethodInjection";i:82;s:53:"Hyperf\Di\Definition\SelfResolvingDefinitionInterface";i:83;s:38:"Hyperf\Di\Definition\FactoryDefinition";i:84;s:31:"Hyperf\Di\Definition\ScanConfig";i:85;s:30:"Hyperf\Di\Definition\Reference";i:86;s:46:"Hyperf\Di\Definition\DefinitionSourceInterface";i:87;s:37:"Hyperf\Di\Definition\DefinitionSource";i:88;s:43:"Hyperf\Di\Definition\PropertyHandlerManager";i:89;s:40:"Hyperf\Di\Definition\DefinitionInterface";i:90;s:37:"Hyperf\Di\Definition\ObjectDefinition";i:91;s:39:"Hyperf\Di\Definition\PropertyDefinition";i:92;s:44:"Hyperf\Di\Definition\DefinitionSourceFactory";i:93;s:24:"Hyperf\Di\ReflectionType";i:94;s:32:"Hyperf\Di\MetadataCacheCollector";i:95;s:24:"Hyperf\Di\ConfigProvider";i:96;s:39:"Hyperf\Di\Exception\AnnotationException";i:97;s:46:"Hyperf\Di\Exception\InvalidDefinitionException";i:98;s:37:"Hyperf\Di\Exception\NotFoundException";i:99;s:47:"Hyperf\Di\Exception\CircularDependencyException";i:100;s:44:"Hyperf\Di\Exception\InvalidArgumentException";i:101;s:46:"Hyperf\Di\Exception\DirectoryNotExistException";i:102;s:47:"Hyperf\Di\Exception\ConflictAnnotationException";i:103;s:39:"Hyperf\Di\Exception\DependencyException";i:104;s:29:"Hyperf\Di\Exception\Exception";i:105;s:27:"Hyperf\Di\MetadataCollector";i:106;s:33:"Hyperf\Di\Resolver\ObjectResolver";i:107;s:37:"Hyperf\Di\Resolver\ResolverDispatcher";i:108;s:29:"Hyperf\Di\Resolver\DepthGuard";i:109;s:36:"Hyperf\Di\Resolver\ResolverInterface";i:110;s:34:"Hyperf\Di\Resolver\FactoryResolver";i:111;s:36:"Hyperf\Di\Resolver\ParameterResolver";i:112;s:36:"Hyperf\Dispatcher\HttpRequestHandler";i:113;s:53:"Hyperf\Dispatcher\Exceptions\InvalidArgumentException";i:114;s:40:"Hyperf\Dispatcher\AbstractRequestHandler";i:115;s:32:"Hyperf\Dispatcher\HttpDispatcher";i:116;s:36:"Hyperf\Dispatcher\AbstractDispatcher";i:117;s:32:"Hyperf\Dispatcher\ConfigProvider";i:118;s:29:"Hyperf\Event\ListenerProvider";i:119;s:39:"Hyperf\Event\Contract\ListenerInterface";i:120;s:25:"Hyperf\Event\ListenerData";i:121;s:32:"Hyperf\Event\Annotation\Listener";i:122;s:35:"Hyperf\Event\EventDispatcherFactory";i:123;s:28:"Hyperf\Event\EventDispatcher";i:124;s:36:"Hyperf\Event\ListenerProviderFactory";i:125;s:27:"Hyperf\Event\ConfigProvider";i:126;s:54:"Hyperf\ExceptionHandler\Handler\WhoopsExceptionHandler";i:127;s:54:"Hyperf\ExceptionHandler\Listener\ErrorExceptionHandler";i:128;s:57:"Hyperf\ExceptionHandler\Listener\ExceptionHandlerListener";i:129;s:50:"Hyperf\ExceptionHandler\ExceptionHandlerDispatcher";i:130;s:51:"Hyperf\ExceptionHandler\Annotation\ExceptionHandler";i:131;s:52:"Hyperf\ExceptionHandler\Formatter\FormatterInterface";i:132;s:50:"Hyperf\ExceptionHandler\Formatter\DefaultFormatter";i:133;s:35:"Hyperf\ExceptionHandler\Propagation";i:134;s:40:"Hyperf\ExceptionHandler\ExceptionHandler";i:135;s:38:"Hyperf\ExceptionHandler\ConfigProvider";i:136;s:36:"Hyperf\Framework\Logger\StdoutLogger";i:137;s:45:"Hyperf\Framework\Bootstrap\WorkerExitCallback";i:138;s:43:"Hyperf\Framework\Bootstrap\ShutdownCallback";i:139;s:41:"Hyperf\Framework\Bootstrap\PacketCallback";i:140;s:46:"Hyperf\Framework\Bootstrap\WorkerStartCallback";i:141;s:40:"Hyperf\Framework\Bootstrap\CloseCallback";i:142;s:39:"Hyperf\Framework\Bootstrap\TaskCallback";i:143;s:47:"Hyperf\Framework\Bootstrap\ManagerStartCallback";i:144;s:45:"Hyperf\Framework\Bootstrap\WorkerStopCallback";i:145;s:46:"Hyperf\Framework\Bootstrap\ServerStartCallback";i:146;s:40:"Hyperf\Framework\Bootstrap\StartCallback";i:147;s:42:"Hyperf\Framework\Bootstrap\ConnectCallback";i:148;s:46:"Hyperf\Framework\Bootstrap\WorkerErrorCallback";i:149;s:42:"Hyperf\Framework\Bootstrap\ReceiveCallback";i:150;s:46:"Hyperf\Framework\Bootstrap\ManagerStopCallback";i:151;s:41:"Hyperf\Framework\Bootstrap\FinishCallback";i:152;s:46:"Hyperf\Framework\Bootstrap\PipeMessageCallback";i:153;s:35:"Hyperf\Framework\ApplicationFactory";i:154;s:31:"Hyperf\Framework\ConfigProvider";i:155;s:50:"Hyperf\Framework\Exception\NotImplementedException";i:156;s:35:"Hyperf\Framework\Event\OnWorkerExit";i:157;s:39:"Hyperf\Framework\Event\AfterWorkerStart";i:158;s:40:"Hyperf\Framework\Event\BeforeWorkerStart";i:159;s:39:"Hyperf\Framework\Event\OtherWorkerStart";i:160;s:31:"Hyperf\Framework\Event\OnFinish";i:161;s:31:"Hyperf\Framework\Event\OnPacket";i:162;s:36:"Hyperf\Framework\Event\OnWorkerError";i:163;s:29:"Hyperf\Framework\Event\OnTask";i:164;s:37:"Hyperf\Framework\Event\OnManagerStart";i:165;s:36:"Hyperf\Framework\Event\OnManagerStop";i:166;s:30:"Hyperf\Framework\Event\OnClose";i:167;s:38:"Hyperf\Framework\Event\BootApplication";i:168;s:32:"Hyperf\Framework\Event\OnReceive";i:169;s:30:"Hyperf\Framework\Event\OnStart";i:170;s:40:"Hyperf\Framework\Event\BeforeServerStart";i:171;s:36:"Hyperf\Framework\Event\OnPipeMessage";i:172;s:35:"Hyperf\Framework\Event\OnWorkerStop";i:173;s:44:"Hyperf\Framework\Event\BeforeMainServerStart";i:174;s:33:"Hyperf\Framework\Event\OnShutdown";i:175;s:32:"Hyperf\Framework\Event\OnConnect";i:176;s:38:"Hyperf\Framework\Event\MainWorkerStart";i:177;s:33:"Hyperf\Guzzle\MiddlewareInterface";i:178;s:27:"Hyperf\Guzzle\ClientFactory";i:179;s:33:"Hyperf\Guzzle\HandlerStackFactory";i:180;s:30:"Hyperf\Guzzle\CoroutineHandler";i:181;s:29:"Hyperf\Guzzle\RetryMiddleware";i:182;s:25:"Hyperf\Guzzle\PoolHandler";i:183;s:28:"Hyperf\Guzzle\ConfigProvider";i:184;s:38:"Hyperf\Guzzle\RingPHP\CoroutineHandler";i:185;s:33:"Hyperf\Guzzle\RingPHP\PoolHandler";i:186;s:50:"Hyperf\HttpServer\Contract\CoreMiddlewareInterface";i:187;s:43:"Hyperf\HttpServer\Contract\RequestInterface";i:188;s:44:"Hyperf\HttpServer\Contract\ResponseInterface";i:189;s:24:"Hyperf\HttpServer\Server";i:190;s:26:"Hyperf\HttpServer\Response";i:191;s:39:"Hyperf\HttpServer\Annotation\GetMapping";i:192;s:39:"Hyperf\HttpServer\Annotation\Controller";i:193;s:43:"Hyperf\HttpServer\Annotation\RequestMapping";i:194;s:43:"Hyperf\HttpServer\Annotation\AutoController";i:195;s:42:"Hyperf\HttpServer\Annotation\DeleteMapping";i:196;s:36:"Hyperf\HttpServer\Annotation\Mapping";i:197;s:40:"Hyperf\HttpServer\Annotation\Middlewares";i:198;s:39:"Hyperf\HttpServer\Annotation\PutMapping";i:199;s:41:"Hyperf\HttpServer\Annotation\PatchMapping";i:200;s:39:"Hyperf\HttpServer\Annotation\Middleware";i:201;s:40:"Hyperf\HttpServer\Annotation\PostMapping";i:202;s:32:"Hyperf\HttpServer\CoreMiddleware";i:203;s:25:"Hyperf\HttpServer\Request";i:204;s:33:"Hyperf\HttpServer\ResponseEmitter";i:205;s:32:"Hyperf\HttpServer\ConfigProvider";i:206;s:56:"Hyperf\HttpServer\Exception\Handler\HttpExceptionHandler";i:207;s:57:"Hyperf\HttpServer\Exception\Http\InvalidResponseException";i:208;s:50:"Hyperf\HttpServer\Exception\Http\EncodingException";i:209;s:46:"Hyperf\HttpServer\Exception\Http\FileException";i:210;s:35:"Hyperf\HttpServer\MiddlewareManager";i:211;s:32:"Hyperf\HttpServer\Router\Handler";i:212;s:35:"Hyperf\HttpServer\Router\Dispatched";i:213;s:39:"Hyperf\HttpServer\Router\RouteCollector";i:214;s:31:"Hyperf\HttpServer\Router\Router";i:215;s:42:"Hyperf\HttpServer\Router\DispatcherFactory";i:216;s:20:"Hyperf\Logger\Logger";i:217;s:27:"Hyperf\Logger\LoggerFactory";i:218;s:28:"Hyperf\Logger\ConfigProvider";i:219;s:46:"Hyperf\Logger\Exception\InvalidConfigException";i:220;s:25:"Hyperf\Memory\LockManager";i:221;s:27:"Hyperf\Memory\AtomicManager";i:222;s:26:"Hyperf\Memory\TableManager";i:223;s:28:"Hyperf\Memory\ConfigProvider";i:224;s:22:"Hyperf\Pool\Connection";i:225;s:33:"Hyperf\Pool\SimplePool\Connection";i:226;s:27:"Hyperf\Pool\SimplePool\Pool";i:227;s:29:"Hyperf\Pool\SimplePool\Config";i:228;s:34:"Hyperf\Pool\SimplePool\PoolFactory";i:229;s:31:"Hyperf\Pool\KeepaliveConnection";i:230;s:29:"Hyperf\Pool\ConstantFrequency";i:231;s:16:"Hyperf\Pool\Pool";i:232;s:19:"Hyperf\Pool\Context";i:233;s:21:"Hyperf\Pool\Frequency";i:234;s:19:"Hyperf\Pool\Channel";i:235;s:22:"Hyperf\Pool\PoolOption";i:236;s:26:"Hyperf\Pool\ConfigProvider";i:237;s:46:"Hyperf\Pool\Exception\InvalidArgumentException";i:238;s:40:"Hyperf\Pool\Exception\SocketPopException";i:239;s:41:"Hyperf\Pool\Exception\ConnectionException";i:240;s:33:"Hyperf\Pool\LowFrequencyInterface";i:241;s:53:"Hyperf\Process\Listener\LogBeforeProcessStartListener";i:242;s:54:"Hyperf\Process\Listener\LogAfterProcessStoppedListener";i:243;s:43:"Hyperf\Process\Listener\BootProcessListener";i:244;s:33:"Hyperf\Process\Annotation\Process";i:245;s:30:"Hyperf\Process\AbstractProcess";i:246;s:31:"Hyperf\Process\ProcessCollector";i:247;s:29:"Hyperf\Process\ConfigProvider";i:248;s:46:"Hyperf\Process\Exception\SocketAcceptException";i:249;s:47:"Hyperf\Process\Exception\ServerInvalidException";i:250;s:39:"Hyperf\Process\Event\AfterProcessHandle";i:251;s:42:"Hyperf\Process\Event\BeforeCoroutineHandle";i:252;s:41:"Hyperf\Process\Event\AfterCoroutineHandle";i:253;s:32:"Hyperf\Process\Event\PipeMessage";i:254;s:40:"Hyperf\Process\Event\BeforeProcessHandle";i:255;s:29:"Hyperf\Process\ProcessManager";i:256;s:23:"Hyperf\Redis\RedisProxy";i:257;s:28:"Hyperf\Redis\RedisConnection";i:258;s:42:"Hyperf\Redis\Lua\Hash\HIncrByFloatIfExists";i:259;s:37:"Hyperf\Redis\Lua\Hash\HGetAllMultiple";i:260;s:23:"Hyperf\Redis\Lua\Script";i:261;s:32:"Hyperf\Redis\Lua\ScriptInterface";i:262;s:22:"Hyperf\Redis\Frequency";i:263;s:18:"Hyperf\Redis\Redis";i:264;s:25:"Hyperf\Redis\RedisFactory";i:265;s:27:"Hyperf\Redis\ConfigProvider";i:266;s:27:"Hyperf\Redis\Pool\RedisPool";i:267;s:29:"Hyperf\Redis\Pool\PoolFactory";i:268;s:54:"Hyperf\Redis\Exception\InvalidRedisConnectionException";i:269;s:49:"Hyperf\Redis\Exception\InvalidRedisProxyException";i:270;s:45:"Hyperf\Redis\Exception\RedisNotFoundException";i:271;s:18:"Hyperf\Server\Port";i:272;s:19:"Hyperf\Server\Event";i:273;s:46:"Hyperf\Server\Listener\StoreServerNameListener";i:274;s:47:"Hyperf\Server\Listener\InitProcessTitleListener";i:275;s:47:"Hyperf\Server\Listener\AfterWorkerStartListener";i:276;s:20:"Hyperf\Server\Server";i:277;s:26:"Hyperf\Server\Entry\Logger";i:278;s:35:"Hyperf\Server\Entry\EventDispatcher";i:279;s:24:"Hyperf\Server\SwowServer";i:280;s:27:"Hyperf\Server\ServerFactory";i:281;s:25:"Hyperf\Server\SwooleEvent";i:282;s:29:"Hyperf\Server\ServerInterface";i:283;s:33:"Hyperf\Server\Command\StartServer";i:284;s:27:"Hyperf\Server\ServerManager";i:285;s:26:"Hyperf\Server\ServerConfig";i:286;s:33:"Hyperf\Server\SwooleServerFactory";i:287;s:29:"Hyperf\Server\CoroutineServer";i:288;s:28:"Hyperf\Server\ConfigProvider";i:289;s:39:"Hyperf\Server\Exception\ServerException";i:290;s:40:"Hyperf\Server\Exception\RuntimeException";i:291;s:48:"Hyperf\Server\Exception\InvalidArgumentException";i:292;s:44:"Hyperf\Server\Event\MainCoroutineServerStart";i:293;s:39:"Hyperf\Server\Event\CoroutineServerStop";i:294;s:40:"Hyperf\Server\Event\CoroutineServerStart";i:295;s:36:"Hyperf\Utils\Coordinator\Coordinator";i:296;s:43:"Hyperf\Utils\Coordinator\CoordinatorManager";i:297;s:34:"Hyperf\Utils\Coordinator\Constants";i:298;s:41:"Hyperf\Utils\Serializer\SymfonyNormalizer";i:299;s:41:"Hyperf\Utils\Serializer\SerializerFactory";i:300;s:40:"Hyperf\Utils\Serializer\SimpleNormalizer";i:301;s:31:"Hyperf\Utils\ApplicationContext";i:302;s:33:"Hyperf\Utils\Coroutine\Concurrent";i:303;s:29:"Hyperf\Utils\Coroutine\Locker";i:304;s:16:"Hyperf\Utils\Str";i:305;s:19:"Hyperf\Utils\Fluent";i:306;s:31:"Hyperf\Utils\Contracts\Jsonable";i:307;s:32:"Hyperf\Utils\Contracts\Arrayable";i:308;s:30:"Hyperf\Utils\Contracts\Xmlable";i:309;s:33:"Hyperf\Utils\Contracts\MessageBag";i:310;s:38:"Hyperf\Utils\Contracts\MessageProvider";i:311;s:23:"Hyperf\Utils\Codec\Json";i:312;s:22:"Hyperf\Utils\Codec\Xml";i:313;s:25:"Hyperf\Utils\Codec\Base62";i:314;s:30:"Hyperf\Utils\ResourceGenerator";i:315;s:37:"Hyperf\Utils\MimeTypeExtensionGuesser";i:316;s:27:"Hyperf\Utils\ClearStatCache";i:317;s:34:"Hyperf\Utils\Filesystem\Filesystem";i:318;s:45:"Hyperf\Utils\Filesystem\FileNotFoundException";i:319;s:23:"Hyperf\Utils\Pluralizer";i:320;s:30:"Hyperf\Utils\CodeGen\PhpParser";i:321;s:28:"Hyperf\Utils\CodeGen\Package";i:322;s:33:"Hyperf\Utils\CodeGen\PhpDocReader";i:323;s:28:"Hyperf\Utils\CodeGen\Project";i:324;s:40:"Hyperf\Utils\CodeGen\PhpDocReaderManager";i:325;s:19:"Hyperf\Utils\Waiter";i:326;s:21:"Hyperf\Utils\Optional";i:327;s:22:"Hyperf\Utils\Coroutine";i:328;s:27:"Hyperf\Utils\Channel\Caller";i:329;s:35:"Hyperf\Utils\Channel\ChannelManager";i:330;s:21:"Hyperf\Utils\Composer";i:331;s:20:"Hyperf\Utils\Context";i:332;s:39:"Hyperf\Utils\HigherOrderCollectionProxy";i:333;s:20:"Hyperf\Utils\Backoff";i:334;s:23:"Hyperf\Utils\MessageBag";i:335;s:22:"Hyperf\Utils\WaitGroup";i:336;s:21:"Hyperf\Utils\Pipeline";i:337;s:23:"Hyperf\Utils\Collection";i:338;s:23:"Hyperf\Utils\Stringable";i:339;s:20:"Hyperf\Utils\Network";i:340;s:27:"Hyperf\Utils\ConfigProvider";i:341;s:21:"Hyperf\Utils\Resource";i:342;s:24:"Hyperf\Utils\ChannelPool";i:343;s:39:"Hyperf\Utils\Exception\ExceptionThrower";i:344;s:45:"Hyperf\Utils\Exception\ChannelClosedException";i:345;s:43:"Hyperf\Utils\Exception\WaitTimeoutException";i:346;s:47:"Hyperf\Utils\Exception\InvalidArgumentException";i:347;s:49:"Hyperf\Utils\Exception\ParallelExecutionException";i:348;s:39:"Hyperf\Utils\Exception\TimeoutException";i:349;s:21:"Hyperf\Utils\Parallel";i:350;s:16:"Hyperf\Utils\Arr";i:351;s:32:"Hyperf\Utils\HigherOrderTapProxy";i:352;s:36:"Hyperf\Utils\Reflection\ClassInvoker";i:353;s:30:"Hyperf\Utils\Packer\JsonPacker";i:354;s:39:"Hyperf\Utils\Packer\PhpSerializerPacker";i:355;s:53:"Hyperf\WebSocketServer\Listener\OnPipeMessageListener";i:356;s:50:"Hyperf\WebSocketServer\Listener\InitSenderListener";i:357;s:29:"Hyperf\WebSocketServer\Server";i:358;s:40:"Hyperf\WebSocketServer\SenderPipeMessage";i:359;s:44:"Hyperf\WebSocketServer\Collector\FdCollector";i:360;s:35:"Hyperf\WebSocketServer\Collector\Fd";i:361;s:37:"Hyperf\WebSocketServer\CoreMiddleware";i:362;s:30:"Hyperf\WebSocketServer\Context";i:363;s:29:"Hyperf\WebSocketServer\Sender";i:364;s:31:"Hyperf\WebSocketServer\Security";i:365;s:37:"Hyperf\WebSocketServer\ConfigProvider";i:366;s:58:"Hyperf\WebSocketServer\Exception\WebSocketMessageException";i:367;s:66:"Hyperf\WebSocketServer\Exception\Handler\WebSocketExceptionHandler";i:368;s:55:"Hyperf\WebSocketServer\Exception\InvalidMethodException";i:369;s:61:"Hyperf\WebSocketServer\Exception\WebSocketHandeShakeException";i:370;s:40:"Hyperf\WebSocketServer\Event\OnOpenEvent";i:371;s:19:"Hyperf\Devtool\Info";i:372;s:35:"Hyperf\Devtool\VendorPublishCommand";i:373;s:26:"Hyperf\Devtool\InfoCommand";i:374;s:30:"Hyperf\Devtool\Adapter\Aspects";i:375;s:38:"Hyperf\Devtool\Adapter\AbstractAdapter";i:376;s:38:"Hyperf\Devtool\Describe\AspectsCommand";i:377;s:40:"Hyperf\Devtool\Describe\ListenersCommand";i:378;s:37:"Hyperf\Devtool\Describe\RoutesCommand";i:379;s:44:"Hyperf\Devtool\Generator\NatsConsumerCommand";i:380;s:44:"Hyperf\Devtool\Generator\AmqpConsumerCommand";i:381;s:40:"Hyperf\Devtool\Generator\ResourceCommand";i:382;s:44:"Hyperf\Devtool\Generator\AmqpProducerCommand";i:383;s:35:"Hyperf\Devtool\Generator\JobCommand";i:384;s:40:"Hyperf\Devtool\Generator\ConstantCommand";i:385;s:38:"Hyperf\Devtool\Generator\AspectCommand";i:386;s:39:"Hyperf\Devtool\Generator\RequestCommand";i:387;s:42:"Hyperf\Devtool\Generator\ControllerCommand";i:388;s:45:"Hyperf\Devtool\Generator\KafkaConsumerCommand";i:389;s:39:"Hyperf\Devtool\Generator\CommandCommand";i:390;s:41:"Hyperf\Devtool\Generator\GeneratorCommand";i:391;s:43:"Hyperf\Devtool\Generator\NsqConsumerCommand";i:392;s:40:"Hyperf\Devtool\Generator\ListenerCommand";i:393;s:39:"Hyperf\Devtool\Generator\ProcessCommand";i:394;s:42:"Hyperf\Devtool\Generator\MiddlewareCommand";i:395;s:29:"Hyperf\Devtool\ConfigProvider";i:396;s:36:"App\Listener\DbQueryExecutedListener";i:397;s:14:"App\Utils\guid";i:398;s:14:"App\Utils\Http";i:399;s:17:"App\Utils\HashMap";i:400;s:34:"App\Controller\WebsocketController";i:401;s:27:"App\Service\TransferService";i:402;s:41:"App\Exception\Handler\AppExceptionHandler";}
\ No newline at end of file
diff --git a/runtime/container/proxy/App_Controller_WebsocketController.proxy.php b/runtime/container/proxy/App_Controller_WebsocketController.proxy.php
new file mode 100644
index 0000000..91b9b35
--- /dev/null
+++ b/runtime/container/proxy/App_Controller_WebsocketController.proxy.php
@@ -0,0 +1,211 @@
+<?php
+
+/*
+ * @Author: your name
+ * @Date: 2021-12-24 10:26:10
+ * @LastEditTime: 2021-12-24 17:11:44
+ * @LastEditors: Please set LastEditors
+ * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ * @FilePath: /hy-websocket/app/Controller/WebsocketController.php
+ */
+declare (strict_types=1);
+namespace App\Controller;
+
+use Hyperf\Contract\OnCloseInterface;
+use Hyperf\Contract\OnMessageInterface;
+use Hyperf\Contract\OnOpenInterface;
+use Hyperf\Contract\OnHandShakeInterface;
+use Hyperf\Utils\Codec\Json;
+use Swoole\Http\Request;
+use Swoole\Http\Response;
+use Swoole\WebSocket\Frame;
+use Swoole\WebSocket\Server;
+use Hyperf\Redis\Redis;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\Config\Annotation\Value;
+use App\Utils\guid;
+use App\Utils\HashMap;
+use App\Utils\Http;
+use App\Utils\PcmToWave;
+use App\Service\TransferService;
+use Psr\Container\ContainerInterface;
+use Hyperf\Logger\LoggerFactory;
+use Hyperf\Contract\ConfigInterface;
+class WebsocketController implements OnMessageInterface, OnOpenInterface, OnCloseInterface
+{
+ use \Hyperf\Di\Aop\ProxyTrait;
+ use \Hyperf\Di\Aop\PropertyHandlerTrait;
+ /**
+ * @Inject
+ * @var TransferService
+ */
+ private $transferService;
+ /**
+ *
+ * @Inject
+ * @var HashMap
+ */
+ private $HashMap;
+ //存放音频写入句柄
+ /**
+ *
+ * @var \Psr\Log\LoggerInterface
+ */
+ public $logger;
+ /**
+ * @Inject()
+ * @var ConfigInterface
+ */
+ private $config;
+ private $server_config;
+ private $allow_ip;
+ public function __construct(LoggerFactory $loggerFactory)
+ {
+ $this->__handlePropertyHandler(__CLASS__);
+ // 第一个参数对应日志的 name, 第二个参数对应 config/autoload/logger.php 内的 key
+ $this->logger = $loggerFactory->get('log', 'default');
+ //获取 server.php 里的内容
+ $this->server_config = $this->config->get('server.servers', '');
+ $this->allow_ip = $this->server_config[0]['allow_ip'];
+ }
+ public function onClose($server, int $fd, int $reactorId) : void
+ {
+ //客户端异常关闭
+ //语音文件传输完毕,关闭文件。
+ $host = $this->allow_ip;
+ $group_key = $this->transferService->get($host . ':' . $fd . ':group');
+ $this->transferService->lrem($group_key, $fd, 0);
+ $set_ket = $host . ':' . $fd . ':group';
+ $this->transferService->delete($set_ket);
+ }
+ public function onStart($server) : void
+ {
+ $host = $this->allow_ip;
+ $keyList = $this->transferService->keys("*{$host}*");
+ foreach ($keyList as $key => $value) {
+ $this->transferService->delete($value);
+ }
+ }
+ /**
+ * @param Response|Server $server
+ */
+ public function onMessage($server, Frame $frame) : void
+ {
+ $ret = array('code' => 0, 'data' => null);
+ $msgData = $this->is_json($frame->data, true);
+ if ($msgData) {
+ $frameData = $msgData;
+ $url = $frameData['url'];
+ $data = $frameData['data'];
+ $action = substr($url, strrpos($url, "/") + 1);
+ switch ($action) {
+ case "reg":
+ $groupId = $data['group_id'];
+ $session = $data['session_id'];
+ $this->bind($groupId, '', $frame->fd);
+ $key = "practice_scenes_ws_cur_session_info:" . $session;
+ $node_key = 'practice_scenes_ws_cur_session_node_info:' . $session;
+ $redisData = $this->transferService->get($key);
+ if ($redisData) {
+ $ret['data'] = json_decode($redisData, true);
+ $this->transferService->delete($key);
+ } else {
+ $redisData = $this->transferService->get($node_key);
+ if ($redisData) {
+ $ret['data'] = json_decode($redisData, true);
+ } else {
+ $ret['data'] = '';
+ }
+ }
+ $ret['event'] = "re_bind";
+ $server->push($frame->fd, json_encode($ret));
+ break;
+ case "data":
+ $groupId = $data['group_id'];
+ $ret['event'] = "data";
+ $ret['data'] = $data;
+ $connections = array();
+ if (empty($groupId)) {
+ // 获取所有无分组标识在线终端
+ $onlines = count($server->connections);
+ if ($onlines > 0) {
+ $connections = $server->connections;
+ }
+ } else {
+ // 获取所有分组标识在线终端 key = groupID:host
+ $key = $groupId . ':' . $this->allow_ip;
+ $connections = $this->transferService->lrange($key, 0, -1);
+ }
+ $connections = array_unique($connections);
+ // 广播获取的在线终端
+ foreach ($connections as $fd) {
+ $ingfd = (int) $fd;
+ $server->push($ingfd, json_encode($ret));
+ }
+ break;
+ case "ping":
+ $server->push($frame->fd, $data . 'pong');
+ break;
+ default:
+ $ret['code'] = 404;
+ $ret['msg'] = 'event no existent';
+ $server->push($frame->fd, json_encode($ret));
+ return;
+ }
+ } else {
+ $ret['code'] = -1;
+ $ret['msg'] = 'data is null or data no json';
+ $server->push($frame->fd, json_encode($ret));
+ return;
+ }
+ }
+ public function onOpen($server, Request $request) : void
+ {
+ // $server->push($request->fd, 'Opened');
+ // var_dump($request);
+ }
+ /**
+ * 功能:1、判断是否是json
+ * @param string $data
+ * @param bool $assoc
+ * @return bool|mixed|string
+ */
+ public function is_json($data = '', $assoc = false)
+ {
+ $data = json_decode($data, $assoc);
+ if ($data && is_object($data) || is_array($data) && !empty(current($data))) {
+ return $data;
+ }
+ return false;
+ }
+ /**
+ * 当前链接的绑定事件。
+ * 绑定的几种状态:
+ * 1.无分组
+ * host -> fds (获取当前节点的在线链接列表)
+ * host:fd -> value (获取当前节点当前链接的绑定数据)
+ * host:fd:group -> host (获取当前节点当前链接的绑定分组)
+ * 2.有分组
+ * groupID:host -> fds
+ * host:fd -> value
+ * host:fd:group -> groupID:host
+ * @param string $groupID 需要绑定当前链接所在分组的分组标识,如果为空则使用默认分组
+ * @param string $value 需要绑定当前链接对应的业务数据,如果为空则不绑定
+ */
+ public function bind($groupID = '', $value = '', $fd)
+ {
+ $host = $this->allow_ip;
+ // 绑定分组和当前链接对应的分组标识
+ if (empty($groupID)) {
+ $this->transferService->rpush($host, $fd);
+ $this->transferService->set($host . ':' . $fd . ':group', $host);
+ } else {
+ $this->transferService->rpush($groupID . ':' . $host, $fd);
+ $this->transferService->set($host . ':' . $fd . ':group', $groupID . ':' . $host);
+ }
+ // 绑定业务数据
+ if (!empty($value)) {
+ $this->transferService->set($host . ':' . $fd, $value);
+ }
+ }
+}
\ No newline at end of file
diff --git a/runtime/container/proxy/App_Service_TransferService.proxy.php b/runtime/container/proxy/App_Service_TransferService.proxy.php
new file mode 100644
index 0000000..6a78a4f
--- /dev/null
+++ b/runtime/container/proxy/App_Service_TransferService.proxy.php
@@ -0,0 +1,102 @@
+<?php
+
+namespace App\Service;
+
+use Hyperf\Redis\Redis;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\Config\Annotation\Value;
+use App\Utils\Http;
+class TransferService extends Http
+{
+ use \Hyperf\Di\Aop\ProxyTrait;
+ use \Hyperf\Di\Aop\PropertyHandlerTrait;
+ function __construct()
+ {
+ if (method_exists(parent::class, '__construct')) {
+ parent::__construct(...func_get_args());
+ }
+ $this->__handlePropertyHandler(__CLASS__);
+ }
+ /**
+ *
+ * @Inject
+ * @var Redis
+ */
+ private $redis;
+ public function ping()
+ {
+ $result = $this->redis->ping();
+ }
+ public function setnx($strKey, $value)
+ {
+ $this->redis->setnx($strKey, $value);
+ }
+ public function set($strKey, $value)
+ {
+ $this->redis->set($strKey, $value);
+ }
+ public function get($strKey)
+ {
+ return $this->redis->get($strKey);
+ }
+ public function delete($strKey)
+ {
+ $this->redis->del($strKey);
+ }
+ public function incrby($str_key, $value = 0)
+ {
+ $this->redis->incrby($str_key, $value);
+ }
+ public function incr($fd)
+ {
+ return $this->redis->incr($fd);
+ }
+ public function decr($strKey)
+ {
+ return $this->redis->decr($strKey);
+ }
+ public function decrby($strKey, $num)
+ {
+ return $this->redis->decrby($strKey, $num);
+ }
+ public function lSize($strKey)
+ {
+ return $this->redis->lSize($strKey);
+ }
+ public function lGet($strKey, $index)
+ {
+ return $this->redis->lGet($strKey, $index);
+ }
+ public function lrem($strKey, $value, $index)
+ {
+ return $this->redis->lrem($strKey, $value, $index);
+ }
+ public function lPush($strKey, $value)
+ {
+ $this->redis->lPush($strKey, $value);
+ }
+ public function rPush($strKey, $value)
+ {
+ $this->redis->rPush($strKey, $value);
+ }
+ public function lPop($strKey)
+ {
+ return $this->redis->lPop($strKey);
+ }
+ public function rPop($strKey)
+ {
+ return $this->redis->rPop($strKey);
+ }
+ public function lSet($strKey, $index, $value)
+ {
+ return $this->redis->lSet($strKey, $index, $value);
+ }
+ public function lrange($strKey, $index, $length)
+ {
+ return $this->redis->lrange($strKey, $index, $length);
+ }
+ public function keys($strKey)
+ {
+ return $this->redis->keys($strKey);
+ }
+}
\ No newline at end of file
diff --git a/runtime/container/proxy/App_Utils_Http.proxy.php b/runtime/container/proxy/App_Utils_Http.proxy.php
new file mode 100644
index 0000000..fc9af6a
--- /dev/null
+++ b/runtime/container/proxy/App_Utils_Http.proxy.php
@@ -0,0 +1,145 @@
+<?php
+
+namespace App\Utils;
+
+use GuzzleHttp\Client;
+use GuzzleHttp\HandlerStack;
+use Hyperf\Guzzle\CoroutineHandler;
+use GuzzleHttp\Exception\ClientException;
+use Hyperf\Di\Annotation\Inject;
+use Hyperf\Guzzle\ClientFactory;
+class Http
+{
+ use \Hyperf\Di\Aop\ProxyTrait;
+ use \Hyperf\Di\Aop\PropertyHandlerTrait;
+ function __construct()
+ {
+ $this->__handlePropertyHandler(__CLASS__);
+ }
+ /**
+ * @Inject
+ * @var ClientFactory
+ */
+ private $clientFactory;
+ function get_host($url, &$path)
+ {
+ $pos = strpos($url, "/", 8);
+ if (!$pos) {
+ $path = "/";
+ return $url;
+ }
+ $path = substr($url, $pos);
+ return substr($url, 0, $pos);
+ }
+ public function get_content_length($url, $time_out = 60)
+ {
+ if ($url == "") {
+ return 0;
+ }
+ try {
+ $options = ['base_uri' => "", 'handler' => HandlerStack::create(new CoroutineHandler()), 'timeout' => $time_out, 'swoole' => ['timeout' => $time_out, 'socket_buffer_size' => 1024 * 1024 * 2]];
+ $path = "";
+ $host = $this->get_host($url, $path);
+ if ($host == "") {
+ return 0;
+ }
+ $options["base_uri"] = $host;
+ $client = $this->clientFactory->create($options);
+ $response = $client->get($path);
+ if ($response->getStatusCode() != 200) {
+ return 0;
+ }
+ $str_size = $response->getHeader('Content-Length');
+ $size = intval($str_size[0]);
+ return $size;
+ } catch (ClientException $e) {
+ //获取协程中出现的异常。
+ $response_e = $e->getResponse();
+ }
+ return 0;
+ }
+ public function get_web_result($url, $time_out = 10)
+ {
+ if ($url == "") {
+ return "";
+ }
+ $path = "";
+ $host = $this->get_host($url, $path);
+ if ($host == "") {
+ return "";
+ }
+ $options = ['base_uri' => $host, 'handler' => HandlerStack::create(new CoroutineHandler()), 'timeout' => $time_out, 'swoole' => ['timeout' => $time_out, 'socket_buffer_size' => 1024 * 1024 * 2]];
+ try {
+ //var_dump($this->clientFactory);
+ $client = $this->clientFactory->create($options);
+ $response = $client->get($path);
+ if ($response->getStatusCode() == 200) {
+ $strContent = $response->getBody()->getContents();
+ //echo "$strContent\r\n";
+ return $strContent;
+ }
+ } catch (ClientException $e) {
+ //获取协程中出现的异常。
+ var_dump($e->getResponse());
+ }
+ return "";
+ }
+ public function post_web_result($url, $post_data, $time_out = 10)
+ {
+ if ($url == "") {
+ return "";
+ }
+ $path = "";
+ $host = $this->get_host($url, $path);
+ if ($host == "") {
+ return "";
+ }
+ $options = ['base_uri' => $host, 'handler' => HandlerStack::create(new CoroutineHandler()), 'timeout' => $time_out, 'swoole' => ['timeout' => $time_out, 'socket_buffer_size' => 1024 * 1024 * 2]];
+ try {
+ $client = $this->clientFactory->create($options);
+ $response = $client->request('POST', $url, ['form_params' => $post_data]);
+ //debug
+ //$response = $client->request('POST', $url, ['form_params' => $post_data,'debug' => true]);
+ if ($response->getStatusCode() == 200) {
+ $strContent = $response->getBody()->getContents();
+ //echo "$strContent\r\n";
+ return $strContent;
+ }
+ } catch (ClientException $e) {
+ //获取协程中出现的异常。
+ //var_dump($e->getResponse());
+ }
+ return "";
+ }
+ public function post_json_result($url, $post_data, $time_out = 10)
+ {
+ if ($url == "") {
+ return "";
+ }
+ $path = "";
+ $host = $this->get_host($url, $path);
+ if ($host == "") {
+ return "";
+ }
+ $options = ['base_uri' => $host, 'handler' => HandlerStack::create(new CoroutineHandler()), 'timeout' => $time_out, 'swoole' => ['timeout' => $time_out, 'socket_buffer_size' => 1024 * 1024 * 2]];
+ try {
+ $client = $this->clientFactory->create($options);
+ if (is_array($post_data)) {
+ $response = $client->request('POST', $url, ['body' => json_encode($post_data), "headers" => ['Accept' => 'application/json']]);
+ } else {
+ $response = $client->request('POST', $url, ['body' => $post_data, "headers" => ['Accept' => 'application/json']]);
+ }
+ //debug
+ //$response = $client->request('POST', $url, ['form_params' => $post_data,'debug' => true]);
+ if ($response->getStatusCode() == 200) {
+ $strContent = $response->getBody()->getContents();
+ //echo "$strContent\r\n";
+ return $strContent;
+ }
+ } catch (ClientException $e) {
+ //获取协程中出现的异常。
+ var_dump($e->getResponse());
+ }
+ return "";
+ }
+}
\ No newline at end of file
diff --git a/runtime/container/scan.cache b/runtime/container/scan.cache
new file mode 100644
index 0000000..0d1ee72
--- /dev/null
+++ b/runtime/container/scan.cache
@@ -0,0 +1 @@
+a:2:{i:0;a:3:{s:35:"Hyperf\Cache\CacheListenerCollector";s:6:"a:0:{}";s:40:"Hyperf\Di\Annotation\AnnotationCollector";s:4640:"a:25:{s:36:"Hyperf\Cache\Aspect\CacheEvictAspect";a:1:{s:2:"_c";a:1:{s:27:"Hyperf\Di\Annotation\Aspect";O:27:"Hyperf\Di\Annotation\Aspect":3:{s:7:"classes";a:0:{}s:11:"annotations";a:0:{}s:8:"priority";N;}}}s:35:"Hyperf\Cache\Aspect\CacheableAspect";a:1:{s:2:"_c";a:1:{s:27:"Hyperf\Di\Annotation\Aspect";O:27:"Hyperf\Di\Annotation\Aspect":3:{s:7:"classes";a:0:{}s:11:"annotations";a:0:{}s:8:"priority";N;}}}s:34:"Hyperf\Cache\Aspect\CachePutAspect";a:1:{s:2:"_c";a:1:{s:27:"Hyperf\Di\Annotation\Aspect";O:27:"Hyperf\Di\Annotation\Aspect":3:{s:7:"classes";a:0:{}s:11:"annotations";a:0:{}s:8:"priority";N;}}}s:35:"Hyperf\Cache\Aspect\FailCacheAspect";a:1:{s:2:"_c";a:1:{s:27:"Hyperf\Di\Annotation\Aspect";O:27:"Hyperf\Di\Annotation\Aspect":3:{s:7:"classes";a:0:{}s:11:"annotations";a:0:{}s:8:"priority";N;}}}s:35:"Hyperf\Devtool\VendorPublishCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:26:"Hyperf\Devtool\InfoCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:44:"Hyperf\Devtool\Generator\NatsConsumerCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:44:"Hyperf\Devtool\Generator\AmqpConsumerCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:40:"Hyperf\Devtool\Generator\ResourceCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:44:"Hyperf\Devtool\Generator\AmqpProducerCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:35:"Hyperf\Devtool\Generator\JobCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:40:"Hyperf\Devtool\Generator\ConstantCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:38:"Hyperf\Devtool\Generator\AspectCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:39:"Hyperf\Devtool\Generator\RequestCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:42:"Hyperf\Devtool\Generator\ControllerCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:45:"Hyperf\Devtool\Generator\KafkaConsumerCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:39:"Hyperf\Devtool\Generator\CommandCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:43:"Hyperf\Devtool\Generator\NsqConsumerCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:40:"Hyperf\Devtool\Generator\ListenerCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:39:"Hyperf\Devtool\Generator\ProcessCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:42:"Hyperf\Devtool\Generator\MiddlewareCommand";a:1:{s:2:"_c";a:1:{s:33:"Hyperf\Command\Annotation\Command";O:33:"Hyperf\Command\Annotation\Command":0:{}}}s:36:"App\Listener\DbQueryExecutedListener";a:1:{s:2:"_c";a:1:{s:32:"Hyperf\Event\Annotation\Listener";O:32:"Hyperf\Event\Annotation\Listener":1:{s:8:"priority";i:1;}}}s:14:"App\Utils\Http";a:1:{s:2:"_p";a:1:{s:13:"clientFactory";a:1:{s:27:"Hyperf\Di\Annotation\Inject";O:27:"Hyperf\Di\Annotation\Inject":3:{s:5:"value";s:27:"Hyperf\Guzzle\ClientFactory";s:8:"required";b:1;s:4:"lazy";b:0;}}}}s:27:"App\Service\TransferService";a:1:{s:2:"_p";a:1:{s:5:"redis";a:1:{s:27:"Hyperf\Di\Annotation\Inject";O:27:"Hyperf\Di\Annotation\Inject":3:{s:5:"value";s:18:"Hyperf\Redis\Redis";s:8:"required";b:1;s:4:"lazy";b:0;}}}}s:34:"App\Controller\WebsocketController";a:1:{s:2:"_p";a:3:{s:15:"transferService";a:1:{s:27:"Hyperf\Di\Annotation\Inject";O:27:"Hyperf\Di\Annotation\Inject":3:{s:5:"value";s:27:"App\Service\TransferService";s:8:"required";b:1;s:4:"lazy";b:0;}}s:7:"HashMap";a:1:{s:27:"Hyperf\Di\Annotation\Inject";O:27:"Hyperf\Di\Annotation\Inject":3:{s:5:"value";s:17:"App\Utils\HashMap";s:8:"required";b:1;s:4:"lazy";b:0;}}s:6:"config";a:1:{s:27:"Hyperf\Di\Annotation\Inject";O:27:"Hyperf\Di\Annotation\Inject":3:{s:5:"value";s:31:"Hyperf\Contract\ConfigInterface";s:8:"required";b:1;s:4:"lazy";b:0;}}}}}";s:36:"Hyperf\Di\Annotation\AspectCollector";s:1856:"a:2:{i:0;a:6:{s:36:"Hyperf\Cache\Aspect\CacheEvictAspect";a:3:{s:8:"priority";i:0;s:7:"classes";a:0:{}s:11:"annotations";a:1:{i:0;s:34:"Hyperf\Cache\Annotation\CacheEvict";}}s:35:"Hyperf\Cache\Aspect\CacheableAspect";a:3:{s:8:"priority";i:0;s:7:"classes";a:0:{}s:11:"annotations";a:1:{i:0;s:33:"Hyperf\Cache\Annotation\Cacheable";}}s:34:"Hyperf\Cache\Aspect\CachePutAspect";a:3:{s:8:"priority";i:0;s:7:"classes";a:0:{}s:11:"annotations";a:1:{i:0;s:32:"Hyperf\Cache\Annotation\CachePut";}}s:35:"Hyperf\Cache\Aspect\FailCacheAspect";a:3:{s:8:"priority";i:0;s:7:"classes";a:0:{}s:11:"annotations";a:1:{i:0;s:33:"Hyperf\Cache\Annotation\FailCache";}}s:36:"Hyperf\Config\Annotation\ValueAspect";a:3:{s:8:"priority";i:0;s:7:"classes";a:0:{}s:11:"annotations";a:1:{i:0;s:30:"Hyperf\Config\Annotation\Value";}}s:33:"Hyperf\Di\Annotation\InjectAspect";a:3:{s:8:"priority";i:0;s:7:"classes";a:0:{}s:11:"annotations";a:1:{i:0;s:27:"Hyperf\Di\Annotation\Inject";}}}i:1;a:2:{s:7:"classes";a:6:{s:36:"Hyperf\Cache\Aspect\CacheEvictAspect";a:0:{}s:35:"Hyperf\Cache\Aspect\CacheableAspect";a:0:{}s:34:"Hyperf\Cache\Aspect\CachePutAspect";a:0:{}s:35:"Hyperf\Cache\Aspect\FailCacheAspect";a:0:{}s:36:"Hyperf\Config\Annotation\ValueAspect";a:0:{}s:33:"Hyperf\Di\Annotation\InjectAspect";a:0:{}}s:11:"annotations";a:6:{s:36:"Hyperf\Cache\Aspect\CacheEvictAspect";a:1:{i:0;s:34:"Hyperf\Cache\Annotation\CacheEvict";}s:35:"Hyperf\Cache\Aspect\CacheableAspect";a:1:{i:0;s:33:"Hyperf\Cache\Annotation\Cacheable";}s:34:"Hyperf\Cache\Aspect\CachePutAspect";a:1:{i:0;s:32:"Hyperf\Cache\Annotation\CachePut";}s:35:"Hyperf\Cache\Aspect\FailCacheAspect";a:1:{i:0;s:33:"Hyperf\Cache\Annotation\FailCache";}s:36:"Hyperf\Config\Annotation\ValueAspect";a:1:{i:0;s:30:"Hyperf\Config\Annotation\Value";}s:33:"Hyperf\Di\Annotation\InjectAspect";a:1:{i:0;s:27:"Hyperf\Di\Annotation\Inject";}}}}";}i:1;a:3:{s:14:"App\Utils\Http";s:98:"/Users/xunniao001/Documents/zhou/git/hy-websocket/runtime/container/proxy/App_Utils_Http.proxy.php";s:34:"App\Controller\WebsocketController";s:118:"/Users/xunniao001/Documents/zhou/git/hy-websocket/runtime/container/proxy/App_Controller_WebsocketController.proxy.php";s:27:"App\Service\TransferService";s:111:"/Users/xunniao001/Documents/zhou/git/hy-websocket/runtime/container/proxy/App_Service_TransferService.proxy.php";}}
\ No newline at end of file
diff --git a/runtime/hyperf.pid b/runtime/hyperf.pid
new file mode 100644
index 0000000..2fcd4a3
--- /dev/null
+++ b/runtime/hyperf.pid
@@ -0,0 +1 @@
+11071
\ No newline at end of file
--
Gitblit v1.8.0