From 342f44177396bcbb9ea3a61734e32b56852a0f04 Mon Sep 17 00:00:00 2001 From: Volodymyr Komarov Date: Sat, 11 Mar 2023 13:30:40 +0200 Subject: [PATCH 1/2] Add graph and total endpoints for wallet and tag base --- app/src/Controller/Tags/ChargesController.php | 2 +- .../Wallets/Charges/ChargesController.php | 54 ++-- .../Wallets/Charges/TagsController.php | 28 +- .../Controller/Wallets/IndexController.php | 12 +- app/src/Controller/Wallets/TagsController.php | 5 +- app/src/Repository/ChargeRepository.php | 6 + .../Service/Statistics/ChargeAmountGraph.php | 19 +- .../Wallets/Charges/ChargesControllerTest.php | 259 ++++++++++++++++ .../Wallets/Charges/TagsControllerTest.php | 287 ++++++++++++++++++ .../Wallets/IndexControllerTest.php | 97 ++++++ .../Controller/Wallets/TagsControllerTest.php | 102 +++++++ 11 files changed, 833 insertions(+), 38 deletions(-) diff --git a/app/src/Controller/Tags/ChargesController.php b/app/src/Controller/Tags/ChargesController.php index 4ca2408..33ada39 100644 --- a/app/src/Controller/Tags/ChargesController.php +++ b/app/src/Controller/Tags/ChargesController.php @@ -90,7 +90,7 @@ public function graph(int $id, InputManager $input, ChargeAmountGraph $graph): R $graph->groupBy($input->query('group-by')); return $this->response->json([ - 'data' => $graph->getGraphByTag($tag), + 'data' => $graph->getGraph(tag: $tag), ]); } } diff --git a/app/src/Controller/Wallets/Charges/ChargesController.php b/app/src/Controller/Wallets/Charges/ChargesController.php index 14fb40b..88d72f7 100644 --- a/app/src/Controller/Wallets/Charges/ChargesController.php +++ b/app/src/Controller/Wallets/Charges/ChargesController.php @@ -13,11 +13,13 @@ use App\Request\Charge\CreateRequest; use App\Service\ChargeWalletService; use App\Service\Pagination\PaginationFactory; +use App\Service\Statistics\ChargeAmountGraph; use App\View\ChargesView; use App\View\ChargeView; use Psr\Http\Message\ResponseInterface; use Psr\Log\LoggerInterface; use Spiral\Auth\AuthScope; +use Spiral\Http\Request\InputManager; use Spiral\Http\ResponseWrapper; use Spiral\Router\Annotation\Route; @@ -38,13 +40,8 @@ public function __construct( parent::__construct($auth); } - /** - * @Route(route="/wallets//charges", name="wallet.charge.list", methods="GET", group="auth") - * - * @param int $walletId - * @return \Psr\Http\Message\ResponseInterface - */ - public function list(int $walletId): ResponseInterface + #[Route(route: '/wallets//charges', name: 'wallet.charge.list', methods: 'GET', group: 'auth')] + public function list(int $walletId, InputManager $input): ResponseInterface { $wallet = $this->walletRepository->findByPKByUserPK($walletId, (int) $this->user->id); @@ -53,19 +50,31 @@ public function list(int $walletId): ResponseInterface } $charges = $this->chargeRepository + ->filter($input->query->fetch(['date-from', 'date-to'])) ->paginate($this->paginationFactory->createPaginator()) ->findByWalletIdWithPagination((int) $wallet->id); return $this->chargesView->jsonPaginated($charges, $this->chargeRepository->getPaginationState()); } - /** - * @Route(route="/wallets//charges", name="wallet.charge.create", methods="POST", group="auth") - * - * @param int $walletId - * @param \App\Request\Charge\CreateRequest $request - * @return \Psr\Http\Message\ResponseInterface - */ + #[Route(route: '/wallets//charges/graph', name: 'wallet.charge.graph', methods: 'GET', group: 'auth')] + public function graph(int $walletId, InputManager $input, ChargeAmountGraph $graph) + { + $wallet = $this->walletRepository->findByPKByUserPK($walletId, (int) $this->user->id); + + if (! $wallet instanceof Wallet) { + return $this->response->create(404); + } + + $graph->filter($input->query->fetch(['date-from', 'date-to'])); + $graph->groupBy($input->query('group-by')); + + return $this->response->json([ + 'data' => $graph->getGraph(wallet: $wallet), + ]); + } + + #[Route(route: '/wallets//charges', name: 'wallet.charge.create', methods: 'POST', group: 'auth')] public function create(int $walletId, CreateRequest $request): ResponseInterface { $wallet = $this->walletRepository->findByPKByUserPK($walletId, (int) $this->user->id); @@ -115,14 +124,7 @@ public function create(int $walletId, CreateRequest $request): ResponseInterface return $this->chargeView->withRelation(Wallet::class)->json($charge); } - /** - * @Route(route="/wallets//charges/", name="wallet.charge.update", methods="PUT", group="auth") - * - * @param int $walletId - * @param string $chargeId - * @param \App\Request\Charge\CreateRequest $request - * @return \Psr\Http\Message\ResponseInterface - */ + #[Route(route: '/wallets//charges/', name: 'wallet.charge.update', methods: 'PUT', group: 'auth')] public function update(int $walletId, string $chargeId, CreateRequest $request): ResponseInterface { $wallet = $this->walletRepository->findByPKByUserPK($walletId, (int) $this->user->id); @@ -178,13 +180,7 @@ public function update(int $walletId, string $chargeId, CreateRequest $request): return $this->chargeView->withRelation(Wallet::class)->json($charge); } - /** - * @Route(route="/wallets//charges/", name="wallet.charge.delete", methods="DELETE", group="auth") - * - * @param int $walletId - * @param string $chargeId - * @return \Psr\Http\Message\ResponseInterface - */ + #[Route(route: '/wallets//charges/', name: 'wallet.charge.delete', methods: 'DELETE', group: 'auth')] public function delete(int $walletId, string $chargeId): ResponseInterface { $wallet = $this->walletRepository->findByPKByUserPK($walletId, (int) $this->user->id); diff --git a/app/src/Controller/Wallets/Charges/TagsController.php b/app/src/Controller/Wallets/Charges/TagsController.php index 2660694..940bef6 100644 --- a/app/src/Controller/Wallets/Charges/TagsController.php +++ b/app/src/Controller/Wallets/Charges/TagsController.php @@ -9,11 +9,14 @@ use App\Database\Wallet; use App\Repository\ChargeRepository; use App\Repository\TagRepository; +use App\Repository\UserRepository; use App\Repository\WalletRepository; use App\Service\Pagination\PaginationFactory; +use App\Service\Statistics\ChargeAmountGraph; use App\View\ChargesView; use Psr\Http\Message\ResponseInterface; use Spiral\Auth\AuthScope; +use Spiral\Http\Request\InputManager; use Spiral\Http\ResponseWrapper; use Spiral\Router\Annotation\Route; @@ -27,12 +30,13 @@ public function __construct( private ChargeRepository $chargeRepository, private WalletRepository $walletRepository, private TagRepository $tagRepository, + private UserRepository $userRepository, ) { parent::__construct($auth); } #[Route(route: '/wallets//tags//charges', name: 'wallet.tag.charge.list', methods: 'GET', group: 'auth')] - public function list(int $walletId, int $tagId): ResponseInterface + public function list(int $walletId, int $tagId, InputManager $input): ResponseInterface { $wallet = $this->walletRepository->findByPKByUserPK($walletId, (int) $this->user->id); if (! $wallet instanceof Wallet) { @@ -45,9 +49,31 @@ public function list(int $walletId, int $tagId): ResponseInterface } $charges = $this->chargeRepository + ->filter($input->query->fetch(['date-from', 'date-to'])) ->paginate($this->paginationFactory->createPaginator()) ->findByWalletIdAndTagIdWithPagination((int) $wallet->id, (int) $tag->id); return $this->chargesView->jsonPaginated($charges, $this->chargeRepository->getPaginationState()); } + + #[Route(route: '/wallets//tags//charges/graph', name: 'wallet.tag.charge.graph', methods: 'GET', group: 'auth')] + public function graph(int $walletId, int $tagId, InputManager $input, ChargeAmountGraph $graph): ResponseInterface + { + $wallet = $this->walletRepository->findByPKByUserPK($walletId, (int) $this->user->id); + if (! $wallet instanceof Wallet) { + return $this->response->create(404); + } + + $tag = $this->tagRepository->findByPKByUsersPK($tagId, $this->userRepository->getCommonUserIDs($this->user)); + if (! $tag instanceof Tag) { + return $this->response->create(404); + } + + $graph->filter($input->query->fetch(['date-from', 'date-to'])); + $graph->groupBy($input->query('group-by')); + + return $this->response->json([ + 'data' => $graph->getGraph(wallet: $wallet, tag: $tag), + ]); + } } diff --git a/app/src/Controller/Wallets/IndexController.php b/app/src/Controller/Wallets/IndexController.php index bb004d7..5a398d8 100644 --- a/app/src/Controller/Wallets/IndexController.php +++ b/app/src/Controller/Wallets/IndexController.php @@ -8,9 +8,11 @@ use App\Database\Wallet; use App\Repository\ChargeRepository; use App\Repository\WalletRepository; +use App\Service\ChargeWalletService; use App\View\WalletView; use Psr\Http\Message\ResponseInterface; use Spiral\Auth\AuthScope; +use Spiral\Http\Request\InputManager; use Spiral\Http\ResponseWrapper; use Spiral\Router\Annotation\Route; @@ -22,6 +24,7 @@ public function __construct( private WalletRepository $walletRepository, private WalletView $walletView, private ChargeRepository $chargeRepository, + private ChargeWalletService $chargeWalletService, ) { parent::__construct($auth); } @@ -39,7 +42,7 @@ public function index(int $id): ResponseInterface } #[Route(route: '/wallets//total', name: 'wallet.index.total', methods: 'GET', group: 'auth')] - public function indexTotal(int $id): ResponseInterface + public function indexTotal(int $id, InputManager $input): ResponseInterface { $wallet = $this->walletRepository->findByPKByUserPK($id, (int) $this->user->id); @@ -47,9 +50,14 @@ public function indexTotal(int $id): ResponseInterface return $this->response->create(404); } + $this->chargeRepository->filter($input->query->fetch(['date-from', 'date-to'])); + + $income = $this->chargeRepository->totalByWalletPK($id, Charge::TYPE_INCOME); + $expense = $this->chargeRepository->totalByWalletPK($id, Charge::TYPE_EXPENSE); + return $this->response->json([ 'data' => [ - 'totalAmount' => $wallet->totalAmount, + 'totalAmount' => $this->chargeWalletService->totalByIncomeAndExpense($income, $expense), 'totalIncomeAmount' => $this->chargeRepository->totalByWalletPK($id, Charge::TYPE_INCOME), 'totalExpenseAmount' => $this->chargeRepository->totalByWalletPK($id, Charge::TYPE_EXPENSE), ], diff --git a/app/src/Controller/Wallets/TagsController.php b/app/src/Controller/Wallets/TagsController.php index c486ebb..a90dcf5 100644 --- a/app/src/Controller/Wallets/TagsController.php +++ b/app/src/Controller/Wallets/TagsController.php @@ -14,6 +14,7 @@ use App\View\TagsView; use Psr\Http\Message\ResponseInterface; use Spiral\Auth\AuthScope; +use Spiral\Http\Request\InputManager; use Spiral\Http\ResponseWrapper; use Spiral\Router\Annotation\Route; @@ -46,7 +47,7 @@ public function list(int $id): ResponseInterface } #[Route(route: '/wallets//tags//total', name: 'wallet.tags.total', methods: 'GET', group: 'auth')] - public function total(int $walletId, int $tagId): ResponseInterface + public function total(int $walletId, int $tagId, InputManager $input): ResponseInterface { $wallet = $this->walletRepository->findByPKByUserPK($walletId, (int) $this->user->id); @@ -60,6 +61,8 @@ public function total(int $walletId, int $tagId): ResponseInterface return $this->response->create(404); } + $this->chargeRepository->filter($input->query->fetch(['date-from', 'date-to'])); + $income = $this->chargeRepository->totalByWalletPKAndTagId($walletId, $tagId, Charge::TYPE_INCOME); $expense = $this->chargeRepository->totalByWalletPKAndTagId($walletId, $tagId, Charge::TYPE_EXPENSE); diff --git a/app/src/Repository/ChargeRepository.php b/app/src/Repository/ChargeRepository.php index 9aa7419..8e4b80a 100644 --- a/app/src/Repository/ChargeRepository.php +++ b/app/src/Repository/ChargeRepository.php @@ -60,6 +60,7 @@ public function findByWalletIdWithPagination(int $walletId) ->where('wallet_id', $walletId) ->orderBy('created_at', 'DESC'); + $this->injectFilter($query); $query = $this->injectPaginator($query); return $query->fetchAll(); @@ -101,6 +102,7 @@ public function findByWalletIdAndTagIdWithPagination(int $walletId, int $tagId = ->where('tags.id', $tagId) ->orderBy('created_at', 'DESC'); + $this->injectFilter($query); $query = $this->injectPaginator($query); return $query->fetchAll(); @@ -119,6 +121,8 @@ public function totalByWalletPK(int $walletId, string $type = null): float $query = $query->where('type', $type); } + $this->injectFilter($query); + return (float) $query->sum('amount'); } @@ -160,6 +164,8 @@ public function totalByWalletPKAndTagId(int $walletId, int $tagId, string $type $query = $query->where('type', $type); } + $this->injectFilter($query); + return (float) $query->sum('amount'); } diff --git a/app/src/Service/Statistics/ChargeAmountGraph.php b/app/src/Service/Statistics/ChargeAmountGraph.php index 59c8e72..3b2554d 100644 --- a/app/src/Service/Statistics/ChargeAmountGraph.php +++ b/app/src/Service/Statistics/ChargeAmountGraph.php @@ -6,6 +6,7 @@ use App\Database\Charge; use App\Database\Tag; +use App\Database\Wallet; use App\Repository\ChargeRepository; use App\Service\Filter\Filter; use App\Service\Filter\FilterType; @@ -30,9 +31,9 @@ public function groupBy(string $value = null, Group $default = Group::ByMonth): return $this; } - public function getGraphByTag(Tag $tag): array + public function getGraph(Tag $tag = null, Wallet $wallet = null): array { - $query = $this->buildQueryByTag($tag); + $query = $this->buildQueryByTagAndWallet($tag, $wallet); $data = new ChargeAmountData($this->grouping); $data->filter($this->filter); @@ -42,9 +43,19 @@ public function getGraphByTag(Tag $tag): array return $data->format(); } - protected function buildQueryByTag(Tag $tag): SelectQuery + protected function buildQueryByTagAndWallet(Tag $tag = null, Wallet $wallet = null): SelectQuery { - return $this->buildQuery()->where('tag_charges.tag_id', $tag->id); + $query = $this->buildQuery(); + + if ($tag !== null) { + $query = $query->where('tag_charges.tag_id', $tag->id); + } + + if ($wallet !== null) { + $query = $query->where('charges.wallet_id', $wallet->id); + } + + return $query; } protected function buildQuery(): SelectQuery diff --git a/tests/Feature/Controller/Wallets/Charges/ChargesControllerTest.php b/tests/Feature/Controller/Wallets/Charges/ChargesControllerTest.php index 2f14af7..9879e55 100644 --- a/tests/Feature/Controller/Wallets/Charges/ChargesControllerTest.php +++ b/tests/Feature/Controller/Wallets/Charges/ChargesControllerTest.php @@ -142,6 +142,265 @@ public function testListReturnPaginatedCharges(): void } } + public function listWithDateFilterReturnFilteredChargesDataProvider(): array + { + return [ + [ + [1, 2, 3, 4], + [ + 'date-from' => '00-13-2022', + 'date-to' => '40-00-2022', + ], + ], + [ + [1, 2, 3, 4], + [ + 'date-from' => '01-06-2022', + 'date-to' => '04-06-2022', + ], + ], + [ + [2, 3], + [ + 'date-from' => '02-06-2022', + 'date-to' => '03-06-2022', + ], + ], + [ + [1, 2, 3], + ['date-to' => '03-06-2022'], + ], + [ + [2, 3, 4], + ['date-from' => '02-06-2022'], + ], + ]; + } + + /** + * @dataProvider listWithDateFilterReturnFilteredChargesDataProvider + * @param array $expectedIndexes + * @param array $query + * @return void + */ + public function testListWithDateFilterReturnFilteredCharges(array $expectedIndexes, array $query): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($user)->create(); + + $charges = []; + + for ($i = 1; $i <= 4; $i++) { + $charges[$i] = ChargeFactory::make(); + $charges[$i]->createdAt = new \DateTimeImmutable("0{$i}-06-2022"); + $charges[$i] = $this->chargeFactory->forUser($user)->forWallet($wallet)->create($charges[$i]); + } + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/charges", $query); + + $response->assertOk(); + + $body = $this->getJsonResponseBody($response); + + $this->assertArrayHasKey('data', $body); + $this->assertIsArray($body['data']); + $this->assertCount(count($expectedIndexes), $body['data']); + + foreach ($expectedIndexes as $index) { + if (! array_key_exists($index, $charges)) { + continue; + } + + $this->assertArrayContains((string) $charges[$index]->id, $body, 'data.*.id'); + $this->assertArrayContains($charges[$index]->title, $body, 'data.*.title'); + } + } + + public function testGraphRequireAuth(): void + { + $user = $this->userFactory->create(); + $wallet = $this->walletFactory->forUser($user)->create(); + $this->chargeFactory->forUser($user)->forWallet($wallet)->create(); + + $response = $this->get("/wallets/{$wallet->id}/charges/graph"); + + $response->assertUnauthorized(); + } + + public function testGraphOfMissingWalletNotFound(): void + { + $auth = $this->makeAuth($this->userFactory->create()); + $walletId = Fixtures::integer(); + + $response = $this->withAuth($auth)->get("/wallets/{$walletId}/charges/graph"); + + $response->assertNotFound(); + } + + public function testGraphOfForeignWalletReturnNotFound(): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($this->userFactory->create())->create(); + $this->chargeFactory->forUser($user)->forWallet($wallet)->create(); + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/charges/graph"); + + $response->assertNotFound(); + } + + public function testGraphOfNoChargesWithWallet(): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($user)->create(); + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/charges/graph"); + + $response->assertOk(); + + $body = $this->getJsonResponseBody($response); + + $this->assertArrayHasKey('data', $body); + $this->assertCount(0, $body['data']); + } + + public function graphReturnsGraphDataDataProvider(): array + { + $charges = [ + [ + 'date' => '2022-05-31', + 'type' => Charge::TYPE_INCOME, + 'amount' => 2060, + ], + [ + 'date' => '2022-06-01', + 'type' => Charge::TYPE_EXPENSE, + 'amount' => 150.99, + ], + [ + 'date' => '2022-06-02', + 'type' => Charge::TYPE_EXPENSE, + 'amount' => 51.02, + ], + [ + 'date' => '2022-06-03', + 'type' => Charge::TYPE_INCOME, + 'amount' => 30.99, + ], + ]; + + return [ + [ + $charges, + [], + [ + // date, income, expense + ['2022-05-01', 2060, 0], + ['2022-06-01', 30.99, 202.01], + ] + ], + [ + $charges, + [ + 'group-by' => 'day' + ], + [ + ['2022-05-31', 2060, 0], + ['2022-06-01', 0, 150.99], + ['2022-06-02', 0, 51.02], + ['2022-06-03', 30.99, 0], + ] + ], + [ + $charges, + [ + 'date-from' => '2022-06-01', + 'date-to' => '2022-06-04', + ], + [ + ['2022-06-01', 30.99, 202.01], + ] + ], + [ + $charges, + [ + 'date-from' => '2022-06-01', + 'date-to' => '2022-06-04', + 'group-by' => 'day' + ], + [ + ['2022-06-01', 0, 150.99], + ['2022-06-02', 0, 51.02], + ['2022-06-03', 30.99, 0], + ['2022-06-04', 0, 0], + ] + ], + [ + $charges, + [ + 'group-by' => 'year' + ], + [ + ['2022-01-01', 2090.99, 202.01], + ] + ], + [ + $charges, + [ + 'date-from' => '2021-12-31', + 'date-to' => '2022-06-04', + 'group-by' => 'year' + ], + [ + ['2022-01-01', 2090.99, 202.01], + ['2021-01-01', 0, 0], + ] + ], + ]; + } + + /** + * @dataProvider graphReturnsGraphDataDataProvider + * @param array $setCharges + * @param array $query + * @param array $expectedData + * @return void + * @throws \Exception + */ + public function testGraphReturnsGraphData(array $setCharges, array $query, array $expectedData): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($user)->create(); + $otherWallet = $this->walletFactory->forUser($user)->create(); + $this->chargeFactory->forUser($user); + + foreach ($setCharges as $item) { + $charge = ChargeFactory::make(); + $charge->createdAt = new \DateTimeImmutable($item['date']); + $this->chargeFactory->forWallet($otherWallet)->create($charge); + + $charge = ChargeFactory::make(); + $charge->createdAt = new \DateTimeImmutable($item['date']); + $charge->type = $item['type']; + $charge->amount = $item['amount']; + $this->chargeFactory->forWallet($wallet)->create($charge); + } + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/charges/graph", $query); + + $response->assertOk(); + + $body = $this->getJsonResponseBody($response); + + $this->assertArrayHasKey('data', $body); + $this->assertCount(count($expectedData), $body['data']); + + foreach ($expectedData as $expected) { + $this->assertArrayContains($expected[0], $body, 'data.*.date'); + $this->assertArrayContains($expected[1], $body, 'data.*.income'); + $this->assertArrayContains($expected[2], $body, 'data.*.expense'); + } + } + public function testCreateRequireAuth(): void { $wallet = $this->walletFactory->create(); diff --git a/tests/Feature/Controller/Wallets/Charges/TagsControllerTest.php b/tests/Feature/Controller/Wallets/Charges/TagsControllerTest.php index adf6845..9e65674 100644 --- a/tests/Feature/Controller/Wallets/Charges/TagsControllerTest.php +++ b/tests/Feature/Controller/Wallets/Charges/TagsControllerTest.php @@ -193,4 +193,291 @@ public function testListReturnPaginatedCharges(): void $this->assertArrayNotContains($charge->type, $body, 'data.*.type'); } } + + public function listWithDateFilterReturnFilteredChargesDataProvider(): array + { + return [ + [ + [1, 2, 3, 4], + [ + 'date-from' => '00-13-2022', + 'date-to' => '40-00-2022', + ], + ], + [ + [1, 2, 3, 4], + [ + 'date-from' => '01-06-2022', + 'date-to' => '04-06-2022', + ], + ], + [ + [2, 3], + [ + 'date-from' => '02-06-2022', + 'date-to' => '03-06-2022', + ], + ], + [ + [1, 2, 3], + ['date-to' => '03-06-2022'], + ], + [ + [2, 3, 4], + ['date-from' => '02-06-2022'], + ], + ]; + } + + /** + * @dataProvider listWithDateFilterReturnFilteredChargesDataProvider + * @param array $expectedIndexes + * @param array $query + * @return void + */ + public function testListWithDateFilterReturnFilteredCharges(array $expectedIndexes, array $query): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($user)->create(); + $tag = $this->tagFactory->forUser($user)->create(); + + $charges = []; + + for ($i = 1; $i <= 4; $i++) { + $charges[$i] = ChargeFactory::make(); + $charges[$i]->createdAt = new \DateTimeImmutable("0{$i}-06-2022"); + $charges[$i] = $this->chargeFactory->forUser($user)->forWallet($wallet)->withTags([$tag])->create($charges[$i]); + } + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/tags/{$tag->id}/charges", $query); + + $response->assertOk(); + + $body = $this->getJsonResponseBody($response); + + $this->assertArrayHasKey('data', $body); + $this->assertIsArray($body['data']); + $this->assertCount(count($expectedIndexes), $body['data']); + + foreach ($expectedIndexes as $index) { + if (! array_key_exists($index, $charges)) { + continue; + } + + $this->assertArrayContains((string) $charges[$index]->id, $body, 'data.*.id'); + $this->assertArrayContains($charges[$index]->title, $body, 'data.*.title'); + } + } + + public function testGraphRequireAuth(): void + { + $user = $this->userFactory->create(); + $wallet = $this->walletFactory->forUser($user)->create(); + $tag = $this->tagFactory->forUser($user)->create(); + $this->chargeFactory->forUser($user)->forWallet($wallet)->create(); + + $response = $this->get("/wallets/{$wallet->id}/tags/{$tag->id}/charges/graph"); + + $response->assertUnauthorized(); + } + + public function testGraphOfMissingWalletOrTagNotFound(): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($user)->create(); + $walletId = Fixtures::integer(); + $tag = $this->tagFactory->forUser($user)->create(); + $tagId = Fixtures::integer(); + + $response = $this->withAuth($auth)->get("/wallets/{$walletId}/tags/{$tag->id}/charges/graph"); + + $response->assertNotFound(); + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/tags/{$tagId}/charges/graph"); + + $response->assertNotFound(); + + $response = $this->withAuth($auth)->get("/wallets/{$walletId}/tags/{$tagId}/charges/graph"); + + $response->assertNotFound(); + } + + public function testGraphOfForeignWalletReturnNotFound(): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($this->userFactory->create())->create(); + $tag = $this->tagFactory->forUser($user)->create(); + $this->chargeFactory->forUser($user)->forWallet($wallet)->withTags([$tag])->create(); + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/tags/{$tag->id}/charges/graph"); + + $response->assertNotFound(); + } + + public function testGraphOfForeignTagReturnNotFound(): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($user)->create(); + $tag = $this->tagFactory->forUser($this->userFactory->create())->create(); + $this->chargeFactory->forUser($user)->forWallet($wallet)->withTags([$tag])->create(); + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/tags/{$tag->id}/charges/graph"); + + $response->assertNotFound(); + } + + public function testGraphOfNoChargesWithWallet(): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($user)->create(); + $tag = $this->tagFactory->forUser($user)->create(); + $this->chargeFactory->forUser($user)->forWallet($wallet)->createMany(3); + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/tags/{$tag->id}/charges/graph"); + + $response->assertOk(); + + $body = $this->getJsonResponseBody($response); + + $this->assertArrayHasKey('data', $body); + $this->assertCount(0, $body['data']); + } + + public function graphReturnsGraphDataDataProvider(): array + { + $charges = [ + [ + 'date' => '2022-05-31', + 'type' => Charge::TYPE_INCOME, + 'amount' => 2060, + ], + [ + 'date' => '2022-06-01', + 'type' => Charge::TYPE_EXPENSE, + 'amount' => 150.99, + ], + [ + 'date' => '2022-06-02', + 'type' => Charge::TYPE_EXPENSE, + 'amount' => 51.02, + ], + [ + 'date' => '2022-06-03', + 'type' => Charge::TYPE_INCOME, + 'amount' => 30.99, + ], + ]; + + return [ + [ + $charges, + [], + [ + // date, income, expense + ['2022-05-01', 2060, 0], + ['2022-06-01', 30.99, 202.01], + ] + ], + [ + $charges, + [ + 'group-by' => 'day' + ], + [ + ['2022-05-31', 2060, 0], + ['2022-06-01', 0, 150.99], + ['2022-06-02', 0, 51.02], + ['2022-06-03', 30.99, 0], + ] + ], + [ + $charges, + [ + 'date-from' => '2022-06-01', + 'date-to' => '2022-06-04', + ], + [ + ['2022-06-01', 30.99, 202.01], + ] + ], + [ + $charges, + [ + 'date-from' => '2022-06-01', + 'date-to' => '2022-06-04', + 'group-by' => 'day' + ], + [ + ['2022-06-01', 0, 150.99], + ['2022-06-02', 0, 51.02], + ['2022-06-03', 30.99, 0], + ['2022-06-04', 0, 0], + ] + ], + [ + $charges, + [ + 'group-by' => 'year' + ], + [ + ['2022-01-01', 2090.99, 202.01], + ] + ], + [ + $charges, + [ + 'date-from' => '2021-12-31', + 'date-to' => '2022-06-04', + 'group-by' => 'year' + ], + [ + ['2022-01-01', 2090.99, 202.01], + ['2021-01-01', 0, 0], + ] + ], + ]; + } + + /** + * @dataProvider graphReturnsGraphDataDataProvider + * @param array $setCharges + * @param array $query + * @param array $expectedData + * @return void + * @throws \Exception + */ + public function testGraphReturnsGraphData(array $setCharges, array $query, array $expectedData): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($user)->create(); + $tag = $this->tagFactory->forUser($user)->create(); + $this->chargeFactory->forUser($user)->forWallet($wallet); + + foreach ($setCharges as $item) { + $charge = ChargeFactory::make(); + $charge->createdAt = new \DateTimeImmutable($item['date']); + $this->chargeFactory->withTags([])->create($charge); + + $charge = ChargeFactory::make(); + $charge->createdAt = new \DateTimeImmutable($item['date']); + $charge->type = $item['type']; + $charge->amount = $item['amount']; + $this->chargeFactory->withTags([$tag])->create($charge); + } + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/tags/{$tag->id}/charges/graph", $query); + + $response->assertOk(); + + $body = $this->getJsonResponseBody($response); + + $this->assertArrayHasKey('data', $body); + $this->assertCount(count($expectedData), $body['data']); + + foreach ($expectedData as $expected) { + $this->assertArrayContains($expected[0], $body, 'data.*.date'); + $this->assertArrayContains($expected[1], $body, 'data.*.income'); + $this->assertArrayContains($expected[2], $body, 'data.*.expense'); + } + } } diff --git a/tests/Feature/Controller/Wallets/IndexControllerTest.php b/tests/Feature/Controller/Wallets/IndexControllerTest.php index 821d61f..d448642 100644 --- a/tests/Feature/Controller/Wallets/IndexControllerTest.php +++ b/tests/Feature/Controller/Wallets/IndexControllerTest.php @@ -178,4 +178,101 @@ public function testIndexTotalWalletTotal(): void $this->assertArrayContains($totalIncome, $body, 'data.totalIncomeAmount'); $this->assertArrayContains($totalExpense, $body, 'data.totalExpenseAmount'); } + + public function totalWithDateFiltersReturnsFilteredTotalByTagDataProvider(): array + { + return [ + [ + [ + 'total' => 200, + 'income' => 410, + 'expense' => 210, + ], + [ + 'date-from' => '00-13-2022', + 'date-to' => '40-00-2022', + ] + ], + [ + [ + 'total' => 200, + 'income' => 410, + 'expense' => 210, + ], + [ + 'date-from' => '01-06-2022', + 'date-to' => '04-06-2022', + ] + ], + [ + [ + 'total' => 100, + 'income' => 205, + 'expense' => 105, + ], + [ + 'date-from' => '02-06-2022', + 'date-to' => '03-06-2022', + ] + ], + [ + [ + 'total' => 150, + 'income' => 309, + 'expense' => 159, + ], + [ + 'date-from' => '02-06-2022', + ] + ], + [ + [ + 'total' => 150, + 'income' => 306, + 'expense' => 156, + ], + [ + 'date-to' => '03-06-2022', + ] + ], + ]; + } + + /** + * @dataProvider totalWithDateFiltersReturnsFilteredTotalByTagDataProvider + * @param array $total + * @param array $query + * @return void + */ + public function testTotalWithDateFiltersReturnsFilteredTotalByTag(array $total, array $query): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($user)->create(); + + for ($i = 1; $i <= 4; $i++) { + $charge = ChargeFactory::make(); + $charge->type = Charge::TYPE_INCOME; + $charge->amount = 100 + $i; + $charge->createdAt = new \DateTimeImmutable("0{$i}-06-2022"); + $this->chargeFactory->forUser($user)->forWallet($wallet)->create($charge); + } + + for ($i = 1; $i <= 4; $i++) { + $charge = ChargeFactory::make(); + $charge->type = Charge::TYPE_EXPENSE; + $charge->amount = 50 + $i; + $charge->createdAt = new \DateTimeImmutable("0{$i}-06-2022"); + $this->chargeFactory->forUser($user)->forWallet($wallet)->create($charge); + } + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/total", $query); + + $response->assertOk(); + + $body = $this->getJsonResponseBody($response); + + $this->assertArrayContains($total['total'], $body, 'data.totalAmount'); + $this->assertArrayContains($total['income'], $body, 'data.totalIncomeAmount'); + $this->assertArrayContains($total['expense'], $body, 'data.totalExpenseAmount'); + } } diff --git a/tests/Feature/Controller/Wallets/TagsControllerTest.php b/tests/Feature/Controller/Wallets/TagsControllerTest.php index 6db8e9b..5908123 100644 --- a/tests/Feature/Controller/Wallets/TagsControllerTest.php +++ b/tests/Feature/Controller/Wallets/TagsControllerTest.php @@ -218,6 +218,108 @@ public function testTotalReturnsTotalByTag(): void $this->assertArrayContains($totalExpense, $body, 'data.totalExpenseAmount'); } + public function totalWithDateFiltersReturnsFilteredTotalByTagDataProvider(): array + { + return [ + [ + [ + 'total' => 200, + 'income' => 410, + 'expense' => 210, + ], + [ + 'date-from' => '00-13-2022', + 'date-to' => '40-00-2022', + ] + ], + [ + [ + 'total' => 200, + 'income' => 410, + 'expense' => 210, + ], + [ + 'date-from' => '01-06-2022', + 'date-to' => '04-06-2022', + ] + ], + [ + [ + 'total' => 100, + 'income' => 205, + 'expense' => 105, + ], + [ + 'date-from' => '02-06-2022', + 'date-to' => '03-06-2022', + ] + ], + [ + [ + 'total' => 150, + 'income' => 309, + 'expense' => 159, + ], + [ + 'date-from' => '02-06-2022', + ] + ], + [ + [ + 'total' => 150, + 'income' => 306, + 'expense' => 156, + ], + [ + 'date-to' => '03-06-2022', + ] + ], + ]; + } + + /** + * @dataProvider totalWithDateFiltersReturnsFilteredTotalByTagDataProvider + * @param array $total + * @param array $query + * @return void + */ + public function testTotalWithDateFiltersReturnsFilteredTotalByTag(array $total, array $query): void + { + $auth = $this->makeAuth($user = $this->userFactory->create()); + $wallet = $this->walletFactory->forUser($user)->create(); + $tag = $this->tagFactory->forUser($user)->create(); + + for ($i = 1; $i <= 4; $i++) { + $charge = ChargeFactory::make(); + $charge->type = Charge::TYPE_INCOME; + $charge->amount = 100 + $i; + $charge->createdAt = new \DateTimeImmutable("0{$i}-06-2022"); + $this->chargeFactory->forUser($user)->forWallet($wallet)->withTags([$tag])->create($charge); + } + + for ($i = 1; $i <= 4; $i++) { + $charge = ChargeFactory::make(); + $charge->type = Charge::TYPE_EXPENSE; + $charge->amount = 50 + $i; + $charge->createdAt = new \DateTimeImmutable("0{$i}-06-2022"); + $this->chargeFactory->forUser($user)->forWallet($wallet)->withTags([$tag])->create($charge); + } + + $this->chargeFactory->forUser($user)->forWallet($wallet)->withTags([ + $this->tagFactory->forUser($user)->create() + ])->createMany(4); + + $response = $this->withAuth($auth)->get("/wallets/{$wallet->id}/tags/{$tag->id}/total", $query); + + $response->assertOk(); + + $body = $this->getJsonResponseBody($response); + + $this->assertArrayContains($total['total'], $body, 'data.totalAmount'); + $this->assertArrayContains($total['income'], $body, 'data.totalIncomeAmount'); + $this->assertArrayContains($total['expense'], $body, 'data.totalExpenseAmount'); + } + public function testFindRequireAuth(): void { $wallet = $this->walletFactory->create(); From 73cf3f250d6b691695ada6bdb306f29e6f89debf Mon Sep 17 00:00:00 2001 From: Volodymyr Komarov Date: Sat, 11 Mar 2023 14:28:15 +0200 Subject: [PATCH 2/2] Update firebase/php-jwt package --- app/src/Auth/Jwt/TokenStorage.php | 4 +- composer.json | 2 +- composer.lock | 1212 ++++++++++++++++------------- 3 files changed, 687 insertions(+), 531 deletions(-) diff --git a/app/src/Auth/Jwt/TokenStorage.php b/app/src/Auth/Jwt/TokenStorage.php index 81da02f..6404da9 100644 --- a/app/src/Auth/Jwt/TokenStorage.php +++ b/app/src/Auth/Jwt/TokenStorage.php @@ -6,6 +6,7 @@ use App\Config\JwtConfig; use Firebase\JWT\JWT; +use Firebase\JWT\Key; use Spiral\Auth\Exception\TokenStorageException; use Spiral\Auth\TokenInterface; use Spiral\Auth\TokenStorageInterface; @@ -52,7 +53,7 @@ public function load(string $id): ?TokenInterface // TODO. Validate token for the blacklisted try { - $payload = JWT::decode($id, $this->getVerifyKey(), [$this->alg]); + $payload = JWT::decode($id, new Key($this->getVerifyKey(), $this->alg)); return Token::fromPayload($id, (array) $payload); } catch (\Throwable $exception) { return null; @@ -83,7 +84,6 @@ public function create(array $payload, \DateTimeInterface $expiresAt = null): To 'jti' => sha1((string) microtime(true)), ]); - $jwt = JWT::encode($payload, $this->getSigningKey(), $this->alg); return new Token($jwt, $payload, $expiresAt); diff --git a/composer.json b/composer.json index 2de2417..8f79bfc 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ "cycle/entity-behavior": "^1.1", "cycle/entity-behavior-uuid": "^1.0", "doctrine/collections": "^1.6", - "firebase/php-jwt": "^5.2", + "firebase/php-jwt": "^6.0", "illuminate/collections": "^9.8", "kreait/firebase-php": "^5.0", "laminas/laminas-diactoros": "^2.6", diff --git a/composer.lock b/composer.lock index 2bda444..4112fdd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,27 +4,27 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7ec988a06230c080109feab842f0afd6", + "content-hash": "f62a06529700411cd2eb2b2aacad29ad", "packages": [ { "name": "aws/aws-crt-php", - "version": "v1.0.2", + "version": "v1.0.4", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "3942776a8c99209908ee0b287746263725685732" + "reference": "f5c64ee7c5fce196e2519b3d9b7138649efe032d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/3942776a8c99209908ee0b287746263725685732", - "reference": "3942776a8c99209908ee0b287746263725685732", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/f5c64ee7c5fce196e2519b3d9b7138649efe032d", + "reference": "f5c64ee7c5fce196e2519b3d9b7138649efe032d", "shasum": "" }, "require": { "php": ">=5.5" }, "require-dev": { - "phpunit/phpunit": "^4.8.35|^5.4.3" + "phpunit/phpunit": "^4.8.35|^5.6.3" }, "type": "library", "autoload": { @@ -52,26 +52,26 @@ ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.0.2" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.0.4" }, - "time": "2021-09-03T22:57:30+00:00" + "time": "2023-01-31T23:08:25+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.240.5", + "version": "3.261.9", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "7fb4c933795c5908fe5e2cb32913eed608901195" + "reference": "d91e6f89a6c41e8df859b0d313150386cfee6f6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7fb4c933795c5908fe5e2cb32913eed608901195", - "reference": "7fb4c933795c5908fe5e2cb32913eed608901195", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d91e6f89a6c41e8df859b0d313150386cfee6f6a", + "reference": "d91e6f89a6c41e8df859b0d313150386cfee6f6a", "shasum": "" }, "require": { - "aws/aws-crt-php": "^1.0.2", + "aws/aws-crt-php": "^1.0.4", "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", @@ -146,9 +146,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.240.5" + "source": "https://github.com/aws/aws-sdk-php/tree/3.261.9" }, - "time": "2022-10-28T18:17:24+00:00" + "time": "2023-03-10T19:25:08+00:00" }, { "name": "brick/math", @@ -406,22 +406,22 @@ }, { "name": "cycle/annotated", - "version": "v3.2.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/cycle/annotated.git", - "reference": "78c8f0e40de09300c52ccf0394222420d2f59c11" + "reference": "0e0afb452fdedb0817d28201a1cd493f7ec8b3eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/annotated/zipball/78c8f0e40de09300c52ccf0394222420d2f59c11", - "reference": "78c8f0e40de09300c52ccf0394222420d2f59c11", + "url": "https://api.github.com/repos/cycle/annotated/zipball/0e0afb452fdedb0817d28201a1cd493f7ec8b3eb", + "reference": "0e0afb452fdedb0817d28201a1cd493f7ec8b3eb", "shasum": "" }, "require": { "cycle/orm": "^2.2.0", - "cycle/schema-builder": "^2.1.0", - "doctrine/annotations": "^1.13", + "cycle/schema-builder": "^2.3", + "doctrine/annotations": "^1.13 || ^2.0", "doctrine/inflector": "^2.0", "php": ">=8.0", "spiral/attributes": "^2.8|^3.0", @@ -444,22 +444,22 @@ "description": "Cycle ORM Annotated Entities generator", "support": { "issues": "https://github.com/cycle/annotated/issues", - "source": "https://github.com/cycle/annotated/tree/v3.2.0" + "source": "https://github.com/cycle/annotated/tree/v3.2.1" }, - "time": "2022-07-05T19:31:01+00:00" + "time": "2023-02-01T17:01:38+00:00" }, { "name": "cycle/database", - "version": "2.2.2", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/cycle/database.git", - "reference": "07f914a6f84a29cbc7f36f0c4e7b2acf7a4815b8" + "reference": "6ef38a473495128ba6bba211e4da8cbe4220776d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/database/zipball/07f914a6f84a29cbc7f36f0c4e7b2acf7a4815b8", - "reference": "07f914a6f84a29cbc7f36f0c4e7b2acf7a4815b8", + "url": "https://api.github.com/repos/cycle/database/zipball/6ef38a473495128ba6bba211e4da8cbe4220776d", + "reference": "6ef38a473495128ba6bba211e4da8cbe4220776d", "shasum": "" }, "require": { @@ -496,9 +496,15 @@ "description": "DBAL, schema introspection, migration and pagination", "support": { "issues": "https://github.com/cycle/database/issues", - "source": "https://github.com/cycle/database/tree/2.2.2" + "source": "https://github.com/cycle/database/tree/2.4.1" }, - "time": "2022-09-27T15:38:41+00:00" + "funding": [ + { + "url": "https://github.com/roadrunner-server", + "type": "github" + } + ], + "time": "2023-03-07T20:16:21+00:00" }, { "name": "cycle/entity-behavior", @@ -588,20 +594,20 @@ }, { "name": "cycle/migrations", - "version": "v3.1.0", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/cycle/migrations.git", - "reference": "6a11fa2f2ba10575a4ef0625348e7a44da0e5389" + "reference": "ad0a80cdb0e5c56eb72e2d893e717846f743c7ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/migrations/zipball/6a11fa2f2ba10575a4ef0625348e7a44da0e5389", - "reference": "6a11fa2f2ba10575a4ef0625348e7a44da0e5389", + "url": "https://api.github.com/repos/cycle/migrations/zipball/ad0a80cdb0e5c56eb72e2d893e717846f743c7ba", + "reference": "ad0a80cdb0e5c56eb72e2d893e717846f743c7ba", "shasum": "" }, "require": { - "cycle/database": "^2.0", + "cycle/database": "^2.3", "php": ">=8.0", "spiral/core": "^2.7", "spiral/files": "^2.7", @@ -626,32 +632,32 @@ "description": "Database migrations, migration scaffolding", "support": { "issues": "https://github.com/cycle/migrations/issues", - "source": "https://github.com/cycle/migrations/tree/v3.1.0" + "source": "https://github.com/cycle/migrations/tree/v3.1.1" }, - "time": "2022-10-13T12:44:20+00:00" + "time": "2023-01-03T14:06:22+00:00" }, { "name": "cycle/orm", - "version": "v2.2.0", + "version": "v2.2.2", "source": { "type": "git", "url": "https://github.com/cycle/orm.git", - "reference": "b69635a37a7eefcf4eb3801013fd62d1e1fcc728" + "reference": "daa46ddfd4ce3e571e850983d26513aa3f13c943" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/orm/zipball/b69635a37a7eefcf4eb3801013fd62d1e1fcc728", - "reference": "b69635a37a7eefcf4eb3801013fd62d1e1fcc728", + "url": "https://api.github.com/repos/cycle/orm/zipball/daa46ddfd4ce3e571e850983d26513aa3f13c943", + "reference": "daa46ddfd4ce3e571e850983d26513aa3f13c943", "shasum": "" }, "require": { - "cycle/database": "^2.2.1", + "cycle/database": "^2.3", "doctrine/instantiator": "^1.3.1", "ext-pdo": "*", "php": ">=8.0" }, "require-dev": { - "doctrine/collections": "^1.6", + "doctrine/collections": "^1.6 || ^2.0", "illuminate/collections": "^8.0", "loophp/collection": "^6.0", "mockery/mockery": "^1.1", @@ -673,25 +679,26 @@ "description": "PHP DataMapper ORM and Data Modelling Engine", "support": { "issues": "https://github.com/cycle/orm/issues", - "source": "https://github.com/cycle/orm/tree/v2.2.0" + "source": "https://github.com/cycle/orm/tree/v2.2.2" }, - "time": "2022-07-05T13:05:00+00:00" + "time": "2023-02-08T07:53:29+00:00" }, { "name": "cycle/schema-builder", - "version": "v2.1.0", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/cycle/schema-builder.git", - "reference": "4838734b8082bc80abca1221225feda5e72366a3" + "reference": "a639f4bf6bf03b855c150afaa8b3c611be47f826" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/schema-builder/zipball/4838734b8082bc80abca1221225feda5e72366a3", - "reference": "4838734b8082bc80abca1221225feda5e72366a3", + "url": "https://api.github.com/repos/cycle/schema-builder/zipball/a639f4bf6bf03b855c150afaa8b3c611be47f826", + "reference": "a639f4bf6bf03b855c150afaa8b3c611be47f826", "shasum": "" }, "require": { + "cycle/database": "^2.4", "cycle/orm": "^2.0", "php": ">=8.0", "yiisoft/friendly-exception": "^1.1" @@ -714,9 +721,9 @@ "description": "Cycle ORM Schema Builder", "support": { "issues": "https://github.com/cycle/schema-builder/issues", - "source": "https://github.com/cycle/schema-builder/tree/v2.1.0" + "source": "https://github.com/cycle/schema-builder/tree/v2.3.0" }, - "time": "2022-01-11T11:38:48+00:00" + "time": "2023-02-01T13:27:36+00:00" }, { "name": "cycle/schema-migrations-generator", @@ -763,16 +770,16 @@ }, { "name": "cycle/schema-renderer", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/cycle/schema-renderer.git", - "reference": "0b0ba21f2a864352ea965e6a86c08d1b87967c9d" + "reference": "5c2b7977c2803c6c9bacc56064abda5ea2b273a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cycle/schema-renderer/zipball/0b0ba21f2a864352ea965e6a86c08d1b87967c9d", - "reference": "0b0ba21f2a864352ea965e6a86c08d1b87967c9d", + "url": "https://api.github.com/repos/cycle/schema-renderer/zipball/5c2b7977c2803c6c9bacc56064abda5ea2b273a3", + "reference": "5c2b7977c2803c6c9bacc56064abda5ea2b273a3", "shasum": "" }, "require": { @@ -782,7 +789,7 @@ "require-dev": { "phpunit/phpunit": "^9.5", "spiral/code-style": "^1.0", - "vimeo/psalm": "^4.10" + "vimeo/psalm": "^4.10|^5.1" }, "type": "library", "autoload": { @@ -797,9 +804,9 @@ "description": "Utils for Cycle ORM Schema rendering", "support": { "issues": "https://github.com/cycle/schema-renderer/issues", - "source": "https://github.com/cycle/schema-renderer/tree/1.1.0" + "source": "https://github.com/cycle/schema-renderer/tree/1.2.0" }, - "time": "2021-12-16T14:52:51+00:00" + "time": "2022-12-15T16:14:14+00:00" }, { "name": "defuse/php-encryption", @@ -869,32 +876,35 @@ }, { "name": "doctrine/annotations", - "version": "1.13.3", + "version": "1.14.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0" + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^1 || ^2", "ext-tokenizer": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^1.4.10 || ^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6", "vimeo/psalm": "^4.10" }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + }, "type": "library", "autoload": { "psr-4": { @@ -936,9 +946,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.3" + "source": "https://github.com/doctrine/annotations/tree/1.14.3" }, - "time": "2022-07-02T10:48:51+00:00" + "time": "2023-02-01T09:20:38+00:00" }, { "name": "doctrine/collections", @@ -1146,30 +1156,30 @@ }, { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^0.16 || ^1", "phpstan/phpstan": "^1.4", "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -1196,7 +1206,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { @@ -1212,35 +1222,37 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.3", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^9 || ^10", "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1272,7 +1284,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" + "source": "https://github.com/doctrine/lexer/tree/2.1.0" }, "funding": [ { @@ -1288,29 +1300,28 @@ "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2022-12-14T08:49:07+00:00" }, { "name": "egulias/email-validator", - "version": "3.2.1", + "version": "3.2.5", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" + "reference": "b531a2311709443320c786feb4519cfaf94af796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b531a2311709443320c786feb4519cfaf94af796", + "reference": "b531a2311709443320c786feb4519cfaf94af796", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2", + "doctrine/lexer": "^1.2|^2", "php": ">=7.2", "symfony/polyfill-intl-idn": "^1.15" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^8.5.8|^9.3.3", "vimeo/psalm": "^4" }, @@ -1348,7 +1359,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.1" + "source": "https://github.com/egulias/EmailValidator/tree/3.2.5" }, "funding": [ { @@ -1356,7 +1367,7 @@ "type": "github" } ], - "time": "2022-06-18T20:57:19+00:00" + "time": "2023-01-02T17:26:14+00:00" }, { "name": "fig/http-message-util", @@ -1416,25 +1427,31 @@ }, { "name": "firebase/php-jwt", - "version": "v5.5.1", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "83b609028194aa042ea33b5af2d41a7427de80e6" + "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/83b609028194aa042ea33b5af2d41a7427de80e6", - "reference": "83b609028194aa042ea33b5af2d41a7427de80e6", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/4dd1e007f22a927ac77da5a3fbb067b42d3bc224", + "reference": "4dd1e007f22a927ac77da5a3fbb067b42d3bc224", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.1||^8.0" }, "require-dev": { - "phpunit/phpunit": ">=4.8 <=9" + "guzzlehttp/guzzle": "^6.5||^7.4", + "phpspec/prophecy-phpunit": "^1.1", + "phpunit/phpunit": "^7.5||^9.5", + "psr/cache": "^1.0||^2.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" }, "suggest": { + "ext-sodium": "Support EdDSA (Ed25519) signatures", "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" }, "type": "library", @@ -1467,22 +1484,22 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v5.5.1" + "source": "https://github.com/firebase/php-jwt/tree/v6.4.0" }, - "time": "2021-11-08T20:18:51+00:00" + "time": "2023-02-09T21:01:23+00:00" }, { "name": "google/auth", - "version": "v1.23.1", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-auth-library-php.git", - "reference": "cb43cb8ccde76ace65ec40130a9e9c2a15ecfe17" + "reference": "0865c44ab50378f7b145827dfcbd1e7a238f7759" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/cb43cb8ccde76ace65ec40130a9e9c2a15ecfe17", - "reference": "cb43cb8ccde76ace65ec40130a9e9c2a15ecfe17", + "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/0865c44ab50378f7b145827dfcbd1e7a238f7759", + "reference": "0865c44ab50378f7b145827dfcbd1e7a238f7759", "shasum": "" }, "require": { @@ -1497,8 +1514,8 @@ "guzzlehttp/promises": "0.1.1|^1.3", "kelvinmo/simplejwt": "^0.2.5|^0.5.1", "phpseclib/phpseclib": "^2.0.31", - "phpspec/prophecy-phpunit": "^1.1", - "phpunit/phpunit": "^7.5||^8.5", + "phpspec/prophecy-phpunit": "^1.1||^2.0", + "phpunit/phpunit": "^7.5||^9.0.0", "sebastian/comparator": ">=1.2.3", "squizlabs/php_codesniffer": "^3.5" }, @@ -1525,22 +1542,22 @@ "support": { "docs": "https://googleapis.github.io/google-auth-library-php/main/", "issues": "https://github.com/googleapis/google-auth-library-php/issues", - "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.23.1" + "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.25.0" }, - "time": "2022-10-26T20:30:45+00:00" + "time": "2023-01-26T22:04:14+00:00" }, { "name": "google/cloud-core", - "version": "v1.47.3", + "version": "v1.49.2", "source": { "type": "git", "url": "https://github.com/googleapis/google-cloud-php-core.git", - "reference": "7e019423c1f0005d22fcd0fcd73c1a7a0710ac7a" + "reference": "18d37b0b9fa761eaff909f360f96efa9ca2d6ca7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-cloud-php-core/zipball/7e019423c1f0005d22fcd0fcd73c1a7a0710ac7a", - "reference": "7e019423c1f0005d22fcd0fcd73c1a7a0710ac7a", + "url": "https://api.github.com/repos/googleapis/google-cloud-php-core/zipball/18d37b0b9fa761eaff909f360f96efa9ca2d6ca7", + "reference": "18d37b0b9fa761eaff909f360f96efa9ca2d6ca7", "shasum": "" }, "require": { @@ -1548,7 +1565,7 @@ "guzzlehttp/guzzle": "^5.3|^6.5.7|^7.4.4", "guzzlehttp/promises": "^1.3", "guzzlehttp/psr7": "^1.7|^2.0", - "monolog/monolog": "^1.1|^2.0", + "monolog/monolog": "^1.1|^2.0|^3.0", "php": ">=5.6", "psr/http-message": "1.0.*", "rize/uri-template": "~0.3" @@ -1558,7 +1575,7 @@ "google/cloud-common-protos": "^0.3", "google/gax": "^1.9", "opis/closure": "^3", - "phpdocumentor/reflection": "^3.0||^4.0", + "phpdocumentor/reflection": "^3.0||^4.0||^5.3", "phpspec/prophecy": "^1.10.3", "phpunit/phpunit": "^4.8|^5.0|^8.0", "squizlabs/php_codesniffer": "2.*", @@ -1591,22 +1608,22 @@ ], "description": "Google Cloud PHP shared dependency, providing functionality useful to all components.", "support": { - "source": "https://github.com/googleapis/google-cloud-php-core/tree/v1.47.3" + "source": "https://github.com/googleapis/google-cloud-php-core/tree/v1.49.2" }, - "time": "2022-10-14T17:32:26+00:00" + "time": "2023-03-10T20:22:17+00:00" }, { "name": "google/cloud-storage", - "version": "v1.28.1", + "version": "v1.30.2", "source": { "type": "git", "url": "https://github.com/googleapis/google-cloud-php-storage.git", - "reference": "83e8beac404f38d2e869da4c3fbb7bdf96193f77" + "reference": "b7f74ec1b701d56945cbc6c20345e2d21b1b3545" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-cloud-php-storage/zipball/83e8beac404f38d2e869da4c3fbb7bdf96193f77", - "reference": "83e8beac404f38d2e869da4c3fbb7bdf96193f77", + "url": "https://api.github.com/repos/googleapis/google-cloud-php-storage/zipball/b7f74ec1b701d56945cbc6c20345e2d21b1b3545", + "reference": "b7f74ec1b701d56945cbc6c20345e2d21b1b3545", "shasum": "" }, "require": { @@ -1647,9 +1664,61 @@ ], "description": "Cloud Storage Client for PHP", "support": { - "source": "https://github.com/googleapis/google-cloud-php-storage/tree/v1.28.1" + "source": "https://github.com/googleapis/google-cloud-php-storage/tree/v1.30.2" + }, + "time": "2023-01-27T18:26:22+00:00" + }, + { + "name": "google/common-protos", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/googleapis/common-protos-php.git", + "reference": "57d4ad36cc48cc0369123042908013ef2a86bb98" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/googleapis/common-protos-php/zipball/57d4ad36cc48cc0369123042908013ef2a86bb98", + "reference": "57d4ad36cc48cc0369123042908013ef2a86bb98", + "shasum": "" + }, + "require": { + "google/protobuf": "^3.6.1" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36||^8.5", + "sami/sami": "*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Api\\": "src/Api", + "Google\\Iam\\": "src/Iam", + "Google\\Rpc\\": "src/Rpc", + "Google\\Type\\": "src/Type", + "Google\\Cloud\\": "src/Cloud", + "GPBMetadata\\Google\\Api\\": "metadata/Api", + "GPBMetadata\\Google\\Iam\\": "metadata/Iam", + "GPBMetadata\\Google\\Rpc\\": "metadata/Rpc", + "GPBMetadata\\Google\\Type\\": "metadata/Type", + "GPBMetadata\\Google\\Cloud\\": "metadata/Cloud", + "GPBMetadata\\Google\\Logging\\": "metadata/Logging" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google API Common Protos for PHP", + "homepage": "https://github.com/googleapis/common-protos-php", + "keywords": [ + "google" + ], + "support": { + "issues": "https://github.com/googleapis/common-protos-php/issues", + "source": "https://github.com/googleapis/common-protos-php/tree/v3.2.0" }, - "time": "2022-08-23T20:22:22+00:00" + "time": "2023-01-12T16:51:46+00:00" }, { "name": "google/crc32", @@ -1699,16 +1768,16 @@ }, { "name": "google/protobuf", - "version": "v3.21.9", + "version": "v3.22.2", "source": { "type": "git", "url": "https://github.com/protocolbuffers/protobuf-php.git", - "reference": "1bf02c57f260c5eea5e75a35c1a943fe943a188a" + "reference": "ff28a64946708e13f2be627b5e5561f247ecf95c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/1bf02c57f260c5eea5e75a35c1a943fe943a188a", - "reference": "1bf02c57f260c5eea5e75a35c1a943fe943a188a", + "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/ff28a64946708e13f2be627b5e5561f247ecf95c", + "reference": "ff28a64946708e13f2be627b5e5561f247ecf95c", "shasum": "" }, "require": { @@ -1737,30 +1806,30 @@ "proto" ], "support": { - "source": "https://github.com/protocolbuffers/protobuf-php/tree/v3.21.9" + "source": "https://github.com/protocolbuffers/protobuf-php/tree/v3.22.2" }, - "time": "2022-10-26T20:30:45+00:00" + "time": "2023-03-10T17:52:03+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", - "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9" + "phpoption/phpoption": "^1.9.1" }, "require-dev": { - "phpunit/phpunit": "^8.5.28 || ^9.5.21" + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" }, "type": "library", "autoload": { @@ -1789,7 +1858,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" }, "funding": [ { @@ -1801,7 +1870,7 @@ "type": "tidelift" } ], - "time": "2022-07-30T15:56:11+00:00" + "time": "2023-02-25T20:23:15+00:00" }, { "name": "guzzlehttp/guzzle", @@ -2017,16 +2086,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.4.3", + "version": "2.4.4", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "67c26b443f348a51926030c83481b85718457d3d" + "reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", - "reference": "67c26b443f348a51926030c83481b85718457d3d", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf", + "reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf", "shasum": "" }, "require": { @@ -2116,7 +2185,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.3" + "source": "https://github.com/guzzle/psr7/tree/2.4.4" }, "funding": [ { @@ -2132,20 +2201,20 @@ "type": "tidelift" } ], - "time": "2022-10-26T14:07:24+00:00" + "time": "2023-03-09T13:19:02+00:00" }, { "name": "illuminate/collections", - "version": "v9.37.0", + "version": "v9.52.4", "source": { "type": "git", "url": "https://github.com/illuminate/collections.git", - "reference": "32e3cd051cf1d12c1e7d5f7bb5a52d0dae8b7a8b" + "reference": "0168d0e44ea0c4fe5451fe08cde7049b9e9f9741" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/32e3cd051cf1d12c1e7d5f7bb5a52d0dae8b7a8b", - "reference": "32e3cd051cf1d12c1e7d5f7bb5a52d0dae8b7a8b", + "url": "https://api.github.com/repos/illuminate/collections/zipball/0168d0e44ea0c4fe5451fe08cde7049b9e9f9741", + "reference": "0168d0e44ea0c4fe5451fe08cde7049b9e9f9741", "shasum": "" }, "require": { @@ -2187,20 +2256,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-10-06T14:13:23+00:00" + "time": "2023-02-22T11:32:27+00:00" }, { "name": "illuminate/conditionable", - "version": "v9.37.0", + "version": "v9.52.4", "source": { "type": "git", "url": "https://github.com/illuminate/conditionable.git", - "reference": "5b40f51ccb07e0e7b1ec5559d8db9e0e2dc51883" + "reference": "bea24daa0fa84b7e7b0d5b84f62c71b7e2dc3364" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/conditionable/zipball/5b40f51ccb07e0e7b1ec5559d8db9e0e2dc51883", - "reference": "5b40f51ccb07e0e7b1ec5559d8db9e0e2dc51883", + "url": "https://api.github.com/repos/illuminate/conditionable/zipball/bea24daa0fa84b7e7b0d5b84f62c71b7e2dc3364", + "reference": "bea24daa0fa84b7e7b0d5b84f62c71b7e2dc3364", "shasum": "" }, "require": { @@ -2233,20 +2302,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-07-29T19:44:19+00:00" + "time": "2023-02-01T21:42:32+00:00" }, { "name": "illuminate/contracts", - "version": "v9.37.0", + "version": "v9.52.4", "source": { "type": "git", "url": "https://github.com/illuminate/contracts.git", - "reference": "d57130115694b4f6a98d064bea31cdb09d7784f8" + "reference": "44f65d723b13823baa02ff69751a5948bde60c22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/d57130115694b4f6a98d064bea31cdb09d7784f8", - "reference": "d57130115694b4f6a98d064bea31cdb09d7784f8", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/44f65d723b13823baa02ff69751a5948bde60c22", + "reference": "44f65d723b13823baa02ff69751a5948bde60c22", "shasum": "" }, "require": { @@ -2281,11 +2350,11 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-09-15T13:31:42+00:00" + "time": "2023-02-08T14:36:30+00:00" }, { "name": "illuminate/macroable", - "version": "v9.37.0", + "version": "v9.52.4", "source": { "type": "git", "url": "https://github.com/illuminate/macroable.git", @@ -2378,16 +2447,16 @@ }, { "name": "kreait/firebase-php", - "version": "5.26.3", + "version": "5.26.4", "source": { "type": "git", "url": "https://github.com/kreait/firebase-php.git", - "reference": "8eb92e2415887ff1c4062316bdec9e1069c54d41" + "reference": "01c129ee628dc988b1da4b6cbaf1ee421d951aed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kreait/firebase-php/zipball/8eb92e2415887ff1c4062316bdec9e1069c54d41", - "reference": "8eb92e2415887ff1c4062316bdec9e1069c54d41", + "url": "https://api.github.com/repos/kreait/firebase-php/zipball/01c129ee628dc988b1da4b6cbaf1ee421d951aed", + "reference": "01c129ee628dc988b1da4b6cbaf1ee421d951aed", "shasum": "" }, "require": { @@ -2472,7 +2541,7 @@ "type": "github" } ], - "time": "2022-06-14T23:02:41+00:00" + "time": "2023-01-24T00:00:03+00:00" }, { "name": "kreait/firebase-tokens", @@ -2557,16 +2626,16 @@ }, { "name": "laminas/laminas-diactoros", - "version": "2.20.0", + "version": "2.24.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "10696c809866bebd9d71dca14de6c0d6c1cac2f8" + "reference": "6028af6c3b5ced4d063a680d2483cce67578b902" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/10696c809866bebd9d71dca14de6c0d6c1cac2f8", - "reference": "10696c809866bebd9d71dca14de6c0d6c1cac2f8", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6028af6c3b5ced4d063a680d2483cce67578b902", + "reference": "6028af6c3b5ced4d063a680d2483cce67578b902", "shasum": "" }, "require": { @@ -2588,10 +2657,10 @@ "ext-libxml": "*", "http-interop/http-factory-tests": "^0.9.0", "laminas/laminas-coding-standard": "^2.4.0", - "php-http/psr7-integration-tests": "^1.1.1", - "phpunit/phpunit": "^9.5.25", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.28" + "php-http/psr7-integration-tests": "^1.2", + "phpunit/phpunit": "^9.5.27", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.4" }, "type": "library", "extra": { @@ -2650,35 +2719,38 @@ "type": "community_bridge" } ], - "time": "2022-10-25T13:35:54+00:00" + "time": "2022-12-20T12:22:40+00:00" }, { "name": "lcobucci/clock", - "version": "2.2.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/lcobucci/clock.git", - "reference": "fb533e093fd61321bfcbac08b131ce805fe183d3" + "reference": "c7aadcd6fd97ed9e199114269c0be3f335e38876" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/clock/zipball/fb533e093fd61321bfcbac08b131ce805fe183d3", - "reference": "fb533e093fd61321bfcbac08b131ce805fe183d3", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/c7aadcd6fd97ed9e199114269c0be3f335e38876", + "reference": "c7aadcd6fd97ed9e199114269c0be3f335e38876", "shasum": "" }, "require": { - "php": "^8.0", - "stella-maris/clock": "^0.1.4" + "php": "~8.1.0 || ~8.2.0", + "stella-maris/clock": "^0.1.7" + }, + "provide": { + "psr/clock-implementation": "1.0" }, "require-dev": { "infection/infection": "^0.26", - "lcobucci/coding-standard": "^8.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^9.5" + "lcobucci/coding-standard": "^9.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^9.5.27" }, "type": "library", "autoload": { @@ -2699,7 +2771,7 @@ "description": "Yet another clock abstraction", "support": { "issues": "https://github.com/lcobucci/clock/issues", - "source": "https://github.com/lcobucci/clock/tree/2.2.0" + "source": "https://github.com/lcobucci/clock/tree/2.3.0" }, "funding": [ { @@ -2711,7 +2783,7 @@ "type": "patreon" } ], - "time": "2022-04-19T19:34:17+00:00" + "time": "2022-12-19T14:38:11+00:00" }, { "name": "lcobucci/jwt", @@ -2931,16 +3003,16 @@ }, { "name": "monolog/monolog", - "version": "2.8.0", + "version": "2.9.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", "shasum": "" }, "require": { @@ -2955,7 +3027,7 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", "guzzlehttp/guzzle": "^7.4", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", @@ -3017,7 +3089,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.8.0" + "source": "https://github.com/Seldaek/monolog/tree/2.9.1" }, "funding": [ { @@ -3029,7 +3101,7 @@ "type": "tidelift" } ], - "time": "2022-07-24T11:55:47+00:00" + "time": "2023-02-06T13:44:46+00:00" }, { "name": "mtdowling/jmespath.php", @@ -3094,16 +3166,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -3141,7 +3213,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -3149,20 +3221,20 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nikic/php-parser", - "version": "v4.15.1", + "version": "v4.15.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900" + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", - "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", "shasum": "" }, "require": { @@ -3203,9 +3275,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" }, - "time": "2022-09-04T07:30:47+00:00" + "time": "2023-03-05T19:49:14+00:00" }, { "name": "nyholm/psr7", @@ -3455,24 +3527,24 @@ }, { "name": "phpoption/phpoption", - "version": "1.9.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab" + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", - "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8", - "phpunit/phpunit": "^8.5.28 || ^9.5.21" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" }, "type": "library", "extra": { @@ -3514,7 +3586,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.0" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" }, "funding": [ { @@ -3526,7 +3598,7 @@ "type": "tidelift" } ], - "time": "2022-07-30T15:51:26+00:00" + "time": "2023-02-25T19:38:58+00:00" }, { "name": "psr/cache", @@ -3577,6 +3649,54 @@ }, "time": "2021-02-03T23:26:27+00:00" }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, { "name": "psr/container", "version": "2.0.2", @@ -4101,42 +4221,52 @@ }, { "name": "ramsey/collection", - "version": "1.2.2", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", "shasum": "" }, "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" + "php": "^8.1" }, "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" }, "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, "autoload": { "psr-4": { "Ramsey\\Collection\\": "src/" @@ -4164,7 +4294,7 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/1.2.2" + "source": "https://github.com/ramsey/collection/tree/2.0.0" }, "funding": [ { @@ -4176,28 +4306,27 @@ "type": "tidelift" } ], - "time": "2021-10-10T03:01:02+00:00" + "time": "2022-12-31T21:50:55+00:00" }, { "name": "ramsey/uuid", - "version": "4.5.1", + "version": "4.7.3", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "a161a26d917604dc6d3aa25100fddf2556e9f35d" + "reference": "433b2014e3979047db08a17a205f410ba3869cf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/a161a26d917604dc6d3aa25100fddf2556e9f35d", - "reference": "a161a26d917604dc6d3aa25100fddf2556e9f35d", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/433b2014e3979047db08a17a205f410ba3869cf2", + "reference": "433b2014e3979047db08a17a205f410ba3869cf2", "shasum": "" }, "require": { "brick/math": "^0.8.8 || ^0.9 || ^0.10", - "ext-ctype": "*", "ext-json": "*", "php": "^8.0", - "ramsey/collection": "^1.0" + "ramsey/collection": "^1.2 || ^2.0" }, "replace": { "rhumsaa/uuid": "self.version" @@ -4226,7 +4355,6 @@ }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", @@ -4258,7 +4386,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.5.1" + "source": "https://github.com/ramsey/uuid/tree/4.7.3" }, "funding": [ { @@ -4270,7 +4398,7 @@ "type": "tidelift" } ], - "time": "2022-09-16T03:22:46+00:00" + "time": "2023-01-12T18:13:24+00:00" }, { "name": "riverline/multipart-parser", @@ -4440,16 +4568,16 @@ }, { "name": "spiral/cycle-bridge", - "version": "v1.2.1", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/spiral/cycle-bridge.git", - "reference": "4fe2dabcb7e173781c66cc92b7ab209749ea5b87" + "reference": "dfa3d8a9045cf38eafde87636b6db3469b2179d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spiral/cycle-bridge/zipball/4fe2dabcb7e173781c66cc92b7ab209749ea5b87", - "reference": "4fe2dabcb7e173781c66cc92b7ab209749ea5b87", + "url": "https://api.github.com/repos/spiral/cycle-bridge/zipball/dfa3d8a9045cf38eafde87636b6db3469b2179d5", + "reference": "dfa3d8a9045cf38eafde87636b6db3469b2179d5", "shasum": "" }, "require": { @@ -4462,6 +4590,7 @@ "php": ">=8.0", "spiral/attributes": "^2.10", "spiral/framework": "^2.10", + "spiral/prototype": "^2.10", "spiral/reactor": "^2.10", "spiral/scaffolder": "^2.10" }, @@ -4504,7 +4633,7 @@ "issues": "https://github.com/spiral/framework/issues", "source": "https://github.com/spiral/cycle-bridge" }, - "time": "2022-04-06T18:40:18+00:00" + "time": "2023-02-07T08:40:51+00:00" }, { "name": "spiral/framework", @@ -4844,16 +4973,16 @@ }, { "name": "spiral/roadrunner", - "version": "v2.11.4", + "version": "v2.12.3", "source": { "type": "git", "url": "https://github.com/roadrunner-server/roadrunner.git", - "reference": "bee07c00a8954945156ca3e3de9c032b530abd01" + "reference": "18f526ad9eef19b57bdf1ad4b0252683f514c718" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/roadrunner-server/roadrunner/zipball/bee07c00a8954945156ca3e3de9c032b530abd01", - "reference": "bee07c00a8954945156ca3e3de9c032b530abd01", + "url": "https://api.github.com/repos/roadrunner-server/roadrunner/zipball/18f526ad9eef19b57bdf1ad4b0252683f514c718", + "reference": "18f526ad9eef19b57bdf1ad4b0252683f514c718", "shasum": "" }, "require": { @@ -4871,17 +5000,31 @@ "name": "Anton Titov / Wolfy-J", "email": "wolfy.jd@gmail.com" }, + { + "name": "Valery Piashchynski", + "homepage": "https://github.com/rustatian" + }, { "name": "RoadRunner Community", "homepage": "https://github.com/roadrunner-server/roadrunner/graphs/contributors" } ], "description": "RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins", + "homepage": "https://roadrunner.dev/", "support": { + "chat": "https://discord.gg/V6EK4he", + "docs": "https://roadrunner.dev/docs", + "forum": "https://forum.roadrunner.dev/", "issues": "https://github.com/roadrunner-server/roadrunner/issues", - "source": "https://github.com/roadrunner-server/roadrunner/tree/v2.11.4" + "source": "https://github.com/roadrunner-server/roadrunner/tree/v2.12.3" }, - "time": "2022-10-06T14:25:16+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/roadrunner-server", + "type": "github" + } + ], + "time": "2023-02-16T13:00:26+00:00" }, { "name": "spiral/roadrunner-bridge", @@ -5016,16 +5159,16 @@ }, { "name": "spiral/roadrunner-cli", - "version": "v2.3.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/spiral/roadrunner-cli.git", - "reference": "2b42333e1ee772a950039e8aebb5d819377b2bb4" + "reference": "8676fcc57823b164cac216f08e8590fe7d0f2016" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spiral/roadrunner-cli/zipball/2b42333e1ee772a950039e8aebb5d819377b2bb4", - "reference": "2b42333e1ee772a950039e8aebb5d819377b2bb4", + "url": "https://api.github.com/repos/spiral/roadrunner-cli/zipball/8676fcc57823b164cac216f08e8590fe7d0f2016", + "reference": "8676fcc57823b164cac216f08e8590fe7d0f2016", "shasum": "" }, "require": { @@ -5075,26 +5218,27 @@ "description": "RoadRunner: Command Line Interface", "support": { "issues": "https://github.com/spiral/roadrunner-cli/issues", - "source": "https://github.com/spiral/roadrunner-cli/tree/v2.3.0" + "source": "https://github.com/spiral/roadrunner-cli/tree/v2.4.0" }, - "time": "2022-07-28T08:53:10+00:00" + "time": "2022-12-16T07:35:51+00:00" }, { "name": "spiral/roadrunner-grpc", - "version": "v2.0.0", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/spiral/roadrunner-grpc.git", - "reference": "dc194e4f0d1e421561bca8b46073a981ee63e373" + "reference": "41ddf6f9747c990609830c61723da9f9cccb9ded" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spiral/roadrunner-grpc/zipball/dc194e4f0d1e421561bca8b46073a981ee63e373", - "reference": "dc194e4f0d1e421561bca8b46073a981ee63e373", + "url": "https://api.github.com/repos/spiral/roadrunner-grpc/zipball/41ddf6f9747c990609830c61723da9f9cccb9ded", + "reference": "41ddf6f9747c990609830c61723da9f9cccb9ded", "shasum": "" }, "require": { "ext-json": "*", + "google/common-protos": "^3.1", "google/protobuf": "^3.7", "php": ">=7.4", "spiral/roadrunner": "^2.0", @@ -5135,22 +5279,22 @@ "description": "High-Performance GRPC server for PHP applications", "support": { "issues": "https://github.com/spiral/roadrunner-grpc/issues", - "source": "https://github.com/spiral/roadrunner-grpc/tree/v2.0.0" + "source": "https://github.com/spiral/roadrunner-grpc/tree/v2.0.1" }, - "time": "2021-12-08T07:26:27+00:00" + "time": "2022-11-10T10:11:03+00:00" }, { "name": "spiral/roadrunner-http", - "version": "v2.1.0", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/spiral/roadrunner-http.git", - "reference": "3be8bac365d436028a9583e7d438bf6e7183e599" + "reference": "2b397a27f19cbf8934c20b9e691e0f2edfd2d7b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spiral/roadrunner-http/zipball/3be8bac365d436028a9583e7d438bf6e7183e599", - "reference": "3be8bac365d436028a9583e7d438bf6e7183e599", + "url": "https://api.github.com/repos/spiral/roadrunner-http/zipball/2b397a27f19cbf8934c20b9e691e0f2edfd2d7b9", + "reference": "2b397a27f19cbf8934c20b9e691e0f2edfd2d7b9", "shasum": "" }, "require": { @@ -5199,22 +5343,22 @@ "description": "RoadRunner: HTTP and PSR-7 worker", "support": { "issues": "https://github.com/spiral/roadrunner-http/issues", - "source": "https://github.com/spiral/roadrunner-http/tree/v2.1.0" + "source": "https://github.com/spiral/roadrunner-http/tree/v2.2.0" }, - "time": "2022-03-22T14:48:00+00:00" + "time": "2022-11-30T11:40:04+00:00" }, { "name": "spiral/roadrunner-jobs", - "version": "v2.6.0", + "version": "v2.8.0", "source": { "type": "git", "url": "https://github.com/spiral/roadrunner-jobs.git", - "reference": "a6a233e1234c393789a26daa6fe01fc86a541b0c" + "reference": "47f2e1a85f26df9072af67162b1b026a0835d8c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spiral/roadrunner-jobs/zipball/a6a233e1234c393789a26daa6fe01fc86a541b0c", - "reference": "a6a233e1234c393789a26daa6fe01fc86a541b0c", + "url": "https://api.github.com/repos/spiral/roadrunner-jobs/zipball/47f2e1a85f26df9072af67162b1b026a0835d8c6", + "reference": "47f2e1a85f26df9072af67162b1b026a0835d8c6", "shasum": "" }, "require": { @@ -5232,7 +5376,7 @@ "roave/security-advisories": "dev-master", "spiral/code-style": "^1.0", "symfony/var-dumper": "^5.1", - "vimeo/psalm": ">=4.14" + "vimeo/psalm": "^4.14" }, "type": "library", "extra": { @@ -5270,29 +5414,29 @@ "description": "RoadRunner Queues (Jobs) plugin API library", "support": { "issues": "https://github.com/spiral/roadrunner-jobs/issues", - "source": "https://github.com/spiral/roadrunner-jobs/tree/v2.6.0" + "source": "https://github.com/spiral/roadrunner-jobs/tree/v2.8.0" }, - "time": "2022-10-20T14:46:28+00:00" + "time": "2023-02-24T09:41:12+00:00" }, { "name": "spiral/roadrunner-kv", - "version": "v2.2.0", + "version": "v2.2.1", "source": { "type": "git", "url": "https://github.com/spiral/roadrunner-kv.git", - "reference": "22d0cf0b6d237a6dbf47765d32ccdda7c25147b0" + "reference": "dd99912d0f60518bbfe2cf83bb3a49f92d46e184" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spiral/roadrunner-kv/zipball/22d0cf0b6d237a6dbf47765d32ccdda7c25147b0", - "reference": "22d0cf0b6d237a6dbf47765d32ccdda7c25147b0", + "url": "https://api.github.com/repos/spiral/roadrunner-kv/zipball/dd99912d0f60518bbfe2cf83bb3a49f92d46e184", + "reference": "dd99912d0f60518bbfe2cf83bb3a49f92d46e184", "shasum": "" }, "require": { "ext-json": "*", "google/protobuf": "^3.7", "php": ">=7.4", - "psr/simple-cache": "^1.0", + "psr/simple-cache": "1 - 2", "spiral/goridge": "^3.1", "spiral/roadrunner": "^2.0", "symfony/polyfill-php80": "^1.23" @@ -5340,9 +5484,9 @@ "description": "RoadRunner kv plugin bridge", "support": { "issues": "https://github.com/spiral/roadrunner-kv/issues", - "source": "https://github.com/spiral/roadrunner-kv/tree/v2.2.0" + "source": "https://github.com/spiral/roadrunner-kv/tree/v2.2.1" }, - "time": "2022-08-22T14:50:57+00:00" + "time": "2022-11-05T14:55:12+00:00" }, { "name": "spiral/roadrunner-metrics", @@ -5523,20 +5667,21 @@ }, { "name": "stella-maris/clock", - "version": "0.1.6", + "version": "0.1.7", "source": { "type": "git", "url": "https://github.com/stella-maris-solutions/clock.git", - "reference": "a94228dac03c9a8411198ce8c8dacbbe99c930c3" + "reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stella-maris-solutions/clock/zipball/a94228dac03c9a8411198ce8c8dacbbe99c930c3", - "reference": "a94228dac03c9a8411198ce8c8dacbbe99c930c3", + "url": "https://api.github.com/repos/stella-maris-solutions/clock/zipball/fa23ce16019289a18bb3446fdecd45befcdd94f8", + "reference": "fa23ce16019289a18bb3446fdecd45befcdd94f8", "shasum": "" }, "require": { - "php": "^7.0|^8.0" + "php": "^7.0|^8.0", + "psr/clock": "^1.0" }, "type": "library", "autoload": { @@ -5563,10 +5708,9 @@ "psr20" ], "support": { - "issues": "https://github.com/stella-maris-solutions/clock/issues", - "source": "https://github.com/stella-maris-solutions/clock/tree/0.1.6" + "source": "https://github.com/stella-maris-solutions/clock/tree/0.1.7" }, - "time": "2022-09-27T15:03:11+00:00" + "time": "2022-11-25T16:15:06+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -5646,16 +5790,16 @@ }, { "name": "symfony/console", - "version": "v6.1.7", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a1282bd0c096e0bdb8800b104177e2ce404d8815" + "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a1282bd0c096e0bdb8800b104177e2ce404d8815", - "reference": "a1282bd0c096e0bdb8800b104177e2ce404d8815", + "url": "https://api.github.com/repos/symfony/console/zipball/cbad09eb8925b6ad4fb721c7a179344dc4a19d45", + "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45", "shasum": "" }, "require": { @@ -5722,7 +5866,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.1.7" + "source": "https://github.com/symfony/console/tree/v6.2.7" }, "funding": [ { @@ -5738,20 +5882,20 @@ "type": "tidelift" } ], - "time": "2022-10-26T21:42:49+00:00" + "time": "2023-02-25T17:00:03+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.1.1", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", "shasum": "" }, "require": { @@ -5760,7 +5904,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -5789,7 +5933,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" }, "funding": [ { @@ -5805,20 +5949,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2023-03-01T10:25:55+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.1.0", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347" + "reference": "404b307de426c1c488e5afad64403e5f145e82a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a0449a7ad7daa0f7c0acd508259f80544ab5a347", - "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/404b307de426c1c488e5afad64403e5f145e82a5", + "reference": "404b307de426c1c488e5afad64403e5f145e82a5", "shasum": "" }, "require": { @@ -5872,7 +6016,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.1.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.7" }, "funding": [ { @@ -5888,20 +6032,20 @@ "type": "tidelift" } ], - "time": "2022-05-05T16:51:07+00:00" + "time": "2023-02-14T08:44:56+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.1.1", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "02ff5eea2f453731cfbc6bc215e456b781480448" + "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/02ff5eea2f453731cfbc6bc215e456b781480448", - "reference": "02ff5eea2f453731cfbc6bc215e456b781480448", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", "shasum": "" }, "require": { @@ -5914,7 +6058,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -5951,7 +6095,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" }, "funding": [ { @@ -5967,20 +6111,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/finder", - "version": "v6.1.3", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709" + "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/39696bff2c2970b3779a5cac7bf9f0b88fc2b709", - "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709", + "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", + "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", "shasum": "" }, "require": { @@ -6015,7 +6159,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.1.3" + "source": "https://github.com/symfony/finder/tree/v6.2.7" }, "funding": [ { @@ -6031,25 +6175,26 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:42:06+00:00" + "time": "2023-02-16T09:57:23+00:00" }, { "name": "symfony/http-client", - "version": "v6.1.7", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "f515d066728774efb34347a87580621416ca8968" + "reference": "0a5be6cbc570ae23b51b49d67341f378629d78e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/f515d066728774efb34347a87580621416ca8968", - "reference": "f515d066728774efb34347a87580621416ca8968", + "url": "https://api.github.com/repos/symfony/http-client/zipball/0a5be6cbc570ae23b51b49d67341f378629d78e4", + "reference": "0a5be6cbc570ae23b51b49d67341f378629d78e4", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/http-client-contracts": "^3", "symfony/service-contracts": "^1.0|^2|^3" }, @@ -6099,7 +6244,7 @@ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v6.1.7" + "source": "https://github.com/symfony/http-client/tree/v6.2.7" }, "funding": [ { @@ -6115,20 +6260,20 @@ "type": "tidelift" } ], - "time": "2022-10-28T16:23:08+00:00" + "time": "2023-02-21T10:54:55+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.1.1", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "fd038f08c623ab5d22b26e9ba35afe8c79071800" + "reference": "df2ecd6cb70e73c1080e6478aea85f5f4da2c48b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/fd038f08c623ab5d22b26e9ba35afe8c79071800", - "reference": "fd038f08c623ab5d22b26e9ba35afe8c79071800", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/df2ecd6cb70e73c1080e6478aea85f5f4da2c48b", + "reference": "df2ecd6cb70e73c1080e6478aea85f5f4da2c48b", "shasum": "" }, "require": { @@ -6140,7 +6285,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -6180,7 +6325,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.2.1" }, "funding": [ { @@ -6196,37 +6341,42 @@ "type": "tidelift" } ], - "time": "2022-04-22T07:30:54+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/mailer", - "version": "v6.1.7", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "7e19813c0b43387c55665780c4caea505cc48391" + "reference": "e4f84c633b72ec70efc50b8016871c3bc43e691e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/7e19813c0b43387c55665780c4caea505cc48391", - "reference": "7e19813c0b43387c55665780c4caea505cc48391", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e4f84c633b72ec70efc50b8016871c3bc43e691e", + "reference": "e4f84c633b72ec70efc50b8016871c3bc43e691e", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3", + "egulias/email-validator": "^2.1.10|^3|^4", "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", + "symfony/mime": "^6.2", "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "symfony/http-kernel": "<5.4" + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/messenger": "^6.2", + "symfony/twig-bridge": "^6.2" }, "type": "library", "autoload": { @@ -6254,7 +6404,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.1.7" + "source": "https://github.com/symfony/mailer/tree/v6.2.7" }, "funding": [ { @@ -6270,20 +6420,20 @@ "type": "tidelift" } ], - "time": "2022-10-28T16:23:08+00:00" + "time": "2023-02-21T10:35:38+00:00" }, { "name": "symfony/mime", - "version": "v6.1.7", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "f440f066d57691088d998d6e437ce98771144618" + "reference": "62e341f80699badb0ad70b31149c8df89a2d778e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/f440f066d57691088d998d6e437ce98771144618", - "reference": "f440f066d57691088d998d6e437ce98771144618", + "url": "https://api.github.com/repos/symfony/mime/zipball/62e341f80699badb0ad70b31149c8df89a2d778e", + "reference": "62e341f80699badb0ad70b31149c8df89a2d778e", "shasum": "" }, "require": { @@ -6295,15 +6445,17 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4" + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.2" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/property-access": "^5.4|^6.0", "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.2|^6.0" + "symfony/serializer": "^6.2" }, "type": "library", "autoload": { @@ -6335,7 +6487,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.1.7" + "source": "https://github.com/symfony/mime/tree/v6.2.7" }, "funding": [ { @@ -6351,20 +6503,20 @@ "type": "tidelift" } ], - "time": "2022-10-19T08:10:53+00:00" + "time": "2023-02-24T10:42:00+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { @@ -6379,7 +6531,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6417,7 +6569,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -6433,20 +6585,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "143f1881e655bebca1312722af8068de235ae5dc" + "reference": "927013f3aac555983a5059aada98e1907d842695" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc", - "reference": "143f1881e655bebca1312722af8068de235ae5dc", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", + "reference": "927013f3aac555983a5059aada98e1907d842695", "shasum": "" }, "require": { @@ -6461,7 +6613,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6500,7 +6652,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0" }, "funding": [ { @@ -6516,20 +6668,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "433d05519ce6990bf3530fba6957499d327395c2" + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", - "reference": "433d05519ce6990bf3530fba6957499d327395c2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { @@ -6541,7 +6693,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6581,7 +6733,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" }, "funding": [ { @@ -6597,20 +6749,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" + "reference": "639084e360537a19f9ee352433b84ce831f3d2da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", + "reference": "639084e360537a19f9ee352433b84ce831f3d2da", "shasum": "" }, "require": { @@ -6624,7 +6776,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6668,7 +6820,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" }, "funding": [ { @@ -6684,20 +6836,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { @@ -6709,7 +6861,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6752,7 +6904,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -6768,20 +6920,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -6796,7 +6948,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6835,7 +6987,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -6851,20 +7003,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", "shasum": "" }, "require": { @@ -6873,7 +7025,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6911,7 +7063,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" }, "funding": [ { @@ -6927,20 +7079,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "shasum": "" }, "require": { @@ -6949,7 +7101,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6990,7 +7142,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" }, "funding": [ { @@ -7006,20 +7158,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -7028,7 +7180,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7073,7 +7225,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -7089,20 +7241,20 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", "shasum": "" }, "require": { @@ -7111,7 +7263,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7152,7 +7304,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" }, "funding": [ { @@ -7168,20 +7320,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.1.1", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "925e713fe8fcacf6bc05e936edd8dd5441a21239" + "reference": "a8c9cedf55f314f3a186041d19537303766df09a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/925e713fe8fcacf6bc05e936edd8dd5441a21239", - "reference": "925e713fe8fcacf6bc05e936edd8dd5441a21239", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", + "reference": "a8c9cedf55f314f3a186041d19537303766df09a", "shasum": "" }, "require": { @@ -7197,7 +7349,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -7237,7 +7389,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" }, "funding": [ { @@ -7253,20 +7405,20 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:18:58+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/string", - "version": "v6.1.7", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "823f143370880efcbdfa2dbca946b3358c4707e5" + "reference": "67b8c1eec78296b85dc1c7d9743830160218993d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/823f143370880efcbdfa2dbca946b3358c4707e5", - "reference": "823f143370880efcbdfa2dbca946b3358c4707e5", + "url": "https://api.github.com/repos/symfony/string/zipball/67b8c1eec78296b85dc1c7d9743830160218993d", + "reference": "67b8c1eec78296b85dc1c7d9743830160218993d", "shasum": "" }, "require": { @@ -7282,6 +7434,7 @@ "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", + "symfony/intl": "^6.2", "symfony/translation-contracts": "^2.0|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, @@ -7322,7 +7475,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.1.7" + "source": "https://github.com/symfony/string/tree/v6.2.7" }, "funding": [ { @@ -7338,20 +7491,20 @@ "type": "tidelift" } ], - "time": "2022-10-10T09:34:31+00:00" + "time": "2023-02-24T10:42:00+00:00" }, { "name": "symfony/translation", - "version": "v6.1.6", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e6cd330e5a072518f88d65148f3f165541807494" + "reference": "90db1c6138c90527917671cd9ffa9e8b359e3a73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e6cd330e5a072518f88d65148f3f165541807494", - "reference": "e6cd330e5a072518f88d65148f3f165541807494", + "url": "https://api.github.com/repos/symfony/translation/zipball/90db1c6138c90527917671cd9ffa9e8b359e3a73", + "reference": "90db1c6138c90527917671cd9ffa9e8b359e3a73", "shasum": "" }, "require": { @@ -7371,6 +7524,7 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { + "nikic/php-parser": "^4.13", "psr/log": "^1|^2|^3", "symfony/config": "^5.4|^6.0", "symfony/console": "^5.4|^6.0", @@ -7385,6 +7539,7 @@ "symfony/yaml": "^5.4|^6.0" }, "suggest": { + "nikic/php-parser": "To use PhpAstExtractor", "psr/log-implementation": "To use logging capability in translator", "symfony/config": "", "symfony/yaml": "" @@ -7418,7 +7573,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.1.6" + "source": "https://github.com/symfony/translation/tree/v6.2.7" }, "funding": [ { @@ -7434,20 +7589,20 @@ "type": "tidelift" } ], - "time": "2022-10-07T08:04:03+00:00" + "time": "2023-02-24T10:42:00+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.1.1", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc" + "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/606be0f48e05116baef052f7f3abdb345c8e02cc", - "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", + "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", "shasum": "" }, "require": { @@ -7459,7 +7614,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -7499,7 +7654,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" }, "funding": [ { @@ -7515,20 +7670,20 @@ "type": "tidelift" } ], - "time": "2022-06-27T17:24:16+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/yaml", - "version": "v6.1.6", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "66c6b0cf52b00f74614a2cf7ae7db08ea1095931" + "reference": "e8e6a1d59e050525f27a1f530aa9703423cb7f57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/66c6b0cf52b00f74614a2cf7ae7db08ea1095931", - "reference": "66c6b0cf52b00f74614a2cf7ae7db08ea1095931", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e8e6a1d59e050525f27a1f530aa9703423cb7f57", + "reference": "e8e6a1d59e050525f27a1f530aa9703423cb7f57", "shasum": "" }, "require": { @@ -7573,7 +7728,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.1.6" + "source": "https://github.com/symfony/yaml/tree/v6.2.7" }, "funding": [ { @@ -7589,7 +7744,7 @@ "type": "tidelift" } ], - "time": "2022-10-07T08:04:03+00:00" + "time": "2023-02-16T09:57:23+00:00" }, { "name": "vlucas/phpdotenv", @@ -8216,16 +8371,16 @@ }, { "name": "composer/pcre", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", "shasum": "" }, "require": { @@ -8267,7 +8422,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.0.0" + "source": "https://github.com/composer/pcre/tree/3.1.0" }, "funding": [ { @@ -8283,7 +8438,7 @@ "type": "tidelift" } ], - "time": "2022-02-25T20:21:48+00:00" + "time": "2022-11-17T09:50:14+00:00" }, { "name": "composer/xdebug-handler", @@ -8614,16 +8769,16 @@ }, { "name": "netresearch/jsonmapper", - "version": "v4.0.0", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d" + "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", + "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", "shasum": "" }, "require": { @@ -8659,9 +8814,9 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0" }, - "time": "2020-12-01T19:48:11+00:00" + "time": "2022-12-08T20:46:14+00:00" }, { "name": "openlss/lib-array2xml", @@ -8994,23 +9149,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.18", + "version": "9.2.26", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a" + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/12fddc491826940cf9b7e88ad9664cf51f0f6d0a", - "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.14", + "nikic/php-parser": "^4.15", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -9025,8 +9180,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -9059,7 +9214,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.18" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" }, "funding": [ { @@ -9067,7 +9222,7 @@ "type": "github" } ], - "time": "2022-10-27T13:35:33+00:00" + "time": "2023-03-06T12:58:08+00:00" }, { "name": "phpunit/php-file-iterator", @@ -9312,20 +9467,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.26", + "version": "9.6.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2" + "reference": "86e761949019ae83f49240b2f2123fb5ab3b2fc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/851867efcbb6a1b992ec515c71cdcf20d895e9d2", - "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/86e761949019ae83f49240b2f2123fb5ab3b2fc5", + "reference": "86e761949019ae83f49240b2f2123fb5ab3b2fc5", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -9354,8 +9509,8 @@ "sebastian/version": "^3.0.2" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -9363,7 +9518,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -9394,7 +9549,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.26" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.5" }, "funding": [ { @@ -9410,7 +9565,7 @@ "type": "tidelift" } ], - "time": "2022-10-28T06:00:21+00:00" + "time": "2023-03-09T06:34:10+00:00" }, { "name": "sebastian/cli-parser", @@ -9778,16 +9933,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -9829,7 +9984,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -9837,7 +9992,7 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", @@ -10151,16 +10306,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -10199,10 +10354,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -10210,7 +10365,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", @@ -10269,16 +10424,16 @@ }, { "name": "sebastian/type", - "version": "3.2.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { @@ -10313,7 +10468,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -10321,7 +10476,7 @@ "type": "github" } ], - "time": "2022-09-12T14:47:03+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -10455,16 +10610,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.7.1", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", "shasum": "" }, "require": { @@ -10500,14 +10655,15 @@ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", - "standards" + "standards", + "static analysis" ], "support": { "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2022-06-18T07:21:10+00:00" + "time": "2023-02-22T23:07:41+00:00" }, { "name": "theseer/tokenizer", @@ -10561,16 +10717,16 @@ }, { "name": "vimeo/psalm", - "version": "4.29.0", + "version": "4.30.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3" + "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3", - "reference": "7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/d0bc6e25d89f649e4f36a534f330f8bb4643dd69", + "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69", "shasum": "" }, "require": { @@ -10663,9 +10819,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.29.0" + "source": "https://github.com/vimeo/psalm/tree/4.30.0" }, - "time": "2022-10-11T17:09:17+00:00" + "time": "2022-11-06T20:37:08+00:00" }, { "name": "webmozart/assert",