From 1e79dec3dd27690670b514b4c1a3c48f1f59ef3a Mon Sep 17 00:00:00 2001 From: liapples Date: Mon, 13 Sep 2021 19:53:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=88=86=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MySQL_change.sql | 17 +- app/Admin/Controllers/AgentController.php | 53 +- .../MiniProgramDraftController.php | 4 +- .../Controllers/MiniProgramListController.php | 1 + .../MiniProgramTemplateController.php | 20 +- .../Extensions/Grid/MiniProgramDelTemp.php | 83 ++ app/Admin/Extensions/Grid/MiniProgramPull.php | 89 ++ app/Admin/Extensions/Grid/MiniProgramReg.php | 160 +++ .../Extensions/Grid/MiniProgramUpload.php | 136 ++ .../Extensions/Grid/PullTemplateList.php | 56 - .../Extensions/Grid/UploadMiniProgram.php | 89 -- app/Admin/Forms/Setting.php | 2 +- app/Admin/Repositories/MiniProgramDraft.php | 53 +- .../Repositories/MiniProgramTemplateList.php | 2 +- app/AdminAgent/Forms/AgentInfo.php | 6 + .../Controllers/AgentController.php | 10 +- .../Controllers/Api/MiniProgramController.php | 60 +- app/Http/Controllers/Api/TestController.php | 1 + app/Models/MiniProgramDraft.php | 17 + app/Models/MiniProgramTemplate.php | 17 + app/Models/MiniProgramTemplateList.php | 11 - composer.lock | 1217 ++++++++++++----- resources/lang/zh_CN/agent.php | 3 + 23 files changed, 1494 insertions(+), 613 deletions(-) create mode 100644 app/Admin/Extensions/Grid/MiniProgramDelTemp.php create mode 100644 app/Admin/Extensions/Grid/MiniProgramPull.php create mode 100644 app/Admin/Extensions/Grid/MiniProgramReg.php create mode 100644 app/Admin/Extensions/Grid/MiniProgramUpload.php delete mode 100644 app/Admin/Extensions/Grid/PullTemplateList.php delete mode 100644 app/Admin/Extensions/Grid/UploadMiniProgram.php create mode 100644 app/Models/MiniProgramDraft.php create mode 100644 app/Models/MiniProgramTemplate.php delete mode 100644 app/Models/MiniProgramTemplateList.php diff --git a/MySQL_change.sql b/MySQL_change.sql index c50c5fa..ecb2559 100644 --- a/MySQL_change.sql +++ b/MySQL_change.sql @@ -289,7 +289,7 @@ ALTER TABLE `agents` CHANGE COLUMN `mchid` `mchid` VARCHAR(32) NULL COMMENT '微信支付mch_id' COLLATE 'utf8_general_ci' AFTER `appsecret`, CHANGE COLUMN `mchkey` `mchkey` CHAR(32) NULL COMMENT '微信支付key' COLLATE 'utf8_general_ci' AFTER `mchid`; -CREATE TABLE `mini_program_template_lists` ( +CREATE TABLE `mini_program_templates` ( `template_id` INT(10) NOT NULL, `user_version` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '版本号' COLLATE 'utf8_general_ci', `user_desc` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '描述' COLLATE 'utf8_general_ci', @@ -309,6 +309,7 @@ CREATE TABLE `mini_program_upload_logs` ( `agent_id` INT(10) NOT NULL COMMENT '代理商ID', `appid` VARCHAR(50) NOT NULL COMMENT '代理商APPID' COLLATE 'utf8_general_ci', `template_id` INT(10) NOT NULL COMMENT '小程序template_id', + `qrcode` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '小程序上传后获取到的二维码' COLLATE 'utf8_general_ci', `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) USING BTREE, INDEX `agent_id` (`agent_id`) USING BTREE @@ -316,3 +317,17 @@ CREATE TABLE `mini_program_upload_logs` ( COMMENT='注册小程序日志' COLLATE='utf8_general_ci' ENGINE=InnoDB; + +# 9:29 2021/9/13 +ALTER TABLE `agents` + ADD COLUMN `credit_codes` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '统一社会信用代码' AFTER `company_name`, + ADD COLUMN `legal_persona_name` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '法人姓名' AFTER `contact_phone`, + ADD COLUMN `legal_persona_wechat` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '法人微信号' AFTER `legal_persona_name`; + +# 15:34 2021/9/13 +ALTER TABLE `auth_event` + ADD COLUMN `appid` VARCHAR(50) NULL DEFAULT NULL AFTER `id`; + +# 17:02 2021/9/13 +ALTER TABLE `user_money_logs` + CHANGE COLUMN `money` `money` DECIMAL(20,2) NOT NULL COMMENT '变动金额,正数=平台收入,负数=平台支出' AFTER `agent_id`; diff --git a/app/Admin/Controllers/AgentController.php b/app/Admin/Controllers/AgentController.php index 9b4c8cf..03103a9 100644 --- a/app/Admin/Controllers/AgentController.php +++ b/app/Admin/Controllers/AgentController.php @@ -3,7 +3,8 @@ namespace App\Admin\Controllers; use App\Admin\Extensions\Grid\AuditAgent; -use App\Admin\Extensions\Grid\UploadMiniProgram; +use App\Admin\Extensions\Grid\MiniProgramReg; +use App\Admin\Extensions\Grid\MiniProgramUpload; use App\Admin\Repositories\Agent; use App\Common\AgentType; use App\Common\UserStatus; @@ -46,6 +47,14 @@ class AgentController extends AdminController $grid->column('created_at'); $grid->column('status', '状态') + ->help('新用户入驻时,请先注册小程序。待企业法人认证通过之后,再上传小程序即可') + ->using(UserStatus::array()) + ->dot([ + UserStatus::NORMAL => 'success', + UserStatus::UNAUDITED => '', + UserStatus::REFUSE => 'danger', + UserStatus::DISABLED => 'warning', + ], 'primary') ->if(fn() => $this->status == UserStatus::UNAUDITED) ->display('') ->then(function ($column) { @@ -55,16 +64,13 @@ class AgentController extends AdminController ->if(fn() => $this->status == UserStatus::NORMAL) ->display('') ->then(function ($column) { - $column->append((new UploadMiniProgram())->setKey($this->id)); - }) - ->else() - ->using(UserStatus::array()) - ->dot([ - UserStatus::NORMAL => 'success', - UserStatus::UNAUDITED => '', - UserStatus::REFUSE => 'danger', - UserStatus::DISABLED => 'warning', - ], 'primary'); + if (empty($this->appid)) { //注册小程序 + $column->append((new MiniProgramReg(null, 1))->setKey($this->id))->append(' '); + $column->append((new MiniProgramReg(null, 2))->setKey($this->id)); + } else { + $column->append((new MiniProgramUpload(null, 1))->setKey($this->id)); + } + }); $grid->filter(function ($filter) { $filter->panel(); @@ -92,17 +98,20 @@ class AgentController extends AdminController $show->field('username'); $show->field('name'); $show->field('appid'); - $show->field('appsecret'); - $show->field('mchid'); - $show->field('mchkey'); +// $show->field('appsecret'); +// $show->field('mchid'); +// $show->field('mchkey'); $show->field('status')->using(UserStatus::array()); $show->field('type')->using(AgentType::array()); $show->field('company_name'); + $show->field('credit_codes'); $show->field('logo')->image('', 80, 80); $show->field('address'); $show->field('license_pic')->image('', 80, 80); $show->field('director'); $show->field('contact_phone'); + $show->field('legal_persona_name'); + $show->field('legal_persona_wechat'); $show->field('rate'); $show->field('agentInfo.about', '关于我们') ->unescape() @@ -145,10 +154,10 @@ class AgentController extends AdminController $form->text('password')->customFormat(fn() => ''); } $form->text('name')->required(); - $form->text('appid')->required(); - $form->text('appsecret')->required(); - $form->text('mchid')->required(); - $form->text('mchkey')->required(); + $form->text('appid')->help('无需填写,注册小程序后会自动生成'); +// $form->text('appsecret')->help('无需填写,注册小程序后会自动生成'); +// $form->text('mchid')->required(); +// $form->text('mchkey')->required(); $form->select('status') ->default(UserStatus::NORMAL) ->options(UserStatus::array()) @@ -157,13 +166,16 @@ class AgentController extends AdminController ->options(AgentType::array()) ->default(AgentType::OPERATOR) ->required(); - $form->text('company_name'); + $form->text('company_name')->required()->help('请正确填写,保持跟营业执照上的完全一致,如:海南易游天下供应链有限公司'); + $form->text('credit_codes')->required()->help('请正确填写,保持跟营业执照上的完全一致,如:91440300577652919M'); $form->distpicker(['province_id', 'city_id', 'area_id'], '请选择区域')->required(); $form->image('logo')->removable(false)->uniqueName(); $form->text('address'); $form->image('license_pic')->removable(false)->uniqueName(); $form->text('director'); $form->text('contact_phone'); + $form->text('legal_persona_name')->required()->maxLength(20)->help('很重要,注册小程序时需要用到,用于实名认证'); + $form->text('legal_persona_wechat')->required()->maxLength(100)->help('很重要,用于接收实名认证信息,不能是手机号或QQ号,微信号请前往微信“我的”页面查看'); $form->number('rate')->min(0)->max(100)->help('分成百分比,如10%,则输入10'); $form->editor('agentInfo.about', '关于我们');// 隐藏菜单用:->options(['menubar' => false]); $form->editor('agentInfo.reg_protocol', '注册协议'); @@ -187,8 +199,9 @@ class AgentController extends AdminController } //过滤null字段 + $allow_null = ['avatar', 'remember_token', 'appid', 'appsecret', 'mchid', 'mchkey']; foreach($form->input() as $k => $v) { - if (is_null($v)) { + if (is_null($v) && !in_array($k, $allow_null)) { $form->$k = ''; } else if (is_array($v)) { foreach ($v as $k2 => &$v2) { diff --git a/app/Admin/Controllers/MiniProgramDraftController.php b/app/Admin/Controllers/MiniProgramDraftController.php index e0c920e..7c8f2c9 100644 --- a/app/Admin/Controllers/MiniProgramDraftController.php +++ b/app/Admin/Controllers/MiniProgramDraftController.php @@ -6,7 +6,7 @@ use Dcat\Admin\Grid; use Dcat\Admin\Http\Controllers\AdminController; /** - * 小程序草稿箱 + * 小程序草稿箱(此类已弃用,更新模板列表时自动获取草稿,并自动创建模板) * Class MiniProgramController * @package App\Admin\Controllers */ @@ -28,8 +28,6 @@ class MiniProgramDraftController extends AdminController $grid->column('source_miniprogram_appid'); $grid->column('developer'); $grid->column('create_time')->display(fn($v) => date('Y-m-d H:i:s', $v)); - - $grid->column('op'); }); } } diff --git a/app/Admin/Controllers/MiniProgramListController.php b/app/Admin/Controllers/MiniProgramListController.php index 0a42a2b..bc1499a 100644 --- a/app/Admin/Controllers/MiniProgramListController.php +++ b/app/Admin/Controllers/MiniProgramListController.php @@ -19,6 +19,7 @@ class MiniProgramListController extends AdminController return Grid::make(new MiniProgramList, function (Grid $grid) { $grid->disableCreateButton(); $grid->disableRowSelector(); + $grid->disableActions(); $grid->column('authorizer_appid'); }); diff --git a/app/Admin/Controllers/MiniProgramTemplateController.php b/app/Admin/Controllers/MiniProgramTemplateController.php index dc0dbd9..79a622e 100644 --- a/app/Admin/Controllers/MiniProgramTemplateController.php +++ b/app/Admin/Controllers/MiniProgramTemplateController.php @@ -1,7 +1,9 @@ disableCreateButton(); $grid->disableRowSelector(); - $grid->disableViewButton(); - $grid->disableEditButton(); + $grid->disableActions(); - $grid->disableDeleteButton(); + $grid->model()->orderBy('template_id', 'desc'); - $grid->tools(new PullTemplateList); + $grid->tools(new MiniProgramPull); $grid->column('template_id'); - $grid->column('template_type')->using([0 => '普通模板', 1 => '标准模板']); +// $grid->column('template_type')->using([0 => '普通模板', 1 => '标准模板']); $grid->column('user_version'); $grid->column('user_desc'); $grid->column('source_miniprogram'); $grid->column('source_miniprogram_appid'); $grid->column('developer'); $grid->column('create_time')->display(fn($v) => date('Y-m-d H:i:s', $v)); + + $grid->column('op') + ->if(fn() => true) + ->then(function ($column) { +// $column->append((new MiniProgramUpload(null, 2))->setKey($this->id))->append(' '); + $column->append(new MiniProgramDelTemp)->append(' '); + }); }); } } diff --git a/app/Admin/Extensions/Grid/MiniProgramDelTemp.php b/app/Admin/Extensions/Grid/MiniProgramDelTemp.php new file mode 100644 index 0000000..01b3f87 --- /dev/null +++ b/app/Admin/Extensions/Grid/MiniProgramDelTemp.php @@ -0,0 +1,83 @@ +appendHtmlAttribute('class', 'btn btn-sm btn-danger'); + $this->defaultHtmlAttribute('href', 'javascript:;'); + + return "formatHtmlAttributes()}>{$this->title}"; + } + + /** + * Handle the action request. + * + * @param Request $request + * + * @return Response + */ + public function handle(Request $request) + { + $id = $this->getKey(); //待删除的ID + + //最大ID不允许删除,因为草稿箱已经记录创建模板,即使是更新列表也不再创建模板,删除之后就没有可用模板了 + if ($id == MiniProgramTemplate::query()->max('template_id')) { + return $this->response()->error('第一个模板用于注册及创建小程序,不允许删除'); + } + + DB::beginTransaction(); + try { + //删除腾讯服务器上的 + $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); + $config = [ + 'app_id' => $setting['service_appid'], + 'secret' => $setting['service_appsecret'], + 'token' => $setting['service_token'], + 'aes_key' => $setting['service_aeskey'], + ]; + + $openPlatform = Factory::openPlatform($config); + if (empty($openPlatform['code_template'])) { + throw new \Exception('获取code_template失败'); + } + $codeTemplate = $openPlatform['code_template']; + $res = $codeTemplate->delete($id); + + if (!isset($res['errcode'], $res['errmsg']) || $res['errcode'] != 0 || $res['errmsg'] != 'ok') { + throw new \Exception(isset($res['errmsg']) ? join(',', $res) : '删除失败,原因未知'); + } + + //删除数据库记录 + MiniProgramTemplate::where('template_id', $id)->delete(); + + DB::commit(); + return $this->response()->success('删除成功')->refresh(); + } catch (\Exception $e) { + DB::rollBack(); + return $this->response()->error($e->getMessage()); + } + } + + /** + * @return string|array|void + */ + public function confirm() + { + return ['确定要删除此模板吗?', '']; + } +} diff --git a/app/Admin/Extensions/Grid/MiniProgramPull.php b/app/Admin/Extensions/Grid/MiniProgramPull.php new file mode 100644 index 0000000..f26ada9 --- /dev/null +++ b/app/Admin/Extensions/Grid/MiniProgramPull.php @@ -0,0 +1,89 @@ +appendHtmlAttribute('class', 'btn btn-primary'); + $this->defaultHtmlAttribute('href', 'javascript:;'); + + return "formatHtmlAttributes()}>{$this->title}"; + } + + /** + * 更新逻辑: + * 1、先获取草稿箱,并保存到数据库; + * 2、如果草稿未创建过模板,通过草稿创建模板; + * 3、将模板列表保存至数据库; + */ + public function handle(Request $request) + { + try { + $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); + $config = [ + 'app_id' => $setting['service_appid'], + 'secret' => $setting['service_appsecret'], + 'token' => $setting['service_token'], + 'aes_key' => $setting['service_aeskey'], + ]; + + $openPlatform = Factory::openPlatform($config); + + if (empty($openPlatform['code_template'])) { + return $this->response()->error('获取code_template失败'); + } + $codeTemplate = $openPlatform['code_template']; + + //草稿列表 + $list = $codeTemplate->getDrafts(); + if (empty($list['draft_list'])) { + return $this->response()->error('获取草稿箱失败或草稿箱为空'); + } + MiniProgramDraft::insertOrIgnore($list['draft_list']); + MiniProgramDraft::whereNotIn('draft_id', array_column($list['draft_list'], 'draft_id'))->delete(); //删除不存在的数据 + + //从草稿创建模板 + $ids = MiniProgramDraft::query()->where('is_create_template', 0)->pluck('draft_id'); + foreach ($ids as $draft_id) { + $res = $codeTemplate->createFromDraft($draft_id, 1); //第二个参数,0:普通模板;1:标准模板 + if (!isset($res['errcode'], $res['errmsg']) || $res['errcode'] != 0 || $res['errmsg'] != 'ok') { + return $this->response()->error("草稿ID $draft_id 创建模板失败"); + } else { + MiniProgramDraft::where('draft_id', $draft_id)->update(['is_create_template' => 1]); + } + } + + //模板列表 + $list = $codeTemplate->list(); + if (empty($list['template_list'])) { + return $this->response()->error('获取模板失败或模板为空'); + } + MiniProgramTemplate::insertOrIgnore($list['template_list']); + MiniProgramTemplate::whereNotIn('template_id', array_column($list['template_list'], 'template_id'))->delete(); //删除不存在的数据 + + return $this->response()->success("更新列表成功")->refresh(); + } catch (\Exception $e) { + return $this->response()->error($e->getMessage()); + } + } + + public function confirm() + { + return ['此操作将数据与腾讯服务器数据同步,是否继续?', '']; + } +} diff --git a/app/Admin/Extensions/Grid/MiniProgramReg.php b/app/Admin/Extensions/Grid/MiniProgramReg.php new file mode 100644 index 0000000..8eba14a --- /dev/null +++ b/app/Admin/Extensions/Grid/MiniProgramReg.php @@ -0,0 +1,160 @@ +action = $action; //$action:1=注册小程序;2=上传小程序 + $this->title = $action == 1 ? '注册小程序' : '查询状态'; + } + + protected function html() + { + $class = $this->action == 1 ? 'btn btn-sm btn-success' : 'btn btn-sm'; + $this->appendHtmlAttribute('class', $class); + $this->defaultHtmlAttribute('href', 'javascript:;'); + + return "formatHtmlAttributes()}>{$this->title}"; + } + + public function handle(Request $request) + { + return $request->action == 1 ? $this->register() : $this->search(); + } + + private function register() + { + $agent = Agent::find($this->getKey()); + + $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey', 'service_component_phone']); + $config = [ + 'app_id' => $setting['service_appid'], + 'secret' => $setting['service_appsecret'], + 'token' => $setting['service_token'], + 'aes_key' => $setting['service_aeskey'], + ]; + + $openPlatform = Factory::openPlatform($config); + if (empty($openPlatform['component'])) { + return $this->response()->error('获取component失败,请检查配置信息是否正确'); + } + $component = $openPlatform['component']; + + $res = $component->registerMiniProgram([ + 'name' => $agent->company_name, // 企业名 + 'code' => $agent->credit_codes, // 企业代码 + 'code_type' => 1, // 企业代码类型(1:统一社会信用代码, 2:组织机构代码,3:营业执照注册号) + 'legal_persona_wechat' => $agent->legal_persona_wechat, // 法人微信 + 'legal_persona_name' => $agent->legal_persona_name, // 法人姓名 + 'component_phone' => $setting['service_component_phone'], //第三方联系电话 + ]); + + $errorArr = $this->regErrorCode(); + + if (!isset($res['errcode'], $res['errmsg'])) { + return $this->response()->error('注册错误,原因未知'); + } else if ($res['errcode'] != 0 && isset($errorArr[$res['errcode']])) { + return $this->response()->error($errorArr[$res['errcode']]); + } else if ($res['errcode'] != 0 || $res['errmsg'] != 'ok') { + return $this->response()->error(join(',', $res)); + } + + return $this->response()->success('注册小程序成功')->refresh(); + } + + private function search() + { + $agent = Agent::find($this->getKey()); + if (!empty($agent->appid)) { + return $this->response()->error("该代理商已经注册过小程序并分配了APPID:" . $agent->appid); + } + + try { + $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); + $config = [ + 'app_id' => $setting['service_appid'], + 'secret' => $setting['service_appsecret'], + 'token' => $setting['service_token'], + 'aes_key' => $setting['service_aeskey'], + ]; + + $openPlatform = Factory::openPlatform($config); + if (empty($openPlatform['component'])) { + return $this->response()->error('获取component失败,请检查配置信息是否正确'); + } + /** @var Client $component */ + $component = $openPlatform['component']; + $res = $component->getRegistrationStatus($agent->company_name, $agent->legal_persona_wechat, $agent->legal_persona_name); + + $errorArr = $this->searchErrorCode(); + + if (isset($res['errcode'], $res['errmsg']) && $res['errcode'] == 0 && $res['errmsg'] == 'ok') { + return $this->response()->success("成功")->refresh(); + } else if (isset($res['errcode'], $errorArr[$res['errcode']])) { + throw new \Exception($errorArr[$res['errcode']]); + } else { + throw new \Exception(join(',', $res)); + } + } catch (\Exception $e) { + return $this->response()->error($e->getMessage()); + } + } + + public function confirm() + { + return ["确定要{$this->title}吗?", '']; + } + + public function parameters() + { + return ['action' => $this->action]; + } + + private function regErrorCode(): array + { + return [ + -1 => '非法 action 参数', + 89249 => '该主体已有任务执行中,距上次任务 24小时 后再试', + 89247 => '腾讯服务器内部错误', + 86004 => '无效微信号', + 61070 => '法人姓名与微信号不一致', + 89248 => '企业代码类型无效,请选择正确类型填写', + 89250 => '未找到该任务', + 89251 => '待法人人脸核身校验', + 89252 => '法人&企业信息一致性校验中', + 89253 => '缺少参数', + 89254 => '第三方权限集不全,请补充权限集后重试', + 89255 => 'code参数无效,请检查code长度以及内容是否正确 ;注意code_type的值不同需要传的code长度不一样', + ]; + } + + private function searchErrorCode(): array + { + return [ + -1 => '非法请求', + 89247 => '内部错误', + 89250 => '未找到该企业的注册任务', + 89251 => '模板消息已下发,待法人人脸核身校验', + 89252 => '法人&企业信息一致性校验中', + 89253 => '缺少参数', + ]; + } +} diff --git a/app/Admin/Extensions/Grid/MiniProgramUpload.php b/app/Admin/Extensions/Grid/MiniProgramUpload.php new file mode 100644 index 0000000..80bd3ff --- /dev/null +++ b/app/Admin/Extensions/Grid/MiniProgramUpload.php @@ -0,0 +1,136 @@ +action = $action; //$action:1=为指定代理商上传小程序;2=批量上传小程序(一键分发小程序给所有代理商) + $this->title = $action == 1 ? '上传小程序' : '为所有代理商上传'; + } + + protected function html() + { + $class = 'btn btn-sm btn-primary'; + $this->appendHtmlAttribute('class', $class); + $this->defaultHtmlAttribute('href', 'javascript:;'); + + return "formatHtmlAttributes()}>{$this->title}"; + } + + public function handle(Request $request) + { + return $this->action == 1 ? $this->uploadOne() : $this->uploadAll(); + } + + //注:uploadOne在代理商列表页使用 + private function uploadOne() + { + $template = MiniProgramTemplate::orderBy('template_id', 'desc')->first(); + /*if (MiniProgramUploadLog::query()->where(['agent_id' => $this->getKey(), 'template_id' => $template->template_id])->exists()) { + return $this->response()->error("该代理商已经上传过模板ID为 {$template->template_id} 的小程序,无需重复上传"); + }*/ + + $agent = Agent::find($this->getKey()); + if (empty($agent->appid)) { + return $this->response()->error('该代理商未注册过小程序,请先注册'); + } + + try { + $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); + $config = [ + 'app_id' => $setting['service_appid'], + 'secret' => $setting['service_appsecret'], + 'token' => $setting['service_token'], + 'aes_key' => $setting['service_aeskey'], + ]; + + $openPlatform = Factory::openPlatform($config); + $refreshToken = $openPlatform->getAuthorizer($agent->appid)['authorization_info']['authorizer_refresh_token'] ?? null; + if (!$refreshToken) { + return $this->response()->error('获取refresh_token失败'); + } + /** @var Client $code */ + $code = $openPlatform->miniProgram($agent->appid, $refreshToken)['code'] ?? null; + if (!$code) { + return $this->response()->error('获取code失败'); + } + + $templateId = $template->template_id; + $extJson = json_encode(['extAppid' => $agent->appid]); + $version = $template->user_version; + $description = $agent->company_name; + + //提交上传 + $commit = $code->commit($templateId, $extJson, $version, $description); + + //获取体验二维码并保存 + $qrcode = $code->getQrCode(storage_path("app/public/{$agent->id}-{$agent->appid}.jpg")); + Storage::put("public/mini_program_qrcode/{$agent->id}-{$agent->appid}.jpg", $qrcode); + + if (!isset($commit['errcode'], $commit['errmsg']) || $commit['errcode'] != 0 || $commit['errmsg'] != 'ok') { + throw new \Exception(isset($commit['errmsg']) ? $commit['errmsg'] : join(',', $commit)); + } + + //提交审核,文档:https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/code/submit_audit.html + $res = $code->submitAudit([]); + + if (isset($res['errcode'], $res['errmsg']) && $res['errcode'] == 0 && $res['errmsg'] == 'ok') { + //保存上传记录 + MiniProgramUploadLog::insert([ + 'agent_id' => $agent->id, + 'appid' => $agent->appid, + 'template_id' => $templateId, + 'qrcode' => "mini_program_qrcode/{$agent->id}-{$agent->appid}.jpg", + 'audit_id' => $res['auditid'], + 'created_at' => now(), + ]); + return $this->response()->success("上传成功,并已提交审核")->refresh(); + } else { + throw new \Exception($res['errmsg'] ?? join(',', $res)); + } + } catch (\Exception $e) { + return $this->response()->error($e->getMessage()); + } + } + + //注:uploadAll在小程序模板列表页使用 + private function uploadAll() + { + + } + + public function confirm() + { + if ($this->action == 1) { + return ["确定要为此代理商上传小程序吗?", '']; + } else { + return ['上传确认', '确定要将此小程序模板上传给所有已审核的代理商吗?']; + } + } + + public function parameters() + { + return ['action' => $this->action]; + } + + +} diff --git a/app/Admin/Extensions/Grid/PullTemplateList.php b/app/Admin/Extensions/Grid/PullTemplateList.php deleted file mode 100644 index 2364c4d..0000000 --- a/app/Admin/Extensions/Grid/PullTemplateList.php +++ /dev/null @@ -1,56 +0,0 @@ -appendHtmlAttribute('class', 'btn btn-primary'); - $this->defaultHtmlAttribute('href', 'javascript:;'); - - return "formatHtmlAttributes()}>{$this->title}"; - } - - public function handle(Request $request) - { - try { - $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); - $config = [ - 'app_id' => $setting['service_appid'], - 'secret' => $setting['service_appsecret'], - 'token' => $setting['service_token'], - 'aes_key' => $setting['service_aeskey'], - ]; - - $openPlatform = Factory::openPlatform($config); - $codeTemplate = $openPlatform['code_template']; - $list = $codeTemplate->list(); - - MiniProgramTemplateList::insertOrIgnore($list['template_list']); - //删除不存在的数据 - MiniProgramTemplateList::whereNotIn('template_id', array_column($list['template_list'], 'template_id'))->delete(); - - return $this->response()->success("操作成功")->refresh(); - } catch (\Exception $e) { - return $this->response()->error($e->getMessage()); - } - } - - public function confirm() - { - return ['此操作将数据与腾讯服务器数据同步,是否继续?', '']; - } -} diff --git a/app/Admin/Extensions/Grid/UploadMiniProgram.php b/app/Admin/Extensions/Grid/UploadMiniProgram.php deleted file mode 100644 index 95116f0..0000000 --- a/app/Admin/Extensions/Grid/UploadMiniProgram.php +++ /dev/null @@ -1,89 +0,0 @@ -appendHtmlAttribute('class', 'btn btn-sm btn-primary'); - $this->defaultHtmlAttribute('href', 'javascript:;'); - - return "formatHtmlAttributes()}>{$this->title}"; - } - - public function handle(Request $request) - { - $template = MiniProgramTemplateList::orderBy('template_id', 'desc')->first(); - if (MiniProgramUploadLog::query()->where(['agent_id' => $this->getKey(), 'template_id' => $template->template_id])->exists()) { - return $this->response()->error('该代理商已经上传过小程序,无需重复上传'); - } - - $agent = Agent::find($this->getKey()); - if (empty($agent->appid)) { - return $this->response()->error('该代理商未注册过小程序,请先注册'); - } - - try { - $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); - $config = [ - 'app_id' => $setting['service_appid'], - 'secret' => $setting['service_appsecret'], - 'token' => $setting['service_token'], - 'aes_key' => $setting['service_aeskey'], - ]; - - $openPlatform = \EasyWeChat\Factory::openPlatform($config); - $refreshToken = $openPlatform->getAuthorizer($agent->appid)['authorization_info']['authorizer_refresh_token'] ?? null; - if (!$refreshToken) { - return $this->response()->error('获取refresh_token失败'); - } - $code = $openPlatform->miniProgram($agent->appid, $refreshToken)['code']; - - $templateId = $template->template_id; - $extJson = json_encode(['extAppid' => $agent->appid]); - $version = $template->user_version; - $description = $agent->company_name; - - $commit = $code->commit($templateId, $extJson, $version, $description); -// $qrcode = $code->getQrCode(); - - if (isset($commit['errcode'], $commit['errmsg']) && $commit['errcode'] == 0 && $commit['errmsg'] == 'ok') { - MiniProgramUploadLog::insert([ - 'agent_id' => $agent->id, - 'appid' => $agent->appid, - 'template_id' => $templateId, - ]); - return $this->response()->success("上传成功")->refresh(); - } else { - throw new \Exception(join(',', $commit)); - } - } catch (\Exception $e) { - return $this->response()->error($e->getMessage()); - } - } - - public function confirm() - { - return ['确定要上传小程序吗?', '']; - } -} diff --git a/app/Admin/Forms/Setting.php b/app/Admin/Forms/Setting.php index 0207b21..4d349f4 100644 --- a/app/Admin/Forms/Setting.php +++ b/app/Admin/Forms/Setting.php @@ -36,9 +36,9 @@ class Setting extends Form })->tab('小程序服务商配置', function () { $this->text('service_appid', '小程序第三方平台APPID'); $this->text('service_appsecret', '小程序第三方平台APP_SECRET'); - $this->text('service_binding_appid', '绑定小程序APPID'); $this->text('service_token', '消息校验Token')->help('跟小程序管理后台的一致,请勿随意更改'); $this->text('service_aeskey', '消息加解密Key')->help('跟小程序管理后台的一致,请勿随意更改'); + $this->text('service_component_phone', '联系电话')->help('主要用于当注册小程序失败时,腾讯可能会通过此电话反馈问题'); }); } diff --git a/app/Admin/Repositories/MiniProgramDraft.php b/app/Admin/Repositories/MiniProgramDraft.php index 7c5b6c0..19a09bd 100644 --- a/app/Admin/Repositories/MiniProgramDraft.php +++ b/app/Admin/Repositories/MiniProgramDraft.php @@ -1,60 +1,21 @@ $setting['service_appid'], - 'secret' => $setting['service_appsecret'], - 'token' => $setting['service_token'], - 'aes_key' => $setting['service_aeskey'], - ]; - - $cache_key = 'mini_program:draft_list'; - if ($data['subjects'] = Cache::get($cache_key)) { - $data['total'] = count($data['subjects']); - } else { - $openPlatform = Factory::openPlatform($config); - $codeTemplate = $openPlatform['code_template']; - - if (empty($codeTemplate) || (!$list = $codeTemplate->getDrafts())) { - $data['total'] = 0; - $data['subjects'] = []; - } else { - $data['total'] = count($list['draft_list']); - $data['subjects'] = $list['draft_list'] ?? []; - Cache::put($cache_key, $list['draft_list'], 180); - } - } - - return $model->makePaginator( - $data['total'] ?? 0, // 传入总记录数 - $data['subjects'] ?? [] // 传入数据二维数组 - ); + parent::__construct(); + $this->setKeyName('draft_id'); } } diff --git a/app/Admin/Repositories/MiniProgramTemplateList.php b/app/Admin/Repositories/MiniProgramTemplateList.php index 83141ab..cd86ee4 100644 --- a/app/Admin/Repositories/MiniProgramTemplateList.php +++ b/app/Admin/Repositories/MiniProgramTemplateList.php @@ -1,7 +1,7 @@ name = $input['name']; $model->company_name = $input['company_name']; + $model->credit_codes = $input['credit_codes']; $model->address = $input['address']; $model->director = $input['director']; $model->contact_phone = $input['contact_phone']; $model->logo = $input['logo']; $model->avatar = $input['avatar']; $model->license_pic = $input['license_pic']; + $model->legal_persona_name = $input['legal_persona_name']; + $model->legal_persona_wechat = $input['legal_persona_wechat']; $model->status = UserStatus::UNAUDITED; $model->agentInfo->about = $input['agentInfo']['about']; @@ -49,12 +52,15 @@ class AgentInfo extends Form $this->text('name')->required(); $this->text('company_name')->required(); + $this->text('credit_codes')->required(); $this->text('address')->required(); $this->text('director')->required(); $this->text('contact_phone')->required(); $this->image('logo')->required(); $this->image('avatar'); $this->image('license_pic')->required(); + $this->text('legal_persona_name')->required(); + $this->text('legal_persona_wechat')->required(); $this->editor('agentInfo.about')->required(); $this->editor('agentInfo.reg_protocol')->required(); diff --git a/app/AdminSettled/Controllers/AgentController.php b/app/AdminSettled/Controllers/AgentController.php index a88210e..06a2bbf 100644 --- a/app/AdminSettled/Controllers/AgentController.php +++ b/app/AdminSettled/Controllers/AgentController.php @@ -69,13 +69,16 @@ class AgentController extends AdminController ->options(AgentType::array()) ->default(AgentType::OPERATOR) ->required(); - $form->text('company_name')->required(); + $form->text('company_name')->required()->help('请正确填写,保持跟营业执照上的完全一致,如:海南易游天下供应链有限公司'); + $form->text('credit_codes')->required()->help('请正确填写,保持跟营业执照上的完全一致,如:91440300577652919M'); $form->distpicker(['province_id', 'city_id', 'area_id'], '请选择区域')->required(); $form->image('logo')->required()->removable(false)->uniqueName(); $form->text('address')->required(); $form->image('license_pic')->required()->removable(false)->uniqueName(); $form->text('director')->required(); $form->text('contact_phone')->required()->maxLength(13); + $form->text('legal_persona_name')->required()->maxLength(20)->help('很重要,注册小程序时需要用到,用于实名认证'); + $form->text('legal_persona_wechat')->required()->maxLength(100)->help('很重要,用于接收实名认证信息,不能是手机号或QQ号,微信号请前往微信“我的”页面查看'); })->saving(function (Form $form) { if ($form->isEditing()) { return $form->response()->error('服务器出错了~~'); @@ -86,6 +89,11 @@ class AgentController extends AdminController return $form->response()->error($form->username . ' 的账号已经存在'); } + //判断公司名称是否唯一 + if ($form->repository()->model()->where(['company_name' => $form->company_name, 'credit_codes' => $form->credit_codes])->exists()) { + return $form->response()->error("公司名称 {$form->company_name} 已经存在"); + } + //如果是供应商版旅行社,也不能存在相同的供应商账号,因为后台审核之后需要再次插入相同的供应商账号 if ($form->type == AgentType::SUPPLIER && Supplier::where('username', $form->username)->exists()) { return $form->response()->error($form->username . ' 的账号已经存在'); diff --git a/app/Http/Controllers/Api/MiniProgramController.php b/app/Http/Controllers/Api/MiniProgramController.php index 956678d..efc45dd 100644 --- a/app/Http/Controllers/Api/MiniProgramController.php +++ b/app/Http/Controllers/Api/MiniProgramController.php @@ -3,8 +3,8 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Models\AdminSetting; +use App\Models\Agent; use EasyWeChat\Factory; -use EasyWeChat\OpenPlatform\Server\Guard; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -18,6 +18,8 @@ class MiniProgramController extends Controller // 第三方平台授权事件通知 public function authEvent(Request $request) { + DB::table('mini_program_events')->insert(['response' => json_encode($request->all()), 'created_at' => now()]); + $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); $config = [ // 第三方平台信息 'app_id' => $setting['service_appid'], @@ -29,30 +31,50 @@ class MiniProgramController extends Controller $openPlatform = Factory::openPlatform($config); $server = $openPlatform->server; - // 处理授权成功事件 + // 处理授权成功事件:Guard::EVENT_AUTHORIZED + // 处理授权更新事件:Guard::EVENT_UPDATE_AUTHORIZED + // 处理授权取消事件:Guard::EVENT_UNAUTHORIZED $server->push(function ($message) { - DB::table('auth_event')->insert([ - ['response' => json_encode($message)] + DB::table('mini_program_events')->insert([ + 'response' => json_encode($message), + 'event' => $message['InfoType'] ?? '', + 'created_at' => now() ]); - }, Guard::EVENT_AUTHORIZED); - // 处理授权更新事件 - $server->push(function ($message) { - DB::table('auth_event')->insert([ - ['response' => json_encode($message)] - ]); - }, Guard::EVENT_UPDATE_AUTHORIZED); + if (isset($message['InfoType'], $message['status'], $message['msg'], $message['info']) && $message['status'] == 0 && $message['msg'] == 'OK') { + //注册成功授权通知 + if ($message['InfoType'] == 'notify_third_fasteregister') { + Agent::where(['company_name' => $message['info']['name'], 'credit_codes' => $message['info']['code']]) + ->update(['appid' => $message['appid']]); + } + } + }); + + return $server->serve(); + } + + public function msgEvent(Request $request) + { + $appid = $request->route('appid'); + DB::table('mini_program_events')->insert(['appid' => $appid, 'response' => json_encode($request->all()), 'created_at' => now()]); - // 处理授权取消事件 + $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); + $config = [ + 'app_id' => $setting['service_appid'], + 'secret' => $setting['service_appsecret'], + 'token' => $setting['service_token'], + 'aes_key' => $setting['service_aeskey'], + ]; + + $openPlatform = Factory::openPlatform($config); + $server = $openPlatform->server; + + //接收事件 $server->push(function ($message) { - DB::table('auth_event')->insert([ - ['response' => json_encode($message)] - ]); - }, Guard::EVENT_UNAUTHORIZED); + if (isset($message['Event'])) { - DB::table('auth_event')->insert([ - ['response' => json_encode($request->all())] - ]); + } + }); return $server->serve(); } diff --git a/app/Http/Controllers/Api/TestController.php b/app/Http/Controllers/Api/TestController.php index c88659e..9287a04 100644 --- a/app/Http/Controllers/Api/TestController.php +++ b/app/Http/Controllers/Api/TestController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Api; +use App\Models\Agent; use App\Models\Order; use App\Models\OrderProductItem; use App\Models\Product; diff --git a/app/Models/MiniProgramDraft.php b/app/Models/MiniProgramDraft.php new file mode 100644 index 0000000..9333ece --- /dev/null +++ b/app/Models/MiniProgramDraft.php @@ -0,0 +1,17 @@ +timestamps = false; + } +} diff --git a/app/Models/MiniProgramTemplate.php b/app/Models/MiniProgramTemplate.php new file mode 100644 index 0000000..6a809c7 --- /dev/null +++ b/app/Models/MiniProgramTemplate.php @@ -0,0 +1,17 @@ +timestamps = false; + } +} diff --git a/app/Models/MiniProgramTemplateList.php b/app/Models/MiniProgramTemplateList.php deleted file mode 100644 index e3aaaf0..0000000 --- a/app/Models/MiniProgramTemplateList.php +++ /dev/null @@ -1,11 +0,0 @@ -=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "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": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + "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" @@ -1462,16 +1545,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "2.0-dev" } }, "autoload": { "psr-4": { "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1486,6 +1566,11 @@ { "name": "Tobias Schultze", "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", @@ -1501,9 +1586,9 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.2" + "source": "https://github.com/guzzle/psr7/tree/2.0.0" }, - "time": "2021-04-26T09:17:50+00:00" + "time": "2021-06-30T20:03:07+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -1564,16 +1649,16 @@ }, { "name": "laravel/framework", - "version": "v8.50.0", + "version": "v8.60.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "d892dbacbe3859cf9303ccda98ac8d782141d5ae" + "reference": "44f16a31a1d4ac8a51605550d7796e2273984a48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/d892dbacbe3859cf9303ccda98ac8d782141d5ae", - "reference": "d892dbacbe3859cf9303ccda98ac8d782141d5ae", + "url": "https://api.github.com/repos/laravel/framework/zipball/44f16a31a1d4ac8a51605550d7796e2273984a48", + "reference": "44f16a31a1d4ac8a51605550d7796e2273984a48", "shasum": "", "mirrors": [ { @@ -1652,7 +1737,7 @@ "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "^3.155", + "aws/aws-sdk-php": "^3.189.0", "doctrine/dbal": "^2.6|^3.0", "filp/whoops": "^2.8", "guzzlehttp/guzzle": "^6.5.5|^7.0.1", @@ -1665,7 +1750,7 @@ "symfony/cache": "^5.1.4" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.155).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.189.0).", "brianium/paratest": "Required to run tests in parallel (^6.0).", "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6|^3.0).", "ext-ftp": "Required to use the Flysystem FTP driver.", @@ -1734,7 +1819,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-07-13T12:41:53+00:00" + "time": "2021-09-08T13:37:21+00:00" }, { "name": "laravel/tinker", @@ -1812,16 +1897,16 @@ }, { "name": "league/commonmark", - "version": "1.6.6", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "c4228d11e30d7493c6836d20872f9582d8ba6dcf" + "reference": "2df87709f44b0dd733df86aef0830dce9b1f0f13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c4228d11e30d7493c6836d20872f9582d8ba6dcf", - "reference": "c4228d11e30d7493c6836d20872f9582d8ba6dcf", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/2df87709f44b0dd733df86aef0830dce9b1f0f13", + "reference": "2df87709f44b0dd733df86aef0830dce9b1f0f13", "shasum": "", "mirrors": [ { @@ -1832,28 +1917,37 @@ }, "require": { "ext-mbstring": "*", - "php": "^7.1 || ^8.0" - }, - "conflict": { - "scrutinizer/ocular": "1.7.*" + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/polyfill-php80": "^1.15" }, "require-dev": { - "cebe/markdown": "~1.0", - "commonmark/commonmark.js": "0.29.2", - "erusev/parsedown": "~1.0", + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "erusev/parsedown": "^1.0", "ext-json": "*", "github/gfm": "0.29.0", - "michelf/php-markdown": "~1.4", - "mikehaertl/php-shellcommand": "^1.4", - "phpstan/phpstan": "^0.12.90", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.2", - "scrutinizer/ocular": "^1.5", - "symfony/finder": "^4.2" + "michelf/php-markdown": "^1.4", + "phpstan/phpstan": "^0.12.88", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" }, - "bin": [ - "bin/commonmark" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.1-dev" + } + }, "autoload": { "psr-4": { "League\\CommonMark\\": "src" @@ -1871,7 +1965,7 @@ "role": "Lead Developer" } ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)", + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", "homepage": "https://commonmark.thephpleague.com", "keywords": [ "commonmark", @@ -1885,6 +1979,7 @@ ], "support": { "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", "issues": "https://github.com/thephpleague/commonmark/issues", "rss": "https://github.com/thephpleague/commonmark/releases.atom", "source": "https://github.com/thephpleague/commonmark" @@ -1915,20 +2010,108 @@ "type": "tidelift" } ], - "time": "2021-07-17T17:13:23+00:00" + "time": "2021-08-14T14:06:04+00:00" + }, + { + "name": "league/config", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.90", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2021-08-14T12:15:32+00:00" }, { "name": "league/flysystem", - "version": "1.1.4", + "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32" + "reference": "18634df356bfd4119fe3d6156bdb990c414c14ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f3ad69181b8afed2c9edf7be5a2918144ff4ea32", - "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/18634df356bfd4119fe3d6156bdb990c414c14ea", + "reference": "18634df356bfd4119fe3d6156bdb990c414c14ea", "shasum": "", "mirrors": [ { @@ -2007,7 +2190,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.1.4" + "source": "https://github.com/thephpleague/flysystem/tree/1.1.5" }, "funding": [ { @@ -2015,7 +2198,7 @@ "type": "other" } ], - "time": "2021-06-23T21:56:05+00:00" + "time": "2021-08-17T13:49:42+00:00" }, { "name": "league/mime-type-detection", @@ -2159,16 +2342,16 @@ }, { "name": "monolog/monolog", - "version": "2.3.1", + "version": "2.3.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "9738e495f288eec0b187e310b7cdbbb285777dbe" + "reference": "71312564759a7db5b789296369c1a264efc43aad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/9738e495f288eec0b187e310b7cdbbb285777dbe", - "reference": "9738e495f288eec0b187e310b7cdbbb285777dbe", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/71312564759a7db5b789296369c1a264efc43aad", + "reference": "71312564759a7db5b789296369c1a264efc43aad", "shasum": "", "mirrors": [ { @@ -2245,7 +2428,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.3.1" + "source": "https://github.com/Seldaek/monolog/tree/2.3.2" }, "funding": [ { @@ -2257,20 +2440,20 @@ "type": "tidelift" } ], - "time": "2021-07-14T11:56:39+00:00" + "time": "2021-07-23T07:42:52+00:00" }, { "name": "nesbot/carbon", - "version": "2.50.0", + "version": "2.53.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "f47f17d17602b2243414a44ad53d9f8b9ada5fdb" + "reference": "f4655858a784988f880c1b8c7feabbf02dfdf045" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f47f17d17602b2243414a44ad53d9f8b9ada5fdb", - "reference": "f47f17d17602b2243414a44ad53d9f8b9ada5fdb", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f4655858a784988f880c1b8c7feabbf02dfdf045", + "reference": "f4655858a784988f880c1b8c7feabbf02dfdf045", "shasum": "", "mirrors": [ { @@ -2283,11 +2466,12 @@ "ext-json": "*", "php": "^7.1.8 || ^8.0", "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", "phpmd/phpmd": "^2.9", "phpstan/extension-installer": "^1.0", @@ -2301,8 +2485,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev", - "dev-3.x": "3.x-dev" + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" }, "laravel": { "providers": [ @@ -2356,20 +2540,179 @@ "type": "tidelift" } ], - "time": "2021-06-28T22:38:45+00:00" + "time": "2021-09-06T09:29:23+00:00" + }, + { + "name": "nette/schema", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "f5ed39fc96358f922cedfd1e516f0dadf5d2be0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/f5ed39fc96358f922cedfd1e516f0dadf5d2be0d", + "reference": "f5ed39fc96358f922cedfd1e516f0dadf5d2be0d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "nette/utils": "^3.1.4 || ^4.0", + "php": ">=7.1 <8.1" + }, + "require-dev": { + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^0.12", + "tracy/tracy": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.1" + }, + "time": "2021-03-04T17:51:11+00:00" + }, + { + "name": "nette/utils", + "version": "v3.2.3", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "5c36cc1ba9bb6abb8a9e425cf054e0c3fd5b9822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/5c36cc1ba9bb6abb8a9e425cf054e0c3fd5b9822", + "reference": "5c36cc1ba9bb6abb8a9e425cf054e0c3fd5b9822", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2 <8.1" + }, + "conflict": { + "nette/di": "<3.0.6" + }, + "require-dev": { + "nette/tester": "~2.0", + "phpstan/phpstan": "^0.12", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v3.2.3" + }, + "time": "2021-08-16T21:05:00+00:00" }, { "name": "nikic/php-parser", - "version": "v4.11.0", + "version": "v4.12.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94" + "reference": "6608f01670c3cc5079e18c1dab1104e002579143" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/fe14cf3672a149364fb66dfe11bf6549af899f94", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", + "reference": "6608f01670c3cc5079e18c1dab1104e002579143", "shasum": "", "mirrors": [ { @@ -2416,9 +2759,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.11.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" }, - "time": "2021-07-03T13:36:55+00:00" + "time": "2021-07-21T10:44:31+00:00" }, { "name": "opis/closure", @@ -2493,16 +2836,16 @@ }, { "name": "overtrue/socialite", - "version": "3.2.3", + "version": "3.2.4", "source": { "type": "git", "url": "https://github.com/overtrue/socialite.git", - "reference": "e331d3e2eb7040a53c674590dfa475b3ae141d32" + "reference": "7605f4370a92ea4811cc5016d4709ef3d545f51c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/overtrue/socialite/zipball/e331d3e2eb7040a53c674590dfa475b3ae141d32", - "reference": "e331d3e2eb7040a53c674590dfa475b3ae141d32", + "url": "https://api.github.com/repos/overtrue/socialite/zipball/7605f4370a92ea4811cc5016d4709ef3d545f51c", + "reference": "7605f4370a92ea4811cc5016d4709ef3d545f51c", "shasum": "", "mirrors": [ { @@ -2552,7 +2895,7 @@ ], "support": { "issues": "https://github.com/overtrue/socialite/issues", - "source": "https://github.com/overtrue/socialite/tree/3.2.3" + "source": "https://github.com/overtrue/socialite/tree/3.2.4" }, "funding": [ { @@ -2560,20 +2903,20 @@ "type": "patreon" } ], - "time": "2021-05-27T05:04:00+00:00" + "time": "2021-08-31T07:32:54+00:00" }, { "name": "overtrue/wechat", - "version": "5.7.1", + "version": "5.7.2", "source": { "type": "git", "url": "https://github.com/w7corp/easywechat.git", - "reference": "af06e58784aaaeaadc35f984e7e38ef05197bb31" + "reference": "d57d2104fe705511374ae3627b0d9b7a761d87b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/w7corp/easywechat/zipball/af06e58784aaaeaadc35f984e7e38ef05197bb31", - "reference": "af06e58784aaaeaadc35f984e7e38ef05197bb31", + "url": "https://api.github.com/repos/w7corp/easywechat/zipball/d57d2104fe705511374ae3627b0d9b7a761d87b9", + "reference": "d57d2104fe705511374ae3627b0d9b7a761d87b9", "shasum": "", "mirrors": [ { @@ -2650,7 +2993,7 @@ ], "support": { "issues": "https://github.com/w7corp/easywechat/issues", - "source": "https://github.com/w7corp/easywechat/tree/5.7.1" + "source": "https://github.com/w7corp/easywechat/tree/5.7.2" }, "funding": [ { @@ -2666,20 +3009,20 @@ "type": "patreon" } ], - "time": "2021-07-20T06:15:59+00:00" + "time": "2021-09-06T10:39:11+00:00" }, { "name": "phpoption/phpoption", - "version": "1.7.5", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525" + "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/994ecccd8f3283ecf5ac33254543eb0ac946d525", - "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/5455cb38aed4523f99977c4a12ef19da4bfe2a28", + "reference": "5455cb38aed4523f99977c4a12ef19da4bfe2a28", "shasum": "", "mirrors": [ { @@ -2689,16 +3032,16 @@ ] }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0" + "php": "^7.0 || ^8.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^6.5.14 || ^7.0.20 || ^8.5.19 || ^9.5.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.8-dev" } }, "autoload": { @@ -2717,7 +3060,7 @@ }, { "name": "Graham Campbell", - "email": "graham@alt-three.com" + "email": "hello@gjcampbell.co.uk" } ], "description": "Option Type for PHP", @@ -2729,7 +3072,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.7.5" + "source": "https://github.com/schmittjoh/php-option/tree/1.8.0" }, "funding": [ { @@ -2741,7 +3084,7 @@ "type": "tidelift" } ], - "time": "2020-07-20T17:29:33+00:00" + "time": "2021-08-28T21:27:29+00:00" }, { "name": "pimple/pimple", @@ -3025,6 +3368,67 @@ }, "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": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "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", @@ -3330,16 +3734,16 @@ }, { "name": "ramsey/collection", - "version": "1.1.3", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1" + "reference": "eaca1dc1054ddd10cbd83c1461907bee6fb528fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1", - "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1", + "url": "https://api.github.com/repos/ramsey/collection/zipball/eaca1dc1054ddd10cbd83c1461907bee6fb528fa", + "reference": "eaca1dc1054ddd10cbd83c1461907bee6fb528fa", "shasum": "", "mirrors": [ { @@ -3349,7 +3753,8 @@ ] }, "require": { - "php": "^7.2 || ^8" + "php": "^7.3 || ^8", + "symfony/polyfill-php81": "^1.23" }, "require-dev": { "captainhook/captainhook": "^5.3", @@ -3359,6 +3764,7 @@ "hamcrest/hamcrest-php": "^2", "jangregor/phpstan-prophecy": "^0.8", "mockery/mockery": "^1.3", + "phpspec/prophecy-phpunit": "^2.0", "phpstan/extension-installer": "^1", "phpstan/phpstan": "^0.12.32", "phpstan/phpstan-mockery": "^0.12.5", @@ -3386,7 +3792,7 @@ "homepage": "https://benramsey.com" } ], - "description": "A PHP 7.2+ library for representing and manipulating collections.", + "description": "A PHP library for representing and manipulating collections.", "keywords": [ "array", "collection", @@ -3397,7 +3803,7 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/1.1.3" + "source": "https://github.com/ramsey/collection/tree/1.2.1" }, "funding": [ { @@ -3409,20 +3815,20 @@ "type": "tidelift" } ], - "time": "2021-01-21T17:40:04+00:00" + "time": "2021-08-06T03:41:06+00:00" }, { "name": "ramsey/uuid", - "version": "4.1.1", + "version": "4.2.1", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "cd4032040a750077205918c86049aa0f43d22947" + "reference": "fe665a03df4f056aa65af552a96e1976df8c8dae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/cd4032040a750077205918c86049aa0f43d22947", - "reference": "cd4032040a750077205918c86049aa0f43d22947", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fe665a03df4f056aa65af552a96e1976df8c8dae", + "reference": "fe665a03df4f056aa65af552a96e1976df8c8dae", "shasum": "", "mirrors": [ { @@ -3442,26 +3848,26 @@ "rhumsaa/uuid": "self.version" }, "require-dev": { - "codeception/aspect-mock": "^3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7.0", + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "doctrine/annotations": "^1.8", - "goaop/framework": "^2", + "ergebnis/composer-normalize": "^2.15", "mockery/mockery": "^1.3", "moontoast/math": "^1.1", "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", "php-mock/php-mock-mockery": "^1.3", - "php-mock/php-mock-phpunit": "^2.5", "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^0.17.1", + "phpbench/phpbench": "^1.0", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^0.12", "phpstan/phpstan-mockery": "^0.12", "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^8.5", - "psy/psysh": "^0.10.0", - "slevomat/coding-standard": "^6.0", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "3.9.4" + "vimeo/psalm": "^4.9" }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", @@ -3474,7 +3880,10 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true } }, "autoload": { @@ -3490,7 +3899,6 @@ "MIT" ], "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "homepage": "https://github.com/ramsey/uuid", "keywords": [ "guid", "identifier", @@ -3498,16 +3906,19 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "rss": "https://github.com/ramsey/uuid/releases.atom", - "source": "https://github.com/ramsey/uuid" + "source": "https://github.com/ramsey/uuid/tree/4.2.1" }, "funding": [ { "url": "https://github.com/ramsey", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" } ], - "time": "2020-08-18T17:17:46+00:00" + "time": "2021-08-11T01:06:55+00:00" }, { "name": "spatie/eloquent-sortable", @@ -3798,16 +4209,16 @@ }, { "name": "symfony/cache", - "version": "v5.3.3", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "82962a497f090e95e3b357c21bf6f54991c9b1a5" + "reference": "864867b13bd67347497ce956f4b253f8fe18b80c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/82962a497f090e95e3b357c21bf6f54991c9b1a5", - "reference": "82962a497f090e95e3b357c21bf6f54991c9b1a5", + "url": "https://api.github.com/repos/symfony/cache/zipball/864867b13bd67347497ce956f4b253f8fe18b80c", + "reference": "864867b13bd67347497ce956f4b253f8fe18b80c", "shasum": "", "mirrors": [ { @@ -3819,10 +4230,11 @@ "require": { "php": ">=7.2.5", "psr/cache": "^1.0|^2.0", - "psr/log": "^1.1", + "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^1.1.7|^2", "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.15", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", "symfony/service-contracts": "^1.1|^2", "symfony/var-exporter": "^4.4|^5.0" }, @@ -3880,7 +4292,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.3.3" + "source": "https://github.com/symfony/cache/tree/v5.3.7" }, "funding": [ { @@ -3896,7 +4308,7 @@ "type": "tidelift" } ], - "time": "2021-06-24T08:13:00+00:00" + "time": "2021-08-29T15:08:21+00:00" }, { "name": "symfony/cache-contracts", @@ -3985,16 +4397,16 @@ }, { "name": "symfony/console", - "version": "v5.3.2", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1" + "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/649730483885ff2ca99ca0560ef0e5f6b03f2ac1", - "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1", + "url": "https://api.github.com/repos/symfony/console/zipball/8b1008344647462ae6ec57559da166c2bfa5e16a", + "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a", "shasum": "", "mirrors": [ { @@ -4008,11 +4420,12 @@ "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.15", + "symfony/polyfill-php80": "^1.16", "symfony/service-contracts": "^1.1|^2", "symfony/string": "^5.1" }, "conflict": { + "psr/log": ">=3", "symfony/dependency-injection": "<4.4", "symfony/dotenv": "<5.1", "symfony/event-dispatcher": "<4.4", @@ -4020,10 +4433,10 @@ "symfony/process": "<4.4" }, "provide": { - "psr/log-implementation": "1.0" + "psr/log-implementation": "1.0|2.0" }, "require-dev": { - "psr/log": "~1.0", + "psr/log": "^1|^2", "symfony/config": "^4.4|^5.0", "symfony/dependency-injection": "^4.4|^5.0", "symfony/event-dispatcher": "^4.4|^5.0", @@ -4069,7 +4482,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.2" + "source": "https://github.com/symfony/console/tree/v5.3.7" }, "funding": [ { @@ -4085,20 +4498,20 @@ "type": "tidelift" } ], - "time": "2021-06-12T09:42:48+00:00" + "time": "2021-08-25T20:02:16+00:00" }, { "name": "symfony/css-selector", - "version": "v5.3.0", + "version": "v5.3.4", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814" + "reference": "7fb120adc7f600a59027775b224c13a33530dd90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/fcd0b29a7a0b1bb5bfbedc6231583d77fea04814", - "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90", + "reference": "7fb120adc7f600a59027775b224c13a33530dd90", "shasum": "", "mirrors": [ { @@ -4108,7 +4521,8 @@ ] }, "require": { - "php": ">=7.2.5" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -4140,7 +4554,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.3.0" + "source": "https://github.com/symfony/css-selector/tree/v5.3.4" }, "funding": [ { @@ -4156,7 +4570,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:40:38+00:00" + "time": "2021-07-21T12:38:00+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4233,16 +4647,16 @@ }, { "name": "symfony/error-handler", - "version": "v5.3.3", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "43323e79c80719e8a4674e33484bca98270d223f" + "reference": "3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/43323e79c80719e8a4674e33484bca98270d223f", - "reference": "43323e79c80719e8a4674e33484bca98270d223f", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321", + "reference": "3bc60d0fba00ae8d1eaa9eb5ab11a2bbdd1fc321", "shasum": "", "mirrors": [ { @@ -4253,8 +4667,7 @@ }, "require": { "php": ">=7.2.5", - "psr/log": "^1.0", - "symfony/polyfill-php80": "^1.15", + "psr/log": "^1|^2|^3", "symfony/var-dumper": "^4.4|^5.0" }, "require-dev": { @@ -4288,7 +4701,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.3.3" + "source": "https://github.com/symfony/error-handler/tree/v5.3.7" }, "funding": [ { @@ -4304,20 +4717,20 @@ "type": "tidelift" } ], - "time": "2021-06-24T08:13:00+00:00" + "time": "2021-08-28T15:07:08+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.3.0", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce" + "reference": "ce7b20d69c66a20939d8952b617506a44d102130" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67a5f354afa8e2f231081b3fa11a5912f933c3ce", - "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ce7b20d69c66a20939d8952b617506a44d102130", + "reference": "ce7b20d69c66a20939d8952b617506a44d102130", "shasum": "", "mirrors": [ { @@ -4330,7 +4743,7 @@ "php": ">=7.2.5", "symfony/deprecation-contracts": "^2.1", "symfony/event-dispatcher-contracts": "^2", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "conflict": { "symfony/dependency-injection": "<4.4" @@ -4340,7 +4753,7 @@ "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { - "psr/log": "~1.0", + "psr/log": "^1|^2|^3", "symfony/config": "^4.4|^5.0", "symfony/dependency-injection": "^4.4|^5.0", "symfony/error-handler": "^4.4|^5.0", @@ -4379,7 +4792,7 @@ "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.3.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.7" }, "funding": [ { @@ -4395,7 +4808,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-08-04T21:20:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -4484,16 +4897,16 @@ }, { "name": "symfony/finder", - "version": "v5.3.0", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6" + "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", - "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6", + "url": "https://api.github.com/repos/symfony/finder/zipball/a10000ada1e600d109a6c7632e9ac42e8bf2fb93", + "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93", "shasum": "", "mirrors": [ { @@ -4503,7 +4916,8 @@ ] }, "require": { - "php": ">=7.2.5" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -4531,7 +4945,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.3.0" + "source": "https://github.com/symfony/finder/tree/v5.3.7" }, "funding": [ { @@ -4547,7 +4961,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T12:52:38+00:00" + "time": "2021-08-04T21:20:46+00:00" }, { "name": "symfony/http-client-contracts", @@ -4635,16 +5049,16 @@ }, { "name": "symfony/http-foundation", - "version": "v5.3.3", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "0e45ab1574caa0460d9190871a8ce47539e40ccf" + "reference": "e36c8e5502b4f3f0190c675f1c1f1248a64f04e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0e45ab1574caa0460d9190871a8ce47539e40ccf", - "reference": "0e45ab1574caa0460d9190871a8ce47539e40ccf", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e36c8e5502b4f3f0190c675f1c1f1248a64f04e5", + "reference": "e36c8e5502b4f3f0190c675f1c1f1248a64f04e5", "shasum": "", "mirrors": [ { @@ -4657,7 +5071,7 @@ "php": ">=7.2.5", "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "require-dev": { "predis/predis": "~1.0", @@ -4694,7 +5108,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.3.3" + "source": "https://github.com/symfony/http-foundation/tree/v5.3.7" }, "funding": [ { @@ -4710,20 +5124,20 @@ "type": "tidelift" } ], - "time": "2021-06-27T09:19:40+00:00" + "time": "2021-08-27T11:20:35+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.3.3", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "90ad9f4b21ddcb8ebe9faadfcca54929ad23f9f8" + "reference": "a3a78e37935a527b50376c22ac1cec35b57fe787" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/90ad9f4b21ddcb8ebe9faadfcca54929ad23f9f8", - "reference": "90ad9f4b21ddcb8ebe9faadfcca54929ad23f9f8", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a3a78e37935a527b50376c22ac1cec35b57fe787", + "reference": "a3a78e37935a527b50376c22ac1cec35b57fe787", "shasum": "", "mirrors": [ { @@ -4734,15 +5148,15 @@ }, "require": { "php": ">=7.2.5", - "psr/log": "~1.0", + "psr/log": "^1|^2", "symfony/deprecation-contracts": "^2.1", "symfony/error-handler": "^4.4|^5.0", "symfony/event-dispatcher": "^5.0", "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^5.3", + "symfony/http-foundation": "^5.3.7", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "conflict": { "symfony/browser-kit": "<4.4", @@ -4761,7 +5175,7 @@ "twig/twig": "<2.13" }, "provide": { - "psr/log-implementation": "1.0" + "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", @@ -4812,7 +5226,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.3.3" + "source": "https://github.com/symfony/http-kernel/tree/v5.3.7" }, "funding": [ { @@ -4828,20 +5242,20 @@ "type": "tidelift" } ], - "time": "2021-06-30T08:27:49+00:00" + "time": "2021-08-30T12:37:19+00:00" }, { "name": "symfony/mime", - "version": "v5.3.2", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a" + "reference": "ae887cb3b044658676129f5e97aeb7e9eb69c2d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/47dd7912152b82d0d4c8d9040dbc93d6232d472a", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a", + "url": "https://api.github.com/repos/symfony/mime/zipball/ae887cb3b044658676129f5e97aeb7e9eb69c2d8", + "reference": "ae887cb3b044658676129f5e97aeb7e9eb69c2d8", "shasum": "", "mirrors": [ { @@ -4855,7 +5269,7 @@ "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "conflict": { "egulias/email-validator": "~3.0.0", @@ -4901,7 +5315,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.2" + "source": "https://github.com/symfony/mime/tree/v5.3.7" }, "funding": [ { @@ -4917,7 +5331,7 @@ "type": "tidelift" } ], - "time": "2021-06-09T10:58:01+00:00" + "time": "2021-08-20T11:40:01+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5092,16 +5506,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab" + "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", + "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", "shasum": "", "mirrors": [ { @@ -5159,7 +5573,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" }, "funding": [ { @@ -5175,7 +5589,7 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2021-05-27T12:26:48+00:00" }, { "name": "symfony/polyfill-intl-idn", @@ -5362,16 +5776,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1" + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1", - "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", "shasum": "", "mirrors": [ { @@ -5428,7 +5842,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" }, "funding": [ { @@ -5444,7 +5858,7 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2021-05-27T12:26:48+00:00" }, { "name": "symfony/polyfill-php72", @@ -5615,16 +6029,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", "shasum": "", "mirrors": [ { @@ -5684,7 +6098,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" }, "funding": [ { @@ -5700,20 +6114,105 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-07-28T13:41:28+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": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "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.3.2", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "714b47f9196de61a196d86c4bad5f09201b307df" + "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/714b47f9196de61a196d86c4bad5f09201b307df", - "reference": "714b47f9196de61a196d86c4bad5f09201b307df", + "url": "https://api.github.com/repos/symfony/process/zipball/38f26c7d6ed535217ea393e05634cb0b244a1967", + "reference": "38f26c7d6ed535217ea393e05634cb0b244a1967", "shasum": "", "mirrors": [ { @@ -5724,7 +6223,7 @@ }, "require": { "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -5752,7 +6251,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.3.2" + "source": "https://github.com/symfony/process/tree/v5.3.7" }, "funding": [ { @@ -5768,20 +6267,20 @@ "type": "tidelift" } ], - "time": "2021-06-12T10:15:01+00:00" + "time": "2021-08-04T21:20:46+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v2.1.0", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "81db2d4ae86e9f0049828d9343a72b9523884e5d" + "reference": "c9012994c4b4fb23e7c57dd86b763a417a04feba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/81db2d4ae86e9f0049828d9343a72b9523884e5d", - "reference": "81db2d4ae86e9f0049828d9343a72b9523884e5d", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/c9012994c4b4fb23e7c57dd86b763a417a04feba", + "reference": "c9012994c4b4fb23e7c57dd86b763a417a04feba", "shasum": "", "mirrors": [ { @@ -5797,7 +6296,7 @@ }, "require-dev": { "nyholm/psr7": "^1.1", - "psr/log": "^1.1", + "psr/log": "^1.1 || ^2 || ^3", "symfony/browser-kit": "^4.4 || ^5.0", "symfony/config": "^4.4 || ^5.0", "symfony/event-dispatcher": "^4.4 || ^5.0", @@ -5846,7 +6345,7 @@ ], "support": { "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.0" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.1" }, "funding": [ { @@ -5862,20 +6361,20 @@ "type": "tidelift" } ], - "time": "2021-02-17T10:35:25+00:00" + "time": "2021-07-27T17:25:39+00:00" }, { "name": "symfony/routing", - "version": "v5.3.0", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "368e81376a8e049c37cb80ae87dbfbf411279199" + "reference": "be865017746fe869007d94220ad3f5297951811b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/368e81376a8e049c37cb80ae87dbfbf411279199", - "reference": "368e81376a8e049c37cb80ae87dbfbf411279199", + "url": "https://api.github.com/repos/symfony/routing/zipball/be865017746fe869007d94220ad3f5297951811b", + "reference": "be865017746fe869007d94220ad3f5297951811b", "shasum": "", "mirrors": [ { @@ -5887,7 +6386,7 @@ "require": { "php": ">=7.2.5", "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "conflict": { "doctrine/annotations": "<1.12", @@ -5897,7 +6396,7 @@ }, "require-dev": { "doctrine/annotations": "^1.12", - "psr/log": "~1.0", + "psr/log": "^1|^2|^3", "symfony/config": "^5.3", "symfony/dependency-injection": "^4.4|^5.0", "symfony/expression-language": "^4.4|^5.0", @@ -5942,7 +6441,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.3.0" + "source": "https://github.com/symfony/routing/tree/v5.3.7" }, "funding": [ { @@ -5958,7 +6457,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-08-04T21:42:42+00:00" }, { "name": "symfony/service-contracts", @@ -6047,16 +6546,16 @@ }, { "name": "symfony/string", - "version": "v5.3.3", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1" + "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5", + "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5", "shasum": "", "mirrors": [ { @@ -6116,7 +6615,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.3" + "source": "https://github.com/symfony/string/tree/v5.3.7" }, "funding": [ { @@ -6132,20 +6631,20 @@ "type": "tidelift" } ], - "time": "2021-06-27T11:44:38+00:00" + "time": "2021-08-26T08:00:08+00:00" }, { "name": "symfony/translation", - "version": "v5.3.3", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "380b8c9e944d0e364b25f28e8e555241eb49c01c" + "reference": "4d595a6d15fd3a2c67f6f31d14d15d3b7356d7a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/380b8c9e944d0e364b25f28e8e555241eb49c01c", - "reference": "380b8c9e944d0e364b25f28e8e555241eb49c01c", + "url": "https://api.github.com/repos/symfony/translation/zipball/4d595a6d15fd3a2c67f6f31d14d15d3b7356d7a6", + "reference": "4d595a6d15fd3a2c67f6f31d14d15d3b7356d7a6", "shasum": "", "mirrors": [ { @@ -6158,7 +6657,7 @@ "php": ">=7.2.5", "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15", + "symfony/polyfill-php80": "^1.16", "symfony/translation-contracts": "^2.3" }, "conflict": { @@ -6172,7 +6671,7 @@ "symfony/translation-implementation": "2.3" }, "require-dev": { - "psr/log": "~1.0", + "psr/log": "^1|^2|^3", "symfony/config": "^4.4|^5.0", "symfony/console": "^4.4|^5.0", "symfony/dependency-injection": "^5.0", @@ -6217,7 +6716,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.3.3" + "source": "https://github.com/symfony/translation/tree/v5.3.7" }, "funding": [ { @@ -6233,7 +6732,7 @@ "type": "tidelift" } ], - "time": "2021-06-27T12:22:47+00:00" + "time": "2021-08-26T08:22:53+00:00" }, { "name": "symfony/translation-contracts", @@ -6321,16 +6820,16 @@ }, { "name": "symfony/var-dumper", - "version": "v5.3.3", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "46aa709affb9ad3355bd7a810f9662d71025c384" + "reference": "3ad5af4aed07d0a0201bbcfc42658fe6c5b2fb8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/46aa709affb9ad3355bd7a810f9662d71025c384", - "reference": "46aa709affb9ad3355bd7a810f9662d71025c384", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3ad5af4aed07d0a0201bbcfc42658fe6c5b2fb8f", + "reference": "3ad5af4aed07d0a0201bbcfc42658fe6c5b2fb8f", "shasum": "", "mirrors": [ { @@ -6342,7 +6841,7 @@ "require": { "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "conflict": { "phpunit/phpunit": "<5.4.3", @@ -6395,7 +6894,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.3" + "source": "https://github.com/symfony/var-dumper/tree/v5.3.7" }, "funding": [ { @@ -6411,20 +6910,20 @@ "type": "tidelift" } ], - "time": "2021-06-24T08:13:00+00:00" + "time": "2021-08-04T23:19:25+00:00" }, { "name": "symfony/var-exporter", - "version": "v5.3.3", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "903c2c0babd6267de5bcb2995e8fc1efb5f01f1f" + "reference": "2ded877ab0574d8b646f4eb3f716f8ed7ee7f392" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/903c2c0babd6267de5bcb2995e8fc1efb5f01f1f", - "reference": "903c2c0babd6267de5bcb2995e8fc1efb5f01f1f", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2ded877ab0574d8b646f4eb3f716f8ed7ee7f392", + "reference": "2ded877ab0574d8b646f4eb3f716f8ed7ee7f392", "shasum": "", "mirrors": [ { @@ -6435,7 +6934,7 @@ }, "require": { "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "require-dev": { "symfony/var-dumper": "^4.4.9|^5.0.9" @@ -6474,7 +6973,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.3.3" + "source": "https://github.com/symfony/var-exporter/tree/v5.3.7" }, "funding": [ { @@ -6490,20 +6989,20 @@ "type": "tidelift" } ], - "time": "2021-06-27T09:16:08+00:00" + "time": "2021-08-04T22:42:42+00:00" }, { "name": "tencentcloud/tencentcloud-sdk-php", - "version": "3.0.467", + "version": "3.0.476", "source": { "type": "git", "url": "https://github.com/TencentCloud/tencentcloud-sdk-php.git", - "reference": "11f0a41777f97cdc4226a9d1b0dea78eead42a24" + "reference": "b79f44608e8080b8c09ea3a6c3e8d532c1971d35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TencentCloud/tencentcloud-sdk-php/zipball/11f0a41777f97cdc4226a9d1b0dea78eead42a24", - "reference": "11f0a41777f97cdc4226a9d1b0dea78eead42a24", + "url": "https://api.github.com/repos/TencentCloud/tencentcloud-sdk-php/zipball/b79f44608e8080b8c09ea3a6c3e8d532c1971d35", + "reference": "b79f44608e8080b8c09ea3a6c3e8d532c1971d35", "shasum": "", "mirrors": [ { @@ -6514,7 +7013,6 @@ }, "require": { "guzzlehttp/guzzle": "^6.3 || ^7.0", - "guzzlehttp/psr7": "^1.8", "php": ">=5.6.0" }, "type": "library", @@ -6542,9 +7040,9 @@ "homepage": "https://github.com/TencentCloud/tencentcloud-sdk-php", "support": { "issues": "https://github.com/TencentCloud/tencentcloud-sdk-php/issues", - "source": "https://github.com/TencentCloud/tencentcloud-sdk-php/tree/3.0.467" + "source": "https://github.com/TencentCloud/tencentcloud-sdk-php/tree/3.0.476" }, - "time": "2021-08-30T01:17:41+00:00" + "time": "2021-09-10T01:07:38+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -6985,16 +7483,16 @@ }, { "name": "facade/ignition", - "version": "2.11.0", + "version": "2.12.1", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "dc6818335f50ccf0b90284784718ea9a82604286" + "reference": "567b0a4ab04367603e61729b0ca133fb7b4819db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/dc6818335f50ccf0b90284784718ea9a82604286", - "reference": "dc6818335f50ccf0b90284784718ea9a82604286", + "url": "https://api.github.com/repos/facade/ignition/zipball/567b0a4ab04367603e61729b0ca133fb7b4819db", + "reference": "567b0a4ab04367603e61729b0ca133fb7b4819db", "shasum": "", "mirrors": [ { @@ -7063,7 +7561,7 @@ "issues": "https://github.com/facade/ignition/issues", "source": "https://github.com/facade/ignition" }, - "time": "2021-07-12T15:55:51+00:00" + "time": "2021-09-10T07:19:07+00:00" }, { "name": "facade/ignition-contracts", @@ -7126,16 +7624,16 @@ }, { "name": "fakerphp/faker", - "version": "v1.15.0", + "version": "v1.16.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "89c6201c74db25fa759ff16e78a4d8f32547770e" + "reference": "271d384d216e5e5c468a6b28feedf95d49f83b35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/89c6201c74db25fa759ff16e78a4d8f32547770e", - "reference": "89c6201c74db25fa759ff16e78a4d8f32547770e", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/271d384d216e5e5c468a6b28feedf95d49f83b35", + "reference": "271d384d216e5e5c468a6b28feedf95d49f83b35", "shasum": "", "mirrors": [ { @@ -7146,7 +7644,7 @@ }, "require": { "php": "^7.1 || ^8.0", - "psr/container": "^1.0", + "psr/container": "^1.0 || ^2.0", "symfony/deprecation-contracts": "^2.2" }, "conflict": { @@ -7166,7 +7664,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.15-dev" + "dev-main": "v1.16-dev" } }, "autoload": { @@ -7191,22 +7689,22 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.15.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.16.0" }, - "time": "2021-07-06T20:39:40+00:00" + "time": "2021-09-06T14:53:37+00:00" }, { "name": "filp/whoops", - "version": "2.14.0", + "version": "2.14.1", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "fdf92f03e150ed84d5967a833ae93abffac0315b" + "reference": "15ead64e9828f0fc90932114429c4f7923570cb1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/fdf92f03e150ed84d5967a833ae93abffac0315b", - "reference": "fdf92f03e150ed84d5967a833ae93abffac0315b", + "url": "https://api.github.com/repos/filp/whoops/zipball/15ead64e9828f0fc90932114429c4f7923570cb1", + "reference": "15ead64e9828f0fc90932114429c4f7923570cb1", "shasum": "", "mirrors": [ { @@ -7262,7 +7760,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.0" + "source": "https://github.com/filp/whoops/tree/2.14.1" }, "funding": [ { @@ -7270,20 +7768,20 @@ "type": "github" } ], - "time": "2021-07-13T12:00:00+00:00" + "time": "2021-08-29T12:00:00+00:00" }, { "name": "laravel/sail", - "version": "v1.8.6", + "version": "v1.10.1", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "51ecfe0f048f8f8e6c5617e02a1f67ca22817c98" + "reference": "267fafeaf0e0311952316ae0f3c765abc7516469" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/51ecfe0f048f8f8e6c5617e02a1f67ca22817c98", - "reference": "51ecfe0f048f8f8e6c5617e02a1f67ca22817c98", + "url": "https://api.github.com/repos/laravel/sail/zipball/267fafeaf0e0311952316ae0f3c765abc7516469", + "reference": "267fafeaf0e0311952316ae0f3c765abc7516469", "shasum": "", "mirrors": [ { @@ -7336,7 +7834,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2021-07-15T07:35:41+00:00" + "time": "2021-08-23T13:43:27+00:00" }, { "name": "myclabs/deep-copy", @@ -7404,16 +7902,16 @@ }, { "name": "nunomaduro/collision", - "version": "v5.5.0", + "version": "v5.9.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "b5cb36122f1c142c3c3ee20a0ae778439ef0244b" + "reference": "63456f5c3e8c4bc52bd573e5c85674d64d84fd43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/b5cb36122f1c142c3c3ee20a0ae778439ef0244b", - "reference": "b5cb36122f1c142c3c3ee20a0ae778439ef0244b", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/63456f5c3e8c4bc52bd573e5c85674d64d84fd43", + "reference": "63456f5c3e8c4bc52bd573e5c85674d64d84fd43", "shasum": "", "mirrors": [ { @@ -7431,12 +7929,12 @@ "require-dev": { "brianium/paratest": "^6.1", "fideloper/proxy": "^4.4.1", - "friendsofphp/php-cs-fixer": "^2.17.3", + "friendsofphp/php-cs-fixer": "^3.0", "fruitcake/laravel-cors": "^2.0.3", - "laravel/framework": "^9.0", + "laravel/framework": "^8.0 || ^9.0", "nunomaduro/larastan": "^0.6.2", "nunomaduro/mock-final-classes": "^1.0", - "orchestra/testbench": "^7.0", + "orchestra/testbench": "^6.0 || ^7.0", "phpstan/phpstan": "^0.12.64", "phpunit/phpunit": "^9.5.0" }, @@ -7494,20 +7992,20 @@ "type": "patreon" } ], - "time": "2021-06-22T20:47:22+00:00" + "time": "2021-08-26T15:32:09+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "", "mirrors": [ { @@ -7558,9 +8056,9 @@ "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/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2020-06-27T14:33:11+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", @@ -7797,16 +8295,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.13.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", "shasum": "", "mirrors": [ { @@ -7817,19 +8315,19 @@ }, "require": { "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", + "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", + "phpspec/phpspec": "^6.0 || ^7.0", "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -7864,9 +8362,9 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + "source": "https://github.com/phpspec/prophecy/tree/1.14.0" }, - "time": "2021-03-17T13:42:18+00:00" + "time": "2021-09-10T09:02:12+00:00" }, { "name": "phpunit/php-code-coverage", @@ -8218,16 +8716,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.7", + "version": "9.5.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "d0dc8b6999c937616df4fb046792004b33fd31c5" + "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d0dc8b6999c937616df4fb046792004b33fd31c5", - "reference": "d0dc8b6999c937616df4fb046792004b33fd31c5", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", + "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", "shasum": "", "mirrors": [ { @@ -8245,7 +8743,7 @@ "ext-xml": "*", "ext-xmlwriter": "*", "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.1", + "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", "phpspec/prophecy": "^1.12.1", @@ -8311,7 +8809,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.7" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9" }, "funding": [ { @@ -8323,7 +8821,7 @@ "type": "github" } ], - "time": "2021-07-19T06:14:47+00:00" + "time": "2021-08-31T06:47:40+00:00" }, { "name": "sebastian/cli-parser", @@ -9262,6 +9760,7 @@ "type": "github" } ], + "abandoned": true, "time": "2020-09-28T06:45:17+00:00" }, { @@ -9387,16 +9886,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "75a63c33a8577608444246075ea0af0d052e452a" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", - "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "", "mirrors": [ { @@ -9431,7 +9930,7 @@ "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/master" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, "funding": [ { @@ -9439,7 +9938,7 @@ "type": "github" } ], - "time": "2020-07-12T23:59:07+00:00" + "time": "2021-07-28T10:34:58+00:00" } ], "aliases": [], diff --git a/resources/lang/zh_CN/agent.php b/resources/lang/zh_CN/agent.php index d48df6f..d2ded3c 100644 --- a/resources/lang/zh_CN/agent.php +++ b/resources/lang/zh_CN/agent.php @@ -16,10 +16,13 @@ return [ 'status' => '状态', 'type' => '代理商类型', 'company_name' => '公司名称', + 'credit_codes' => '统一社会信用代码', 'logo' => 'LOGO', 'address' => '公司地址', 'license_pic' => '营业执照', 'director' => '负责人', + 'legal_persona_name' => '法人姓名', + 'legal_persona_wechat' => '法人微信号', 'contact_phone' => '联系电话', 'rate' => '抽成比例', 'agentInfo' => trans('agent-info.fields'),