diff --git a/.gitignore b/.gitignore index 0c56c8f..58f5e38 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /.vscode /.vagrant .phpunit.result.cache +/database/database.sqlite diff --git a/app/Coding/Issue.php b/app/Coding/Issue.php new file mode 100644 index 0000000..b37ef64 --- /dev/null +++ b/app/Coding/Issue.php @@ -0,0 +1,28 @@ +client->request('POST', 'https://e.coding.net/open-api', [ + 'headers' => [ + 'Accept' => 'application/json', + 'Authorization' => "token ${token}", + 'Content-Type' => 'application/json' + ], + 'json' => array_merge([ + 'Action' => 'CreateIssue', + 'ProjectName' => $projectName, + ], $data), + ]); + $result = json_decode($response->getBody(), true); + if (isset($result['Response']['Error']['Message'])) { + throw new Exception($result['Response']['Error']['Message']); + } + return $result['Response']['Issue']; + } +} diff --git a/app/Coding/Iteration.php b/app/Coding/Iteration.php new file mode 100644 index 0000000..d105293 --- /dev/null +++ b/app/Coding/Iteration.php @@ -0,0 +1,35 @@ +client->request('POST', 'https://e.coding.net/open-api', [ + 'headers' => [ + 'Accept' => 'application/json', + 'Authorization' => "token ${token}", + 'Content-Type' => 'application/json' + ], + 'json' => array_merge([ + 'Action' => 'CreateIteration', + 'ProjectName' => $projectName, + ], $data), + ]); + $result = json_decode($response->getBody(), true); + if (isset($result['Response']['Error']['Message'])) { + throw new Exception($result['Response']['Error']['Message']); + } + return $result['Response']['Iteration']; + } + + public static function generateName(Carbon $startAt, Carbon $endAt): string + { + $endFormat = $startAt->year == $endAt->year ? 'm/d' : 'Y/m/d'; + return $startAt->format('Y/m/d') . '-' . $endAt->format($endFormat) . ' 迭代'; + } +} diff --git a/app/Coding/ProjectSetting.php b/app/Coding/ProjectSetting.php new file mode 100644 index 0000000..ee644f7 --- /dev/null +++ b/app/Coding/ProjectSetting.php @@ -0,0 +1,42 @@ +client->request('POST', 'https://e.coding.net/open-api', [ + 'headers' => [ + 'Accept' => 'application/json', + 'Authorization' => "token ${token}", + 'Content-Type' => 'application/json' + ], + 'json' => [ + 'Action' => 'DescribeProjectIssueTypeList', + 'ProjectName' => $projectName, + ], + ]); + $result = json_decode($response->getBody(), true); + return $result['Response']['IssueTypes']; + } + + public function getIssueTypeStatus(string $token, string $projectName, string $issueType, int $issueTypeId) + { + $response = $this->client->request('POST', 'https://e.coding.net/open-api', [ + 'headers' => [ + 'Accept' => 'application/json', + 'Authorization' => "token ${token}", + 'Content-Type' => 'application/json' + ], + 'json' => [ + 'Action' => 'DescribeProjectIssueStatusList', + 'ProjectName' => $projectName, + 'IssueType' => $issueType, + 'IssueTypeId' => $issueTypeId, + ], + ]); + $result = json_decode($response->getBody(), true); + return $result['Response']['ProjectIssueStatusList']; + } +} diff --git a/app/Commands/IssueCreateCommand.php b/app/Commands/IssueCreateCommand.php new file mode 100644 index 0000000..7a0ba7c --- /dev/null +++ b/app/Commands/IssueCreateCommand.php @@ -0,0 +1,67 @@ +setCodingApi(); + + $data = []; + $data['Type'] = $this->option('type') ?? $this->choice( + '类型:', + ['DEFECT', 'REQUIREMENT', 'MISSION', 'EPIC', 'SUB_TASK'], + 0 + ); + $data['Name'] = $this->option('name') ?? $this->ask('标题:'); + $data['Priority'] = $this->option('priority') ?? $this->choice( + '优先级:', + ['0', '1', '2', '3'], + 0 + ); + + try { + $result = $codingIssue->create($this->codingToken, $this->codingProjectUri, $data); + } catch (\Exception $e) { + $this->error('Error: ' . $e->getMessage()); + return 1; + } + + $this->info('创建成功'); + $this->info("https://{$this->codingTeamDomain}.coding.net/p/{$this->codingProjectUri}" . + "/all/issues/${result['Code']}"); + + return 0; + } +} diff --git a/app/Commands/IssueImportCommand.php b/app/Commands/IssueImportCommand.php new file mode 100644 index 0000000..f237f61 --- /dev/null +++ b/app/Commands/IssueImportCommand.php @@ -0,0 +1,151 @@ +setCodingApi(); + + $filePath = $this->argument('file'); + if (!file_exists($filePath)) { + $this->error("文件不存在:$filePath"); + return 1; + } + + $rows = FastExcel::import($filePath); + if (!empty($rows) && isset($rows[0]['ID'])) { + $rows = $rows->sortBy('ID'); + } + foreach ($rows as $row) { + try { + $issueResult = $this->createIssueByRow($projectSetting, $codingIssue, $iteration, $row); + } catch (Exception $e) { + $this->error('Error: ' . $e->getMessage()); + return 1; + } + $this->info('标题:' . $row['标题']); + $this->info("https://{$this->codingTeamDomain}.coding.net/p/{$this->codingProjectUri}" . + "/all/issues/${issueResult['Code']}"); + } + + return 0; + } + + private function getIssueTypes(ProjectSetting $projectSetting, array $row): void + { + if (empty($this->issueTypes)) { + $result = $projectSetting->getIssueTypes($this->codingToken, $this->codingProjectUri); + foreach ($result as $item) { + $this->issueTypes[$item['Name']] = $item; + } + } + if (!isset($this->issueTypes[$row['事项类型']])) { + throw new Exception('「' . $row['事项类型'] . '」类型不存在,请在项目设置中添加'); + } + } + + private function getStatusId(ProjectSetting $projectSetting, string $issueTypeName, string $statusName): int + { + if (!isset($this->issueTypeStatus[$issueTypeName])) { + $type = $this->issueTypes[$issueTypeName]['IssueType']; + $typeId = $this->issueTypes[$issueTypeName]['Id']; + $result = $projectSetting->getIssueTypeStatus($this->codingToken, $this->codingProjectUri, $type, $typeId); + foreach ($result as $item) { + $tmp = $item['IssueStatus']; + $this->issueTypeStatus[$issueTypeName][$tmp['Name']] = $tmp['Id']; + } + } + if (!isset($this->issueTypeStatus[$issueTypeName][$statusName])) { + throw new Exception('「' . $statusName . '」不存在,请在设置中添加'); + } + return intval($this->issueTypeStatus[$issueTypeName][$statusName]); + } + + private function createIssueByRow(ProjectSetting $projectSetting, Issue $issue, Iteration $iteration, array $row) + { + $this->getIssueTypes($projectSetting, $row); + $data = [ + 'Type' => $this->issueTypes[$row['事项类型']]['IssueType'], + 'IssueTypeId' => $this->issueTypes[$row['事项类型']]['Id'], + 'Name' => $row['标题'], + ]; + if (!empty($row['优先级'])) { + $data['Priority'] = \App\Models\Issue::PRIORITY_MAP[$row['优先级']]; + } + if (!empty($row['所属迭代'])) { + $data['IterationCode'] = $this->getIterationCode($iteration, $row['所属迭代']); + } + if (!empty($row['ParentCode'])) { + $data['ParentCode'] = $this->issueCodeMap[$row['ParentCode']]; + } + foreach ( + [ + 'Description' => '描述', + 'DueDate' => '截止日期', + 'StartDate' => '开始日期', + 'StoryPoint' => '故事点', + ] as $english => $chinese + ) { + if (!empty($row[$chinese])) { + $data[$english] = $row[$chinese]; + } + } + if (!empty($row['状态'])) { + $data['StatusId'] = $this->getStatusId($projectSetting, $row['事项类型'], $row['状态']); + } + $result = $issue->create($this->codingToken, $this->codingProjectUri, $data); + if (isset($row['ID'])) { + $this->issueCodeMap[$row['ID']] = intval($result['Code']); + } + return $result; + } + + private function getIterationCode(Iteration $iteration, string $name) + { + if (!isset($this->iterationMap[$name])) { + $result = $iteration->create($this->codingToken, $this->codingProjectUri, ['name' => $name]); + $this->iterationMap[$name] = $result['Code']; + } + return $this->iterationMap[$name]; + } +} diff --git a/app/Commands/IterationCreateCommand.php b/app/Commands/IterationCreateCommand.php new file mode 100644 index 0000000..80d79ed --- /dev/null +++ b/app/Commands/IterationCreateCommand.php @@ -0,0 +1,64 @@ +setCodingApi(); + + $data = []; + $startAt = Carbon::parse($this->option('start_at') ?? $this->ask('开始时间:', Carbon::today()->toDateString())); + $data['StartAt'] = $startAt->toDateString(); + $endAt = Carbon::parse($this->option('end_at') ?? $this->ask( + '结束时间:', + Carbon::today()->addDays(14)->toDateString() + )); + $data['EndAt'] = $endAt->toDateString(); + $data['Name'] = $this->option('name') ?? $this->ask('标题:', Iteration::generateName($startAt, $endAt)); + $data['Goal'] = $this->option('goal'); + $data['Assignee'] = $this->option('assignee'); + + $result = $iteration->create($this->codingToken, $this->codingProjectUri, $data); + + $this->info('创建成功'); + $this->info("https://{$this->codingTeamDomain}.coding.net/p/{$this->codingProjectUri}" . + "/iterations/${result['Code']}/issues"); + + return 0; + } +} diff --git a/app/Commands/ProjectGetIssueTypesCommand.php b/app/Commands/ProjectGetIssueTypesCommand.php new file mode 100644 index 0000000..6c81755 --- /dev/null +++ b/app/Commands/ProjectGetIssueTypesCommand.php @@ -0,0 +1,46 @@ +setCodingApi(); + + $result = $projectSetting->getIssueTypes($this->codingToken, $this->codingProjectUri); + + foreach ($result as $item) { + $this->info($item['Id'] . ' ' . $item['Name']); + } + + return 0; + } +} diff --git a/app/Models/Issue.php b/app/Models/Issue.php new file mode 100644 index 0000000..44b1797 --- /dev/null +++ b/app/Models/Issue.php @@ -0,0 +1,13 @@ + '0', + '中' => '1', + '高' => '2', + '紧急' => '3', + ]; +} diff --git a/composer.json b/composer.json index 02ffd15..a306282 100644 --- a/composer.json +++ b/composer.json @@ -26,10 +26,12 @@ "laravel-fans/confluence": "^0.1.1", "laravel-zero/framework": "^8.8", "league/html-to-markdown": "^5.0", + "nesbot/carbon": "^2.53", + "rap2hpoutre/fast-excel": "^3.1", "sinkcup/laravel-filesystem-cos-updated": "^4.0" }, "require-dev": { - "fakerphp/faker": "^1.14", + "fakerphp/faker": "^1.16", "mockery/mockery": "^1.4.3", "phpmd/phpmd": "^2.10", "phpunit/phpunit": "^9.5", diff --git a/composer.lock b/composer.lock index 48a5dda..0a7476d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,94 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b78aa1fa10887f82b88b1e7290803200", + "content-hash": "0134f2de9ac0b0a115a392c6dfb421dc", "packages": [ + { + "name": "box/spout", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/box/spout.git", + "reference": "9bdb027d312b732515b884a341c0ad70372c6295" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/box/spout/zipball/9bdb027d312b732515b884a341c0ad70372c6295", + "reference": "9bdb027d312b732515b884a341c0ad70372c6295", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlreader": "*", + "ext-zip": "*", + "php": ">=7.2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2", + "phpunit/phpunit": "^8" + }, + "suggest": { + "ext-iconv": "To handle non UTF-8 CSV files (if \"php-intl\" is not already installed or is too limited)", + "ext-intl": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Box\\Spout\\": "src/Spout" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Adrien Loison", + "email": "adrien@box.com" + } + ], + "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way", + "homepage": "https://www.github.com/box/spout", + "keywords": [ + "OOXML", + "csv", + "excel", + "memory", + "odf", + "ods", + "office", + "open", + "php", + "read", + "scale", + "spreadsheet", + "stream", + "write", + "xlsx" + ], + "support": { + "issues": "https://github.com/box/spout/issues", + "source": "https://github.com/box/spout/tree/v3.3.0" + }, + "time": "2021-05-14T21:18:09+00:00" + }, { "name": "brick/math", - "version": "0.9.2", + "version": "0.9.3", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0" + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", - "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", + "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", "shasum": "" }, "require": { @@ -27,7 +101,7 @@ "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.3.2" + "vimeo/psalm": "4.9.2" }, "type": "library", "autoload": { @@ -52,15 +126,19 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.2" + "source": "https://github.com/brick/math/tree/0.9.3" }, "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/brick/math", "type": "tidelift" } ], - "time": "2021-01-20T22:51:39+00:00" + "time": "2021-08-15T20:50:18+00:00" }, { "name": "doctrine/inflector", @@ -273,21 +351,21 @@ }, { "name": "filp/whoops", - "version": "2.13.0", + "version": "2.14.4", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "2edbc73a4687d9085c8f20f398eebade844e8424" + "reference": "f056f1fe935d9ed86e698905a957334029899895" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/2edbc73a4687d9085c8f20f398eebade844e8424", - "reference": "2edbc73a4687d9085c8f20f398eebade844e8424", + "url": "https://api.github.com/repos/filp/whoops/zipball/f056f1fe935d9ed86e698905a957334029899895", + "reference": "f056f1fe935d9ed86e698905a957334029899895", "shasum": "" }, "require": { "php": "^5.5.9 || ^7.0 || ^8.0", - "psr/log": "^1.0.1" + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "require-dev": { "mockery/mockery": "^0.9 || ^1.0", @@ -332,7 +410,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.13.0" + "source": "https://github.com/filp/whoops/tree/2.14.4" }, "funding": [ { @@ -340,35 +418,30 @@ "type": "github" } ], - "time": "2021-06-04T12:00:00+00:00" + "time": "2021-10-03T12:00:00+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.0.1", + "version": "v1.0.3", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb" + "reference": "296c015dc30ec4322168c5ad3ee5cc11dae827ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/7e279d2cd5d7fbb156ce46daada972355cea27bb", - "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/296c015dc30ec4322168c5ad3ee5cc11dae827ac", + "reference": "296c015dc30ec4322168c5ad3ee5cc11dae827ac", "shasum": "" }, "require": { - "php": "^7.0|^8.0", - "phpoption/phpoption": "^1.7.3" + "php": "^7.0 || ^8.0", + "phpoption/phpoption": "^1.8" }, "require-dev": { - "phpunit/phpunit": "^6.5|^7.5|^8.5|^9.0" + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, "autoload": { "psr-4": { "GrahamCampbell\\ResultType\\": "src/" @@ -381,7 +454,7 @@ "authors": [ { "name": "Graham Campbell", - "email": "graham@alt-three.com" + "email": "hello@gjcampbell.co.uk" } ], "description": "An Implementation Of The Result Type", @@ -394,7 +467,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.1" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.3" }, "funding": [ { @@ -406,35 +479,35 @@ "type": "tidelift" } ], - "time": "2020-04-13T13:17:36+00:00" + "time": "2021-10-17T19:48:54+00:00" }, { "name": "guzzlehttp/command", - "version": "1.1.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/guzzle/command.git", - "reference": "713b58dc242a96eb4c463413d628b2df59f69595" + "reference": "04b06e7f5ef37d814aeb3f4b6015b65a9d4412c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/command/zipball/713b58dc242a96eb4c463413d628b2df59f69595", - "reference": "713b58dc242a96eb4c463413d628b2df59f69595", + "url": "https://api.github.com/repos/guzzle/command/zipball/04b06e7f5ef37d814aeb3f4b6015b65a9d4412c5", + "reference": "04b06e7f5ef37d814aeb3f4b6015b65a9d4412c5", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^7.0.1", - "guzzlehttp/promises": "~1.3", - "guzzlehttp/psr7": "~1.0", - "php": ">=7.2.5" + "guzzlehttp/guzzle": "^7.3", + "guzzlehttp/promises": "^1.3", + "guzzlehttp/psr7": "^1.7 || ^2.0", + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5.5" + "phpunit/phpunit": "^8.5.19" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.9-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -447,6 +520,11 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", @@ -456,35 +534,55 @@ "name": "Jeremy Lindblom", "email": "jeremeamia@gmail.com", "homepage": "https://github.com/jeremeamia" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" } ], "description": "Provides the foundation for building command-based web service clients", "support": { "issues": "https://github.com/guzzle/command/issues", - "source": "https://github.com/guzzle/command/tree/1.1.0" + "source": "https://github.com/guzzle/command/tree/1.2.1" }, - "time": "2020-09-28T21:43:57+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/command", + "type": "tidelift" + } + ], + "time": "2021-09-05T19:12:19+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.3.0", + "version": "7.4.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "7008573787b430c1c1f650e3722d9bba59967628" + "reference": "868b3571a039f0ebc11ac8f344f4080babe2cb94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628", - "reference": "7008573787b430c1c1f650e3722d9bba59967628", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/868b3571a039f0ebc11ac8f344f4080babe2cb94", + "reference": "868b3571a039f0ebc11ac8f344f4080babe2cb94", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.4", - "guzzlehttp/psr7": "^1.7 || ^2.0", + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.8.3 || ^2.1", "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0" + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2" }, "provide": { "psr/http-client-implementation": "1.0" @@ -494,7 +592,7 @@ "ext-curl": "*", "php-http/client-integration-tests": "^3.0", "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "psr/log": "^1.1" + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { "ext-curl": "Required for CURL handler support", @@ -504,7 +602,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "7.3-dev" + "dev-master": "7.4-dev" } }, "autoload": { @@ -520,19 +618,43 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, { "name": "Márk Sági-Kazár", "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", @@ -546,7 +668,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.3.0" + "source": "https://github.com/guzzle/guzzle/tree/7.4.0" }, "funding": [ { @@ -558,38 +680,35 @@ "type": "github" }, { - "url": "https://github.com/alexeyshockov", - "type": "github" - }, - { - "url": "https://github.com/gmponos", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" } ], - "time": "2021-03-23T11:33:13+00:00" + "time": "2021-10-18T09:52:00+00:00" }, { "name": "guzzlehttp/guzzle-services", - "version": "1.2.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle-services.git", - "reference": "21e931a4784a132fa78ea7c37abf0e806b053c23" + "reference": "3731f120ce6856f4c71fff7cb2a27e263fe69f84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle-services/zipball/21e931a4784a132fa78ea7c37abf0e806b053c23", - "reference": "21e931a4784a132fa78ea7c37abf0e806b053c23", + "url": "https://api.github.com/repos/guzzle/guzzle-services/zipball/3731f120ce6856f4c71fff7cb2a27e263fe69f84", + "reference": "3731f120ce6856f4c71fff7cb2a27e263fe69f84", "shasum": "" }, "require": { - "guzzlehttp/command": "^1.1.0", - "guzzlehttp/guzzle": "^7.0.1", - "guzzlehttp/uri-template": "^0.2.0", - "php": ">=7.3" + "guzzlehttp/command": "^1.2", + "guzzlehttp/guzzle": "^7.3", + "guzzlehttp/psr7": "^1.7 || ^2.0", + "guzzlehttp/uri-template": "^0.2 || ^1.0", + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "~9.0" + "phpunit/phpunit": "^8.5.19 || ^9.5.8" }, "suggest": { "gimler/guzzle-description-loader": "^0.0.4" @@ -597,7 +716,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -610,41 +729,60 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, { "name": "Stefano Kowalke", "email": "blueduck@mail.org", - "homepage": "https://github.com/konafets" + "homepage": "https://github.com/Konafets" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" } ], "description": "Provides an implementation of the Guzzle Command library that uses Guzzle service descriptions to describe web services, serialize requests, and parse responses into easy to use model structures.", "support": { "issues": "https://github.com/guzzle/guzzle-services/issues", - "source": "https://github.com/guzzle/guzzle-services/tree/1.2.0" + "source": "https://github.com/guzzle/guzzle-services/tree/1.3.1" }, - "time": "2020-11-13T22:17:22+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle-services", + "type": "tidelift" + } + ], + "time": "2021-10-07T13:01:35+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.4.1", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "reference": "136a635e2b4a49b9d79e9c8fee267ffb257fdba0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/136a635e2b4a49b9d79e9c8fee267ffb257fdba0", + "reference": "136a635e2b4a49b9d79e9c8fee267ffb257fdba0", "shasum": "" }, "require": { @@ -656,7 +794,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { @@ -672,10 +810,25 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle promises library", @@ -684,35 +837,52 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" + "source": "https://github.com/guzzle/promises/tree/1.5.0" }, - "time": "2021-03-07T09:25:29+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-07T13:05:22+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.8.2", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91" + "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", + "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", "shasum": "" }, "require": { - "php": ">=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" @@ -720,30 +890,53 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "2.1-dev" } }, "autoload": { "psr-4": { "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, { "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -759,30 +952,44 @@ ], "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.1.0" }, - "time": "2021-04-26T09:17:50+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2021-10-06T17:43:30+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v0.2.0", + "version": "v1.0.1", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "db46525d6d8fee71033b73cc07160f3e5271a8ce" + "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/db46525d6d8fee71033b73cc07160f3e5271a8ce", - "reference": "db46525d6d8fee71033b73cc07160f3e5271a8ce", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2", + "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", + "php": "^7.2.5 || ^8.0", "symfony/polyfill-php80": "^1.17" }, "require-dev": { - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3", + "phpunit/phpunit": "^8.5.19 || ^9.5.8", "uri-template/tests": "1.0.0" }, "type": "library", @@ -801,22 +1008,35 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, { "name": "George Mponos", "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos", - "role": "Developer" + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" } ], "description": "A polyfill class for uri_template of PHP", - "homepage": "https://github.com/guzzlehttp/uri-template", "keywords": [ "guzzlehttp", "uri-template" ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/master" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.1" }, "funding": [ { @@ -824,24 +1044,28 @@ "type": "github" }, { - "url": "https://github.com/gmponos", + "url": "https://github.com/Nyholm", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" } ], - "time": "2020-07-21T13:45:09+00:00" + "time": "2021-10-07T12:57:01+00:00" }, { "name": "illuminate/bus", - "version": "v8.49.2", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/bus.git", - "reference": "8d91162f22338e70f27f9d9dea9b6f88f14dc5a6" + "reference": "a222094903c473b6b0ade0b0b0e20b83ae1472b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/bus/zipball/8d91162f22338e70f27f9d9dea9b6f88f14dc5a6", - "reference": "8d91162f22338e70f27f9d9dea9b6f88f14dc5a6", + "url": "https://api.github.com/repos/illuminate/bus/zipball/a222094903c473b6b0ade0b0b0e20b83ae1472b6", + "reference": "a222094903c473b6b0ade0b0b0e20b83ae1472b6", "shasum": "" }, "require": { @@ -881,20 +1105,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-06-28T13:56:26+00:00" + "time": "2021-09-15T14:32:50+00:00" }, { "name": "illuminate/cache", - "version": "v8.49.2", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/cache.git", - "reference": "6f496f435e832fc15926677f7eac7213120a302e" + "reference": "f4dda85d48e8dc6000432db16176f2c9fa0ff08e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/cache/zipball/6f496f435e832fc15926677f7eac7213120a302e", - "reference": "6f496f435e832fc15926677f7eac7213120a302e", + "url": "https://api.github.com/repos/illuminate/cache/zipball/f4dda85d48e8dc6000432db16176f2c9fa0ff08e", + "reference": "f4dda85d48e8dc6000432db16176f2c9fa0ff08e", "shasum": "" }, "require": { @@ -904,6 +1128,9 @@ "illuminate/support": "^8.0", "php": "^7.3|^8.0" }, + "provide": { + "psr/simple-cache-implementation": "1.0" + }, "suggest": { "ext-memcached": "Required to use the memcache cache driver.", "illuminate/database": "Required to use the database cache driver (^8.0).", @@ -938,20 +1165,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-06-24T22:01:18+00:00" + "time": "2021-09-15T14:32:50+00:00" }, { "name": "illuminate/collections", - "version": "v8.49.2", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/collections.git", - "reference": "f9311a35779750f38bed47456c031c4dc4962274" + "reference": "dca614ef58d05d01c5610ae9c91536f4afe6f695" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/f9311a35779750f38bed47456c031c4dc4962274", - "reference": "f9311a35779750f38bed47456c031c4dc4962274", + "url": "https://api.github.com/repos/illuminate/collections/zipball/dca614ef58d05d01c5610ae9c91536f4afe6f695", + "reference": "dca614ef58d05d01c5610ae9c91536f4afe6f695", "shasum": "" }, "require": { @@ -992,20 +1219,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-06-28T13:56:26+00:00" + "time": "2021-10-14T15:27:26+00:00" }, { "name": "illuminate/config", - "version": "v8.49.2", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/config.git", - "reference": "8441c542312b4d57220b1f942b947b6517c05008" + "reference": "70973cbbe0cb524658b6eeaa2386dd5b71de4b02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/config/zipball/8441c542312b4d57220b1f942b947b6517c05008", - "reference": "8441c542312b4d57220b1f942b947b6517c05008", + "url": "https://api.github.com/repos/illuminate/config/zipball/70973cbbe0cb524658b6eeaa2386dd5b71de4b02", + "reference": "70973cbbe0cb524658b6eeaa2386dd5b71de4b02", "shasum": "" }, "require": { @@ -1040,20 +1267,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2020-10-27T15:20:30+00:00" + "time": "2021-08-03T13:42:24+00:00" }, { "name": "illuminate/console", - "version": "v8.49.2", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/console.git", - "reference": "1f1ff88a2efbfc85f87ea7d8283acbefc5b56191" + "reference": "9d450507e8106002ec948c7108075cc0a72e5216" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/console/zipball/1f1ff88a2efbfc85f87ea7d8283acbefc5b56191", - "reference": "1f1ff88a2efbfc85f87ea7d8283acbefc5b56191", + "url": "https://api.github.com/repos/illuminate/console/zipball/9d450507e8106002ec948c7108075cc0a72e5216", + "reference": "9d450507e8106002ec948c7108075cc0a72e5216", "shasum": "" }, "require": { @@ -1100,20 +1327,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-06-04T13:29:57+00:00" + "time": "2021-10-14T18:05:05+00:00" }, { "name": "illuminate/container", - "version": "v8.49.2", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/container.git", - "reference": "382959676d85583f0e8fdd248bceb4b8762dc1ed" + "reference": "ef73feb5216ef97ab7023cf59c0c8dbbd5505a9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/container/zipball/382959676d85583f0e8fdd248bceb4b8762dc1ed", - "reference": "382959676d85583f0e8fdd248bceb4b8762dc1ed", + "url": "https://api.github.com/repos/illuminate/container/zipball/ef73feb5216ef97ab7023cf59c0c8dbbd5505a9d", + "reference": "ef73feb5216ef97ab7023cf59c0c8dbbd5505a9d", "shasum": "" }, "require": { @@ -1151,20 +1378,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-06-08T14:08:11+00:00" + "time": "2021-09-15T14:32:50+00:00" }, { "name": "illuminate/contracts", - "version": "v8.49.2", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/contracts.git", - "reference": "199fcedc161ba4a0b83feaddc4629f395dbf1641" + "reference": "ab4bb4ec3b36905ccf972c84f9aaa2bdd1153913" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/199fcedc161ba4a0b83feaddc4629f395dbf1641", - "reference": "199fcedc161ba4a0b83feaddc4629f395dbf1641", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/ab4bb4ec3b36905ccf972c84f9aaa2bdd1153913", + "reference": "ab4bb4ec3b36905ccf972c84f9aaa2bdd1153913", "shasum": "" }, "require": { @@ -1199,20 +1426,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-06-01T14:53:38+00:00" + "time": "2021-09-08T12:09:40+00:00" }, { "name": "illuminate/events", - "version": "v8.49.2", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/events.git", - "reference": "bd2941d4d55f5d357b203dc2ed81ac5c138593dc" + "reference": "b7f06cafb6c09581617f2ca05d69e9b159e5a35d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/events/zipball/bd2941d4d55f5d357b203dc2ed81ac5c138593dc", - "reference": "bd2941d4d55f5d357b203dc2ed81ac5c138593dc", + "url": "https://api.github.com/repos/illuminate/events/zipball/b7f06cafb6c09581617f2ca05d69e9b159e5a35d", + "reference": "b7f06cafb6c09581617f2ca05d69e9b159e5a35d", "shasum": "" }, "require": { @@ -1254,20 +1481,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-04-06T19:21:57+00:00" + "time": "2021-09-15T14:32:50+00:00" }, { "name": "illuminate/filesystem", - "version": "v8.49.2", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/filesystem.git", - "reference": "ae8d9051bc50c9551e6a251147b8dcdafcb60d32" + "reference": "f33219e5550f8f280169e933b91a95250920de06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/filesystem/zipball/ae8d9051bc50c9551e6a251147b8dcdafcb60d32", - "reference": "ae8d9051bc50c9551e6a251147b8dcdafcb60d32", + "url": "https://api.github.com/repos/illuminate/filesystem/zipball/f33219e5550f8f280169e933b91a95250920de06", + "reference": "f33219e5550f8f280169e933b91a95250920de06", "shasum": "" }, "require": { @@ -1316,20 +1543,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-06-18T15:48:00+00:00" + "time": "2021-07-20T13:46:01+00:00" }, { "name": "illuminate/log", - "version": "v8.54.0", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/log.git", - "reference": "d21261c49095b49124f7ac8391fb6385621bd0c1" + "reference": "56d0383bcd8f7c3ba2ff9868e47459998953f4d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/log/zipball/d21261c49095b49124f7ac8391fb6385621bd0c1", - "reference": "d21261c49095b49124f7ac8391fb6385621bd0c1", + "url": "https://api.github.com/repos/illuminate/log/zipball/56d0383bcd8f7c3ba2ff9868e47459998953f4d7", + "reference": "56d0383bcd8f7c3ba2ff9868e47459998953f4d7", "shasum": "" }, "require": { @@ -1365,11 +1592,11 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-06-28T14:05:06+00:00" + "time": "2021-10-05T16:21:49+00:00" }, { "name": "illuminate/macroable", - "version": "v8.49.2", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/macroable.git", @@ -1415,7 +1642,7 @@ }, { "name": "illuminate/pipeline", - "version": "v8.49.1", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/pipeline.git", @@ -1463,16 +1690,16 @@ }, { "name": "illuminate/support", - "version": "v8.49.1", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/support.git", - "reference": "0ecdbb8e61919e972c120c0956fb1c0a3b085967" + "reference": "066058e2f017d818cf6fe37ae7b103ed1312f76a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/0ecdbb8e61919e972c120c0956fb1c0a3b085967", - "reference": "0ecdbb8e61919e972c120c0956fb1c0a3b085967", + "url": "https://api.github.com/repos/illuminate/support/zipball/066058e2f017d818cf6fe37ae7b103ed1312f76a", + "reference": "066058e2f017d818cf6fe37ae7b103ed1312f76a", "shasum": "" }, "require": { @@ -1491,8 +1718,8 @@ }, "suggest": { "illuminate/filesystem": "Required to use the composer class (^8.0).", - "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3).", - "ramsey/uuid": "Required to use Str::uuid() (^4.0).", + "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3|^2.0.2).", + "ramsey/uuid": "Required to use Str::uuid() (^4.2.2).", "symfony/process": "Required to use the composer class (^5.1.4).", "symfony/var-dumper": "Required to use the dd function (^5.1.4).", "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.2)." @@ -1527,20 +1754,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-07-02T16:40:19+00:00" + "time": "2021-10-18T13:43:07+00:00" }, { "name": "illuminate/testing", - "version": "v8.49.2", + "version": "v8.65.0", "source": { "type": "git", "url": "https://github.com/illuminate/testing.git", - "reference": "12271f68f49bb1063754f7d9d168af1e719b251a" + "reference": "be26a610573fafa9ca893e465aaea3c6e4a35779" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/testing/zipball/12271f68f49bb1063754f7d9d168af1e719b251a", - "reference": "12271f68f49bb1063754f7d9d168af1e719b251a", + "url": "https://api.github.com/repos/illuminate/testing/zipball/be26a610573fafa9ca893e465aaea3c6e4a35779", + "reference": "be26a610573fafa9ca893e465aaea3c6e4a35779", "shasum": "" }, "require": { @@ -1555,8 +1782,8 @@ "illuminate/console": "Required to assert console commands (^8.0).", "illuminate/database": "Required to assert databases (^8.0).", "illuminate/http": "Required to assert responses (^8.0).", - "mockery/mockery": "Required to use mocking (^1.4.2).", - "phpunit/phpunit": "Required to use assertions and run tests (^8.5.8|^9.3.3)." + "mockery/mockery": "Required to use mocking (^1.4.4).", + "phpunit/phpunit": "Required to use assertions and run tests (^8.5.19|^9.5.8)." }, "type": "library", "extra": { @@ -1585,7 +1812,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-07-04T10:19:03+00:00" + "time": "2021-10-18T13:37:32+00:00" }, { "name": "jolicode/jolinotif", @@ -1714,16 +1941,16 @@ }, { "name": "laravel-zero/foundation", - "version": "v8.49.2", + "version": "v8.62.0", "source": { "type": "git", "url": "https://github.com/laravel-zero/foundation.git", - "reference": "c2b68f71867899cf6acf0a4215f30be939d11481" + "reference": "717c8e4cf37fe5cea63941860b1dd08840ebbe80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel-zero/foundation/zipball/c2b68f71867899cf6acf0a4215f30be939d11481", - "reference": "c2b68f71867899cf6acf0a4215f30be939d11481", + "url": "https://api.github.com/repos/laravel-zero/foundation/zipball/717c8e4cf37fe5cea63941860b1dd08840ebbe80", + "reference": "717c8e4cf37fe5cea63941860b1dd08840ebbe80", "shasum": "" }, "require": { @@ -1753,9 +1980,9 @@ "laravel" ], "support": { - "source": "https://github.com/laravel-zero/foundation/tree/v8.49.2" + "source": "https://github.com/laravel-zero/foundation/tree/v8.62.0" }, - "time": "2021-07-07T09:37:38+00:00" + "time": "2021-10-01T14:32:32+00:00" }, { "name": "laravel-zero/framework", @@ -1850,16 +2077,16 @@ }, { "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": "" }, "require": { @@ -1932,7 +2159,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": [ { @@ -1940,20 +2167,20 @@ "type": "other" } ], - "time": "2021-06-23T21:56:05+00:00" + "time": "2021-08-17T13:49:42+00:00" }, { "name": "league/html-to-markdown", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/thephpleague/html-to-markdown.git", - "reference": "c4dbebbebe0fe454b6b38e6c683a977615bd7dc2" + "reference": "e5600a2c5ce7b7571b16732c7086940f56f7abec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/c4dbebbebe0fe454b6b38e6c683a977615bd7dc2", - "reference": "c4dbebbebe0fe454b6b38e6c683a977615bd7dc2", + "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/e5600a2c5ce7b7571b16732c7086940f56f7abec", + "reference": "e5600a2c5ce7b7571b16732c7086940f56f7abec", "shasum": "" }, "require": { @@ -2009,7 +2236,7 @@ ], "support": { "issues": "https://github.com/thephpleague/html-to-markdown/issues", - "source": "https://github.com/thephpleague/html-to-markdown/tree/5.0.0" + "source": "https://github.com/thephpleague/html-to-markdown/tree/5.0.1" }, "funding": [ { @@ -2025,24 +2252,24 @@ "type": "github" }, { - "url": "https://www.patreon.com/colinodell", - "type": "patreon" + "url": "https://tidelift.com/funding/github/packagist/league/html-to-markdown", + "type": "tidelift" } ], - "time": "2021-03-29T01:29:08+00:00" + "time": "2021-09-17T20:00:27+00:00" }, { "name": "league/mime-type-detection", - "version": "1.7.0", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3" + "reference": "b38b25d7b372e9fddb00335400467b223349fd7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3", - "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b38b25d7b372e9fddb00335400467b223349fd7e", + "reference": "b38b25d7b372e9fddb00335400467b223349fd7e", "shasum": "" }, "require": { @@ -2073,7 +2300,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.7.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.8.0" }, "funding": [ { @@ -2085,28 +2312,28 @@ "type": "tidelift" } ], - "time": "2021-01-18T20:58:21+00:00" + "time": "2021-09-25T08:23:19+00:00" }, { "name": "monolog/monolog", - "version": "2.3.2", + "version": "2.3.5", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "71312564759a7db5b789296369c1a264efc43aad" + "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/71312564759a7db5b789296369c1a264efc43aad", - "reference": "71312564759a7db5b789296369c1a264efc43aad", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", + "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", "shasum": "" }, "require": { "php": ">=7.2", - "psr/log": "^1.0.1" + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0" + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" }, "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", @@ -2114,14 +2341,14 @@ "elasticsearch/elasticsearch": "^7", "graylog2/gelf-php": "^1.4.2", "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4", + "php-amqplib/php-amqplib": "~2.4 || ^3", "php-console/php-console": "^3.1.3", "phpspec/prophecy": "^1.6.1", "phpstan/phpstan": "^0.12.91", "phpunit/phpunit": "^8.5", "predis/predis": "^1.1", "rollbar/rollbar": "^1.3", - "ruflin/elastica": ">=0.90 <7.0.1", + "ruflin/elastica": ">=0.90@dev", "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { @@ -2129,8 +2356,11 @@ "doctrine/couchdb": "Allow sending log messages to a CouchDB server", "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", "ext-mbstring": "Allow to work properly with unicode symbols", "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", @@ -2169,7 +2399,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.3.2" + "source": "https://github.com/Seldaek/monolog/tree/2.3.5" }, "funding": [ { @@ -2181,31 +2411,32 @@ "type": "tidelift" } ], - "time": "2021-07-23T07:42:52+00:00" + "time": "2021-10-01T21:08:31+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": "" }, "require": { "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", @@ -2219,8 +2450,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": [ @@ -2274,37 +2505,36 @@ "type": "tidelift" } ], - "time": "2021-06-28T22:38:45+00:00" + "time": "2021-09-06T09:29:23+00:00" }, { "name": "nunomaduro/collision", - "version": "v5.5.0", + "version": "v5.10.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "b5cb36122f1c142c3c3ee20a0ae778439ef0244b" + "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/b5cb36122f1c142c3c3ee20a0ae778439ef0244b", - "reference": "b5cb36122f1c142c3c3ee20a0ae778439ef0244b", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/3004cfa49c022183395eabc6d0e5207dfe498d00", + "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00", "shasum": "" }, "require": { "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.7.2", + "filp/whoops": "^2.14.3", "php": "^7.3 || ^8.0", "symfony/console": "^5.0" }, "require-dev": { "brianium/paratest": "^6.1", "fideloper/proxy": "^4.4.1", - "friendsofphp/php-cs-fixer": "^2.17.3", "fruitcake/laravel-cors": "^2.0.3", - "laravel/framework": "^9.0", + "laravel/framework": "8.x-dev", "nunomaduro/larastan": "^0.6.2", "nunomaduro/mock-final-classes": "^1.0", - "orchestra/testbench": "^7.0", + "orchestra/testbench": "^6.0", "phpstan/phpstan": "^0.12.64", "phpunit/phpunit": "^9.5.0" }, @@ -2362,7 +2592,7 @@ "type": "patreon" } ], - "time": "2021-06-22T20:47:22+00:00" + "time": "2021-09-20T15:06:32+00:00" }, { "name": "nunomaduro/laravel-console-summary", @@ -2425,16 +2655,16 @@ }, { "name": "nunomaduro/laravel-console-task", - "version": "v1.6.0", + "version": "v1.6.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/laravel-console-task.git", - "reference": "c49ffbb33d9a750e60a1f8649f2f6dcc4114990a" + "reference": "de3062d80caa61be1dfde4ec3b84232871ef7f73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/laravel-console-task/zipball/c49ffbb33d9a750e60a1f8649f2f6dcc4114990a", - "reference": "c49ffbb33d9a750e60a1f8649f2f6dcc4114990a", + "url": "https://api.github.com/repos/nunomaduro/laravel-console-task/zipball/de3062d80caa61be1dfde4ec3b84232871ef7f73", + "reference": "de3062d80caa61be1dfde4ec3b84232871ef7f73", "shasum": "" }, "require": { @@ -2443,7 +2673,7 @@ "php": "^7.2.5|^8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5.8|^9.0" + "phpunit/phpunit": "^8.5.21|^9.5.10" }, "type": "library", "extra": { @@ -2483,7 +2713,7 @@ "issues": "https://github.com/nunomaduro/laravel-console-task/issues", "source": "https://github.com/nunomaduro/laravel-console-task" }, - "time": "2020-10-30T14:47:00+00:00" + "time": "2021-10-19T11:33:38+00:00" }, { "name": "nunomaduro/laravel-desktop-notifier", @@ -2557,29 +2787,29 @@ }, { "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": "" }, "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": { @@ -2598,7 +2828,7 @@ }, { "name": "Graham Campbell", - "email": "graham@alt-three.com" + "email": "hello@gjcampbell.co.uk" } ], "description": "Option Type for PHP", @@ -2610,7 +2840,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": [ { @@ -2622,7 +2852,7 @@ "type": "tidelift" } ], - "time": "2020-07-20T17:29:33+00:00" + "time": "2021-08-28T21:27:29+00:00" }, { "name": "psr/container", @@ -2724,6 +2954,61 @@ }, "time": "2020-06-29T06:28:15+00:00" }, + { + "name": "psr/http-factory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/master" + }, + "time": "2019-04-30T12:38:16+00:00" + }, { "name": "psr/http-message", "version": "1.0.1", @@ -2924,20 +3209,21 @@ }, { "name": "ramsey/collection", - "version": "1.1.3", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1" + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1", - "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1", + "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", "shasum": "" }, "require": { - "php": "^7.2 || ^8" + "php": "^7.3 || ^8", + "symfony/polyfill-php81": "^1.23" }, "require-dev": { "captainhook/captainhook": "^5.3", @@ -2947,6 +3233,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", @@ -2974,7 +3261,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", @@ -2985,7 +3272,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.2" }, "funding": [ { @@ -2997,53 +3284,54 @@ "type": "tidelift" } ], - "time": "2021-01-21T17:40:04+00:00" + "time": "2021-10-10T03:01:02+00:00" }, { "name": "ramsey/uuid", - "version": "4.1.1", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "cd4032040a750077205918c86049aa0f43d22947" + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/cd4032040a750077205918c86049aa0f43d22947", - "reference": "cd4032040a750077205918c86049aa0f43d22947", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", "shasum": "" }, "require": { "brick/math": "^0.8 || ^0.9", "ext-json": "*", - "php": "^7.2 || ^8", + "php": "^7.2 || ^8.0", "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8" + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" }, "replace": { "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.", @@ -3056,7 +3344,10 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true } }, "autoload": { @@ -3072,7 +3363,6 @@ "MIT" ], "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "homepage": "https://github.com/ramsey/uuid", "keywords": [ "guid", "identifier", @@ -3080,16 +3370,82 @@ ], "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.3" }, "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-09-25T23:10:38+00:00" + }, + { + "name": "rap2hpoutre/fast-excel", + "version": "v3.1.0", + "source": { + "type": "git", + "url": "https://github.com/rap2hpoutre/fast-excel.git", + "reference": "01e309600b2ead458ce0d4399c70746677b08cca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rap2hpoutre/fast-excel/zipball/01e309600b2ead458ce0d4399c70746677b08cca", + "reference": "01e309600b2ead458ce0d4399c70746677b08cca", + "shasum": "" + }, + "require": { + "box/spout": "^3", + "illuminate/support": "5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0 || ^7.0 || ^8.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "illuminate/database": "^6.20.12 || ^7.30.4 || ^8.24.0", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Rap2hpoutre\\FastExcel\\Providers\\FastExcelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Rap2hpoutre\\FastExcel\\": "src/" + }, + "files": [ + "src/functions/fastexcel.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "rap2h", + "email": "raphaelht@gmail.com" + } + ], + "description": "Fast Excel import/export for Laravel", + "keywords": [ + "csv", + "excel", + "laravel", + "xls", + "xlsx" + ], + "support": { + "issues": "https://github.com/rap2hpoutre/fast-excel/issues", + "source": "https://github.com/rap2hpoutre/fast-excel/tree/v3.1.0" + }, + "time": "2021-10-13T20:12:19+00:00" }, { "name": "sinkcup/confluence-sdk-php", @@ -3242,16 +3598,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": "" }, "require": { @@ -3259,11 +3615,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", @@ -3271,10 +3628,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", @@ -3320,7 +3677,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.2" + "source": "https://github.com/symfony/console/tree/v5.3.7" }, "funding": [ { @@ -3336,7 +3693,7 @@ "type": "tidelift" } ], - "time": "2021-06-12T09:42:48+00:00" + "time": "2021-08-25T20:02:16+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3407,22 +3764,21 @@ }, { "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": "" }, "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": { @@ -3456,7 +3812,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": [ { @@ -3472,24 +3828,25 @@ "type": "tidelift" } ], - "time": "2021-06-24T08:13:00+00:00" + "time": "2021-08-28T15:07:08+00:00" }, { "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": "" }, "require": { - "php": ">=7.2.5" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -3517,7 +3874,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": [ { @@ -3533,7 +3890,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T12:52:38+00:00" + "time": "2021-08-04T21:20:46+00:00" }, { "name": "symfony/polyfill-ctype", @@ -3616,16 +3973,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": "" }, "require": { @@ -3677,7 +4034,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": [ { @@ -3693,7 +4050,7 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2021-05-27T12:26:48+00:00" }, { "name": "symfony/polyfill-intl-normalizer", @@ -3781,16 +4138,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": "" }, "require": { @@ -3841,7 +4198,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": [ { @@ -3857,7 +4214,7 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2021-05-27T12:26:48+00:00" }, { "name": "symfony/polyfill-php73", @@ -3940,16 +4297,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": "" }, "require": { @@ -4003,7 +4360,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": [ { @@ -4019,25 +4376,104 @@ "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": "" + }, + "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": "" }, "require": { "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -4065,7 +4501,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": [ { @@ -4081,7 +4517,7 @@ "type": "tidelift" } ], - "time": "2021-06-12T10:15:01+00:00" + "time": "2021-08-04T21:20:46+00:00" }, { "name": "symfony/service-contracts", @@ -4164,16 +4600,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": "" }, "require": { @@ -4227,7 +4663,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.3" + "source": "https://github.com/symfony/string/tree/v5.3.7" }, "funding": [ { @@ -4243,27 +4679,27 @@ "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.9", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "380b8c9e944d0e364b25f28e8e555241eb49c01c" + "reference": "6e69f3551c1a3356cf6ea8d019bf039a0f8b6886" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/380b8c9e944d0e364b25f28e8e555241eb49c01c", - "reference": "380b8c9e944d0e364b25f28e8e555241eb49c01c", + "url": "https://api.github.com/repos/symfony/translation/zipball/6e69f3551c1a3356cf6ea8d019bf039a0f8b6886", + "reference": "6e69f3551c1a3356cf6ea8d019bf039a0f8b6886", "shasum": "" }, "require": { "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": { @@ -4277,7 +4713,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", @@ -4322,7 +4758,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.9" }, "funding": [ { @@ -4338,7 +4774,7 @@ "type": "tidelift" } ], - "time": "2021-06-27T12:22:47+00:00" + "time": "2021-08-26T08:22:53+00:00" }, { "name": "symfony/translation-contracts", @@ -4420,22 +4856,22 @@ }, { "name": "symfony/var-dumper", - "version": "v5.3.3", + "version": "v5.3.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "46aa709affb9ad3355bd7a810f9662d71025c384" + "reference": "eaaea4098be1c90c8285543e1356a09c8aa5c8da" }, "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/eaaea4098be1c90c8285543e1356a09c8aa5c8da", + "reference": "eaaea4098be1c90c8285543e1356a09c8aa5c8da", "shasum": "" }, "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", @@ -4488,7 +4924,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.3" + "source": "https://github.com/symfony/var-dumper/tree/v5.3.8" }, "funding": [ { @@ -4504,35 +4940,35 @@ "type": "tidelift" } ], - "time": "2021-06-24T08:13:00+00:00" + "time": "2021-09-24T15:59:58+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.3.0", + "version": "v5.3.1", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56" + "reference": "accaddf133651d4b5cf81a119f25296736ffc850" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/b3eac5c7ac896e52deab4a99068e3f4ab12d9e56", - "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/accaddf133651d4b5cf81a119f25296736ffc850", + "reference": "accaddf133651d4b5cf81a119f25296736ffc850", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.1", + "graham-campbell/result-type": "^1.0.2", "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.7.4", - "symfony/polyfill-ctype": "^1.17", - "symfony/polyfill-mbstring": "^1.17", - "symfony/polyfill-php80": "^1.17" + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5.1" + "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" }, "suggest": { "ext-filter": "Required to use the boolean validator." @@ -4555,13 +4991,11 @@ "authors": [ { "name": "Graham Campbell", - "email": "graham@alt-three.com", - "homepage": "https://gjcampbell.co.uk/" + "email": "hello@gjcampbell.co.uk" }, { "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "https://vancelucas.com/" + "email": "vance@vancelucas.com" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -4572,7 +5006,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.3.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.3.1" }, "funding": [ { @@ -4584,7 +5018,7 @@ "type": "tidelift" } ], - "time": "2021-01-20T15:23:13+00:00" + "time": "2021-10-02T19:24:42+00:00" }, { "name": "voku/portable-ascii", @@ -4722,21 +5156,21 @@ "packages-dev": [ { "name": "composer/xdebug-handler", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496" + "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/964adcdd3a28bf9ed5d9ac6450064e0d71ed7496", - "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339", + "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0" + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { "phpstan/phpstan": "^0.12.55", @@ -4766,7 +5200,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.1" + "source": "https://github.com/composer/xdebug-handler/tree/2.0.2" }, "funding": [ { @@ -4782,7 +5216,7 @@ "type": "tidelift" } ], - "time": "2021-05-05T19:37:51+00:00" + "time": "2021-07-31T17:03:58+00:00" }, { "name": "doctrine/instantiator", @@ -4855,21 +5289,21 @@ }, { "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": "" }, "require": { "php": "^7.1 || ^8.0", - "psr/container": "^1.0", + "psr/container": "^1.0 || ^2.0", "symfony/deprecation-contracts": "^2.2" }, "conflict": { @@ -4889,7 +5323,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.15-dev" + "dev-main": "v1.16-dev" } }, "autoload": { @@ -4914,9 +5348,9 @@ ], "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": "hamcrest/hamcrest-php", @@ -4971,16 +5405,16 @@ }, { "name": "mockery/mockery", - "version": "1.4.3", + "version": "1.4.4", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea" + "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/d1339f64479af1bee0e82a0413813fe5345a54ea", - "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea", + "url": "https://api.github.com/repos/mockery/mockery/zipball/e01123a0e847d52d186c5eb4b9bf58b0c6d00346", + "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346", "shasum": "" }, "require": { @@ -5037,9 +5471,9 @@ ], "support": { "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.4.3" + "source": "https://github.com/mockery/mockery/tree/1.4.4" }, - "time": "2021-02-24T09:51:49+00:00" + "time": "2021-09-13T15:28:59+00:00" }, { "name": "myclabs/deep-copy", @@ -5101,16 +5535,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.11.0", + "version": "v4.13.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94" + "reference": "50953a2691a922aa1769461637869a0a2faa3f53" }, "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/50953a2691a922aa1769461637869a0a2faa3f53", + "reference": "50953a2691a922aa1769461637869a0a2faa3f53", "shasum": "" }, "require": { @@ -5151,22 +5585,22 @@ ], "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.13.0" }, - "time": "2021-07-03T13:36:55+00:00" + "time": "2021-09-20T12:20:58+00:00" }, { "name": "pdepend/pdepend", - "version": "2.9.1", + "version": "2.10.1", "source": { "type": "git", "url": "https://github.com/pdepend/pdepend.git", - "reference": "1632f0cee84512ffd6dde71e58536b3b06528c41" + "reference": "30452fdabb3dfca89f4bf977abc44adc5391e062" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/1632f0cee84512ffd6dde71e58536b3b06528c41", - "reference": "1632f0cee84512ffd6dde71e58536b3b06528c41", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/30452fdabb3dfca89f4bf977abc44adc5391e062", + "reference": "30452fdabb3dfca89f4bf977abc44adc5391e062", "shasum": "" }, "require": { @@ -5202,7 +5636,7 @@ "description": "Official version of pdepend to be handled with Composer", "support": { "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.9.1" + "source": "https://github.com/pdepend/pdepend/tree/2.10.1" }, "funding": [ { @@ -5210,20 +5644,20 @@ "type": "tidelift" } ], - "time": "2021-04-15T21:36:28+00:00" + "time": "2021-10-11T12:15:18+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": "" }, "require": { @@ -5268,9 +5702,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", @@ -5378,16 +5812,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { @@ -5398,7 +5832,8 @@ "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -5428,22 +5863,22 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2020-09-03T19:13:55+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", "shasum": "" }, "require": { @@ -5451,7 +5886,8 @@ "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "*" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -5477,28 +5913,28 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" }, - "time": "2020-09-17T18:55:26+00:00" + "time": "2021-10-02T14:08:47+00:00" }, { "name": "phpmd/phpmd", - "version": "2.10.1", + "version": "2.10.2", "source": { "type": "git", "url": "https://github.com/phpmd/phpmd.git", - "reference": "bd5ef43d1dcaf7272605027c959c1c5ff3761f7a" + "reference": "1bc74db7cf834662d83abebae265be11bb2eec3a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmd/phpmd/zipball/bd5ef43d1dcaf7272605027c959c1c5ff3761f7a", - "reference": "bd5ef43d1dcaf7272605027c959c1c5ff3761f7a", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/1bc74db7cf834662d83abebae265be11bb2eec3a", + "reference": "1bc74db7cf834662d83abebae265be11bb2eec3a", "shasum": "" }, "require": { "composer/xdebug-handler": "^1.0 || ^2.0", "ext-xml": "*", - "pdepend/pdepend": "^2.9.1", + "pdepend/pdepend": "^2.10.0", "php": ">=5.3.9" }, "require-dev": { @@ -5554,7 +5990,7 @@ "support": { "irc": "irc://irc.freenode.org/phpmd", "issues": "https://github.com/phpmd/phpmd/issues", - "source": "https://github.com/phpmd/phpmd/tree/2.10.1" + "source": "https://github.com/phpmd/phpmd/tree/2.10.2" }, "funding": [ { @@ -5562,37 +5998,37 @@ "type": "tidelift" } ], - "time": "2021-05-11T17:16:16+00:00" + "time": "2021-07-22T09:56:23+00:00" }, { "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": "" }, "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": { @@ -5627,29 +6063,29 @@ ], "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", - "version": "9.2.6", + "version": "9.2.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218", + "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", + "nikic/php-parser": "^4.12.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -5698,7 +6134,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7" }, "funding": [ { @@ -5706,7 +6142,7 @@ "type": "github" } ], - "time": "2021-03-28T07:26:59+00:00" + "time": "2021-09-17T05:39:03+00:00" }, { "name": "phpunit/php-file-iterator", @@ -5951,16 +6387,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.6", + "version": "9.5.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb" + "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a", + "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a", "shasum": "" }, "require": { @@ -5972,11 +6408,11 @@ "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", - "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-code-coverage": "^9.2.7", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -6038,7 +6474,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10" }, "funding": [ { @@ -6050,7 +6486,7 @@ "type": "github" } ], - "time": "2021-06-23T05:14:38+00:00" + "time": "2021-09-25T07:38:51+00:00" }, { "name": "sebastian/cli-parser", @@ -6905,6 +7341,7 @@ "type": "github" } ], + "abandoned": true, "time": "2020-09-28T06:45:17+00:00" }, { @@ -7018,16 +7455,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/f268ca40d54617c6e06757f83f699775c9b3ff2e", + "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e", "shasum": "" }, "require": { @@ -7070,20 +7507,20 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-04-09T00:54:41+00:00" + "time": "2021-10-11T04:00:11+00:00" }, { "name": "symfony/config", - "version": "v5.3.3", + "version": "v5.3.4", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "a69e0c55528b47df88d3c4067ddedf32d485d662" + "reference": "4268f3059c904c61636275182707f81645517a37" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/a69e0c55528b47df88d3c4067ddedf32d485d662", - "reference": "a69e0c55528b47df88d3c4067ddedf32d485d662", + "url": "https://api.github.com/repos/symfony/config/zipball/4268f3059c904c61636275182707f81645517a37", + "reference": "4268f3059c904c61636275182707f81645517a37", "shasum": "" }, "require": { @@ -7091,7 +7528,7 @@ "symfony/deprecation-contracts": "^2.1", "symfony/filesystem": "^4.4|^5.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.15", + "symfony/polyfill-php80": "^1.16", "symfony/polyfill-php81": "^1.22" }, "conflict": { @@ -7133,7 +7570,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.3.3" + "source": "https://github.com/symfony/config/tree/v5.3.4" }, "funding": [ { @@ -7149,27 +7586,27 @@ "type": "tidelift" } ], - "time": "2021-06-24T08:13:00+00:00" + "time": "2021-07-21T12:40:44+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.3.3", + "version": "v5.3.8", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "e421c4f161848740ad1fcf09b12391ddca168d95" + "reference": "e39c344e06a3ceab531ebeb6c077e6652c4a0829" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e421c4f161848740ad1fcf09b12391ddca168d95", - "reference": "e421c4f161848740ad1fcf09b12391ddca168d95", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e39c344e06a3ceab531ebeb6c077e6652c4a0829", + "reference": "e39c344e06a3ceab531ebeb6c077e6652c4a0829", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/container": "^1.1.1", "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.15", + "symfony/polyfill-php80": "^1.16", "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { @@ -7221,7 +7658,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.3.3" + "source": "https://github.com/symfony/dependency-injection/tree/v5.3.8" }, "funding": [ { @@ -7237,25 +7674,26 @@ "type": "tidelift" } ], - "time": "2021-06-24T08:13:00+00:00" + "time": "2021-09-21T20:52:44+00:00" }, { "name": "symfony/filesystem", - "version": "v5.3.3", + "version": "v5.3.4", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "19b71c8f313b411172dd5f470fd61f24466d79a9" + "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/19b71c8f313b411172dd5f470fd61f24466d79a9", - "reference": "19b71c8f313b411172dd5f470fd61f24466d79a9", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/343f4fe324383ca46792cae728a3b6e2f708fb32", + "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8" + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -7283,86 +7721,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.3.3" - }, - "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-06-30T07:27:52+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" + "source": "https://github.com/symfony/filesystem/tree/v5.3.4" }, "funding": [ { @@ -7378,20 +7737,20 @@ "type": "tidelift" } ], - "time": "2021-05-21T13:25:03+00:00" + "time": "2021-07-21T12:40:44+00:00" }, { "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": "" }, "require": { @@ -7420,7 +7779,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": [ { @@ -7428,7 +7787,7 @@ "type": "github" } ], - "time": "2020-07-12T23:59:07+00:00" + "time": "2021-07-28T10:34:58+00:00" } ], "aliases": [], diff --git a/config/app.php b/config/app.php index 3d4c02e..6916200 100644 --- a/config/app.php +++ b/config/app.php @@ -57,6 +57,7 @@ App\Providers\AppServiceProvider::class, \LaravelFans\Confluence\ConfluenceServiceProvider::class, \Dscmall\Flysystem\Cos\CosStorageServiceProvider::class, + \Rap2hpoutre\FastExcel\Providers\FastExcelServiceProvider::class, ], ]; diff --git a/tests/Feature/IssueCreateCommandTest.php b/tests/Feature/IssueCreateCommandTest.php new file mode 100755 index 0000000..fb43c9f --- /dev/null +++ b/tests/Feature/IssueCreateCommandTest.php @@ -0,0 +1,59 @@ +codingToken = $this->faker->md5; + config(['coding.token' => $this->codingToken]); + $this->codingTeamDomain = $this->faker->domainWord; + config(['coding.team_domain' => $this->codingTeamDomain]); + $this->codingProjectUri = $this->faker->slug; + config(['coding.project_uri' => $this->codingProjectUri]); + } + + public function testCreateSuccess() + { + $mock = \Mockery::mock(Issue::class, [])->makePartial(); + $this->instance(Issue::class, $mock); + + $mock->shouldReceive('create')->times(1)->andReturn(json_decode( + file_get_contents($this->dataDir . 'coding/' . 'CreateIssueResponse.json'), + true + )['Response']['Issue']); + + $this->artisan('issue:create') + ->expectsQuestion('类型:', 'REQUIREMENT') + ->expectsQuestion('标题:', $this->faker->title) + ->expectsOutput('创建成功') + ->expectsOutput("https://$this->codingTeamDomain.coding.net/p/$this->codingProjectUri/all/issues/2742") + ->assertExitCode(0); + } + + public function testCreateFailed() + { + $mock = \Mockery::mock(Issue::class, [])->makePartial(); + $this->instance(Issue::class, $mock); + + $mock->shouldReceive('create')->times(1)->andThrow(\Exception::class, json_decode( + file_get_contents($this->dataDir . 'coding/' . 'CreateIssueFailedResponse.json'), + true + )['Response']['Error']['Message']); + + $this->artisan('issue:create') + ->expectsQuestion('类型:', 'REQUIREMENT') + ->expectsQuestion('标题:', $this->faker->title) + ->expectsOutput('Error: issue_custom_field_required') + ->assertExitCode(1); + } +} diff --git a/tests/Feature/IssueImportCommandTest.php b/tests/Feature/IssueImportCommandTest.php new file mode 100755 index 0000000..518767b --- /dev/null +++ b/tests/Feature/IssueImportCommandTest.php @@ -0,0 +1,216 @@ +token = $this->faker->md5; + config(['coding.token' => $this->token]); + $this->teamDomain = $this->faker->domainWord; + config(['coding.team_domain' => $this->teamDomain]); + $this->projectUri = $this->faker->slug; + config(['coding.project_uri' => $this->projectUri]); + } + + public function testImportSuccess() + { + $projectSettingMock = \Mockery::mock(ProjectSetting::class, [])->makePartial(); + $this->instance(ProjectSetting::class, $projectSettingMock); + + $projectSettingMock->shouldReceive('getIssueTypes')->times(1)->andReturn(json_decode( + file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueTypeListResponse.json'), + true + )['Response']['IssueTypes']); + $requirementStatus = json_decode( + file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueStatusListResponse.json'), + true + )['Response']['ProjectIssueStatusList']; + $projectSettingMock->shouldReceive('getIssueTypeStatus')->times(5)->andReturn( + $requirementStatus, + $requirementStatus, + $requirementStatus, + $requirementStatus, + [ + ['IssueStatus' => ['Id' => 22, 'Name' => '处理中']], + ['IssueStatus' => ['Id' => 23, 'Name' => '待处理']], + ] + ); + + $issueMock = \Mockery::mock(Issue::class, [])->makePartial(); + $this->instance(Issue::class, $issueMock); + $iterationMock = \Mockery::mock(Iteration::class, [])->makePartial(); + $this->instance(Iteration::class, $iterationMock); + + $response = json_decode( + file_get_contents($this->dataDir . 'coding/' . 'CreateIssueResponse.json'), + true + )['Response']['Issue']; + $results = []; + for ($i = 1; $i <= 21; $i++) { + $response['Code'] = $i; + $results[] = $response; + } + $iterationMock->shouldReceive('create')->times(2)->andReturn(json_decode( + file_get_contents($this->dataDir . 'coding/' . 'CreateIterationResponse.json'), + true + )['Response']['Iteration']); + + $issueMock->shouldReceive('create')->times(21)->andReturn(...$results); + + $this->artisan('issue:import', ['file' => $this->dataDir . 'coding/scrum-issues.csv']) + ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/1") + ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/2") + ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/3") + ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/20") + ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/21") + ->assertExitCode(0); + } + + public function testImportUserStorySuccess() + { + $projectSettingMock = \Mockery::mock(ProjectSetting::class, [])->makePartial(); + $this->instance(ProjectSetting::class, $projectSettingMock); + + $projectSettingMock->shouldReceive('getIssueTypes')->times(1)->andReturn(json_decode( + file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueTypeListResponse.json'), + true + )['Response']['IssueTypes']); + $projectSettingMock->shouldReceive('getIssueTypeStatus')->times(1)->andReturn(json_decode( + file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueStatusListResponse.json'), + true + )['Response']['ProjectIssueStatusList']); + + $issueMock = \Mockery::mock(Issue::class, [])->makePartial(); + $this->instance(Issue::class, $issueMock); + $iterationMock = \Mockery::mock(Iteration::class, [])->makePartial(); + $this->instance(Iteration::class, $iterationMock); + + $response = json_decode( + file_get_contents($this->dataDir . 'coding/' . 'CreateIssueResponse.json'), + true + )['Response']['Issue']; + $response['Code'] = $this->faker->randomNumber(); + $result = $response; + $iterationMock->shouldReceive('create')->times(1)->andReturn(json_decode( + file_get_contents($this->dataDir . 'coding/' . 'CreateIterationResponse.json'), + true + )['Response']['Iteration']); + + $issueMock->shouldReceive('create')->times(1)->withArgs([ + $this->token, + $this->projectUri, + [ + 'Type' => 'REQUIREMENT', + 'IssueTypeId' => 213218, + 'Name' => '用户可通过手机号注册账户', + 'Priority' => "1", + 'IterationCode' => 2746, + 'DueDate' => '2021-10-21', + 'StoryPoint' => '2', + 'StatusId' => 1227037, + ] + ])->andReturn($result); + + $this->artisan('issue:import', ['file' => $this->dataDir . 'coding/scrum-issue-5.csv']) + ->expectsOutput('标题:用户可通过手机号注册账户') + ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/" . + $result['Code']) + ->assertExitCode(0); + } + + public function testImportSubTask() + { + $projectSettingMock = \Mockery::mock(ProjectSetting::class, [])->makePartial(); + $this->instance(ProjectSetting::class, $projectSettingMock); + + $projectSettingMock->shouldReceive('getIssueTypes')->times(1)->andReturn(json_decode( + file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueTypeListResponse.json'), + true + )['Response']['IssueTypes']); + $projectSettingMock->shouldReceive('getIssueTypeStatus')->times(2)->andReturn(json_decode( + file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueStatusListResponse.json'), + true + )['Response']['ProjectIssueStatusList']); + + $issueMock = \Mockery::mock(Issue::class, [])->makePartial(); + $this->instance(Issue::class, $issueMock); + + $response = json_decode( + file_get_contents($this->dataDir . 'coding/' . 'CreateIssueResponse.json'), + true + )['Response']['Issue']; + + $parentIssue = $response; + $issueMock->shouldReceive('create')->times(1)->withArgs([ + $this->token, + $this->projectUri, + [ + 'Type' => 'REQUIREMENT', + 'IssueTypeId' => 213218, + 'Name' => '用户可通过手机号注册账户', + 'DueDate' => '2021-10-21', + 'StoryPoint' => '2', + 'StatusId' => 1227037, + ] + ])->andReturn($parentIssue); + + $subTask1 = $response; + $subTask1['Code'] = $this->faker->randomNumber(); + $issueMock->shouldReceive('create')->times(1)->withArgs([ + $this->token, + $this->projectUri, + [ + 'Type' => 'SUB_TASK', + 'IssueTypeId' => 213222, + 'Name' => '完成手机号注册的短信验证码发送接口', + 'Priority' => "0", + 'ParentCode' => 2742, + 'StatusId' => 1227058, + ] + ])->andReturn($subTask1); + + $subTask2 = $response; + $subTask2['Code'] = $this->faker->randomNumber(); + $issueMock->shouldReceive('create')->times(1)->withArgs([ + $this->token, + $this->projectUri, + [ + 'Type' => 'SUB_TASK', + 'IssueTypeId' => 213222, + 'Name' => '完成通过手机号注册用户的接口', + 'Priority' => "1", + 'ParentCode' => 2742, + 'StatusId' => 1227058, + ] + ])->andReturn($subTask2); + + $this->artisan('issue:import', ['file' => $this->dataDir . 'coding/scrum-issues-5-6-7.csv']) + ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/2742") + ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/" . $subTask1['Code']) + ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/all/issues/" . $subTask2['Code']) + ->assertExitCode(0); + } + + public function testImportFailedIssueTypeNotExists() + { + $mock = \Mockery::mock(ProjectSetting::class, [])->makePartial(); + $this->instance(ProjectSetting::class, $mock); + $mock->shouldReceive('getIssueTypes')->times(1)->andReturn([]); + + $this->artisan('issue:import', ['file' => $this->dataDir . 'coding/scrum-issues.csv']) + ->expectsOutput('Error: 「史诗」类型不存在,请在项目设置中添加') + ->assertExitCode(1); + } +} diff --git a/tests/Feature/IterationCreateCommandTest.php b/tests/Feature/IterationCreateCommandTest.php new file mode 100755 index 0000000..b7746e6 --- /dev/null +++ b/tests/Feature/IterationCreateCommandTest.php @@ -0,0 +1,48 @@ +faker->md5; + config(['coding.token' => $codingToken]); + $this->teamDomain = $this->faker->domainWord; + config(['coding.team_domain' => $this->teamDomain]); + $this->projectUri = $this->faker->slug; + config(['coding.project_uri' => $this->projectUri]); + } + + public function testCreateSuccess() + { + $mock = \Mockery::mock(Iteration::class, [])->makePartial(); + $this->instance(Iteration::class, $mock); + + $mock->shouldReceive('create')->times(1)->andReturn(json_decode( + file_get_contents($this->dataDir . 'coding/' . 'CreateIterationResponse.json'), + true + )['Response']['Iteration']); + + $startAt = $this->faker->date(); + $endAt = Carbon::parse($startAt)->addDays($this->faker->randomNumber())->toDateString(); + $this->artisan('iteration:create', [ + '--goal' => $this->faker->text(), + '--assignee' => $this->faker->randomNumber(), + ]) + ->expectsQuestion('开始时间:', $startAt) + ->expectsQuestion('结束时间:', $endAt) + ->expectsQuestion('标题:', $startAt . '~' . $endAt . ' 迭代') + ->expectsOutput('创建成功') + ->expectsOutput("https://$this->teamDomain.coding.net/p/$this->projectUri/iterations/2746/issues") + ->assertExitCode(0); + } +} diff --git a/tests/Feature/ProjectGetIssueTypesCommandTest.php b/tests/Feature/ProjectGetIssueTypesCommandTest.php new file mode 100755 index 0000000..e900124 --- /dev/null +++ b/tests/Feature/ProjectGetIssueTypesCommandTest.php @@ -0,0 +1,39 @@ +faker->md5; + config(['coding.token' => $codingToken]); + $codingTeamDomain = $this->faker->domainWord; + config(['coding.team_domain' => $codingTeamDomain]); + $codingProjectUri = $this->faker->slug; + config(['coding.project_uri' => $codingProjectUri]); + } + + public function testCreateSuccess() + { + $mock = \Mockery::mock(ProjectSetting::class, [])->makePartial(); + $this->instance(ProjectSetting::class, $mock); + + $mock->shouldReceive('getIssueTypes')->times(1)->andReturn(json_decode( + file_get_contents($this->dataDir . 'coding/' . 'DescribeProjectIssueTypeListResponse.json'), + true + )['Response']['IssueTypes']); + + $this->artisan('project:get-issue-types') + ->expectsOutput('213217 史诗') + ->expectsOutput('213218 用户故事') + ->expectsOutput('213220 任务') + ->expectsOutput('213221 缺陷') + ->expectsOutput('213222 子工作项') + ->assertExitCode(0); + } +} diff --git a/tests/Feature/WikiImportCommandTest.php b/tests/Feature/WikiImportCommandTest.php index 3b01fc6..5486c5f 100755 --- a/tests/Feature/WikiImportCommandTest.php +++ b/tests/Feature/WikiImportCommandTest.php @@ -17,7 +17,7 @@ protected function setUp(): void { parent::setUp(); $this->createWikiResponse = json_decode( - file_get_contents($this->dataDir . 'coding/createWikiResponse.json'), + file_get_contents($this->dataDir . 'coding/CreateWikiResponse.json'), true )['Response']['Data']; } diff --git a/tests/Unit/CodingIssueTest.php b/tests/Unit/CodingIssueTest.php new file mode 100644 index 0000000..861fe1b --- /dev/null +++ b/tests/Unit/CodingIssueTest.php @@ -0,0 +1,81 @@ +dataDir . 'coding/CreateIssueResponse.json'); + $codingToken = $this->faker->md5; + $codingProjectUri = $this->faker->slug; + $data = [ + 'Type' => 'REQUIREMENT', + 'Name' => $this->faker->title, + 'Priority' => $this->faker->randomElement([0, 1, 2, 3]), + ]; + + $clientMock = $this->getMockBuilder(Client::class)->getMock(); + $clientMock->expects($this->once()) + ->method('request') + ->with( + 'POST', + 'https://e.coding.net/open-api', + [ + 'headers' => [ + 'Accept' => 'application/json', + 'Authorization' => "token ${codingToken}", + 'Content-Type' => 'application/json' + ], + 'json' => array_merge([ + 'Action' => 'CreateIssue', + 'ProjectName' => $codingProjectUri, + ], $data) + ] + ) + ->willReturn(new Response(200, [], $responseBody)); + $coding = new Issue($clientMock); + $result = $coding->create($codingToken, $codingProjectUri, $data); + $this->assertEquals(json_decode($responseBody, true)['Response']['Issue'], $result); + } + + public function testCreateFailed() + { + $responseBody = file_get_contents($this->dataDir . 'coding/CreateIssueFailedResponse.json'); + $codingToken = $this->faker->md5; + $codingProjectUri = $this->faker->slug; + $data = [ + 'Type' => 'REQUIREMENT', + 'Name' => $this->faker->title, + 'Priority' => $this->faker->randomElement([0, 1, 2, 3]), + ]; + + $clientMock = $this->getMockBuilder(Client::class)->getMock(); + $clientMock->expects($this->once()) + ->method('request') + ->with( + 'POST', + 'https://e.coding.net/open-api', + [ + 'headers' => [ + 'Accept' => 'application/json', + 'Authorization' => "token ${codingToken}", + 'Content-Type' => 'application/json' + ], + 'json' => array_merge([ + 'Action' => 'CreateIssue', + 'ProjectName' => $codingProjectUri, + ], $data) + ] + ) + ->willReturn(new Response(200, [], $responseBody)); + $coding = new Issue($clientMock); + $this->expectException(\Exception::class); + $coding->create($codingToken, $codingProjectUri, $data); + } +} diff --git a/tests/Unit/CodingIterationTest.php b/tests/Unit/CodingIterationTest.php new file mode 100644 index 0000000..b0cdb5b --- /dev/null +++ b/tests/Unit/CodingIterationTest.php @@ -0,0 +1,59 @@ +dataDir . 'coding/CreateIterationResponse.json'); + $codingToken = $this->faker->md5; + $codingProjectUri = $this->faker->slug; + $data = [ + 'Name' => $this->faker->title, + ]; + + $clientMock = $this->getMockBuilder(Client::class)->getMock(); + $clientMock->expects($this->once()) + ->method('request') + ->with( + 'POST', + 'https://e.coding.net/open-api', + [ + 'headers' => [ + 'Accept' => 'application/json', + 'Authorization' => "token ${codingToken}", + 'Content-Type' => 'application/json' + ], + 'json' => array_merge([ + 'Action' => 'CreateIteration', + 'ProjectName' => $codingProjectUri, + ], $data) + ] + ) + ->willReturn(new Response(200, [], $responseBody)); + $coding = new Iteration($clientMock); + $result = $coding->create($codingToken, $codingProjectUri, $data); + $this->assertEquals(json_decode($responseBody, true)['Response']['Iteration'], $result); + } + + public function testGenerateName() + { + $startAt = Carbon::parse('2021-10-20'); + $endAt = Carbon::parse('2021-10-30'); + $result = Iteration::generateName($startAt, $endAt); + $this->assertEquals("2021/10/20-10/30 迭代", $result); + + $startAt = Carbon::parse('2021-12-27'); + $endAt = Carbon::parse('2022-01-07'); + $result = Iteration::generateName($startAt, $endAt); + $this->assertEquals("2021/12/27-2022/01/07 迭代", $result); + } +} diff --git a/tests/Unit/CodingProjectSettingTest.php b/tests/Unit/CodingProjectSettingTest.php new file mode 100644 index 0000000..3766757 --- /dev/null +++ b/tests/Unit/CodingProjectSettingTest.php @@ -0,0 +1,75 @@ +dataDir . 'coding/DescribeProjectIssueTypeListResponse.json'); + $codingToken = $this->faker->md5; + $codingProjectUri = $this->faker->slug; + + $clientMock = $this->getMockBuilder(Client::class)->getMock(); + $clientMock->expects($this->once()) + ->method('request') + ->with( + 'POST', + 'https://e.coding.net/open-api', + [ + 'headers' => [ + 'Accept' => 'application/json', + 'Authorization' => "token ${codingToken}", + 'Content-Type' => 'application/json' + ], + 'json' => array_merge([ + 'Action' => 'DescribeProjectIssueTypeList', + 'ProjectName' => $codingProjectUri, + ]) + ] + ) + ->willReturn(new Response(200, [], $responseBody)); + $coding = new ProjectSetting($clientMock); + $result = $coding->getIssueTypes($codingToken, $codingProjectUri); + $this->assertEquals(json_decode($responseBody, true)['Response']['IssueTypes'], $result); + } + + public function testGetIssueTypeStatusSuccess() + { + $responseBody = file_get_contents($this->dataDir . 'coding/DescribeProjectIssueStatusListResponse.json'); + $codingToken = $this->faker->md5; + $codingProjectUri = $this->faker->slug; + + $issueType = $this->faker->randomElement(['DEFECT', 'REQUIREMENT', 'MISSION', 'EPIC', 'SUB_TASK']); + $issueTypeId = $this->faker->randomNumber(); + $clientMock = $this->getMockBuilder(Client::class)->getMock(); + $clientMock->expects($this->once()) + ->method('request') + ->with( + 'POST', + 'https://e.coding.net/open-api', + [ + 'headers' => [ + 'Accept' => 'application/json', + 'Authorization' => "token ${codingToken}", + 'Content-Type' => 'application/json' + ], + 'json' => array_merge([ + 'Action' => 'DescribeProjectIssueStatusList', + 'ProjectName' => $codingProjectUri, + 'IssueType' => $issueType, + 'IssueTypeId' => $issueTypeId, + ]) + ] + ) + ->willReturn(new Response(200, [], $responseBody)); + $coding = new ProjectSetting($clientMock); + $result = $coding->getIssueTypeStatus($codingToken, $codingProjectUri, $issueType, $issueTypeId); + $this->assertEquals(json_decode($responseBody, true)['Response']['ProjectIssueStatusList'], $result); + } +} diff --git a/tests/Unit/CodingWikiTest.php b/tests/Unit/CodingWikiTest.php index 84bc55c..90d035c 100644 --- a/tests/Unit/CodingWikiTest.php +++ b/tests/Unit/CodingWikiTest.php @@ -39,7 +39,7 @@ protected function setUp(): void public function testCreateWiki() { - $responseBody = file_get_contents($this->dataDir . 'coding/createWikiResponse.json'); + $responseBody = file_get_contents($this->dataDir . 'coding/CreateWikiResponse.json'); $codingToken = $this->faker->md5; $codingProjectUri = $this->faker->slug; $article = [ @@ -74,7 +74,7 @@ public function testCreateWiki() public function testCreateUploadToken() { - $responseBody = file_get_contents($this->dataDir . 'coding/createUploadTokenResponse.json'); + $responseBody = file_get_contents($this->dataDir . 'coding/CreateUploadTokenResponse.json'); $codingToken = $this->faker->md5; $codingProjectUri = $this->faker->slug; $fileName = $this->faker->word; diff --git a/tests/data/coding/CreateIssueFailedResponse.json b/tests/data/coding/CreateIssueFailedResponse.json new file mode 100644 index 0000000..e236145 --- /dev/null +++ b/tests/data/coding/CreateIssueFailedResponse.json @@ -0,0 +1,9 @@ +{ + "Response" : { + "Error" : { + "Code" : "FailedOperation", + "Message" : "issue_custom_field_required" + }, + "RequestId" : "504114e3-bcb7-5b51-6ff7-7bb5cb04f121" + } +} diff --git a/tests/data/coding/CreateIssueResponse.json b/tests/data/coding/CreateIssueResponse.json new file mode 100644 index 0000000..4e31528 --- /dev/null +++ b/tests/data/coding/CreateIssueResponse.json @@ -0,0 +1,124 @@ +{ + "Response" : { + "Issue" : { + "Assignee" : { + "Avatar" : "", + "Email" : "", + "GlobalKey" : "", + "Id" : 0, + "Name" : "", + "Phone" : "", + "Status" : 0, + "TeamGlobalKey" : "", + "TeamId" : 0 + }, + "Code" : 2742, + "CompletedAt" : 0, + "CreatedAt" : 1634541907501, + "Creator" : { + "Avatar" : "https://coding-net-production-static-ci.codehub.cn/2cb665a3-bebc-4b09-aa00-2b6df3e33edc.jpg?imageMogr2/auto-orient/format/jpeg/cut/400x400x0x0", + "Email" : "", + "GlobalKey" : "", + "Id" : 183478, + "Name" : "sinkcup", + "Phone" : "", + "Status" : 1, + "TeamGlobalKey" : "", + "TeamId" : 0 + }, + "CustomFields" : [], + "DefectType" : { + "IconUrl" : "", + "Id" : 0, + "Name" : "" + }, + "Description" : "", + "DueDate" : 0, + "Epic" : { + "Assignee" : { + "Avatar" : "", + "Email" : "", + "GlobalKey" : "", + "Id" : 0, + "Name" : "", + "Phone" : "", + "Status" : 0, + "TeamGlobalKey" : "", + "TeamId" : 0 + }, + "Code" : 0, + "IssueStatusId" : 0, + "IssueStatusName" : "", + "Name" : "", + "Priority" : "", + "Type" : "" + }, + "Files" : [], + "IssueStatusId" : 1227034, + "IssueStatusName" : "未开始", + "IssueStatusType" : "TODO", + "IssueTypeDetail" : { + "Description" : "需求是指用户解决某一个问题或达到某一目标所需的软件功能。", + "Id" : 213219, + "IsSystem" : true, + "IssueType" : "REQUIREMENT", + "Name" : "需求" + }, + "IssueTypeId" : 213219, + "Iteration" : { + "Code" : 0, + "Name" : "", + "Status" : "" + }, + "IterationId" : 0, + "Labels" : [], + "Name" : "issue by curl", + "Parent" : { + "Assignee" : { + "Avatar" : "", + "Email" : "", + "GlobalKey" : "", + "Id" : 0, + "Name" : "", + "Phone" : "", + "Status" : 0, + "TeamGlobalKey" : "", + "TeamId" : 0 + }, + "Code" : 0, + "IssueStatusId" : 0, + "IssueStatusName" : "", + "IssueStatusType" : "", + "IssueTypeDetail" : { + "Description" : "", + "Id" : 0, + "IsSystem" : false, + "IssueType" : "", + "Name" : "" + }, + "Name" : "", + "Priority" : "", + "Type" : "" + }, + "ParentType" : "REQUIREMENT", + "Priority" : "0", + "ProjectModule" : { + "Id" : 0, + "Name" : "" + }, + "RequirementType" : { + "Id" : 0, + "Name" : "" + }, + "StartDate" : 0, + "StoryPoint" : "", + "SubTasks" : [], + "ThirdLinks" : [], + "Type" : "REQUIREMENT", + "UpdatedAt" : 1634541907501, + "Watchers" : [], + "WorkingHours" : 0 + }, + "RequestId" : "5b7bae01-f26f-16d7-0d61-c8fa67ea0472" + } +} \ No newline at end of file diff --git a/tests/data/coding/CreateIterationResponse.json b/tests/data/coding/CreateIterationResponse.json new file mode 100644 index 0000000..a73f9c8 --- /dev/null +++ b/tests/data/coding/CreateIterationResponse.json @@ -0,0 +1,24 @@ +{ + "Response" : { + "Iteration" : { + "Assignee" : 0, + "Code" : 2746, + "CompletedCount" : 0, + "CompletedPercent" : 0, + "Completer" : 0, + "CreatedAt" : 1634697259529, + "Creator" : 183478, + "Deleter" : 0, + "EndAt" : -28800000, + "Goal" : "", + "Name" : "it by cli", + "ProcessingCount" : 0, + "StartAt" : -28800000, + "Starter" : 0, + "Status" : "WAIT_PROCESS", + "UpdatedAt" : 1634697259529, + "WaitProcessCount" : 0 + }, + "RequestId" : "58777aa6-e6e4-155a-c99f-415a33615ca6" + } +} diff --git a/tests/data/coding/createUploadTokenResponse.json b/tests/data/coding/CreateUploadTokenResponse.json similarity index 100% rename from tests/data/coding/createUploadTokenResponse.json rename to tests/data/coding/CreateUploadTokenResponse.json diff --git a/tests/data/coding/createWikiResponse.json b/tests/data/coding/CreateWikiResponse.json similarity index 100% rename from tests/data/coding/createWikiResponse.json rename to tests/data/coding/CreateWikiResponse.json diff --git a/tests/data/coding/DescribeProjectIssueStatusListResponse.json b/tests/data/coding/DescribeProjectIssueStatusListResponse.json new file mode 100644 index 0000000..09c446a --- /dev/null +++ b/tests/data/coding/DescribeProjectIssueStatusListResponse.json @@ -0,0 +1,79 @@ +{ + "Response" : { + "ProjectIssueStatusList" : [ + { + "CreatedAt" : 1634639726000, + "IsDefault" : true, + "IssueStatus" : { + "CreatedAt" : 1572178128000, + "Description" : "", + "Id" : 1227034, + "Index" : 3, + "IsSystem" : true, + "Name" : "未开始", + "Type" : "TODO", + "UpdatedAt" : 1572178128000 + }, + "IssueStatusId" : 1227034, + "IssueType" : "REQUIREMENT", + "Sort" : 0, + "UpdatedAt" : 1634639726000 + }, + { + "CreatedAt" : 1634639726000, + "IsDefault" : false, + "IssueStatus" : { + "CreatedAt" : 1572178128000, + "Description" : "", + "Id" : 1227037, + "Index" : 4, + "IsSystem" : true, + "Name" : "处理中", + "Type" : "PROCESSING", + "UpdatedAt" : 1572178128000 + }, + "IssueStatusId" : 1227037, + "IssueType" : "REQUIREMENT", + "Sort" : 0, + "UpdatedAt" : 1634639726000 + }, + { + "CreatedAt" : 1634639726000, + "IsDefault" : false, + "IssueStatus" : { + "CreatedAt" : 1572178128000, + "Description" : "", + "Id" : 1227040, + "Index" : 5, + "IsSystem" : true, + "Name" : "待验证", + "Type" : "PROCESSING", + "UpdatedAt" : 1572178128000 + }, + "IssueStatusId" : 1227040, + "IssueType" : "REQUIREMENT", + "Sort" : 0, + "UpdatedAt" : 1634639726000 + }, + { + "CreatedAt" : 1634639726000, + "IsDefault" : false, + "IssueStatus" : { + "CreatedAt" : 1572178128000, + "Description" : "", + "Id" : 1227058, + "Index" : 11, + "IsSystem" : true, + "Name" : "已完成", + "Type" : "COMPLETED", + "UpdatedAt" : 1572178128000 + }, + "IssueStatusId" : 1227058, + "IssueType" : "REQUIREMENT", + "Sort" : 0, + "UpdatedAt" : 1634639726000 + } + ], + "RequestId" : "3a8bb049-e28f-01c9-9990-0f17b92952c4" + } +} diff --git a/tests/data/coding/DescribeProjectIssueTypeListResponse.json b/tests/data/coding/DescribeProjectIssueTypeListResponse.json new file mode 100644 index 0000000..d18c46c --- /dev/null +++ b/tests/data/coding/DescribeProjectIssueTypeListResponse.json @@ -0,0 +1,52 @@ +{ + "Response" : { + "IssueTypes" : [ + { + "Description" : "史诗是一个较大的功能或特性,可以分解为多个较小的需求或任务。通常其需要分多次迭代才可完成。", + "Id" : 213217, + "IsSystem" : true, + "IssueType" : "EPIC", + "Name" : "史诗", + "SplitTargetIssueTypeId" : [], + "SplitType" : "UNSPLITTABLE" + }, + { + "Description" : "用户故事是敏捷框架中最小的工作单元,是从用户角度描述软件如何为其带来特定的价值。", + "Id" : 213218, + "IsSystem" : true, + "IssueType" : "REQUIREMENT", + "Name" : "用户故事", + "SplitTargetIssueTypeId" : [], + "SplitType" : "ALL_REQUIREMENT" + }, + { + "Description" : "任务是指为实现某个目标或需求所进行的具体活动。", + "Id" : 213220, + "IsSystem" : true, + "IssueType" : "MISSION", + "Name" : "任务", + "SplitTargetIssueTypeId" : [], + "SplitType" : "UNSPLITTABLE" + }, + { + "Description" : "缺陷是指软件不符合最初定义的业务需求的现象,缺陷管理用于跟踪这些问题和错误。", + "Id" : 213221, + "IsSystem" : true, + "IssueType" : "DEFECT", + "Name" : "缺陷", + "SplitTargetIssueTypeId" : [], + "SplitType" : "UNSPLITTABLE" + }, + { + "Description" : "在敏捷模式下,将一个事项拆分成更小的块。", + "Id" : 213222, + "IsSystem" : true, + "IssueType" : "SUB_TASK", + "Name" : "子工作项", + "SplitTargetIssueTypeId" : [], + "SplitType" : "UNSPLITTABLE" + } + ], + "RequestId" : "9f7e8405-943d-fb02-96bf-3ee3c63e0fe6" + } +} diff --git a/tests/data/coding/scrum-issue-5.csv b/tests/data/coding/scrum-issue-5.csv new file mode 100644 index 0000000..26d5df2 --- /dev/null +++ b/tests/data/coding/scrum-issue-5.csv @@ -0,0 +1,2 @@ +ID,事项类型,标题,描述,状态,创建时间,创建人,更新时间,所属迭代,故事点,处理人,缺陷类型,优先级,截止日期,模块,标签,关注人,开始日期 +5,用户故事,用户可通过手机号注册账户,,处理中,2021-10-19 11:26:37,sinkcup,2021-10-19 11:26:37,第 1 次迭代,2,sinkcup,,中,2021-10-21,,,, diff --git a/tests/data/coding/scrum-issues-5-6-7.csv b/tests/data/coding/scrum-issues-5-6-7.csv new file mode 100644 index 0000000..65d7046 --- /dev/null +++ b/tests/data/coding/scrum-issues-5-6-7.csv @@ -0,0 +1,4 @@ +ID,ParentCode,事项类型,标题,描述,状态,创建时间,创建人,更新时间,所属迭代,故事点,处理人,缺陷类型,优先级,截止日期,模块,标签,关注人,开始日期 +7,5,子工作项,完成通过手机号注册用户的接口,,已完成,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,,,,,中,,,,, +6,5,子工作项,完成手机号注册的短信验证码发送接口,,已完成,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,,,,,低,,,,, +5,,用户故事,用户可通过手机号注册账户,,处理中,2021-10-19 11:26:37,sinkcup,2021-10-19 11:26:37,,2,sinkcup,,,2021-10-21,,,, diff --git a/tests/data/coding/scrum-issues.csv b/tests/data/coding/scrum-issues.csv new file mode 100644 index 0000000..17c86a4 --- /dev/null +++ b/tests/data/coding/scrum-issues.csv @@ -0,0 +1,32 @@ +ID,ParentCode,事项类型,标题,描述,状态,创建时间,创建人,更新时间,所属迭代,故事点,处理人,缺陷类型,优先级,截止日期,模块,标签,关注人,开始日期 +23,,缺陷,商品详情页中商品价格字体应当显示为红色并且加粗,"步骤: + +测试环境中,打开商品列表页; +点击任意商品进详情页。 +测试结果:商品的价格字体显示为正常大小,颜色为黑色。 +预期结果:商品价格字体为红色加粗。",待处理,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,,,,,中,,,,, +22,,缺陷,登录页输入正确的用户名和密码后提示“用户不存在”,"步骤: +测试环境中,输入URL https://mywebsite.com/login 进入登录页; +输入用户名 Admin 和密码 mypassword; +点击“登录”按钮。 +测试结果:页面提示“用户不存在”。 +预期结果:提示“登录成功”并且页面自动跳转到首页。",处理中,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,,,sinkcup,,中,,,,, +21,,任务,编制新功能的帮助文档并发布,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,,,,,中,,,,, +20,,任务,编写脚本将 Excel 中的线下订单转换为商城后台订单,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,第 2 次迭代,5,,,中,,,,, +19,,任务,注册腾讯云账户,搭建测试环境和生产环境服务器,,处理中,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,第 1 次迭代,5,sinkcup,,中,,,,, +18,,用户故事,用户可对未支付的订单执行取消订单操作,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,,,,,中,,,,, +17,,用户故事,管理员可在商城后台对订单执行发货操作,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,第 2 次迭代,3,,,中,,,,, +16,,用户故事,用户可在手机端搜索并查看指定的订单详情,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,第 2 次迭代,1,,,中,,,,, +15,,用户故事,通过访问邀请链接可注册成为商城用户,,未开始,2021-10-19 11:26:39,sinkcup,2021-10-19 11:26:39,第 2 次迭代,2,,,中,,,,, +14,,用户故事,管理员可取消未发货且状态异常的订单,,未开始,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 2 次迭代,3,,,中,,,,, +13,,用户故事,用户可在“个人信息”中编辑个人基本信息,包括修改密码,,未开始,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 2 次迭代,2,sinkcup,,中,,,,, +12,,用户故事,管理员可在商城后台搜索订单,,未开始,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,2,,,中,,,,, +11,,用户故事,管理员可在商城后台手工为用户下单,,未开始,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,5,,,中,,,,, +10,,用户故事,用户可在个人中心的“个人信息”中查看个人信息,,已完成,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,1,,,中,,,,, +9,,用户故事,用户可通过短信验证码登录商城,,处理中,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,1,,,中,,,,, +8,5,子工作项,完成用户注册页面控件并集成后端接口,,处理中,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,,,,中,,,,, +7,5,子工作项,完成通过手机号注册用户的接口,,已完成,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,,,,中,,,,, +6,5,子工作项,完成手机号注册的短信验证码发送接口,,已完成,2021-10-19 11:26:38,sinkcup,2021-10-19 11:26:38,第 1 次迭代,,,,中,,,,, +5,,用户故事,用户可通过手机号注册账户,,处理中,2021-10-19 11:26:37,sinkcup,2021-10-19 11:26:37,第 1 次迭代,2,sinkcup,,中,,,,, +2,,史诗,订单管理,订单管理将实现用户的订单列表查询、订单详情、订单改价、订单地址修改、申请售后、订单取消等功能,未开始,2021-10-19 11:26:37,sinkcup,2021-10-19 11:26:37,,,,,中,,,,, +1,,史诗,用户管理,用户管理将实现用户的注册、邀请、用户查询、个人信息管理、删除用户、注销账户等功能。,未开始,2021-10-19 11:26:37,sinkcup,2021-10-19 11:26:37,,,,,中,,,,,