diff --git a/.env.example b/.env.example index c2d42f5..c08856c 100644 --- a/.env.example +++ b/.env.example @@ -40,3 +40,16 @@ LOCK_DSN=flock ###< symfony/lock ### UPLOAD_FOLDER=uploads + +# Mollie settings +MOLLIE_API_KEY= +MOLLIE_PARTNER_ID= +MOLLIE_PROFILE_ID= +MOLLIE_REDIRECT_BASE_URL= + +# Resend.com API key (for two-factor authentication) +RESEND_API_KEY= + +###> sentry/sentry-symfony ### +SENTRY_DSN= +###< sentry/sentry-symfony ### diff --git a/.env.test b/.env.test index 9f350de..29d1478 100644 --- a/.env.test +++ b/.env.test @@ -1,6 +1,6 @@ # define your env variables for the test env here APP_VERSION=0.0.1 -APP_ENV=test +APP_ENV=dev KERNEL_CLASS='App\Kernel' APP_SECRET='$ecretf0rt3st' SYMFONY_DEPRECATIONS_HELPER=999999 diff --git a/.github/workflows/php_build_and_qa_test.yml b/.github/workflows/php_build_and_qa_test.yml new file mode 100644 index 0000000..2cecac4 --- /dev/null +++ b/.github/workflows/php_build_and_qa_test.yml @@ -0,0 +1,99 @@ +name: PHP Build QA and Test + +on: + push: + branches: [ "master", "development" ] + pull_request: + branches: [ "master" ] + +permissions: + contents: read + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: shivammathur/setup-php@2cb9b829437ee246e9b3cac53555a39208ca6d28 + with: + php-version: '8.2' + + - uses: actions/checkout@v3 + + - name: Copy .env.test.local + run: php -r "file_exists('.env.test.local') || copy('.env.test', '.env.test.local');" + + - name: Copy .env + run: php -r "file_exists('.env') || copy('.env.test', '.env');" + + ## —— Composer ——————————————————————————————————————————————————————————— + + - name: Validate composer.json and composer.lock + run: composer validate --strict + + - name: Cache Composer packages + id: composer-cache + uses: actions/cache@v3 + with: + path: vendor + key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-php- + + - name: Install dependencies + run: composer install --prefer-dist --no-progress + + ## —— Database & cache —————————————————————————————————————————————————— + + - name: Create Database + run: | + touch var/data.db + + - name: Create cache directory + run: | + chmod 777 ./bin/console + mkdir -p var/cache + chmod 777 var/cache + ./bin/console cache:clear + + ## —— PHP QA ——————————————————————————————————————————————————————————— + + - name: QA CS + run: ./vendor/bin/php-cs-fixer check + + - name: QA STAN + run: ./vendor/bin/phpstan analyse -c phpstan.neon application + + - name: QA Lint Container + run: ./bin/console lint:container + + - name: QA Lint Twig + run: ./bin/console lint:twig + + - name: QA PSALM + run: ./vendor/bin/psalm + + ## —— Yarn ———————————————————————————————————————————————————————————— + + - name: Nodejs install + uses: actions/setup-node@v2 + with: + node-version: '21' + + - run: yarn install + + - name: Yarn build + run: yarn run encore production + + ## —— Frontend MemberModule —————————————————————————————————————————— + + - name: Build Member Module Application + run: | + cd frontends/member_module/ + npm install + npm run build-only + +## —— Testing ———————————————————————————————————————————————————————————— +# - name: Execute tests (Unit & Integration Tests) via PestPHP +# run: ./vendor/bin/pest diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 3788194..cd059ef 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -3,6 +3,21 @@ $finder = (new PhpCsFixer\Finder()) ->in(__DIR__) ->exclude('var') + ->exclude('vendor') + ->exclude('node_modules') + ->exclude('public') + ->exclude('uploads') + ->exclude('frontends') + ->exclude('migrations') + ->exclude('docker') + ->exclude('config') + ->exclude('assets') + ->exclude('.git') + ->exclude('.github') + ->exclude('_temp') + ->exclude('cypress') + ->exclude('translations') + ->exclude('bin') ; return (new PhpCsFixer\Config()) diff --git a/LICENSE b/LICENSE index 2d0df68..21e765c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2023 Yoshi-Kan by Koen Caerels +Copyright (c) 2023-2024 Yoshi-Kan by Koen Caerels Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/application/YoshiKan/Application/Command/Common/EmailValidator.php b/application/YoshiKan/Application/Command/Common/EmailValidator.php new file mode 100644 index 0000000..8d0c0c2 --- /dev/null +++ b/application/YoshiKan/Application/Command/Common/EmailValidator.php @@ -0,0 +1,35 @@ +validate($email, [ + new Email([ + 'message' => 'The email address is not valid.', + ]), + ]); + + return 0 === count($errors); + } +} diff --git a/application/YoshiKan/Application/Command/Common/SubscriptionItemsFactory.php b/application/YoshiKan/Application/Command/Common/SubscriptionItemsFactory.php index aa93e8e..c274208 100644 --- a/application/YoshiKan/Application/Command/Common/SubscriptionItemsFactory.php +++ b/application/YoshiKan/Application/Command/Common/SubscriptionItemsFactory.php @@ -1,5 +1,16 @@ setLoadSheetsOnly(['Gegevens']); + $spreadsheet = $reader->load($this->srcFile); + + $worksheet = $spreadsheet->getActiveSheet(); + $highestRow = $worksheet->getHighestRow(); + $highestColumn = $worksheet->getHighestColumn(); + $highestColumnIndex = Coordinate::columnIndexFromString($highestColumn); + + for ($row = 2; $row <= $highestRow; ++$row) { + $isNewMember = false; + + $dto = new \stdClass(); + $dto->firstName = (string) $worksheet->getCellByColumnAndRow(2, $row)->getValue(); + $dto->lastName = mb_strtoupper($worksheet->getCellByColumnAndRow(1, $row)->getValue()); + $dto->dateOfBirth = Date::excelToDateTimeObject($worksheet->getCellByColumnAndRow(4, $row)->getValue())->format(\DateTimeInterface::ATOM); + $dto->nationalNumber = (string) $worksheet->getCellByColumnAndRow(5, $row)->getValue(); + $dto->street = (string) $worksheet->getCellByColumnAndRow(3, $row)->getValue(); + $dto->city = $worksheet->getCellByColumnAndRow(6, $row)->getValue(); + $dto->postalCode = (string) $worksheet->getCellByColumnAndRow(7, $row)->getValue(); + $dto->contactPhone = (string) $worksheet->getCellByColumnAndRow(8, $row)->getValue(); + $dto->contactEmail = (string) $worksheet->getCellByColumnAndRow(9, $row)->getValue(); + $dto->gender = Gender::X; + $dto->location = $this->locationRepository->getById(LocationMapping::getLocationId($worksheet->getCellByColumnAndRow(26, $row)->getValue())); + $dto->grade = $this->gradeRepository->getById(GradeMapping::getGradeId($worksheet->getCellByColumnAndRow(25, $row)->getValue())); + $dto->sporta = (bool) $worksheet->getCellByColumnAndRow(23, $row)->getValue(); + $dto->jv = (bool) $worksheet->getCellByColumnAndRow(24, $row)->getValue(); + if ($dto->sporta) { + $dto->federation = $this->federationRepository->getById(2); + } else { + $dto->federation = $this->federationRepository->getById(1); + } + + $dto->memberShipStartMM = (int) $worksheet->getCellByColumnAndRow(10, $row)->getValue(); + $dto->memberShipStartYY = (int) $worksheet->getCellByColumnAndRow(11, $row)->getValue(); + $dto->memberShipEndMM = (int) $worksheet->getCellByColumnAndRow(12, $row)->getValue(); + $dto->memberShipEndYY = (int) $worksheet->getCellByColumnAndRow(13, $row)->getValue(); + $dto->memberShipAmount = (float) $worksheet->getCellByColumnAndRow(14, $row)->getValue(); + $dto->memberShipIsPayed = (bool) $worksheet->getCellByColumnAndRow(15, $row)->getValue(); + + $dto->memberShipStart = new \DateTimeImmutable(sprintf('%s-%s-01', $dto->memberShipStartYY, $dto->memberShipStartMM)); + $dto->memberShipEnd = new \DateTimeImmutable(sprintf('%s-%s-01', $dto->memberShipEndYY, $dto->memberShipEndMM)); + + $dto->licenseStartMM = (int) $worksheet->getCellByColumnAndRow(16, $row)->getValue(); + $dto->licenseStartYY = (int) $worksheet->getCellByColumnAndRow(17, $row)->getValue(); + $dto->licenseEndMM = (int) $worksheet->getCellByColumnAndRow(18, $row)->getValue(); + $dto->licenseEndYY = (int) $worksheet->getCellByColumnAndRow(19, $row)->getValue(); + $dto->licenseAmount = (float) $worksheet->getCellByColumnAndRow(20, $row)->getValue(); + $dto->licenseIsPayed = (bool) $worksheet->getCellByColumnAndRow(21, $row)->getValue(); + $dto->licenseShipStart = new \DateTimeImmutable(sprintf('%s-%s-01', $dto->licenseStartYY, $dto->licenseStartMM)); + $dto->licenseShipEnd = new \DateTimeImmutable(sprintf('%s-%s-01', $dto->licenseEndYY, $dto->licenseEndMM)); + + // -- determine subscription type ----------------------------------- + + $subscriptionType = SubscriptionType::RENEWAL_FULL; + $dto->newMemberShipAmount = $dto->memberShipAmount; + $dto->newLicenseAmount = $dto->licenseAmount; + $dto->licenseIsPartSubscription = true; + $dto->memberSubscriptionIsPartSubscription = true; + + if ($dto->memberShipIsPayed && !$dto->licenseIsPayed) { + $dto->newMemberShipAmount = 0; + $subscriptionType = SubscriptionType::RENEWAL_LICENSE; + $dto->memberSubscriptionIsPartSubscription = false; + } + if (!$dto->memberShipIsPayed && $dto->licenseIsPayed) { + $dto->newLicenseAmount = 0; + $subscriptionType = SubscriptionType::RENEWAL_MEMBERSHIP; + $dto->licenseIsPartSubscription = false; + } + + // -- determine number of training sessions ------------------------ + + $interval = $dto->memberShipEnd->diff($dto->memberShipStart); + if ($interval->days > 360) { + $dto->memberSubscriptionIsHalfYear = false; + } else { + $dto->memberSubscriptionIsHalfYear = true; + } + if ($dto->memberShipAmount >= 275) { + $dto->numberOfTrainingSessions = 3; + } elseif ($dto->memberShipAmount >= 140) { + $dto->numberOfTrainingSessions = 2; + } else { + $dto->numberOfTrainingSessions = 1; + } + + echo '
'.$dto->firstName.' '.$dto->lastName; + + // -- search for existing member ----------------------------------- + + $member = $this->memberRepository->findByNameAndDateOfBirth($dto->firstName, $dto->lastName, new \DateTimeImmutable($dto->dateOfBirth)); + if (true === is_null($member)) { + $isNewMember = true; + $member = Member::make( + uuid: $this->memberRepository->nextIdentity(), + firstname: ucfirst(mb_strtolower($dto->firstName)), + lastname: mb_strtoupper($dto->lastName), + dateOfBirth: new \DateTimeImmutable($dto->dateOfBirth), + gender: $dto->gender, + grade: $dto->grade, + location: $dto->location, + federation: $dto->federation, + email: $dto->contactEmail, + nationalRegisterNumber: $dto->nationalNumber, + addressStreet: $dto->street, + addressNumber: '', + addressBox: '', + addressZip: $dto->postalCode, + addressCity: $dto->city, + numberOfTraining: $dto->numberOfTrainingSessions, + ); + } + + // -- sync member subscription details ---------------------------- + + $member->syncFromSubscription( + federation: $dto->federation, + numberOfTraining: $dto->numberOfTrainingSessions, + isHalfYearSubscription: $dto->memberSubscriptionIsHalfYear, + ); + + $member->changeGrade($dto->grade); + $member->setContactInformation( + contactFirstname: ucfirst(mb_strtolower($dto->firstName)), + contactLastname: mb_strtoupper($dto->lastName), + contactEmail: $dto->contactEmail, + contactPhone: $dto->contactPhone, + ); + $member->setSubscriptionDates( + start: $dto->memberShipStart, + end: $dto->memberShipEnd, + isHalfYearSubscription: $dto->memberSubscriptionIsHalfYear + ); + if ($dto->memberShipIsPayed) { + $member->markSubscriptionAsPayed(); + } + $member->setLicenseDates( + start: $dto->licenseShipStart, + end: $dto->licenseShipEnd, + ); + if ($dto->licenseIsPayed) { + $member->markLicenseAsPayed(); + } + $member->activate(); + $this->memberRepository->save($member); + $this->entityManager->flush(); + + echo '-> member created / saved ->'.$member->getUuidAsString(); + + $subscription = $this->subscriptionRepository->findByMemberAndDatesAndAmounts( + member: $member, + memberStartDate: $dto->memberShipStart, + memberEndDate: $dto->memberShipEnd, + licenseStartDate: $dto->licenseShipStart, + licenseEndDate: $dto->licenseShipEnd, + memberShipAmount: $dto->memberShipAmount, + licenseAmount: $dto->licenseAmount, + ); + + // -- create a subscription ---------------------------------------- + + $settings = $this->settingsRepository->findByCode(SettingsCode::ACTIVE->value); + + if (true === is_null($subscription)) { + $subscription = Subscription::make( + uuid: $this->subscriptionRepository->nextIdentity(), + contactFirstname: ucfirst(mb_strtolower($dto->firstName)), + contactLastname: mb_strtoupper($dto->lastName), + contactEmail: $dto->contactEmail, + contactPhone: $dto->contactPhone, + firstname: ucfirst(mb_strtolower($dto->firstName)), + lastname: mb_strtoupper($dto->lastName), + dateOfBirth: new \DateTimeImmutable($dto->dateOfBirth), + gender: $dto->gender, + type: $subscriptionType, + numberOfTraining: $dto->numberOfTrainingSessions, + isExtraTraining: false, + isNewMember: $isNewMember, + isReductionFamily: false, + isJudogiBelt: false, + remarks: 'Active subscription', + location: $dto->location, + settings: json_decode(json_encode(SettingsReadModel::hydrateFromModel($settings)), true), + federation: $dto->federation, + memberSubscriptionStart: $dto->memberShipStart, + memberSubscriptionEnd: $dto->memberShipEnd, + memberSubscriptionTotal: $dto->newMemberShipAmount, + memberSubscriptionIsPartSubscription: $dto->memberSubscriptionIsPartSubscription, + memberSubscriptionIsHalfYear: $dto->memberSubscriptionIsHalfYear, + memberSubscriptionIsPayed: $dto->memberShipIsPayed, + licenseStart: $dto->licenseShipStart, + licenseEnd: $dto->licenseShipEnd, + licenseTotal: $dto->newLicenseAmount, + licenseIsPartSubscription: $dto->licenseIsPartSubscription, + licenseIsPayed: $dto->licenseIsPayed, + ); + } else { + $subscription->fullChange( + contactFirstname: ucfirst(mb_strtolower($dto->firstName)), + contactLastname: mb_strtoupper($dto->lastName), + contactEmail: $dto->contactEmail, + contactPhone: $dto->contactPhone, + firstname: ucfirst(mb_strtolower($dto->firstName)), + lastname: mb_strtoupper($dto->lastName), + dateOfBirth: new \DateTimeImmutable($dto->dateOfBirth), + gender: $dto->gender, + type: $subscriptionType, + numberOfTraining: $dto->numberOfTrainingSessions, + isExtraTraining: (3 === $dto->numberOfTrainingSessions), + isNewMember: false, + isReductionFamily: false, + isJudogiBelt: false, + remarks: 'Active subscription on import', + location: $dto->location, + federation: $dto->federation, + memberSubscriptionStart: $dto->memberShipStart, + memberSubscriptionEnd: $dto->memberShipEnd, + memberSubscriptionTotal: $dto->newMemberShipAmount, + memberSubscriptionIsPartSubscription: $dto->memberSubscriptionIsPartSubscription, + memberSubscriptionIsHalfYear: $dto->memberSubscriptionIsHalfYear, + memberSubscriptionIsPayed: $dto->memberShipIsPayed, + licenseStart: $dto->licenseShipStart, + licenseEnd: $dto->licenseShipEnd, + licenseTotal: $dto->newLicenseAmount, + licenseIsPartSubscription: $dto->licenseIsPartSubscription, + licenseIsPayed: $dto->licenseIsPayed, + ); + } + + // make awaiting payment subscription + $subscription->setMember($member); + $subscription->setTotal($dto->newMemberShipAmount + $dto->newLicenseAmount); + $subscription->changeStatus(SubscriptionStatus::AWAITING_PAYMENT); + $subscription->updateSettings(json_decode(json_encode(SettingsReadModel::hydrateFromModel($settings)), true)); + $this->subscriptionRepository->save($subscription); + + if ($dto->memberShipIsPayed && $dto->licenseIsPayed) { + $subscription->changeStatus(SubscriptionStatus::PAYED); + } + + // -- make some subscription lines ------------------------------------------------------------------------- + + $subscriptionItemFactory = new SubscriptionItemsFactory( + $this->subscriptionRepository, + $this->subscriptionItemRepository + ); + $resultItems = $subscriptionItemFactory->saveItemsFromSubscription( + $subscription, + $dto->federation, + $settings, + ); + + $this->entityManager->flush(); + echo '-> subscription saved / updated ->'.$subscription->getUuidAsString(); + ob_flush(); + flush(); + } + + echo '
Done'; + exit; + + return true; + } +} diff --git a/application/YoshiKan/Application/Command/Import/ImportSubscriptionArchive/ImportSubscriptionArchiveHandler.php b/application/YoshiKan/Application/Command/Import/ImportSubscriptionArchive/ImportSubscriptionArchiveHandler.php new file mode 100644 index 0000000..669c006 --- /dev/null +++ b/application/YoshiKan/Application/Command/Import/ImportSubscriptionArchive/ImportSubscriptionArchiveHandler.php @@ -0,0 +1,330 @@ +setLoadSheetsOnly(['Logging']); + $spreadsheet = $reader->load($this->srcFile); + + $worksheet = $spreadsheet->getActiveSheet(); + $highestRow = $worksheet->getHighestRow(); + + echo '
'.$highestRow; + + $highestColumn = $worksheet->getHighestColumn(); + $highestColumnIndex = Coordinate::columnIndexFromString($highestColumn); + + // $highestRow = 20; + $startRow = 9000; + + for ($row = $startRow; $row <= $highestRow; ++$row) { + $dto = new \stdClass(); + $dto->firstName = (string) $worksheet->getCellByColumnAndRow(2, $row)->getValue(); + $dto->lastName = mb_strtoupper((string) $worksheet->getCellByColumnAndRow(1, $row)->getValue()); + $dto->dateOfBirth = Date::excelToDateTimeObject($worksheet->getCellByColumnAndRow(3, $row)->getValue())->format(\DateTimeInterface::ATOM); + + $dto->street = (string) $worksheet->getCellByColumnAndRow(5, $row)->getValue(); + $dto->city = (string) $worksheet->getCellByColumnAndRow(6, $row)->getValue(); + $dto->postalCode = (string) $worksheet->getCellByColumnAndRow(7, $row)->getValue(); + $dto->contactPhone = (string) $worksheet->getCellByColumnAndRow(8, $row)->getValue(); + $dto->contactEmail = (string) $worksheet->getCellByColumnAndRow(9, $row)->getValue(); + $dto->gender = Gender::X; + $dto->location = $this->locationRepository->getById(LocationMapping::getLocationId((string) $worksheet->getCellByColumnAndRow(26, $row)->getValue())); + $dto->grade = $this->gradeRepository->getById(GradeMapping::getGradeId((string) $worksheet->getCellByColumnAndRow(25, $row)->getValue())); + $dto->sporta = (bool) $worksheet->getCellByColumnAndRow(23, $row)->getValue(); + $dto->jv = (bool) $worksheet->getCellByColumnAndRow(24, $row)->getValue(); + if ($dto->sporta) { + $dto->federation = $this->federationRepository->getById(2); + } else { + $dto->federation = $this->federationRepository->getById(1); + } + + $dto->memberShipStartMM = (int) $worksheet->getCellByColumnAndRow(10, $row)->getValue(); + $dto->memberShipStartYY = (int) $worksheet->getCellByColumnAndRow(11, $row)->getValue(); + $dto->memberShipEndMM = (int) $worksheet->getCellByColumnAndRow(12, $row)->getValue(); + $dto->memberShipEndYY = (int) $worksheet->getCellByColumnAndRow(13, $row)->getValue(); + $dto->memberShipAmount = (float) $worksheet->getCellByColumnAndRow(14, $row)->getValue(); + $dto->memberShipIsPayed = (bool) $worksheet->getCellByColumnAndRow(15, $row)->getValue(); + + if (0 === $dto->memberShipStartMM) { + $dto->memberShipStart = new \DateTimeImmutable('2000-01-01'); + $dto->memberShipEnd = new \DateTimeImmutable('2001-01-01'); + } else { + try { + $dto->memberShipStart = new \DateTimeImmutable(sprintf('%s-%s-01', $dto->memberShipStartYY, $dto->memberShipStartMM)); + $dto->memberShipEnd = new \DateTimeImmutable(sprintf('%s-%s-01', $dto->memberShipEndYY, $dto->memberShipEndMM)); + } catch (\Exception $e) { + $dto->memberShipStart = new \DateTimeImmutable('2000-01-01'); + $dto->memberShipEnd = new \DateTimeImmutable('2001-01-01'); + } + } + + $dto->licenseStartMM = (int) $worksheet->getCellByColumnAndRow(16, $row)->getValue(); + $dto->licenseStartYY = (int) $worksheet->getCellByColumnAndRow(17, $row)->getValue(); + $dto->licenseEndMM = (int) $worksheet->getCellByColumnAndRow(18, $row)->getValue(); + $dto->licenseEndYY = (int) $worksheet->getCellByColumnAndRow(19, $row)->getValue(); + $dto->licenseAmount = (float) $worksheet->getCellByColumnAndRow(20, $row)->getValue(); + $dto->licenseIsPayed = (bool) $worksheet->getCellByColumnAndRow(21, $row)->getValue(); + + if (0 === $dto->licenseStartMM) { + $dto->licenseShipStart = new \DateTimeImmutable('2000-01-01'); + $dto->licenseShipEnd = new \DateTimeImmutable('2001-01-01'); + } else { + try { + $dto->licenseShipStart = new \DateTimeImmutable(sprintf('%s-%s-01', $dto->licenseStartYY, $dto->licenseStartMM)); + $dto->licenseShipEnd = new \DateTimeImmutable(sprintf('%s-%s-01', $dto->licenseEndYY, $dto->licenseEndMM)); + } catch (\Exception $e) { + $dto->licenseShipStart = new \DateTimeImmutable('2000-01-01'); + $dto->licenseShipEnd = new \DateTimeImmutable('2001-01-01'); + } + } + + $interval = $dto->memberShipEnd->diff($dto->memberShipStart); + if ($interval->days > 360) { + $dto->memberSubscriptionIsHalfYear = false; + } else { + $dto->memberSubscriptionIsHalfYear = true; + } + if ($dto->memberShipAmount >= 275) { + $dto->numberOfTrainingSessions = 3; + } elseif ($dto->memberShipAmount >= 140) { + $dto->numberOfTrainingSessions = 2; + } else { + $dto->numberOfTrainingSessions = 1; + } + + echo '
'.$dto->firstName.' '.$dto->lastName; + ob_flush(); + flush(); + + $dateOfBirthCheck = new \DateTimeImmutable($dto->dateOfBirth); + if ('19700101' === $dateOfBirthCheck->format('Ymd')) { + echo '-> skipped'; + continue; + } + + $member = $this->memberRepository->findByNameAndDateOfBirth($dto->firstName, $dto->lastName, new \DateTimeImmutable($dto->dateOfBirth)); + if (true === is_null($member)) { + $member = Member::make( + uuid: $this->memberRepository->nextIdentity(), + firstname: ucfirst(mb_strtolower($dto->firstName)), + lastname: mb_strtoupper($dto->lastName), + dateOfBirth: new \DateTimeImmutable($dto->dateOfBirth), + gender: $dto->gender, + grade: $dto->grade, + location: $dto->location, + federation: $dto->federation, + email: $dto->contactEmail, + nationalRegisterNumber: '', + addressStreet: $dto->street, + addressNumber: '', + addressBox: '', + addressZip: $dto->postalCode, + addressCity: $dto->city, + numberOfTraining: $dto->numberOfTrainingSessions, + ); + } else { + $member->changeDetails( + firstname: ucfirst(mb_strtolower($dto->firstName)), + lastname: mb_strtoupper($dto->lastName), + gender: $dto->gender, + dateOfBirth: new \DateTimeImmutable($dto->dateOfBirth), + status: MemberStatus::ACTIVE, + location: $dto->location, + nationalRegisterNumber: '', + email: $dto->contactEmail, + addressStreet: $dto->street, + addressNumber: '', + addressBox: '', + addressZip: $dto->postalCode, + addressCity: $dto->city, + contactFirstname: ucfirst(mb_strtolower($dto->firstName)), + contactLastname: mb_strtoupper($dto->lastName), + contactEmail: $dto->contactEmail, + contactPhone: $dto->contactPhone, + ); + } + // set some member properties + + $member->changeGrade($dto->grade); + $member->setContactInformation( + contactFirstname: ucfirst(mb_strtolower($dto->firstName)), + contactLastname: mb_strtoupper($dto->lastName), + contactEmail: $dto->contactEmail, + contactPhone: $dto->contactPhone, + ); + $member->setSubscriptionDates( + start: $dto->memberShipStart, + end: $dto->memberShipEnd, + isHalfYearSubscription: $dto->memberSubscriptionIsHalfYear + ); + $member->markSubscriptionAsPayed(); + $member->setLicenseDates( + start: $dto->licenseShipStart, + end: $dto->licenseShipEnd, + ); + $member->markLicenseAsPayed(); + $member->deactivate(); + $this->memberRepository->save($member); + $this->entityManager->flush(); + + echo '-> member saved ->'.$member->getUuidAsString(); + ob_flush(); + flush(); + + $subscription = $this->subscriptionRepository->findByMemberAndDatesAndAmounts( + member: $member, + memberStartDate: $dto->memberShipStart, + memberEndDate: $dto->memberShipEnd, + licenseStartDate: $dto->licenseShipStart, + licenseEndDate: $dto->licenseShipEnd, + memberShipAmount: $dto->memberShipAmount, + licenseAmount: $dto->licenseAmount, + ); + if (true === is_null($subscription)) { + $subscription = Subscription::make( + uuid: $this->subscriptionRepository->nextIdentity(), + contactFirstname: ucfirst(mb_strtolower($dto->firstName)), + contactLastname: mb_strtoupper($dto->lastName), + contactEmail: $dto->contactEmail, + contactPhone: $dto->contactPhone, + firstname: ucfirst(mb_strtolower($dto->firstName)), + lastname: mb_strtoupper($dto->lastName), + dateOfBirth: new \DateTimeImmutable($dto->dateOfBirth), + gender: $dto->gender, + type: SubscriptionType::RENEWAL_FULL, + numberOfTraining: $dto->numberOfTrainingSessions, + isExtraTraining: false, + isNewMember: false, + isReductionFamily: false, + isJudogiBelt: false, + remarks: 'archive import', + location: $dto->location, + settings: [], + federation: $dto->federation, + memberSubscriptionStart: $dto->memberShipStart, + memberSubscriptionEnd: $dto->memberShipEnd, + memberSubscriptionTotal: $dto->memberShipAmount, + memberSubscriptionIsPartSubscription: true, + memberSubscriptionIsHalfYear: $dto->memberSubscriptionIsHalfYear, + memberSubscriptionIsPayed: false, + licenseStart: $dto->licenseShipStart, + licenseEnd: $dto->licenseShipEnd, + licenseTotal: $dto->licenseAmount, + licenseIsPartSubscription: true, + licenseIsPayed: false, + ); + } + + // make archive subscription + $subscription->setMember($member); + $subscription->changeStatus(SubscriptionStatus::ARCHIVED); + $this->subscriptionRepository->save($subscription); + $this->entityManager->flush(); + echo '-> subscription saved / updated ->'.$subscription->getUuidAsString(); + ob_flush(); + flush(); + } + + echo '
Done'; + exit; + + return true; + } + + public function importGrades(): bool + { + $reader = new Xlsx(); + $reader->setLoadSheetsOnly(['Logging']); + $spreadsheet = $reader->load($this->srcFile); + $worksheet = $spreadsheet->getActiveSheet(); + $highestRow = $worksheet->getHighestRow(); + + echo '
'.$highestRow; + + $highestColumn = $worksheet->getHighestColumn(); + $highestColumnIndex = Coordinate::columnIndexFromString($highestColumn); + + // $highestRow = 20; + $startRow = 2; + + for ($row = $startRow; $row <= $highestRow; ++$row) { + $dto = new \stdClass(); + $dto->firstName = (string) $worksheet->getCellByColumnAndRow(2, $row)->getValue(); + $dto->lastName = mb_strtoupper((string) $worksheet->getCellByColumnAndRow(1, $row)->getValue()); + $dto->dateOfBirth = Date::excelToDateTimeObject($worksheet->getCellByColumnAndRow(3, $row)->getValue())->format(\DateTimeInterface::ATOM); + $dto->grade = $this->gradeRepository->getById(GradeMapping::getGradeId((string) $worksheet->getCellByColumnAndRow(25, $row)->getValue())); + + echo '
'.$dto->firstName.' '.$dto->lastName; + ob_flush(); + flush(); + + $dateOfBirthCheck = new \DateTimeImmutable($dto->dateOfBirth); + if ('19700101' === $dateOfBirthCheck->format('Ymd')) { + echo '-> skipped'; + continue; + } + + $member = $this->memberRepository->findByNameAndDateOfBirth($dto->firstName, $dto->lastName, new \DateTimeImmutable($dto->dateOfBirth)); + if (false === is_null($member)) { + if (1 !== $dto->grade->getId()) { + $member->changeGrade($dto->grade); + $this->memberRepository->save($member); + $this->entityManager->flush(); + echo '-> GC ->'.$dto->grade->getName(); + ob_flush(); + flush(); + } + } + } + + echo '
Done'; + exit; + + return true; + } +} diff --git a/application/YoshiKan/Application/Command/Import/Mapping/GradeMapping.php b/application/YoshiKan/Application/Command/Import/Mapping/GradeMapping.php new file mode 100644 index 0000000..c00cf66 --- /dev/null +++ b/application/YoshiKan/Application/Command/Import/Mapping/GradeMapping.php @@ -0,0 +1,53 @@ +code), diff --git a/application/YoshiKan/Application/Command/Member/AddFederation/add_federation.php b/application/YoshiKan/Application/Command/Member/AddFederation/AddFederationTrait.php similarity index 93% rename from application/YoshiKan/Application/Command/Member/AddFederation/add_federation.php rename to application/YoshiKan/Application/Command/Member/AddFederation/AddFederationTrait.php index ee83c74..f1cec22 100644 --- a/application/YoshiKan/Application/Command/Member/AddFederation/add_federation.php +++ b/application/YoshiKan/Application/Command/Member/AddFederation/AddFederationTrait.php @@ -9,9 +9,11 @@ * file that was distributed with this source code. */ +declare(strict_types=1); + namespace App\YoshiKan\Application\Command\Member\AddFederation; -trait add_federation +trait AddFederationTrait { public function addFederation(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/AddGrade/AddGrade.php b/application/YoshiKan/Application/Command/Member/AddGrade/AddGrade.php index 47d01c1..99f41fb 100644 --- a/application/YoshiKan/Application/Command/Member/AddGrade/AddGrade.php +++ b/application/YoshiKan/Application/Command/Member/AddGrade/AddGrade.php @@ -28,7 +28,7 @@ private function __construct( // ————————————————————————————————————————————————————————————————————————— // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->code, diff --git a/application/YoshiKan/Application/Command/Member/AddGrade/add_grade.php b/application/YoshiKan/Application/Command/Member/AddGrade/AddGradeTrait.php similarity index 97% rename from application/YoshiKan/Application/Command/Member/AddGrade/add_grade.php rename to application/YoshiKan/Application/Command/Member/AddGrade/AddGradeTrait.php index f8f8890..40436fb 100644 --- a/application/YoshiKan/Application/Command/Member/AddGrade/add_grade.php +++ b/application/YoshiKan/Application/Command/Member/AddGrade/AddGradeTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\AddGrade; -trait add_grade +trait AddGradeTrait { public function addGrade(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/AddGroup/AddGroup.php b/application/YoshiKan/Application/Command/Member/AddGroup/AddGroup.php index 96c5f8b..dc138b5 100644 --- a/application/YoshiKan/Application/Command/Member/AddGroup/AddGroup.php +++ b/application/YoshiKan/Application/Command/Member/AddGroup/AddGroup.php @@ -31,7 +31,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->code, diff --git a/application/YoshiKan/Application/Command/Member/AddGroup/add_group.php b/application/YoshiKan/Application/Command/Member/AddGroup/AddGroupTrait.php similarity index 97% rename from application/YoshiKan/Application/Command/Member/AddGroup/add_group.php rename to application/YoshiKan/Application/Command/Member/AddGroup/AddGroupTrait.php index bfd22d7..8b33332 100644 --- a/application/YoshiKan/Application/Command/Member/AddGroup/add_group.php +++ b/application/YoshiKan/Application/Command/Member/AddGroup/AddGroupTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\AddGroup; -trait add_group +trait AddGroupTrait { public function addGroup(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/AddLocation/AddLocation.php b/application/YoshiKan/Application/Command/Member/AddLocation/AddLocation.php index fafeacf..7a3e22d 100644 --- a/application/YoshiKan/Application/Command/Member/AddLocation/AddLocation.php +++ b/application/YoshiKan/Application/Command/Member/AddLocation/AddLocation.php @@ -29,7 +29,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->code, diff --git a/application/YoshiKan/Application/Command/Member/AddLocation/add_location.php b/application/YoshiKan/Application/Command/Member/AddLocation/AddLocationTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/AddLocation/add_location.php rename to application/YoshiKan/Application/Command/Member/AddLocation/AddLocationTrait.php index 77c8bd1..5931b21 100644 --- a/application/YoshiKan/Application/Command/Member/AddLocation/add_location.php +++ b/application/YoshiKan/Application/Command/Member/AddLocation/AddLocationTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\AddLocation; -trait add_location +trait AddLocationTrait { public function addLocation(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/AddPeriod/AddPeriod.php b/application/YoshiKan/Application/Command/Member/AddPeriod/AddPeriod.php index e97d525..9ece24b 100644 --- a/application/YoshiKan/Application/Command/Member/AddPeriod/AddPeriod.php +++ b/application/YoshiKan/Application/Command/Member/AddPeriod/AddPeriod.php @@ -31,7 +31,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->code, diff --git a/application/YoshiKan/Application/Command/Member/AddPeriod/add_period.php b/application/YoshiKan/Application/Command/Member/AddPeriod/AddPeriodTrait.php similarity index 97% rename from application/YoshiKan/Application/Command/Member/AddPeriod/add_period.php rename to application/YoshiKan/Application/Command/Member/AddPeriod/AddPeriodTrait.php index a2e0b11..d68d9bd 100644 --- a/application/YoshiKan/Application/Command/Member/AddPeriod/add_period.php +++ b/application/YoshiKan/Application/Command/Member/AddPeriod/AddPeriodTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\AddPeriod; -trait add_period +trait AddPeriodTrait { public function addPeriod(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/ChangeFederation/ChangeFederation.php b/application/YoshiKan/Application/Command/Member/ChangeFederation/ChangeFederation.php index af5c3e7..490358c 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeFederation/ChangeFederation.php +++ b/application/YoshiKan/Application/Command/Member/ChangeFederation/ChangeFederation.php @@ -30,7 +30,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->id, diff --git a/application/YoshiKan/Application/Command/Member/ChangeFederation/change_federation.php b/application/YoshiKan/Application/Command/Member/ChangeFederation/ChangeFederationTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/ChangeFederation/change_federation.php rename to application/YoshiKan/Application/Command/Member/ChangeFederation/ChangeFederationTrait.php index 918cb26..58d8621 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeFederation/change_federation.php +++ b/application/YoshiKan/Application/Command/Member/ChangeFederation/ChangeFederationTrait.php @@ -11,7 +11,7 @@ namespace App\YoshiKan\Application\Command\Member\ChangeFederation; -trait change_federation +trait ChangeFederationTrait { public function changeFederation(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/ChangeGrade/ChangeGrade.php b/application/YoshiKan/Application/Command/Member/ChangeGrade/ChangeGrade.php index 4c94c1e..fc5f896 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeGrade/ChangeGrade.php +++ b/application/YoshiKan/Application/Command/Member/ChangeGrade/ChangeGrade.php @@ -31,7 +31,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->id, diff --git a/application/YoshiKan/Application/Command/Member/ChangeGrade/change_grade.php b/application/YoshiKan/Application/Command/Member/ChangeGrade/ChangeGradeTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/ChangeGrade/change_grade.php rename to application/YoshiKan/Application/Command/Member/ChangeGrade/ChangeGradeTrait.php index a2788fa..58e2b86 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeGrade/change_grade.php +++ b/application/YoshiKan/Application/Command/Member/ChangeGrade/ChangeGradeTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\ChangeGrade; -trait change_grade +trait ChangeGradeTrait { public function changeGrade(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/ChangeGroup/ChangeGroup.php b/application/YoshiKan/Application/Command/Member/ChangeGroup/ChangeGroup.php index 0a0de37..818499b 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeGroup/ChangeGroup.php +++ b/application/YoshiKan/Application/Command/Member/ChangeGroup/ChangeGroup.php @@ -32,7 +32,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->id, diff --git a/application/YoshiKan/Application/Command/Member/ChangeGroup/change_group.php b/application/YoshiKan/Application/Command/Member/ChangeGroup/ChangeGroupTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/ChangeGroup/change_group.php rename to application/YoshiKan/Application/Command/Member/ChangeGroup/ChangeGroupTrait.php index 0d02a5b..cf92e0e 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeGroup/change_group.php +++ b/application/YoshiKan/Application/Command/Member/ChangeGroup/ChangeGroupTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\ChangeGroup; -trait change_group +trait ChangeGroupTrait { public function changeGroup(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/ChangeLocation/ChangeLocation.php b/application/YoshiKan/Application/Command/Member/ChangeLocation/ChangeLocation.php index 9992305..7a66e9f 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeLocation/ChangeLocation.php +++ b/application/YoshiKan/Application/Command/Member/ChangeLocation/ChangeLocation.php @@ -30,7 +30,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->id, diff --git a/application/YoshiKan/Application/Command/Member/ChangeLocation/change_location.php b/application/YoshiKan/Application/Command/Member/ChangeLocation/ChangeLocationTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/ChangeLocation/change_location.php rename to application/YoshiKan/Application/Command/Member/ChangeLocation/ChangeLocationTrait.php index 3445612..56d15c2 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeLocation/change_location.php +++ b/application/YoshiKan/Application/Command/Member/ChangeLocation/ChangeLocationTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\ChangeLocation; -trait change_location +trait ChangeLocationTrait { public function changeLocation(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/ChangeMemberDetails/ChangeMemberDetails.php b/application/YoshiKan/Application/Command/Member/ChangeMemberDetails/ChangeMemberDetails.php index b46e952..0f16890 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeMemberDetails/ChangeMemberDetails.php +++ b/application/YoshiKan/Application/Command/Member/ChangeMemberDetails/ChangeMemberDetails.php @@ -45,7 +45,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->id, diff --git a/application/YoshiKan/Application/Command/Member/ChangeMemberDetails/change_member_details.php b/application/YoshiKan/Application/Command/Member/ChangeMemberDetails/ChangeMemberDetailsTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/ChangeMemberDetails/change_member_details.php rename to application/YoshiKan/Application/Command/Member/ChangeMemberDetails/ChangeMemberDetailsTrait.php index d117fa9..7a60d97 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeMemberDetails/change_member_details.php +++ b/application/YoshiKan/Application/Command/Member/ChangeMemberDetails/ChangeMemberDetailsTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\ChangeMemberDetails; -trait change_member_details +trait ChangeMemberDetailsTrait { public function changeMemberDetails(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/ChangeMemberGrade/ChangeMemberGrade.php b/application/YoshiKan/Application/Command/Member/ChangeMemberGrade/ChangeMemberGrade.php index e9a5144..b947361 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeMemberGrade/ChangeMemberGrade.php +++ b/application/YoshiKan/Application/Command/Member/ChangeMemberGrade/ChangeMemberGrade.php @@ -30,7 +30,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->id, diff --git a/application/YoshiKan/Application/Command/Member/ChangeMemberGrade/change_member_grade.php b/application/YoshiKan/Application/Command/Member/ChangeMemberGrade/ChangeMemberGradeTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/ChangeMemberGrade/change_member_grade.php rename to application/YoshiKan/Application/Command/Member/ChangeMemberGrade/ChangeMemberGradeTrait.php index 5f9a2b0..d2e921f 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeMemberGrade/change_member_grade.php +++ b/application/YoshiKan/Application/Command/Member/ChangeMemberGrade/ChangeMemberGradeTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\ChangeMemberGrade; -trait change_member_grade +trait ChangeMemberGradeTrait { public function changeMemberGrade(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/ChangeMemberRemarks/ChangeMemberRemarks.php b/application/YoshiKan/Application/Command/Member/ChangeMemberRemarks/ChangeMemberRemarks.php index ce3159f..e0df705 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeMemberRemarks/ChangeMemberRemarks.php +++ b/application/YoshiKan/Application/Command/Member/ChangeMemberRemarks/ChangeMemberRemarks.php @@ -29,7 +29,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->id, diff --git a/application/YoshiKan/Application/Command/Member/ChangeMemberRemarks/change_member_remarks.php b/application/YoshiKan/Application/Command/Member/ChangeMemberRemarks/ChangeMemberRemarksTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/ChangeMemberRemarks/change_member_remarks.php rename to application/YoshiKan/Application/Command/Member/ChangeMemberRemarks/ChangeMemberRemarksTrait.php index d4e2f07..7d804a9 100644 --- a/application/YoshiKan/Application/Command/Member/ChangeMemberRemarks/change_member_remarks.php +++ b/application/YoshiKan/Application/Command/Member/ChangeMemberRemarks/ChangeMemberRemarksTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\ChangeMemberRemarks; -trait change_member_remarks +trait ChangeMemberRemarksTrait { public function changeMemberRemarks(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/ChangePeriod/ChangePeriod.php b/application/YoshiKan/Application/Command/Member/ChangePeriod/ChangePeriod.php index 8fae455..49f93e2 100644 --- a/application/YoshiKan/Application/Command/Member/ChangePeriod/ChangePeriod.php +++ b/application/YoshiKan/Application/Command/Member/ChangePeriod/ChangePeriod.php @@ -33,7 +33,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->id, diff --git a/application/YoshiKan/Application/Command/Member/ChangePeriod/change_period.php b/application/YoshiKan/Application/Command/Member/ChangePeriod/ChangePeriodTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/ChangePeriod/change_period.php rename to application/YoshiKan/Application/Command/Member/ChangePeriod/ChangePeriodTrait.php index c81b1f2..88666a4 100644 --- a/application/YoshiKan/Application/Command/Member/ChangePeriod/change_period.php +++ b/application/YoshiKan/Application/Command/Member/ChangePeriod/ChangePeriodTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\ChangePeriod; -trait change_period +trait ChangePeriodTrait { public function changePeriod(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/ConfirmMemberWebSubscription/ConfirmMemberWebSubscription.php b/application/YoshiKan/Application/Command/Member/ConfirmMemberWebSubscription/ConfirmMemberWebSubscription.php new file mode 100644 index 0000000..92c49dd --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/ConfirmMemberWebSubscription/ConfirmMemberWebSubscription.php @@ -0,0 +1,338 @@ +subscriptionId), + intval($json->memberId), + trim($json->type), + intval($json->federationId), + intval($json->locationId), + trim($json->contactFirstname), + trim($json->contactLastname), + trim($json->contactEmail), + trim($json->contactPhone), + trim($json->addressStreet), + trim($json->addressNumber), + trim($json->addressBox), + trim($json->addressZip), + trim($json->addressCity), + trim($json->firstname), + trim($json->lastname), + trim($json->email), + trim($json->nationalRegisterNumber), + new \DateTimeImmutable($json->dateOfBirth), + trim($json->gender), + new \DateTimeImmutable($json->memberSubscriptionStart), + trim($json->memberSubscriptionStartMM), + trim($json->memberSubscriptionStartYY), + new \DateTimeImmutable($json->memberSubscriptionEnd), + floatval($json->memberSubscriptionTotal), + boolval($json->memberSubscriptionIsPartSubscription), + boolval($json->memberSubscriptionIsHalfYear), + boolval($json->memberSubscriptionIsPayed), + new \DateTimeImmutable($json->licenseStart), + trim($json->licenseStartMM), + trim($json->licenseStartYY), + new \DateTimeImmutable($json->licenseEnd), + floatval($json->licenseTotal), + boolval($json->licenseIsPartSubscription), + boolval($json->licenseIsPayed), + intval($json->numberOfTraining), + boolval($json->isExtraTraining), + boolval($json->isReductionFamily), + floatval($json->total), + trim($json->remarks), + boolval($json->isJudogiBelt), + ); + } + + // ————————————————————————————————————————————————————————————————————————— + // Getters + // ————————————————————————————————————————————————————————————————————————— + + public function getType(): string + { + return $this->type; + } + + public function getFederationId(): int + { + return $this->federationId; + } + + public function getLocationId(): int + { + return $this->locationId; + } + + public function getContactFirstname(): string + { + return $this->contactFirstname; + } + + public function getContactLastname(): string + { + return $this->contactLastname; + } + + public function getContactEmail(): string + { + return $this->contactEmail; + } + + public function getContactPhone(): string + { + return $this->contactPhone; + } + + public function getAddressStreet(): string + { + return $this->addressStreet; + } + + public function getAddressNumber(): string + { + return $this->addressNumber; + } + + public function getAddressBox(): string + { + return $this->addressBox; + } + + public function getAddressZip(): string + { + return $this->addressZip; + } + + public function getAddressCity(): string + { + return $this->addressCity; + } + + public function getFirstname(): string + { + return $this->firstname; + } + + public function getLastname(): string + { + return $this->lastname; + } + + public function getEmail(): string + { + return $this->email; + } + + public function getNationalRegisterNumber(): string + { + return $this->nationalRegisterNumber; + } + + public function getDateOfBirth(): \DateTimeImmutable + { + return $this->dateOfBirth; + } + + public function getGender(): string + { + return $this->gender; + } + + public function getMemberSubscriptionStart(): \DateTimeImmutable + { + return $this->memberSubscriptionStart; + } + + public function getMemberSubscriptionStartMM(): string + { + return $this->memberSubscriptionStartMM; + } + + public function getMemberSubscriptionStartYY(): string + { + return $this->memberSubscriptionStartYY; + } + + public function getMemberSubscriptionEnd(): \DateTimeImmutable + { + return $this->memberSubscriptionEnd; + } + + public function getMemberSubscriptionTotal(): float + { + return $this->memberSubscriptionTotal; + } + + public function getLicenseStart(): \DateTimeImmutable + { + return $this->licenseStart; + } + + public function getLicenseStartMM(): string + { + return $this->licenseStartMM; + } + + public function getLicenseStartYY(): string + { + return $this->licenseStartYY; + } + + public function getLicenseEnd(): \DateTimeImmutable + { + return $this->licenseEnd; + } + + public function getLicenseTotal(): float + { + return $this->licenseTotal; + } + + public function isLicenseIsPartSubscription(): bool + { + return $this->licenseIsPartSubscription; + } + + public function isLicenseIsPayed(): bool + { + return $this->licenseIsPayed; + } + + public function getNumberOfTraining(): int + { + return $this->numberOfTraining; + } + + public function isExtraTraining(): bool + { + return $this->isExtraTraining; + } + + public function isReductionFamily(): bool + { + return $this->isReductionFamily; + } + + public function getTotal(): float + { + return $this->total; + } + + public function getRemarks(): string + { + return $this->remarks; + } + + public function isJudogiBelt(): bool + { + return $this->isJudogiBelt; + } + + public function isMemberSubscriptionIsPartSubscription(): bool + { + return $this->memberSubscriptionIsPartSubscription; + } + + public function isMemberSubscriptionIsHalfYear(): bool + { + return $this->memberSubscriptionIsHalfYear; + } + + public function isMemberSubscriptionIsPayed(): bool + { + return $this->memberSubscriptionIsPayed; + } + + public function getSubscriptionId(): int + { + return $this->subscriptionId; + } + + public function getMemberId(): int + { + return $this->memberId; + } +} diff --git a/application/YoshiKan/Application/Command/Member/ConfirmMemberWebSubscription/ConfirmMemberWebSubscriptionHandler.php b/application/YoshiKan/Application/Command/Member/ConfirmMemberWebSubscription/ConfirmMemberWebSubscriptionHandler.php new file mode 100644 index 0000000..4c71ec1 --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/ConfirmMemberWebSubscription/ConfirmMemberWebSubscriptionHandler.php @@ -0,0 +1,192 @@ +federationRepository->getById($command->getFederationId()); + $location = $this->locationRepository->getById($command->getLocationId()); + $settings = $this->settingsRepository->findByCode(SettingsCode::ACTIVE->value); + $subscription = $this->subscriptionRepository->getById($command->getSubscriptionId()); + + // -- validate the command ---------------------------------------- + $commandIsValid = $this->isCommandValid($command, $settings); + if (!$commandIsValid) { + throw new \Exception('Membership extension command is not valid.'); + } + + // -- update the subscription ------------------------------------ + + if (0 === $command->getMemberId()) { + $isNewMember = true; + } else { + $isNewMember = false; + } + + $subscription->fullChange( + contactFirstname: $command->getContactFirstname(), + contactLastname: $command->getContactLastname(), + contactEmail: $command->getContactEmail(), + contactPhone: $command->getContactPhone(), + firstname: $command->getFirstname(), + lastname: $command->getLastname(), + dateOfBirth: $command->getDateOfBirth(), + gender: Gender::from($command->getGender()), + type: SubscriptionType::from($command->getType()), + numberOfTraining: $command->getNumberOfTraining(), + isExtraTraining: $command->isExtraTraining(), + isNewMember: $isNewMember, + isReductionFamily: $command->isReductionFamily(), + isJudogiBelt: $command->isJudogiBelt(), + remarks: $command->getRemarks(), + location: $location, + federation: $federation, + memberSubscriptionStart: $command->getMemberSubscriptionStart(), + memberSubscriptionEnd: $command->getMemberSubscriptionEnd(), + memberSubscriptionTotal: $command->getMemberSubscriptionTotal(), + memberSubscriptionIsPartSubscription: $command->isMemberSubscriptionIsPartSubscription(), + memberSubscriptionIsHalfYear: $command->isMemberSubscriptionIsHalfYear(), + memberSubscriptionIsPayed: $command->isMemberSubscriptionIsPayed(), + licenseStart: $command->getLicenseStart(), + licenseEnd: $command->getLicenseEnd(), + licenseTotal: $command->getLicenseTotal(), + licenseIsPartSubscription: $command->isLicenseIsPartSubscription(), + licenseIsPayed: $command->isLicenseIsPayed(), + ); + $subscription->setNewMemberFields( + nationalRegisterNumber: $command->getNationalRegisterNumber(), + addressStreet: $command->getAddressStreet(), + addressNumber: $command->getAddressNumber(), + addressBox: $command->getAddressBox(), + addressZip: $command->getAddressZip(), + addressCity: $command->getAddressCity(), + ); + + $this->subscriptionRepository->save($subscription); + $this->entityManager->flush(); + + if ($isNewMember) { + // -- create a member from a subscription --------------------- + $createMemberCommand = new CreateMemberFromSubscription( + id: $subscription->getId(), + memberEmail: $command->getEmail() + ); + $createMemberCommandHandler = new CreateMemberFromSubscriptionHandler( + $this->subscriptionRepository, + $this->memberRepository, + $this->gradeRepository + ); + $createMemberCommandHandler->go($createMemberCommand); + } else { + // -- update the member fields -------------------------------- + $member = $this->memberRepository->getById($command->getMemberId()); + + // -- set contact info + $member->setContactInformation( + contactFirstname: $subscription->getContactFirstname(), + contactLastname: $subscription->getContactLastname(), + contactEmail: $subscription->getContactEmail(), + contactPhone: $subscription->getContactPhone() + ); + // -- set subscription dates + $member->setSubscriptionDates( + start: $subscription->getMemberSubscriptionStart(), + end: $subscription->getMemberSubscriptionEnd(), + isHalfYearSubscription: $subscription->isMemberSubscriptionIsHalfYear() + ); + // -- set license dates + $member->setLicenseDates( + start: $subscription->getLicenseStart(), + end: $subscription->getLicenseEnd() + ); + + // -- save and connect the member + $this->memberRepository->save($member); + $subscription->setMember($member); + $this->subscriptionRepository->save($subscription); + } + + // -- make some subscription lines --------------------------------- + $subscriptionItemFactory = new SubscriptionItemsFactory( + $this->subscriptionRepository, + $this->subscriptionItemRepository + ); + $resultItems = $subscriptionItemFactory->saveItemsFromSubscription( + $subscription, + $federation, + $settings + ); + + // -- set correct status for the subscription ---------------------- + $this->entityManager->flush(); + $subscription->changeStatus(SubscriptionStatus::AWAITING_PAYMENT); + $this->subscriptionRepository->save($subscription); + $this->entityManager->flush(); + + // -- compile a result class for giving feedback -------------------- + $result = new \stdClass(); + $result->id = $subscription->getId(); + $result->reference = 'YKS-'.$subscription->getId().': '.$command->getFirstName().' '.$command->getLastName(); + + return $result; + } + + private function isCommandValid(ConfirmMemberWebSubscription $command, Settings $settings): bool + { + // todo + + return true; + } +} diff --git a/application/YoshiKan/Application/Command/Member/ConfirmMemberWebSubscription/ConfirmMemberWebSubscriptionTrait.php b/application/YoshiKan/Application/Command/Member/ConfirmMemberWebSubscription/ConfirmMemberWebSubscriptionTrait.php new file mode 100644 index 0000000..a57adee --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/ConfirmMemberWebSubscription/ConfirmMemberWebSubscriptionTrait.php @@ -0,0 +1,43 @@ +permission->CheckRole(['ROLE_DEVELOPER', 'ROLE_ADMIN', 'ROLE_CHIEF_EDITOR']); + + $handler = new ConfirmMemberWebSubscriptionHandler( + $this->federationRepository, + $this->locationRepository, + $this->settingsRepository, + $this->memberRepository, + $this->gradeRepository, + $this->subscriptionRepository, + $this->subscriptionItemRepository, + $this->entityManager, + ); + + $result = $handler->go($command); + $this->entityManager->flush(); + + return $result; + } +} diff --git a/application/YoshiKan/Application/Command/Member/CreateMemberFromSubscription/create_member_from_subscription.php b/application/YoshiKan/Application/Command/Member/CreateMemberFromSubscription/CreateMemberFromSubscriptionTrait.php similarity index 95% rename from application/YoshiKan/Application/Command/Member/CreateMemberFromSubscription/create_member_from_subscription.php rename to application/YoshiKan/Application/Command/Member/CreateMemberFromSubscription/CreateMemberFromSubscriptionTrait.php index 398d86e..eca82ec 100644 --- a/application/YoshiKan/Application/Command/Member/CreateMemberFromSubscription/create_member_from_subscription.php +++ b/application/YoshiKan/Application/Command/Member/CreateMemberFromSubscription/CreateMemberFromSubscriptionTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\CreateMemberFromSubscription; -trait create_member_from_subscription +trait CreateMemberFromSubscriptionTrait { public function createMemberFromSubscription(int $id): bool { diff --git a/application/YoshiKan/Application/Command/Member/CreateMolliePaymentLink/CreateMolliePaymentLink.php b/application/YoshiKan/Application/Command/Member/CreateMolliePaymentLink/CreateMolliePaymentLink.php new file mode 100644 index 0000000..4595e48 --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/CreateMolliePaymentLink/CreateMolliePaymentLink.php @@ -0,0 +1,47 @@ +subscriptionId; + } +} diff --git a/application/YoshiKan/Application/Command/Member/CreateMolliePaymentLink/CreateMolliePaymentLinkHandler.php b/application/YoshiKan/Application/Command/Member/CreateMolliePaymentLink/CreateMolliePaymentLinkHandler.php new file mode 100644 index 0000000..57a83ef --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/CreateMolliePaymentLink/CreateMolliePaymentLinkHandler.php @@ -0,0 +1,94 @@ +subscriptionRepository->getById($command->getSubscriptionId()); + + // -- link already created + if (!(0 === mb_strlen($subscription->getPaymentId()))) { + return false; + } + + $paymentId = hash('SHA256', $subscription->getUuidAsString().'*'.$_SERVER['APP_SECRET']); + $redirectUrl = $this->mollieConfig->getRedirectBaseUrl().'lidgeld/betaling/'.$paymentId; + $webhookUrl = $this->mollieConfig->getRedirectBaseUrl().'lidgeld/betaling/'.$paymentId.'/webhook'; + + // -- compile description for payment link ----------------------------- + $description = 'YKS-'.$subscription->getId().': '; + $hasLicense = false; + $hasMembership = false; + + foreach ($subscription->getItems() as $item) { + if (SubscriptionItemType::LICENSE === $item->getType()) { + $hasLicense = true; + } + if (SubscriptionItemType::MEMBERSHIP === $item->getType()) { + $hasMembership = true; + } + } + + // -- create payment link ----------------------------------------------- + + if ($hasLicense && $hasMembership) { + $description .= 'Lidgeld (tot '.$subscription->getMemberSubscriptionEnd()->format('m/Y') + .') en vergunning (tot '.$subscription->getLicenseEnd()->format('m/Y').') '; + } elseif ($hasLicense) { + $description .= 'Vergunning (tot '.$subscription->getMemberSubscriptionEnd()->format('m/Y').') '; + } elseif ($hasMembership) { + $description .= 'Lidgeld (tot '.$subscription->getLicenseEnd()->format('m/Y').') '; + } else { + $description .= 'Lidgeld '; + } + $description .= 'voor '.mb_strtoupper($subscription->getLastname()).' '.$subscription->getFirstname(); + + $formattedAmount = number_format($subscription->getTotal(), 2, '.', ''); + + if (0 !== strlen($this->mollieConfig->getApiKey())) { + $mollie = new \Mollie\Api\MollieApiClient(); + $mollie->setApiKey($this->mollieConfig->getApiKey()); + $paymentLink = $mollie->paymentLinks->create([ + 'amount' => [ + 'currency' => 'EUR', + 'value' => $formattedAmount, + ], + 'description' => $description, + 'redirectUrl' => $redirectUrl, + 'webhookUrl' => $webhookUrl, + ]); + $subscription->setMolliePaymentInfo( + paymentId: $paymentId, + paymentLink: $paymentLink->getCheckoutUrl(), + paymentLinkId: $paymentLink->id, + ); + } + + $this->subscriptionRepository->save($subscription); + + return true; + } +} diff --git a/application/YoshiKan/Application/Command/Member/CreateMolliePaymentLink/CreateMolliePaymentLinkTrait.php b/application/YoshiKan/Application/Command/Member/CreateMolliePaymentLink/CreateMolliePaymentLinkTrait.php new file mode 100644 index 0000000..9c1c892 --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/CreateMolliePaymentLink/CreateMolliePaymentLinkTrait.php @@ -0,0 +1,33 @@ +permission->CheckRole(['ROLE_DEVELOPER', 'ROLE_ADMIN', 'ROLE_CHIEF_EDITOR']); + + $command = CreateMolliePaymentLink::make($subscriptionId); + $handler = new CreateMolliePaymentLinkHandler( + $this->subscriptionRepository, + $this->mollieConfig, + ); + + $result = $handler->create($command); + $this->entityManager->flush(); + + return $result; + } +} diff --git a/application/YoshiKan/Application/Command/Member/DeleteMemberImage/DeleteMemberImage.php b/application/YoshiKan/Application/Command/Member/DeleteMemberImage/DeleteMemberImage.php index 8ef89b2..dee2634 100644 --- a/application/YoshiKan/Application/Command/Member/DeleteMemberImage/DeleteMemberImage.php +++ b/application/YoshiKan/Application/Command/Member/DeleteMemberImage/DeleteMemberImage.php @@ -1,5 +1,16 @@ id, @@ -37,4 +51,9 @@ public function getId(): int { return $this->id; } + + public function isCancelMember(): bool + { + return $this->cancelMember; + } } diff --git a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsCanceled/MarkSubscriptionAsCanceledHandler.php b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsCanceled/MarkSubscriptionAsCanceledHandler.php index 0910515..ce2b805 100644 --- a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsCanceled/MarkSubscriptionAsCanceledHandler.php +++ b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsCanceled/MarkSubscriptionAsCanceledHandler.php @@ -1,7 +1,19 @@ changeStatus(SubscriptionStatus::CANCELED); $this->subscriptionRepository->save($subscription); $result = true; + + $member = $subscription->getMember(); + if (false === is_null($member) && $command->isCancelMember()) { + $member->deactivate(); + $this->memberRepository->save($member); + } } return $result; diff --git a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsCanceled/mark_subscription_as_canceled.php b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsCanceled/MarkSubscriptionAsCanceledTrait.php similarity index 51% rename from application/YoshiKan/Application/Command/Member/MarkSubscriptionAsCanceled/mark_subscription_as_canceled.php rename to application/YoshiKan/Application/Command/Member/MarkSubscriptionAsCanceled/MarkSubscriptionAsCanceledTrait.php index 426b98d..042358a 100644 --- a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsCanceled/mark_subscription_as_canceled.php +++ b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsCanceled/MarkSubscriptionAsCanceledTrait.php @@ -1,8 +1,19 @@ permission->CheckRole(['ROLE_DEVELOPER', 'ROLE_ADMIN', 'ROLE_CHIEF_EDITOR']); - $handler = new MarkSubscriptionAsCanceledHandler($this->subscriptionRepository); + $handler = new MarkSubscriptionAsCanceledHandler( + subscriptionRepository: $this->subscriptionRepository, + memberRepository: $this->memberRepository, + ); $result = $handler->go($command); $this->entityManager->flush(); diff --git a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsFinished/MarkSubscriptionAsFinished.php b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsFinished/MarkSubscriptionAsFinished.php index 99a4b68..6512dde 100644 --- a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsFinished/MarkSubscriptionAsFinished.php +++ b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsFinished/MarkSubscriptionAsFinished.php @@ -1,5 +1,16 @@ id, diff --git a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsFinished/MarkSubscriptionAsFinishedHandler.php b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsFinished/MarkSubscriptionAsFinishedHandler.php index 84b4e3c..300df66 100644 --- a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsFinished/MarkSubscriptionAsFinishedHandler.php +++ b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsFinished/MarkSubscriptionAsFinishedHandler.php @@ -1,5 +1,16 @@ id, diff --git a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayed/MarkSubscriptionAsPayedHandler.php b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayed/MarkSubscriptionAsPayedHandler.php index f98c9b0..7e7a12f 100644 --- a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayed/MarkSubscriptionAsPayedHandler.php +++ b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayed/MarkSubscriptionAsPayedHandler.php @@ -1,10 +1,22 @@ getStatus()) { $subscription->changeStatus(SubscriptionStatus::PAYED); + $subscription->setPaymentTypeInfo(SubscriptionPaymentType::TRANSFER); $this->subscriptionRepository->save($subscription); $result = true; } // mark the subscription and license as paid on the actual member - if ($result && !is_null($subscription->getMember())) { - $member = $subscription->getMember(); + $member = $subscription->getMember(); + if ($result && !is_null($member)) { if ($subscription->isMemberSubscriptionIsPartSubscription()) { $member->markSubscriptionAsPayed(); } if ($subscription->isLicenseIsPartSubscription()) { $member->markLicenseAsPayed(); } + // -- sync the federation from the subscription to the member + $member->syncFromSubscription( + $subscription->getFederation(), + (int) $subscription->getNumberOfTraining(), + $subscription->isMemberSubscriptionIsHalfYear(), + ); + $this->memberRepository->save($member); } // cancel all other pending subscriptions for this member if ($result && !is_null($subscription->getMember())) { - $cancelHandler = new MarkSubscriptionAsCanceledHandler($this->subscriptionRepository); + $cancelHandler = new MarkSubscriptionAsCanceledHandler($this->subscriptionRepository, $this->memberRepository); $subscriptions = $this->subscriptionRepository->getByMember($subscription->getMember()); foreach ($subscriptions as $subscription) { if ($subscription->getId() !== $command->getId()) { - $cancelCommand = MarkSubscriptionAsCanceled::make($subscription->getId()); + $cancelCommand = MarkSubscriptionAsCanceled::make($subscription->getId(), false); $cancelHandler->go($cancelCommand); } } diff --git a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayedFromMollie/MarkSubscriptionAsPayedFromMollie.php b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayedFromMollie/MarkSubscriptionAsPayedFromMollie.php new file mode 100644 index 0000000..2a0ce2d --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayedFromMollie/MarkSubscriptionAsPayedFromMollie.php @@ -0,0 +1,51 @@ +paymentId, + ); + } + + // ————————————————————————————————————————————————————————————————————————— + // Getters + // ————————————————————————————————————————————————————————————————————————— + + public function getPaymentId(): string + { + return $this->paymentId; + } +} diff --git a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayedFromMollie/MarkSubscriptionAsPayedFromMollieHandler.php b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayedFromMollie/MarkSubscriptionAsPayedFromMollieHandler.php new file mode 100644 index 0000000..2490f16 --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayedFromMollie/MarkSubscriptionAsPayedFromMollieHandler.php @@ -0,0 +1,83 @@ +subscriptionRepository->findByPaymentId($command->getPaymentId()); + if (true === is_null($subscription)) { + return 0; + } + + if (SubscriptionStatus::AWAITING_PAYMENT === $subscription->getStatus()) { + $subscription->changeStatus(SubscriptionStatus::PAYED); + $subscription->setPaymentTypeInfo(SubscriptionPaymentType::MOLLIE); + $this->subscriptionRepository->save($subscription); + $result = true; + } + + // -- mark the subscription and license as paid on the actual member ------------ + $member = $subscription->getMember(); + if ($result && !is_null($member)) { + if ($subscription->isMemberSubscriptionIsPartSubscription()) { + $member->markSubscriptionAsPayed(); + } + if ($subscription->isLicenseIsPartSubscription()) { + $member->markLicenseAsPayed(); + } + $this->memberRepository->save($member); + } + + // -- cancel all other pending subscriptions for this member -------------------- + if ($result && !is_null($member)) { + $cancelHandler = new MarkSubscriptionAsCanceledHandler( + subscriptionRepository: $this->subscriptionRepository, + memberRepository: $this->memberRepository + ); + $subscriptions = $this->subscriptionRepository->getByMember($member); + foreach ($subscriptions as $subscriptionEntity) { + if ($subscriptionEntity->getId() !== $subscription->getId()) { + $cancelCommand = MarkSubscriptionAsCanceled::make($subscription->getId(), false); + $cancelHandler->go($cancelCommand); + } + } + } + + return $subscription->getId(); + } +} diff --git a/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayedFromMollie/MarkSubscriptionAsPayedFromMollieTrait.php b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayedFromMollie/MarkSubscriptionAsPayedFromMollieTrait.php new file mode 100644 index 0000000..6dba8c1 --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/MarkSubscriptionAsPayedFromMollie/MarkSubscriptionAsPayedFromMollieTrait.php @@ -0,0 +1,32 @@ +subscriptionRepository, + memberRepository: $this->memberRepository, + ); + $subscriptionId = $handler->go($command); + $this->entityManager->flush(); + $resultObject = new \stdClass(); + $resultObject->subscriptionId = $subscriptionId; + + return $resultObject; + } +} diff --git a/application/YoshiKan/Application/Command/Member/MemberExtendSubscription/MemberExtendSubscription.php b/application/YoshiKan/Application/Command/Member/MemberExtendSubscription/MemberExtendSubscription.php index 3a138e7..28adc75 100644 --- a/application/YoshiKan/Application/Command/Member/MemberExtendSubscription/MemberExtendSubscription.php +++ b/application/YoshiKan/Application/Command/Member/MemberExtendSubscription/MemberExtendSubscription.php @@ -66,7 +66,7 @@ private function __construct( /** * @throws \Exception */ - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( intval($json->memberId), diff --git a/application/YoshiKan/Application/Command/Member/MemberExtendSubscription/member_extend_subscription.php b/application/YoshiKan/Application/Command/Member/MemberExtendSubscription/MemberExtendSubscriptionTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/MemberExtendSubscription/member_extend_subscription.php rename to application/YoshiKan/Application/Command/Member/MemberExtendSubscription/MemberExtendSubscriptionTrait.php index 574699b..a1855b4 100644 --- a/application/YoshiKan/Application/Command/Member/MemberExtendSubscription/member_extend_subscription.php +++ b/application/YoshiKan/Application/Command/Member/MemberExtendSubscription/MemberExtendSubscriptionTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\MemberExtendSubscription; -trait member_extend_subscription +trait MemberExtendSubscriptionTrait { public function memberExtendSubscription(\stdClass $jsonCommand): \stdClass { diff --git a/application/YoshiKan/Application/Command/Member/MemberExtendSubscriptionMail/MemberExtendSubscriptionMailHandler.php b/application/YoshiKan/Application/Command/Member/MemberExtendSubscriptionMail/MemberExtendSubscriptionMailHandler.php index 7b64e59..79aefea 100644 --- a/application/YoshiKan/Application/Command/Member/MemberExtendSubscriptionMail/MemberExtendSubscriptionMailHandler.php +++ b/application/YoshiKan/Application/Command/Member/MemberExtendSubscriptionMail/MemberExtendSubscriptionMailHandler.php @@ -13,6 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\MemberExtendSubscriptionMail; +use App\YoshiKan\Application\Command\Common\EmailValidator; use App\YoshiKan\Domain\Model\Member\FederationRepository; use App\YoshiKan\Domain\Model\Member\LocationRepository; use App\YoshiKan\Domain\Model\Member\MemberRepository; @@ -72,17 +73,21 @@ public function go(MemberExtendSubscriptionMail $command): bool ] ); - // -- send email ----------------------------------------------------------------------------------------------- + // -- send email ------------------------------------------------- - $message = (new Email()) - ->subject($subject) - ->from(new Address($command->getFromEmail(), $command->getFromName())) - ->to(new Address($subscription->getContactEmail(), $subscription->getContactFirstname().' '.$subscription->getContactLastname())) - ->html($mailTemplate); + if (EmailValidator::isValid($subscription->getContactEmail())) { + $message = (new Email()) + ->subject($subject) + ->from(new Address($command->getFromEmail(), $command->getFromName())) + ->to(new Address($subscription->getContactEmail(), $subscription->getContactFirstname().' '.$subscription->getContactLastname())) + ->html($mailTemplate); - $this->mailer->send($message); + if ('true' === $_SERVER['ENABLE_SENDING_EMAILS']) { + $this->mailer->send($message); + } + } - // -- record message and flag as send -------------------------------------------------------------------------- + // -- record message and flag as send ---------------------------- $message = Message::make( $this->messageRepository->nextIdentity(), @@ -98,8 +103,10 @@ public function go(MemberExtendSubscriptionMail $command): bool $message->setSubscription($subscription); $this->messageRepository->save($message); - $subscription->flagPaymentOverviewMailSend(); - $this->subscriptionRepository->save($subscription); + if (EmailValidator::isValid($subscription->getContactEmail())) { + $subscription->flagPaymentOverviewMailSend(); + $this->subscriptionRepository->save($subscription); + } return true; } diff --git a/application/YoshiKan/Application/Command/Member/MemberExtendSubscriptionMail/member_extend_subscription_mail.php b/application/YoshiKan/Application/Command/Member/MemberExtendSubscriptionMail/MemberExtendSubscriptionMailTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/MemberExtendSubscriptionMail/member_extend_subscription_mail.php rename to application/YoshiKan/Application/Command/Member/MemberExtendSubscriptionMail/MemberExtendSubscriptionMailTrait.php index 9920944..de6881a 100644 --- a/application/YoshiKan/Application/Command/Member/MemberExtendSubscriptionMail/member_extend_subscription_mail.php +++ b/application/YoshiKan/Application/Command/Member/MemberExtendSubscriptionMail/MemberExtendSubscriptionMailTrait.php @@ -15,7 +15,7 @@ use App\YoshiKan\Application\Settings; -trait member_extend_subscription_mail +trait MemberExtendSubscriptionMailTrait { public function sendMemberExtendSubscriptionMail(int $subscriptionId): bool { diff --git a/application/YoshiKan/Application/Command/Member/NewMemberSubscription/NewMemberSubscription.php b/application/YoshiKan/Application/Command/Member/NewMemberSubscription/NewMemberSubscription.php index 5328995..485038b 100644 --- a/application/YoshiKan/Application/Command/Member/NewMemberSubscription/NewMemberSubscription.php +++ b/application/YoshiKan/Application/Command/Member/NewMemberSubscription/NewMemberSubscription.php @@ -78,7 +78,7 @@ private function __construct( /** * @throws \Exception */ - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( trim($json->type), diff --git a/application/YoshiKan/Application/Command/Member/NewMemberSubscription/new_member_subscription.php b/application/YoshiKan/Application/Command/Member/NewMemberSubscription/NewMemberSubscriptionTrait.php similarity index 97% rename from application/YoshiKan/Application/Command/Member/NewMemberSubscription/new_member_subscription.php rename to application/YoshiKan/Application/Command/Member/NewMemberSubscription/NewMemberSubscriptionTrait.php index 81e8f22..536d20b 100644 --- a/application/YoshiKan/Application/Command/Member/NewMemberSubscription/new_member_subscription.php +++ b/application/YoshiKan/Application/Command/Member/NewMemberSubscription/NewMemberSubscriptionTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\NewMemberSubscription; -trait new_member_subscription +trait NewMemberSubscriptionTrait { /** * @throws \Exception diff --git a/application/YoshiKan/Application/Command/Member/NewMemberSubscriptionMail/NewMemberSubscriptionMailHandler.php b/application/YoshiKan/Application/Command/Member/NewMemberSubscriptionMail/NewMemberSubscriptionMailHandler.php index 18cb13b..507f932 100644 --- a/application/YoshiKan/Application/Command/Member/NewMemberSubscriptionMail/NewMemberSubscriptionMailHandler.php +++ b/application/YoshiKan/Application/Command/Member/NewMemberSubscriptionMail/NewMemberSubscriptionMailHandler.php @@ -13,6 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\NewMemberSubscriptionMail; +use App\YoshiKan\Application\Command\Common\EmailValidator; use App\YoshiKan\Domain\Model\Member\FederationRepository; use App\YoshiKan\Domain\Model\Member\LocationRepository; use App\YoshiKan\Domain\Model\Member\MemberRepository; @@ -66,17 +67,21 @@ public function go(NewMemberSubscriptionMail $command): bool ] ); - // -- send email ----------------------------------------------------------------------------------------------- + // -- send email ---------------------------------------------------------- - $message = (new Email()) - ->subject($subject) - ->from(new Address($command->getFromEmail(), $command->getFromName())) - ->to(new Address($subscription->getContactEmail(), $subscription->getContactFirstname().' '.$subscription->getContactLastname())) - ->html($mailTemplate); + if (EmailValidator::isValid($subscription->getContactEmail())) { + $message = (new Email()) + ->subject($subject) + ->from(new Address($command->getFromEmail(), $command->getFromName())) + ->to(new Address($subscription->getContactEmail(), $subscription->getContactFirstname().' '.$subscription->getContactLastname())) + ->html($mailTemplate); - $this->mailer->send($message); + if ('true' === $_SERVER['ENABLE_SENDING_EMAILS']) { + $this->mailer->send($message); + } + } - // -- record message and flag as send -------------------------------------------------------------------------- + // -- record message and flag as send ------------------------------------- $message = Message::make( $this->messageRepository->nextIdentity(), @@ -92,8 +97,10 @@ public function go(NewMemberSubscriptionMail $command): bool $message->setSubscription($subscription); $this->messageRepository->save($message); - $subscription->flagPaymentOverviewMailSend(); - $this->subscriptionRepository->save($subscription); + if (EmailValidator::isValid($subscription->getContactEmail())) { + $subscription->flagPaymentOverviewMailSend(); + $this->subscriptionRepository->save($subscription); + } return true; } diff --git a/application/YoshiKan/Application/Command/Member/NewMemberSubscriptionMail/new_member_subscription_mail.php b/application/YoshiKan/Application/Command/Member/NewMemberSubscriptionMail/NewMemberSubscriptionMailTrait.php similarity index 97% rename from application/YoshiKan/Application/Command/Member/NewMemberSubscriptionMail/new_member_subscription_mail.php rename to application/YoshiKan/Application/Command/Member/NewMemberSubscriptionMail/NewMemberSubscriptionMailTrait.php index 74465db..0c1131b 100644 --- a/application/YoshiKan/Application/Command/Member/NewMemberSubscriptionMail/new_member_subscription_mail.php +++ b/application/YoshiKan/Application/Command/Member/NewMemberSubscriptionMail/NewMemberSubscriptionMailTrait.php @@ -15,7 +15,7 @@ use App\YoshiKan\Application\Settings; -trait new_member_subscription_mail +trait NewMemberSubscriptionMailTrait { public function sendMemberNewSubscriptionMail(int $subscriptionId): bool { diff --git a/application/YoshiKan/Application/Command/Member/NewMemberWebSubscription/NewMemberWebSubscription.php b/application/YoshiKan/Application/Command/Member/NewMemberWebSubscription/NewMemberWebSubscription.php index 76b3d17..8003523 100644 --- a/application/YoshiKan/Application/Command/Member/NewMemberWebSubscription/NewMemberWebSubscription.php +++ b/application/YoshiKan/Application/Command/Member/NewMemberWebSubscription/NewMemberWebSubscription.php @@ -62,7 +62,7 @@ private function __construct( /** * @throws \Exception */ - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( trim($json->type), diff --git a/application/YoshiKan/Application/Command/Member/NewMemberWebSubscription/new_member_web_subscription.php b/application/YoshiKan/Application/Command/Member/NewMemberWebSubscription/NewMemberWebSubscriptionTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/NewMemberWebSubscription/new_member_web_subscription.php rename to application/YoshiKan/Application/Command/Member/NewMemberWebSubscription/NewMemberWebSubscriptionTrait.php index 2f46a59..ff72338 100644 --- a/application/YoshiKan/Application/Command/Member/NewMemberWebSubscription/new_member_web_subscription.php +++ b/application/YoshiKan/Application/Command/Member/NewMemberWebSubscription/NewMemberWebSubscriptionTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\NewMemberWebSubscription; -trait new_member_web_subscription +trait NewMemberWebSubscriptionTrait { public function newMemberWebSubscription(\stdClass $jsonCommand): \stdClass { diff --git a/application/YoshiKan/Application/Command/Member/NewMemberWebSubscriptionMail/NewMemberWebSubscriptionMailHandler.php b/application/YoshiKan/Application/Command/Member/NewMemberWebSubscriptionMail/NewMemberWebSubscriptionMailHandler.php index 565773f..b6fedb5 100644 --- a/application/YoshiKan/Application/Command/Member/NewMemberWebSubscriptionMail/NewMemberWebSubscriptionMailHandler.php +++ b/application/YoshiKan/Application/Command/Member/NewMemberWebSubscriptionMail/NewMemberWebSubscriptionMailHandler.php @@ -13,6 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\NewMemberWebSubscriptionMail; +use App\YoshiKan\Application\Command\Common\EmailValidator; use App\YoshiKan\Domain\Model\Member\SubscriptionRepository; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Mime\Address; @@ -31,7 +32,7 @@ public function __construct( public function go(NewMemberWebSubscriptionMail $command): bool { $subscription = $this->subscriptionRepository->getById($command->getSubscriptionId()); - $subject = 'Yoshi-Kan: bevestiging inschrijving '.$subscription->getFirstname().' '.$subscription->getLastname(); + $subject = 'JC Yoshi-Kan: bevestiging inschrijving '.$subscription->getFirstname().' '.$subscription->getLastname(); $mailTemplate = $this->twig->render( 'mail/web_confirmation_mail.html.twig', @@ -42,14 +43,18 @@ public function go(NewMemberWebSubscriptionMail $command): bool ] ); - $message = (new Email()) - ->subject($subject) - ->from(new Address($command->getFromEmail(), $command->getFromName())) - ->to(new Address($subscription->getContactEmail(), $subscription->getContactFirstname().' '.$subscription->getContactLastname())) - ->bcc(new Address($command->getContactEmail(), $command->getFromName())) - ->html($mailTemplate); - - $this->mailer->send($message); + if (EmailValidator::isValid($subscription->getContactEmail())) { + $message = (new Email()) + ->subject($subject) + ->from(new Address($command->getFromEmail(), $command->getFromName())) + ->to(new Address($subscription->getContactEmail(), $subscription->getContactFirstname().' '.$subscription->getContactLastname())) + ->bcc(new Address('judo.yoshikan@gmail.com', $command->getFromName())) + ->html($mailTemplate); + + if ('true' === $_SERVER['ENABLE_SENDING_EMAILS']) { + $this->mailer->send($message); + } + } return true; } diff --git a/application/YoshiKan/Application/Command/Member/NewMemberWebSubscriptionMail/new_member_web_subscription_mail.php b/application/YoshiKan/Application/Command/Member/NewMemberWebSubscriptionMail/NewMemberWebSubscriptionMailTrait.php similarity index 95% rename from application/YoshiKan/Application/Command/Member/NewMemberWebSubscriptionMail/new_member_web_subscription_mail.php rename to application/YoshiKan/Application/Command/Member/NewMemberWebSubscriptionMail/NewMemberWebSubscriptionMailTrait.php index 3ca6325..b49c6f7 100644 --- a/application/YoshiKan/Application/Command/Member/NewMemberWebSubscriptionMail/new_member_web_subscription_mail.php +++ b/application/YoshiKan/Application/Command/Member/NewMemberWebSubscriptionMail/NewMemberWebSubscriptionMailTrait.php @@ -15,7 +15,7 @@ use App\YoshiKan\Application\Settings; -trait new_member_web_subscription_mail +trait NewMemberWebSubscriptionMailTrait { /** * @throws \Exception diff --git a/application/YoshiKan/Application/Command/Member/OrderFederation/OrderFederation.php b/application/YoshiKan/Application/Command/Member/OrderFederation/OrderFederation.php index 9b24d11..05bcb65 100644 --- a/application/YoshiKan/Application/Command/Member/OrderFederation/OrderFederation.php +++ b/application/YoshiKan/Application/Command/Member/OrderFederation/OrderFederation.php @@ -1,5 +1,16 @@ sequence); } diff --git a/application/YoshiKan/Application/Command/Member/OrderFederation/OrderFederationHandler.php b/application/YoshiKan/Application/Command/Member/OrderFederation/OrderFederationHandler.php index c7441c6..39475db 100644 --- a/application/YoshiKan/Application/Command/Member/OrderFederation/OrderFederationHandler.php +++ b/application/YoshiKan/Application/Command/Member/OrderFederation/OrderFederationHandler.php @@ -1,5 +1,16 @@ sequence); } diff --git a/application/YoshiKan/Application/Command/Member/OrderGrade/order_grade.php b/application/YoshiKan/Application/Command/Member/OrderGrade/OrderGradeTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/OrderGrade/order_grade.php rename to application/YoshiKan/Application/Command/Member/OrderGrade/OrderGradeTrait.php index 749cd7d..9bae2c9 100644 --- a/application/YoshiKan/Application/Command/Member/OrderGrade/order_grade.php +++ b/application/YoshiKan/Application/Command/Member/OrderGrade/OrderGradeTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\OrderGrade; -trait order_grade +trait OrderGradeTrait { public function orderGrade(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/OrderGroup/OrderGroup.php b/application/YoshiKan/Application/Command/Member/OrderGroup/OrderGroup.php index c2a446f..d3f5e0e 100644 --- a/application/YoshiKan/Application/Command/Member/OrderGroup/OrderGroup.php +++ b/application/YoshiKan/Application/Command/Member/OrderGroup/OrderGroup.php @@ -27,7 +27,7 @@ public function __construct(protected array $sequence) // Hydration // ——————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self($json->sequence); } diff --git a/application/YoshiKan/Application/Command/Member/OrderGroup/order_group.php b/application/YoshiKan/Application/Command/Member/OrderGroup/OrderGroupTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/OrderGroup/order_group.php rename to application/YoshiKan/Application/Command/Member/OrderGroup/OrderGroupTrait.php index b6f7677..ce4369e 100644 --- a/application/YoshiKan/Application/Command/Member/OrderGroup/order_group.php +++ b/application/YoshiKan/Application/Command/Member/OrderGroup/OrderGroupTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\OrderGroup; -trait order_group +trait OrderGroupTrait { public function orderGroup(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/OrderLocation/OrderLocation.php b/application/YoshiKan/Application/Command/Member/OrderLocation/OrderLocation.php index 418b08f..7ab3179 100644 --- a/application/YoshiKan/Application/Command/Member/OrderLocation/OrderLocation.php +++ b/application/YoshiKan/Application/Command/Member/OrderLocation/OrderLocation.php @@ -27,7 +27,7 @@ public function __construct(protected array $sequence) // Hydration // ——————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self($json->sequence); } diff --git a/application/YoshiKan/Application/Command/Member/OrderLocation/order_location.php b/application/YoshiKan/Application/Command/Member/OrderLocation/OrderLocationTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/OrderLocation/order_location.php rename to application/YoshiKan/Application/Command/Member/OrderLocation/OrderLocationTrait.php index 7120f93..fd555b8 100644 --- a/application/YoshiKan/Application/Command/Member/OrderLocation/order_location.php +++ b/application/YoshiKan/Application/Command/Member/OrderLocation/OrderLocationTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\OrderLocation; -trait order_location +trait OrderLocationTrait { public function orderLocation(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/OrderPeriod/OrderPeriod.php b/application/YoshiKan/Application/Command/Member/OrderPeriod/OrderPeriod.php index 9b7115f..03fe387 100644 --- a/application/YoshiKan/Application/Command/Member/OrderPeriod/OrderPeriod.php +++ b/application/YoshiKan/Application/Command/Member/OrderPeriod/OrderPeriod.php @@ -27,7 +27,7 @@ public function __construct(protected array $sequence) // Hydration // ——————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self($json->sequence); } diff --git a/application/YoshiKan/Application/Command/Member/OrderPeriod/order_period.php b/application/YoshiKan/Application/Command/Member/OrderPeriod/OrderPeriodTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/OrderPeriod/order_period.php rename to application/YoshiKan/Application/Command/Member/OrderPeriod/OrderPeriodTrait.php index 4f4ef78..2834fc7 100644 --- a/application/YoshiKan/Application/Command/Member/OrderPeriod/order_period.php +++ b/application/YoshiKan/Application/Command/Member/OrderPeriod/OrderPeriodTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\OrderPeriod; -trait order_period +trait OrderPeriodTrait { public function orderPeriod(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/SaveSettings/SaveSettings.php b/application/YoshiKan/Application/Command/Member/SaveSettings/SaveSettings.php index 0d08305..f0ea582 100644 --- a/application/YoshiKan/Application/Command/Member/SaveSettings/SaveSettings.php +++ b/application/YoshiKan/Application/Command/Member/SaveSettings/SaveSettings.php @@ -35,7 +35,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->code, diff --git a/application/YoshiKan/Application/Command/Member/SaveSettings/save_settings.php b/application/YoshiKan/Application/Command/Member/SaveSettings/SaveSettingsTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/SaveSettings/save_settings.php rename to application/YoshiKan/Application/Command/Member/SaveSettings/SaveSettingsTrait.php index eb7347f..3115719 100644 --- a/application/YoshiKan/Application/Command/Member/SaveSettings/save_settings.php +++ b/application/YoshiKan/Application/Command/Member/SaveSettings/SaveSettingsTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\SaveSettings; -trait save_settings +trait SaveSettingsTrait { public function saveSettings(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Member/SendPaymentReceivedConfirmationMail/SendPaymentReceivedConfirmationMail.php b/application/YoshiKan/Application/Command/Member/SendPaymentReceivedConfirmationMail/SendPaymentReceivedConfirmationMail.php new file mode 100644 index 0000000..418c7ba --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/SendPaymentReceivedConfirmationMail/SendPaymentReceivedConfirmationMail.php @@ -0,0 +1,46 @@ +subscriptionId; + } + + public function getFromName(): string + { + return $this->fromName; + } + + public function getFromEmail(): string + { + return $this->fromEmail; + } +} diff --git a/application/YoshiKan/Application/Command/Member/SendPaymentReceivedConfirmationMail/SendPaymentReceivedConfirmationMailHandler.php b/application/YoshiKan/Application/Command/Member/SendPaymentReceivedConfirmationMail/SendPaymentReceivedConfirmationMailHandler.php new file mode 100644 index 0000000..2fe86d5 --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/SendPaymentReceivedConfirmationMail/SendPaymentReceivedConfirmationMailHandler.php @@ -0,0 +1,82 @@ +subscriptionRepository->getById($command->getSubscriptionId()); + $subject = 'JC Yoshi-Kan: betaling goed ontvangen: YKS-'.$subscription->getId(); + $mailTemplate = $this->twig->render( + 'mail/payment_confirmation_mail.html.twig', + [ + 'subject' => $subject, + 'subscription' => $subscription, + 'url' => $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'], + ] + ); + + // -- send email ------------------------------------------------ + + if (EmailValidator::isValid($subscription->getContactEmail())) { + $message = (new Email()) + ->subject($subject) + ->from(new Address($command->getFromEmail(), $command->getFromName())) + ->to(new Address($subscription->getContactEmail(), $subscription->getContactFirstname().' '.$subscription->getContactLastname())) + ->html($mailTemplate); + + if ('true' === $_SERVER['ENABLE_SENDING_EMAILS']) { + $this->mailer->send($message); + } + } + + // -- record message -------------------------------------------- + + $message = Message::make( + uuid: $this->messageRepository->nextIdentity(), + sendOn: new \DateTimeImmutable(), + fromName: $command->getFromName(), + fromEmail: $command->getFromEmail(), + toName: $subscription->getContactFirstname().' '.$subscription->getContactLastname(), + toEmail: $subscription->getContactEmail(), + subject: $subject, + message: $mailTemplate, + ); + $message->setMember($subscription->getMember()); + $message->setSubscription($subscription); + $this->messageRepository->save($message); + + return true; + } +} diff --git a/application/YoshiKan/Application/Command/Member/SendPaymentReceivedConfirmationMail/SendPaymentReceivedConfirmationMailTrait.php b/application/YoshiKan/Application/Command/Member/SendPaymentReceivedConfirmationMail/SendPaymentReceivedConfirmationMailTrait.php new file mode 100644 index 0000000..3c2916a --- /dev/null +++ b/application/YoshiKan/Application/Command/Member/SendPaymentReceivedConfirmationMail/SendPaymentReceivedConfirmationMailTrait.php @@ -0,0 +1,41 @@ +value, + Settings::FROM_EMAIL->value, + ); + $handler = new SendPaymentReceivedConfirmationMailHandler( + subscriptionRepository: $this->subscriptionRepository, + memberRepository: $this->memberRepository, + messageRepository: $this->messageRepository, + twig: $this->twig, + mailer: $this->mailer, + ); + $handler->send($command); + $this->entityManager->flush(); + $resultObject = new \stdClass(); + $resultObject->subscriptionId = $subscriptionId; + + return $resultObject; + } +} diff --git a/application/YoshiKan/Application/Command/Member/SetupConfiguration/SetupConfiguration.php b/application/YoshiKan/Application/Command/Member/SetupConfiguration/SetupConfiguration.php index ec26789..ed16d83 100644 --- a/application/YoshiKan/Application/Command/Member/SetupConfiguration/SetupConfiguration.php +++ b/application/YoshiKan/Application/Command/Member/SetupConfiguration/SetupConfiguration.php @@ -27,7 +27,7 @@ public function __construct(protected string $code) // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self($json->code); } diff --git a/application/YoshiKan/Application/Command/Member/SetupConfiguration/setup_configuration.php b/application/YoshiKan/Application/Command/Member/SetupConfiguration/SetupConfigurationTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Member/SetupConfiguration/setup_configuration.php rename to application/YoshiKan/Application/Command/Member/SetupConfiguration/SetupConfigurationTrait.php index 0fe266a..9cfae96 100644 --- a/application/YoshiKan/Application/Command/Member/SetupConfiguration/setup_configuration.php +++ b/application/YoshiKan/Application/Command/Member/SetupConfiguration/SetupConfigurationTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Member\SetupConfiguration; -trait setup_configuration +trait SetupConfigurationTrait { public function setupConfiguration(): bool { diff --git a/application/YoshiKan/Application/Command/Member/UploadMemberImage/UploadMemberImage.php b/application/YoshiKan/Application/Command/Member/UploadMemberImage/UploadMemberImage.php index 9347727..e2d5e28 100644 --- a/application/YoshiKan/Application/Command/Member/UploadMemberImage/UploadMemberImage.php +++ b/application/YoshiKan/Application/Command/Member/UploadMemberImage/UploadMemberImage.php @@ -1,5 +1,16 @@ getRealPath()); - if ($filesize > 3000000) { + if ($filesize > 30000000000) { throw new \Exception('Could not save the uploaded file'); return false; diff --git a/application/YoshiKan/Application/Command/Member/UploadMemberImage/upload_member_image.php b/application/YoshiKan/Application/Command/Member/UploadMemberImage/UploadMemberImageTrait.php similarity index 66% rename from application/YoshiKan/Application/Command/Member/UploadMemberImage/upload_member_image.php rename to application/YoshiKan/Application/Command/Member/UploadMemberImage/UploadMemberImageTrait.php index 4107f3c..67b7b04 100644 --- a/application/YoshiKan/Application/Command/Member/UploadMemberImage/upload_member_image.php +++ b/application/YoshiKan/Application/Command/Member/UploadMemberImage/UploadMemberImageTrait.php @@ -1,8 +1,19 @@ messageId), diff --git a/application/YoshiKan/Application/Command/Message/ResendMessage/ResendMessageHandler.php b/application/YoshiKan/Application/Command/Message/ResendMessage/ResendMessageHandler.php index b01fc65..c33e6dc 100644 --- a/application/YoshiKan/Application/Command/Message/ResendMessage/ResendMessageHandler.php +++ b/application/YoshiKan/Application/Command/Message/ResendMessage/ResendMessageHandler.php @@ -1,7 +1,19 @@ messageRepository->getById($command->getMessageId()); - $message = (new Email()) - ->subject($originalMessage->getSubject()) - ->from(new Address($command->getFromEmail(), $command->getFromName())) - ->to(new Address($command->getToEmail(), $originalMessage->getToName())) - ->html($originalMessage->getMessage()); - - $this->mailer->send($message); - - return true; + if (EmailValidator::isValid($command->getToEmail())) { + $message = (new Email()) + ->subject($originalMessage->getSubject()) + ->from(new Address($command->getFromEmail(), $command->getFromName())) + ->to(new Address($command->getToEmail(), $originalMessage->getToName())) + ->html($originalMessage->getMessage()); + + if ('true' === $_SERVER['ENABLE_SENDING_EMAILS']) { + $this->mailer->send($message); + } + + return true; + } else { + return false; + } } } diff --git a/application/YoshiKan/Application/Command/Message/ResendMessage/resend_message.php b/application/YoshiKan/Application/Command/Message/ResendMessage/ResendMessageTrait.php similarity index 68% rename from application/YoshiKan/Application/Command/Message/ResendMessage/resend_message.php rename to application/YoshiKan/Application/Command/Message/ResendMessage/ResendMessageTrait.php index f6dda2c..59f38de 100644 --- a/application/YoshiKan/Application/Command/Message/ResendMessage/resend_message.php +++ b/application/YoshiKan/Application/Command/Message/ResendMessage/ResendMessageTrait.php @@ -1,8 +1,19 @@ code), diff --git a/application/YoshiKan/Application/Command/Product/AddJudogi/add_judogi.php b/application/YoshiKan/Application/Command/Product/AddJudogi/AddJudogiTrait.php similarity index 97% rename from application/YoshiKan/Application/Command/Product/AddJudogi/add_judogi.php rename to application/YoshiKan/Application/Command/Product/AddJudogi/AddJudogiTrait.php index d492da7..ecdbb9c 100644 --- a/application/YoshiKan/Application/Command/Product/AddJudogi/add_judogi.php +++ b/application/YoshiKan/Application/Command/Product/AddJudogi/AddJudogiTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Product\AddJudogi; -trait add_judogi +trait AddJudogiTrait { public function addJudogi(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Product/ChangeJudogi/ChangeJudogi.php b/application/YoshiKan/Application/Command/Product/ChangeJudogi/ChangeJudogi.php index db8eabc..b75f646 100644 --- a/application/YoshiKan/Application/Command/Product/ChangeJudogi/ChangeJudogi.php +++ b/application/YoshiKan/Application/Command/Product/ChangeJudogi/ChangeJudogi.php @@ -32,7 +32,7 @@ private function __construct( // Hydrate from a json command // ————————————————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self( $json->id, diff --git a/application/YoshiKan/Application/Command/Product/ChangeJudogi/change_judogi.php b/application/YoshiKan/Application/Command/Product/ChangeJudogi/ChangeJudogiTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Product/ChangeJudogi/change_judogi.php rename to application/YoshiKan/Application/Command/Product/ChangeJudogi/ChangeJudogiTrait.php index de5888e..47a0e50 100644 --- a/application/YoshiKan/Application/Command/Product/ChangeJudogi/change_judogi.php +++ b/application/YoshiKan/Application/Command/Product/ChangeJudogi/ChangeJudogiTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Product\ChangeJudogi; -trait change_judogi +trait ChangeJudogiTrait { public function changeJudogi(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/Product/OrderJudogi/OrderJudogi.php b/application/YoshiKan/Application/Command/Product/OrderJudogi/OrderJudogi.php index 2f94bbd..b9a6383 100644 --- a/application/YoshiKan/Application/Command/Product/OrderJudogi/OrderJudogi.php +++ b/application/YoshiKan/Application/Command/Product/OrderJudogi/OrderJudogi.php @@ -27,7 +27,7 @@ public function __construct(protected array $sequence) // Hydration // ——————————————————————————————————————————————————————————————— - public static function hydrateFromJson($json): self + public static function hydrateFromJson(\stdClass $json): self { return new self($json->sequence); } diff --git a/application/YoshiKan/Application/Command/Product/OrderJudogi/order_judogi.php b/application/YoshiKan/Application/Command/Product/OrderJudogi/OrderJudogiTrait.php similarity index 96% rename from application/YoshiKan/Application/Command/Product/OrderJudogi/order_judogi.php rename to application/YoshiKan/Application/Command/Product/OrderJudogi/OrderJudogiTrait.php index 3134ebc..49c57ec 100644 --- a/application/YoshiKan/Application/Command/Product/OrderJudogi/order_judogi.php +++ b/application/YoshiKan/Application/Command/Product/OrderJudogi/OrderJudogiTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Command\Product\OrderJudogi; -trait order_judogi +trait OrderJudogiTrait { public function orderJudogi(\stdClass $jsonCommand): bool { diff --git a/application/YoshiKan/Application/Command/TwoFactor/GenerateAndSendMemberAccessCode/GenerateAndSendMemberAccessCode.php b/application/YoshiKan/Application/Command/TwoFactor/GenerateAndSendMemberAccessCode/GenerateAndSendMemberAccessCode.php new file mode 100644 index 0000000..087d477 --- /dev/null +++ b/application/YoshiKan/Application/Command/TwoFactor/GenerateAndSendMemberAccessCode/GenerateAndSendMemberAccessCode.php @@ -0,0 +1,51 @@ +userId; + } + + public function getFromName(): string + { + return $this->fromName; + } + + public function getFromEmail(): string + { + return $this->fromEmail; + } +} diff --git a/application/YoshiKan/Application/Command/TwoFactor/GenerateAndSendMemberAccessCode/GenerateAndSendMemberAccessCodeHandler.php b/application/YoshiKan/Application/Command/TwoFactor/GenerateAndSendMemberAccessCode/GenerateAndSendMemberAccessCodeHandler.php new file mode 100644 index 0000000..b3db5ea --- /dev/null +++ b/application/YoshiKan/Application/Command/TwoFactor/GenerateAndSendMemberAccessCode/GenerateAndSendMemberAccessCodeHandler.php @@ -0,0 +1,77 @@ +userRepository->findOneBy(['id' => $command->getUserId()]); + if (true === is_null($user)) { + return false; + } + + $subject = 'Yoshi-Kan - Toegangscode'; + $verificationCode = rand(100000, 999999); + $hashedCode = hash('SHA256', (string) $verificationCode.'*'.$_SERVER['APP_SECRET']); + $memberAccessCode = MemberAccessCode::make( + user: $user, + uuid: $this->memberAccessCodeRepository->nextIdentity(), + code: $hashedCode, + ); + + $this->memberAccessCodeRepository->save($memberAccessCode); + + // -- make template --------------------------------------------- + $magicLink = $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].'/beheer/leden#/login/'.$verificationCode; + $mailTemplate = $this->twig->render( + 'mail/member_access_code_mail.html.twig', + [ + 'subject' => $subject, + 'user' => $user, + 'code' => $verificationCode, + 'url' => $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'], + 'magicLink' => $magicLink, + ] + ); + + // -- send email via resend --------------------------------------- + + $resend = \Resend::client($_SERVER['RESEND_API_KEY']); + $resend->emails->send([ + 'from' => $command->getFromName().' <'.$command->getFromEmail().'>', + 'to' => [$user->getEmail()], + 'subject' => $subject, + 'html' => $mailTemplate, + ]); + + return true; + } +} diff --git a/application/YoshiKan/Application/Command/TwoFactor/GenerateAndSendMemberAccessCode/GenerateAndSendMemberAccessCodeTrait.php b/application/YoshiKan/Application/Command/TwoFactor/GenerateAndSendMemberAccessCode/GenerateAndSendMemberAccessCodeTrait.php new file mode 100644 index 0000000..3ebdc87 --- /dev/null +++ b/application/YoshiKan/Application/Command/TwoFactor/GenerateAndSendMemberAccessCode/GenerateAndSendMemberAccessCodeTrait.php @@ -0,0 +1,42 @@ +permission->CheckRole(['ROLE_DEVELOPER', 'ROLE_ADMIN', 'ROLE_CHIEF_EDITOR']); + + $command = GenerateAndSendMemberAccessCode::make( + $userId, + Settings::FROM_NAME->value, + Settings::FROM_EMAIL->value, + ); + + $handler = new GenerateAndSendMemberAccessCodeHandler( + $this->userRepository, + $this->memberAccessCodeRepository, + $this->twig, + $this->mailer, + ); + + $result = $handler->generateAndSend($command); + $this->entityManager->flush(); + + return $result; + } +} diff --git a/application/YoshiKan/Application/Command/TwoFactor/ValidateMemberAccessCode/ValidateMemberAccessCode.php b/application/YoshiKan/Application/Command/TwoFactor/ValidateMemberAccessCode/ValidateMemberAccessCode.php new file mode 100644 index 0000000..597d93f --- /dev/null +++ b/application/YoshiKan/Application/Command/TwoFactor/ValidateMemberAccessCode/ValidateMemberAccessCode.php @@ -0,0 +1,38 @@ +accessCode; + } + + public function getUserId(): int + { + return $this->userId; + } +} diff --git a/application/YoshiKan/Application/Command/TwoFactor/ValidateMemberAccessCode/ValidateMemberAccessCodeHandler.php b/application/YoshiKan/Application/Command/TwoFactor/ValidateMemberAccessCode/ValidateMemberAccessCodeHandler.php new file mode 100644 index 0000000..beb5b72 --- /dev/null +++ b/application/YoshiKan/Application/Command/TwoFactor/ValidateMemberAccessCode/ValidateMemberAccessCodeHandler.php @@ -0,0 +1,60 @@ +userRepository->findOneBy(['id' => $command->getUserId()]); + if (true === is_null($user)) { + return false; + } + + $hashedCode = hash('SHA256', (string) $command->getAccessCode().'*'.$_SERVER['APP_SECRET']); + $memberAccessCode = $this->memberAccessCodeRepository->findByCode($hashedCode); + if (true === is_null($memberAccessCode)) { + return false; + } + if ($memberAccessCode->getUser()->getId() !== $user->getId()) { + return false; + } + if (false === $memberAccessCode->isActive()) { + return false; + } + + // -- use the code + $memberAccessCode->use(); + $this->memberAccessCodeRepository->save($memberAccessCode); + + // -- invalidate all other codes for that user + $memberAccessCodes = $this->memberAccessCodeRepository->getByActiveUser($user); + foreach ($memberAccessCodes as $memberAccessCodeEntity) { + $memberAccessCodeEntity->invalidate(); + $this->memberAccessCodeRepository->save($memberAccessCodeEntity); + } + + return true; + } +} diff --git a/application/YoshiKan/Application/Command/TwoFactor/ValidateMemberAccessCode/ValidateMemberAccessCodeTrait.php b/application/YoshiKan/Application/Command/TwoFactor/ValidateMemberAccessCode/ValidateMemberAccessCodeTrait.php new file mode 100644 index 0000000..433c654 --- /dev/null +++ b/application/YoshiKan/Application/Command/TwoFactor/ValidateMemberAccessCode/ValidateMemberAccessCodeTrait.php @@ -0,0 +1,33 @@ +permission->CheckRole(['ROLE_DEVELOPER', 'ROLE_ADMIN', 'ROLE_CHIEF_EDITOR']); + + $command = ValidateMemberAccessCode::make($accessCode, $userId); + $handler = new ValidateMemberAccessCodeHandler( + $this->userRepository, + $this->memberAccessCodeRepository, + ); + + $result = $handler->validate($command); + $this->entityManager->flush(); + + return $result; + } +} diff --git a/application/YoshiKan/Application/CommandBus.php b/application/YoshiKan/Application/CommandBus.php index 9c9b5cc..6b86801 100644 --- a/application/YoshiKan/Application/CommandBus.php +++ b/application/YoshiKan/Application/CommandBus.php @@ -13,8 +13,10 @@ namespace App\YoshiKan\Application; -use App\YoshiKan\Application\Command\Member\NewMemberWebSubscription\new_member_web_subscription; -use App\YoshiKan\Application\Command\Member\NewMemberWebSubscriptionMail\new_member_web_subscription_mail; +use App\YoshiKan\Application\Command\Member\MarkSubscriptionAsPayedFromMollie\MarkSubscriptionAsPayedFromMollieTrait; +use App\YoshiKan\Application\Command\Member\NewMemberWebSubscription\NewMemberWebSubscriptionTrait; +use App\YoshiKan\Application\Command\Member\NewMemberWebSubscriptionMail\NewMemberWebSubscriptionMailTrait; +use App\YoshiKan\Application\Command\Member\SendPaymentReceivedConfirmationMail\SendPaymentReceivedConfirmationMailTrait; use App\YoshiKan\Application\Security\BasePermissionService; use App\YoshiKan\Domain\Model\Member\FederationRepository; use App\YoshiKan\Domain\Model\Member\LocationRepository; @@ -23,6 +25,7 @@ use App\YoshiKan\Domain\Model\Member\SettingsRepository; use App\YoshiKan\Domain\Model\Member\SubscriptionItemRepository; use App\YoshiKan\Domain\Model\Member\SubscriptionRepository; +use App\YoshiKan\Domain\Model\Message\MessageRepository; use App\YoshiKan\Domain\Model\Product\JudogiRepository; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Mailer\MailerInterface; @@ -35,8 +38,10 @@ class CommandBus // —— Traits // —————————————————————————————————————————————————————————————————————————— - use new_member_web_subscription; - use new_member_web_subscription_mail; + use NewMemberWebSubscriptionTrait; + use NewMemberWebSubscriptionMailTrait; + use MarkSubscriptionAsPayedFromMollieTrait; + use SendPaymentReceivedConfirmationMailTrait; // —————————————————————————————————————————————————————————————————————————— // —— Security @@ -62,7 +67,8 @@ public function __construct( protected JudogiRepository $judogiRepository, protected SettingsRepository $settingsRepository, protected MemberRepository $memberRepository, - protected FederationRepository $federationRepository + protected FederationRepository $federationRepository, + protected MessageRepository $messageRepository, ) { $this->permission = new BasePermissionService( $security->getUser(), diff --git a/application/YoshiKan/Application/MemberCommandBus.php b/application/YoshiKan/Application/MemberCommandBus.php index 8a8f0ae..745e816 100644 --- a/application/YoshiKan/Application/MemberCommandBus.php +++ b/application/YoshiKan/Application/MemberCommandBus.php @@ -13,40 +13,46 @@ namespace App\YoshiKan\Application; -use App\YoshiKan\Application\Command\Member\AddFederation\add_federation; -use App\YoshiKan\Application\Command\Member\AddGrade\add_grade; -use App\YoshiKan\Application\Command\Member\AddGroup\add_group; -use App\YoshiKan\Application\Command\Member\AddLocation\add_location; -use App\YoshiKan\Application\Command\Member\AddPeriod\add_period; -use App\YoshiKan\Application\Command\Member\ChangeFederation\change_federation; -use App\YoshiKan\Application\Command\Member\ChangeGrade\change_grade; -use App\YoshiKan\Application\Command\Member\ChangeGroup\change_group; -use App\YoshiKan\Application\Command\Member\ChangeLocation\change_location; -use App\YoshiKan\Application\Command\Member\ChangeMemberDetails\change_member_details; -use App\YoshiKan\Application\Command\Member\ChangeMemberGrade\change_member_grade; -use App\YoshiKan\Application\Command\Member\ChangeMemberRemarks\change_member_remarks; -use App\YoshiKan\Application\Command\Member\ChangePeriod\change_period; -use App\YoshiKan\Application\Command\Member\DeleteMemberImage\delete_member_image; -use App\YoshiKan\Application\Command\Member\MarkSubscriptionAsCanceled\mark_subscription_as_canceled; -use App\YoshiKan\Application\Command\Member\MarkSubscriptionAsFinished\mark_subscription_as_finished; -use App\YoshiKan\Application\Command\Member\MarkSubscriptionAsPayed\mark_subscription_as_paid; -use App\YoshiKan\Application\Command\Member\MemberExtendSubscription\member_extend_subscription; -use App\YoshiKan\Application\Command\Member\MemberExtendSubscriptionMail\member_extend_subscription_mail; -use App\YoshiKan\Application\Command\Member\NewMemberSubscription\new_member_subscription; -use App\YoshiKan\Application\Command\Member\NewMemberSubscriptionMail\new_member_subscription_mail; -use App\YoshiKan\Application\Command\Member\OrderFederation\order_federation; -use App\YoshiKan\Application\Command\Member\OrderGrade\order_grade; -use App\YoshiKan\Application\Command\Member\OrderGroup\order_group; -use App\YoshiKan\Application\Command\Member\OrderLocation\order_location; -use App\YoshiKan\Application\Command\Member\OrderPeriod\order_period; -use App\YoshiKan\Application\Command\Member\SaveSettings\save_settings; -use App\YoshiKan\Application\Command\Member\SetupConfiguration\setup_configuration; -use App\YoshiKan\Application\Command\Member\UploadMemberImage\upload_member_image; -use App\YoshiKan\Application\Command\Member\UploadProfileImage\upload_profile_image; -use App\YoshiKan\Application\Command\Message\ResendMessage\resend_message; -use App\YoshiKan\Application\Command\Product\AddJudogi\add_judogi; -use App\YoshiKan\Application\Command\Product\ChangeJudogi\change_judogi; -use App\YoshiKan\Application\Command\Product\OrderJudogi\order_judogi; +use App\YoshiKan\Application\Command\Member\AddFederation\AddFederationTrait; +use App\YoshiKan\Application\Command\Member\AddGrade\AddGradeTrait; +use App\YoshiKan\Application\Command\Member\AddGroup\AddGroupTrait; +use App\YoshiKan\Application\Command\Member\AddLocation\AddLocationTrait; +use App\YoshiKan\Application\Command\Member\AddPeriod\AddPeriodTrait; +use App\YoshiKan\Application\Command\Member\ChangeFederation\ChangeFederationTrait; +use App\YoshiKan\Application\Command\Member\ChangeGrade\ChangeGradeTrait; +use App\YoshiKan\Application\Command\Member\ChangeGroup\ChangeGroupTrait; +use App\YoshiKan\Application\Command\Member\ChangeLocation\ChangeLocationTrait; +use App\YoshiKan\Application\Command\Member\ChangeMemberDetails\ChangeMemberDetailsTrait; +use App\YoshiKan\Application\Command\Member\ChangeMemberGrade\ChangeMemberGradeTrait; +use App\YoshiKan\Application\Command\Member\ChangeMemberRemarks\ChangeMemberRemarksTrait; +use App\YoshiKan\Application\Command\Member\ChangePeriod\ChangePeriodTrait; +use App\YoshiKan\Application\Command\Member\ConfirmMemberWebSubscription\ConfirmMemberWebSubscriptionTrait; +use App\YoshiKan\Application\Command\Member\CreateMolliePaymentLink\CreateMolliePaymentLinkTrait; +use App\YoshiKan\Application\Command\Member\DeleteMemberImage\DeleteMemberImageTrait; +use App\YoshiKan\Application\Command\Member\MarkSubscriptionAsCanceled\MarkSubscriptionAsCanceledTrait; +use App\YoshiKan\Application\Command\Member\MarkSubscriptionAsFinished\MarkSubscriptionAsFinishedTrait; +use App\YoshiKan\Application\Command\Member\MarkSubscriptionAsPayed\MarkSubscriptionAsPaidTrait; +use App\YoshiKan\Application\Command\Member\MemberExtendSubscription\MemberExtendSubscriptionTrait; +use App\YoshiKan\Application\Command\Member\MemberExtendSubscriptionMail\MemberExtendSubscriptionMailTrait; +use App\YoshiKan\Application\Command\Member\NewMemberSubscription\NewMemberSubscriptionTrait; +use App\YoshiKan\Application\Command\Member\NewMemberSubscriptionMail\NewMemberSubscriptionMailTrait; +use App\YoshiKan\Application\Command\Member\NewMemberWebSubscriptionMail\NewMemberWebSubscriptionMailTrait; +use App\YoshiKan\Application\Command\Member\OrderFederation\OrderFederationTrait; +use App\YoshiKan\Application\Command\Member\OrderGrade\OrderGradeTrait; +use App\YoshiKan\Application\Command\Member\OrderGroup\OrderGroupTrait; +use App\YoshiKan\Application\Command\Member\OrderLocation\OrderLocationTrait; +use App\YoshiKan\Application\Command\Member\OrderPeriod\OrderPeriodTrait; +use App\YoshiKan\Application\Command\Member\SaveSettings\SaveSettingsTrait; +use App\YoshiKan\Application\Command\Member\SendPaymentReceivedConfirmationMail\SendPaymentReceivedConfirmationMailTrait; +use App\YoshiKan\Application\Command\Member\SetupConfiguration\SetupConfigurationTrait; +use App\YoshiKan\Application\Command\Member\UploadMemberImage\UploadMemberImageTrait; +use App\YoshiKan\Application\Command\Member\UploadProfileImage\UploadProfileImageTrait; +use App\YoshiKan\Application\Command\Message\ResendMessage\ResendMessageTrait; +use App\YoshiKan\Application\Command\Product\AddJudogi\AddJudogiTrait; +use App\YoshiKan\Application\Command\Product\ChangeJudogi\ChangeJudogiTrait; +use App\YoshiKan\Application\Command\Product\OrderJudogi\OrderJudogiTrait; +use App\YoshiKan\Application\Command\TwoFactor\GenerateAndSendMemberAccessCode\GenerateAndSendMemberAccessCodeTrait; +use App\YoshiKan\Application\Command\TwoFactor\ValidateMemberAccessCode\ValidateMemberAccessCodeTrait; use App\YoshiKan\Application\Security\BasePermissionService; use App\YoshiKan\Domain\Model\Member\FederationRepository; use App\YoshiKan\Domain\Model\Member\GradeLogRepository; @@ -61,6 +67,9 @@ use App\YoshiKan\Domain\Model\Member\SubscriptionRepository; use App\YoshiKan\Domain\Model\Message\MessageRepository; use App\YoshiKan\Domain\Model\Product\JudogiRepository; +use App\YoshiKan\Domain\Model\TwoFactor\MemberAccessCodeRepository; +use App\YoshiKan\Infrastructure\Mollie\MollieConfig; +use Bolt\Repository\UserRepository; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Security\Core\Security; @@ -69,50 +78,58 @@ class MemberCommandBus { // -- configuration -------------------------------------------------------- - use add_grade; - use change_grade; - use order_grade; - use add_group; - use change_group; - use order_group; - use add_period; - use change_period; - use order_period; - use add_location; - use change_location; - use order_location; - use save_settings; - use setup_configuration; - use add_federation; - use change_federation; - use order_federation; + use AddGradeTrait; + use ChangeGradeTrait; + use OrderGradeTrait; + use AddGroupTrait; + use ChangeGroupTrait; + use OrderGroupTrait; + use AddPeriodTrait; + use ChangePeriodTrait; + use OrderPeriodTrait; + use AddLocationTrait; + use ChangeLocationTrait; + use OrderLocationTrait; + use SaveSettingsTrait; + use SetupConfigurationTrait; + use AddFederationTrait; + use ChangeFederationTrait; + use OrderFederationTrait; // -- members -------------------------------------------------------------- - use change_member_details; - use change_member_grade; - use change_member_remarks; + use ChangeMemberDetailsTrait; + use ChangeMemberGradeTrait; + use ChangeMemberRemarksTrait; // -- subscription ---------------------------------------------------------- - use member_extend_subscription; - use member_extend_subscription_mail; - use new_member_subscription; - use new_member_subscription_mail; - use mark_subscription_as_paid; - use mark_subscription_as_finished; - use mark_subscription_as_canceled; + use MemberExtendSubscriptionTrait; + use MemberExtendSubscriptionMailTrait; + use NewMemberSubscriptionTrait; + use NewMemberWebSubscriptionMailTrait; + use MarkSubscriptionAsPaidTrait; + use MarkSubscriptionAsFinishedTrait; + use MarkSubscriptionAsCanceledTrait; + use ConfirmMemberWebSubscriptionTrait; + use CreateMolliePaymentLinkTrait; + use SendPaymentReceivedConfirmationMailTrait; + use NewMemberSubscriptionMailTrait; // -- member images --------------------------------------------------------- - use upload_member_image; - use upload_profile_image; - use delete_member_image; + use UploadProfileImageTrait; + use UploadMemberImageTrait; + use DeleteMemberImageTrait; // -- message -------------------------------------------------------------- - use resend_message; + use ResendMessageTrait; // -- product -------------------------------------------------------------- - use add_judogi; - use change_judogi; - use order_judogi; + use AddJudogiTrait; + use ChangeJudogiTrait; + use OrderJudogiTrait; + + // -- two factor ----------------------------------------------------------- + use GenerateAndSendMemberAccessCodeTrait; + use ValidateMemberAccessCodeTrait; // -- permission service ---------------------------------------------------- protected BasePermissionService $permission; @@ -141,6 +158,9 @@ public function __construct( protected FederationRepository $federationRepository, protected MessageRepository $messageRepository, protected JudogiRepository $judogiRepository, + protected UserRepository $userRepository, + protected MemberAccessCodeRepository $memberAccessCodeRepository, + protected MollieConfig $mollieConfig, ) { $this->permission = new BasePermissionService( $security->getUser(), diff --git a/application/YoshiKan/Application/MemberQueryBus.php b/application/YoshiKan/Application/MemberQueryBus.php index 44f2c65..9e1bc50 100644 --- a/application/YoshiKan/Application/MemberQueryBus.php +++ b/application/YoshiKan/Application/MemberQueryBus.php @@ -13,13 +13,14 @@ namespace App\YoshiKan\Application; -use App\YoshiKan\Application\Query\Member\download_due_payments; -use App\YoshiKan\Application\Query\Member\get_configuration; -use App\YoshiKan\Application\Query\Member\get_member; -use App\YoshiKan\Application\Query\Member\get_member_image; -use App\YoshiKan\Application\Query\Member\get_subscription; -use App\YoshiKan\Application\Query\Message\get_message; -use App\YoshiKan\Application\Query\Reporting\get_reporting; +use App\YoshiKan\Application\Query\Member\DownloadDuePaymentsTrait; +use App\YoshiKan\Application\Query\Member\ExportSubscriptionsTrait; +use App\YoshiKan\Application\Query\Member\GetConfigurationTrait; +use App\YoshiKan\Application\Query\Member\GetMemberImageTrait; +use App\YoshiKan\Application\Query\Member\GetMemberTrait; +use App\YoshiKan\Application\Query\Member\GetSubscriptionTrait; +use App\YoshiKan\Application\Query\Message\GetMessageTrait; +use App\YoshiKan\Application\Query\Reporting\GetReportingTrait; use App\YoshiKan\Application\Security\BasePermissionService; use App\YoshiKan\Domain\Model\Member\FederationRepository; use App\YoshiKan\Domain\Model\Member\GradeRepository; @@ -42,13 +43,14 @@ class MemberQueryBus // —— Traits // —————————————————————————————————————————————————————————————————————————— - use get_configuration; - use get_member; - use get_member_image; - use get_message; - use get_subscription; - use download_due_payments; - use get_reporting; + use GetConfigurationTrait; + use GetMemberTrait; + use GetMemberImageTrait; + use GetMessageTrait; + use GetSubscriptionTrait; + use DownloadDuePaymentsTrait; + use GetReportingTrait; + use ExportSubscriptionsTrait; // —————————————————————————————————————————————————————————————————————————— // —— Security diff --git a/application/YoshiKan/Application/Query/Member/download_due_payments.php b/application/YoshiKan/Application/Query/Member/DownloadDuePaymentsTrait.php similarity index 96% rename from application/YoshiKan/Application/Query/Member/download_due_payments.php rename to application/YoshiKan/Application/Query/Member/DownloadDuePaymentsTrait.php index e53705b..3575193 100644 --- a/application/YoshiKan/Application/Query/Member/download_due_payments.php +++ b/application/YoshiKan/Application/Query/Member/DownloadDuePaymentsTrait.php @@ -13,7 +13,7 @@ namespace App\YoshiKan\Application\Query\Member; -trait download_due_payments +trait DownloadDuePaymentsTrait { public function downloadDuePayments(): bool { diff --git a/application/YoshiKan/Application/Query/Member/ExportSubscriptions.php b/application/YoshiKan/Application/Query/Member/ExportSubscriptions.php index 3c624e4..f417320 100644 --- a/application/YoshiKan/Application/Query/Member/ExportSubscriptions.php +++ b/application/YoshiKan/Application/Query/Member/ExportSubscriptions.php @@ -13,15 +13,24 @@ namespace App\YoshiKan\Application\Query\Member; +use App\YoshiKan\Domain\Model\Member\LocationRepository; +use App\YoshiKan\Domain\Model\Member\MemberRepository; use App\YoshiKan\Domain\Model\Member\PeriodRepository; use App\YoshiKan\Domain\Model\Member\SubscriptionRepository; +use Dompdf\Dompdf; +use Dompdf\Options; use PhpOffice\PhpSpreadsheet\Spreadsheet; +use Twig\Environment; class ExportSubscriptions { public function __construct( protected SubscriptionRepository $subscriptionRepository, - protected PeriodRepository $periodRepository + protected PeriodRepository $periodRepository, + protected MemberRepository $memberRepository, + protected LocationRepository $locationRepository, + protected Environment $twig, + protected string $uploadFolder, ) { } @@ -50,7 +59,7 @@ public function exportSubscriptions(array $listIds): Spreadsheet ++$rowCounter; foreach ($subscriptions as $subscription) { $sheet->setCellValue([1, $rowCounter], 'YKS-'.$subscription->getId()); - $sheet->setCellValue([2, $rowCounter], strtoupper($subscription->getLastname())); + $sheet->setCellValue([2, $rowCounter], mb_strtoupper($subscription->getLastname())); $sheet->setCellValue([3, $rowCounter], $subscription->getFirstname()); $sheet->setCellValue([4, $rowCounter], $subscription->getDateOfBirth()->format('d/m/Y')); $sheet->setCellValue([5, $rowCounter], $subscription->getGenderAsString()); @@ -79,4 +88,87 @@ public function exportSubscriptions(array $listIds): Spreadsheet return $spreadsheet; } + + public function exportMembersForLocation(int $locationId): Spreadsheet + { + $location = $this->locationRepository->getById($locationId); + $locationCode = $location->getCode(); + $members = $this->memberRepository->getActiveMembersByLocation($location); + + $spreadsheet = new Spreadsheet(); + $sheet = $spreadsheet->getActiveSheet(); + $sheet->setTitle($location->getName()); + + // -- header ---------------------------------------------------------------- + $rowCounter = 1; + $sheet->setCellValue([1, $rowCounter], 'Ref.'); + $sheet->setCellValue([2, $rowCounter], 'Naam'); + $sheet->setCellValue([3, $rowCounter], 'Voornaam'); + $sheet->setCellValue([4, $rowCounter], 'Geslacht'); + $sheet->setCellValue([5, $rowCounter], 'Geboortedatum'); + $sheet->setCellValue([6, $rowCounter], 'Leeftijd'); + $sheet->setCellValue([7, $rowCounter], 'Adres'); + $sheet->setCellValue([8, $rowCounter], 'Postcode'); + $sheet->setCellValue([9, $rowCounter], 'Gemeente'); + + // -- data ----------------------------------------------------------------- + ++$rowCounter; + foreach ($members as $member) { + $now = new \DateTimeImmutable(); + $age = $now->diff($member->getDateOfBirth())->y; + + $sheet->setCellValue([1, $rowCounter], 'YK-'.$member->getId()); + $sheet->setCellValue([2, $rowCounter], $member->getLastname()); + $sheet->setCellValue([3, $rowCounter], $member->getFirstname()); + $sheet->setCellValue([4, $rowCounter], $member->getGenderAsString()); + $sheet->setCellValue([5, $rowCounter], $member->getDateOfBirth()->format('d/m/Y')); + $sheet->setCellValue([6, $rowCounter], $age); + $sheet->setCellValue([7, $rowCounter], $member->getAddressStreet().' '.$member->getAddressNumber().' '.$member->getAddressBox()); + $sheet->setCellValue([8, $rowCounter], $member->getAddressZip()); + $sheet->setCellValue([9, $rowCounter], $member->getAddressCity()); + ++$rowCounter; + } + + // -- first row bold ------------------------------------------------------ + $highestColumn = $sheet->getHighestColumn(); + $sheet->getStyle('A1:'.$highestColumn.'1')->getFont()->setBold(true); + $sheet->setSelectedCell('A1'); + + // -- autosize the columns ------------------------------------------------ + for ($i = 'A'; $i != $sheet->getHighestColumn(); ++$i) { + $sheet->getColumnDimension($i)->setAutoSize(true); + } + $sheet->getColumnDimension($sheet->getHighestColumn())->setAutoSize(true); + + return $spreadsheet; + } + + public function renderMembersForLocation(int $locationId): bool + { + $location = $this->locationRepository->getById($locationId); + $locationCode = $location->getCode(); + $members = $this->memberRepository->getActiveMembersByLocation($location); + + $generatedOn = new \DateTimeImmutable(); + $pdfHtml = $this->twig->render('pdf/list_member.html.twig', [ + 'members' => $members, + 'generatedOn' => $generatedOn, + 'locationName' => $location->getName(), + ]); + + $options = new Options(); + $options->set('isRemoteEnabled', true); + $options->set('isPhpEnabled', true); + $dompdf = new Dompdf($options); + $dompdf->loadHtml($pdfHtml); + $dompdf->setPaper('A4', 'landscape'); + $dompdf->render(); + + $fileName = $generatedOn->format('YmdHis').'_YoshiKan_Leden_'.$locationCode.'.pdf'; + $dompdf->stream($fileName, ['Attachment' => false]); + + exit; + + return true; + } } diff --git a/application/YoshiKan/Application/Query/Member/ExportSubscriptionsTrait.php b/application/YoshiKan/Application/Query/Member/ExportSubscriptionsTrait.php new file mode 100644 index 0000000..01d4246 --- /dev/null +++ b/application/YoshiKan/Application/Query/Member/ExportSubscriptionsTrait.php @@ -0,0 +1,51 @@ +permission->CheckRole(['ROLE_DEVELOPER', 'ROLE_ADMIN', 'ROLE_CHIEF_EDITOR']); + + $exporter = new ExportSubscriptions( + subscriptionRepository: $this->subscriptionRepository, + periodRepository: $this->periodRepository, + memberRepository: $this->memberRepository, + locationRepository: $this->locationRepository, + twig: $this->twig, + uploadFolder: $this->uploadFolder, + ); + + return $exporter->renderMembersForLocation($locationId); + } + + public function downloadMemberOverviewForLocationAsExcel(int $locationId): Spreadsheet + { + $this->permission->CheckRole(['ROLE_DEVELOPER', 'ROLE_ADMIN', 'ROLE_CHIEF_EDITOR']); + + $exporter = new ExportSubscriptions( + subscriptionRepository: $this->subscriptionRepository, + periodRepository: $this->periodRepository, + memberRepository: $this->memberRepository, + locationRepository: $this->locationRepository, + twig: $this->twig, + uploadFolder: $this->uploadFolder, + ); + + return $exporter->exportMembersForLocation($locationId); + } +} diff --git a/application/YoshiKan/Application/Query/Member/get_configuration.php b/application/YoshiKan/Application/Query/Member/GetConfigurationTrait.php similarity index 98% rename from application/YoshiKan/Application/Query/Member/get_configuration.php rename to application/YoshiKan/Application/Query/Member/GetConfigurationTrait.php index 745afe6..f88434f 100644 --- a/application/YoshiKan/Application/Query/Member/get_configuration.php +++ b/application/YoshiKan/Application/Query/Member/GetConfigurationTrait.php @@ -16,7 +16,7 @@ use App\YoshiKan\Application\Query\Member\Readmodel\ConfigurationReadModel; use App\YoshiKan\Application\Query\Member\Readmodel\WebConfigurationReadModel; -trait get_configuration +trait GetConfigurationTrait { public function getWebConfiguration(): WebConfigurationReadModel { diff --git a/application/YoshiKan/Application/Query/Member/GetMemberImage.php b/application/YoshiKan/Application/Query/Member/GetMemberImage.php index 514547e..bf4d726 100644 --- a/application/YoshiKan/Application/Query/Member/GetMemberImage.php +++ b/application/YoshiKan/Application/Query/Member/GetMemberImage.php @@ -1,5 +1,16 @@ permission->CheckRole(['ROLE_DEVELOPER', 'ROLE_ADMIN', 'ROLE_CHIEF_EDITOR']); - $exporter = new ExportSubscriptions($this->subscriptionRepository, $this->periodRepository); + $exporter = new ExportSubscriptions( + subscriptionRepository: $this->subscriptionRepository, + periodRepository: $this->periodRepository, + memberRepository: $this->memberRepository, + locationRepository: $this->locationRepository, + twig: $this->twig, + uploadFolder: $this->uploadFolder, + ); return $exporter->exportSubscriptions($listIds); } diff --git a/application/YoshiKan/Application/Query/Member/PrintSubscriptions.php b/application/YoshiKan/Application/Query/Member/PrintSubscriptions.php index 360e8e3..9a0d303 100644 --- a/application/YoshiKan/Application/Query/Member/PrintSubscriptions.php +++ b/application/YoshiKan/Application/Query/Member/PrintSubscriptions.php @@ -1,5 +1,16 @@ collection[] = $readModel; } diff --git a/application/YoshiKan/Application/Query/Member/Readmodel/GradeLogReadModelCollection.php b/application/YoshiKan/Application/Query/Member/Readmodel/GradeLogReadModelCollection.php index 1b90985..724fbf3 100644 --- a/application/YoshiKan/Application/Query/Member/Readmodel/GradeLogReadModelCollection.php +++ b/application/YoshiKan/Application/Query/Member/Readmodel/GradeLogReadModelCollection.php @@ -34,7 +34,7 @@ public function jsonSerialize(): \stdClass return $json; } - public function addItem(GradeLogReadModel $readModel) + public function addItem(GradeLogReadModel $readModel): void { $this->collection[] = $readModel; } diff --git a/application/YoshiKan/Application/Query/Member/Readmodel/GradeReadModelCollection.php b/application/YoshiKan/Application/Query/Member/Readmodel/GradeReadModelCollection.php index dc1440a..361a91a 100644 --- a/application/YoshiKan/Application/Query/Member/Readmodel/GradeReadModelCollection.php +++ b/application/YoshiKan/Application/Query/Member/Readmodel/GradeReadModelCollection.php @@ -35,7 +35,7 @@ public function jsonSerialize(): \stdClass return $json; } - public function addItem(GradeReadModel $readModel) + public function addItem(GradeReadModel $readModel): void { $this->collection[] = $readModel; } diff --git a/application/YoshiKan/Application/Query/Member/Readmodel/GroupReadModelCollection.php b/application/YoshiKan/Application/Query/Member/Readmodel/GroupReadModelCollection.php index 42b250c..4d50131 100644 --- a/application/YoshiKan/Application/Query/Member/Readmodel/GroupReadModelCollection.php +++ b/application/YoshiKan/Application/Query/Member/Readmodel/GroupReadModelCollection.php @@ -35,7 +35,7 @@ public function jsonSerialize(): \stdClass return $json; } - public function addItem(GroupReadModel $readModel) + public function addItem(GroupReadModel $readModel): void { $this->collection[] = $readModel; } diff --git a/application/YoshiKan/Application/Query/Member/Readmodel/LocationReadModelCollection.php b/application/YoshiKan/Application/Query/Member/Readmodel/LocationReadModelCollection.php index c82e09f..9e4c2f5 100644 --- a/application/YoshiKan/Application/Query/Member/Readmodel/LocationReadModelCollection.php +++ b/application/YoshiKan/Application/Query/Member/Readmodel/LocationReadModelCollection.php @@ -35,7 +35,7 @@ public function jsonSerialize(): \stdClass return $json; } - public function addItem(LocationReadModel $readModel) + public function addItem(LocationReadModel $readModel): void { $this->collection[] = $readModel; } diff --git a/application/YoshiKan/Application/Query/Member/Readmodel/MemberImageReadModel.php b/application/YoshiKan/Application/Query/Member/Readmodel/MemberImageReadModel.php index c18c954..f446e9a 100644 --- a/application/YoshiKan/Application/Query/Member/Readmodel/MemberImageReadModel.php +++ b/application/YoshiKan/Application/Query/Member/Readmodel/MemberImageReadModel.php @@ -1,5 +1,14 @@ collection[] = $readModel; } diff --git a/application/YoshiKan/Application/Query/Member/Readmodel/MemberReadModel.php b/application/YoshiKan/Application/Query/Member/Readmodel/MemberReadModel.php index dc885b2..86bda44 100644 --- a/application/YoshiKan/Application/Query/Member/Readmodel/MemberReadModel.php +++ b/application/YoshiKan/Application/Query/Member/Readmodel/MemberReadModel.php @@ -105,11 +105,15 @@ public function jsonSerialize(): \stdClass if (!is_null($this->getRemarks())) { $json->remarks = $this->getRemarks(); } - if (!is_null($this->getGradeLogs())) { - $json->gradeLogs = $this->getGradeLogs()->getCollection(); + + $gradeLogs = $this->getGradeLogs(); + if (!is_null($gradeLogs)) { + $json->gradeLogs = $gradeLogs->getCollection(); } - if (!is_null($this->getImages())) { - $json->images = $this->getImages()->getCollection(); + + $images = $this->getImages(); + if (!is_null($images)) { + $json->images = $images->getCollection(); } return $json; diff --git a/application/YoshiKan/Application/Query/Member/Readmodel/MemberReadModelCollection.php b/application/YoshiKan/Application/Query/Member/Readmodel/MemberReadModelCollection.php index c8385fb..836ec07 100644 --- a/application/YoshiKan/Application/Query/Member/Readmodel/MemberReadModelCollection.php +++ b/application/YoshiKan/Application/Query/Member/Readmodel/MemberReadModelCollection.php @@ -35,7 +35,7 @@ public function jsonSerialize(): \stdClass return $json; } - public function addItem(MemberReadModel $readModel) + public function addItem(MemberReadModel $readModel): void { $this->collection[] = $readModel; } diff --git a/application/YoshiKan/Application/Query/Member/Readmodel/MemberSuggestModel.php b/application/YoshiKan/Application/Query/Member/Readmodel/MemberSuggestModel.php index f8fc9cd..2bf0180 100644 --- a/application/YoshiKan/Application/Query/Member/Readmodel/MemberSuggestModel.php +++ b/application/YoshiKan/Application/Query/Member/Readmodel/MemberSuggestModel.php @@ -1,5 +1,16 @@ collection[] = $readModel; } diff --git a/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionItemReadModel.php b/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionItemReadModel.php index bc5aeb5..3dfec1a 100644 --- a/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionItemReadModel.php +++ b/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionItemReadModel.php @@ -1,5 +1,14 @@ collection[] = $readModel; } diff --git a/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionReadModel.php b/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionReadModel.php index 61bc307..eda23d9 100644 --- a/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionReadModel.php +++ b/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionReadModel.php @@ -1,5 +1,14 @@ getMember()) { - $memberId = $model->getMember()->getId(); + $member = $model->getMember(); + if (false === is_null($member)) { + $memberId = $member->getId(); } $messageId = null; diff --git a/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionReadModelCollection.php b/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionReadModelCollection.php index 4ab567f..c600492 100644 --- a/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionReadModelCollection.php +++ b/application/YoshiKan/Application/Query/Member/Readmodel/SubscriptionReadModelCollection.php @@ -1,5 +1,14 @@ memberRepository->getById($memberId); $messages = $this->messageRepository->getByMember($member); - $messageCollection = new MessageReadmodelCollection([]); + $messageCollection = new MessageReadModelCollection([]); foreach ($messages as $message) { - $messageCollection->addItem(MessageReadmodel::hydrateFromModel($message)); + $messageCollection->addItem(MessageReadModel::hydrateFromModel($message)); } return $messageCollection; diff --git a/application/YoshiKan/Application/Query/Message/get_message.php b/application/YoshiKan/Application/Query/Message/GetMessageTrait.php similarity index 98% rename from application/YoshiKan/Application/Query/Message/get_message.php rename to application/YoshiKan/Application/Query/Message/GetMessageTrait.php index b79f0f0..e19957d 100644 --- a/application/YoshiKan/Application/Query/Message/get_message.php +++ b/application/YoshiKan/Application/Query/Message/GetMessageTrait.php @@ -16,7 +16,7 @@ use App\YoshiKan\Application\Query\Message\Readmodel\MessageReadModel; use App\YoshiKan\Application\Query\Message\Readmodel\MessageReadModelCollection; -trait get_message +trait GetMessageTrait { /** * @throws \Exception diff --git a/application/YoshiKan/Application/Query/Product/JudogiReadModelCollection.php b/application/YoshiKan/Application/Query/Product/JudogiReadModelCollection.php index 8521300..420e578 100644 --- a/application/YoshiKan/Application/Query/Product/JudogiReadModelCollection.php +++ b/application/YoshiKan/Application/Query/Product/JudogiReadModelCollection.php @@ -36,7 +36,7 @@ public function jsonSerialize(): \stdClass return $json; } - public function addItem(JudogiReadModel $readModel) + public function addItem(JudogiReadModel $readModel): void { $this->collection[] = $readModel; } diff --git a/application/YoshiKan/Application/Query/Reporting/GetReporting.php b/application/YoshiKan/Application/Query/Reporting/GetReporting.php index e56d2fa..bf79f7d 100644 --- a/application/YoshiKan/Application/Query/Reporting/GetReporting.php +++ b/application/YoshiKan/Application/Query/Reporting/GetReporting.php @@ -1,5 +1,16 @@ locationReports[] = $locationReport; } - public function setNumbers($numberOfWebSubscriptions, $numberOfDuePayments): void + /** + * @psalm-param int<0, max> $numberOfWebSubscriptions + * @psalm-param int<0, max> $numberOfDuePayments + */ + public function setNumbers(int $numberOfWebSubscriptions, int $numberOfDuePayments): void { $this->numberOfWebSubscriptions = $numberOfWebSubscriptions; $this->numberOfDuePayments = $numberOfDuePayments; diff --git a/application/YoshiKan/Application/QueryBus.php b/application/YoshiKan/Application/QueryBus.php index 992da46..777bc0f 100644 --- a/application/YoshiKan/Application/QueryBus.php +++ b/application/YoshiKan/Application/QueryBus.php @@ -13,8 +13,8 @@ namespace App\YoshiKan\Application; -use App\YoshiKan\Application\Query\Member\get_configuration; -use App\YoshiKan\Application\Query\Member\get_member; +use App\YoshiKan\Application\Query\Member\GetConfigurationTrait; +use App\YoshiKan\Application\Query\Member\GetMemberTrait; use App\YoshiKan\Application\Security\BasePermissionService; use App\YoshiKan\Domain\Model\Member\FederationRepository; use App\YoshiKan\Domain\Model\Member\GradeRepository; @@ -31,8 +31,8 @@ class QueryBus { - use get_configuration; - use get_member; + use GetConfigurationTrait; + use GetMemberTrait; protected BasePermissionService $permission; private const ADMIN = 1; diff --git a/application/YoshiKan/Application/Settings.php b/application/YoshiKan/Application/Settings.php index ffa2042..aedf5a4 100644 --- a/application/YoshiKan/Application/Settings.php +++ b/application/YoshiKan/Application/Settings.php @@ -1,10 +1,21 @@ code = $code; $this->name = $name; $this->yearlySubscriptionFee = $yearlySubscriptionFee; + $this->publicLabel = $publicLabel; } // ————————————————————————————————————————————————————————————————————————— @@ -121,10 +122,6 @@ public function change( $this->publicLabel = trim($publicLabel); } - // ————————————————————————————————————————————————————————————————————————— - // Other Setters - // ————————————————————————————————————————————————————————————————————————— - // ————————————————————————————————————————————————————————————————————————— // Getters // ————————————————————————————————————————————————————————————————————————— @@ -148,8 +145,4 @@ public function getYearlySubscriptionFee(): ?int { return $this->yearlySubscriptionFee; } - - // ————————————————————————————————————————————————————————————————————————— - // Other model getters - // ————————————————————————————————————————————————————————————————————————— } diff --git a/application/YoshiKan/Domain/Model/Member/Member.php b/application/YoshiKan/Domain/Model/Member/Member.php index b6f7b18..c2ae4fe 100644 --- a/application/YoshiKan/Domain/Model/Member/Member.php +++ b/application/YoshiKan/Domain/Model/Member/Member.php @@ -350,6 +350,26 @@ public function setProfileImage(string $profileImage): void $this->profileImage = $profileImage; } + public function activate(): void + { + $this->status = MemberStatus::ACTIVE->value; + } + + public function deactivate(): void + { + $this->status = MemberStatus::NON_ACTIVE->value; + } + + public function syncFromSubscription( + Federation $federation, + int $numberOfTraining, + bool $isHalfYearSubscription, + ): void { + $this->federation = $federation; + $this->numberOfTraining = $numberOfTraining; + $this->memberSubscriptionIsHalfYear = $isHalfYearSubscription; + } + // ————————————————————————————————————————————————————————————————————————— // Getters // ————————————————————————————————————————————————————————————————————————— @@ -486,12 +506,12 @@ public function getProfileImage(): string public function getGradeLogs(): array { - return $this->gradeLogs->getValues(); + return null !== $this->gradeLogs ? $this->gradeLogs->getValues() : []; } public function getMemberImages(): array { - return $this->memberImages->getValues(); + return null !== $this->memberImages ? $this->memberImages->getValues() : []; } public function getFederation(): Federation @@ -526,6 +546,6 @@ public function getContactPhone(): string public function getMessages(): array { - return $this->messages->getValues(); + return null !== $this->messages ? $this->messages->getValues() : []; } } diff --git a/application/YoshiKan/Domain/Model/Member/MemberRepository.php b/application/YoshiKan/Domain/Model/Member/MemberRepository.php index a7a6861..d28a2fe 100644 --- a/application/YoshiKan/Domain/Model/Member/MemberRepository.php +++ b/application/YoshiKan/Domain/Model/Member/MemberRepository.php @@ -29,8 +29,14 @@ public function getByUuid(Uuid $uuid): Member; public function findByNameAndDateOfBirth(string $firstname, string $lastname, \DateTimeImmutable $dateOfBirth): ?Member; + /** + * @return Member[] + */ public function findByNameOrDateOfBirth(string $firstname, string $lastname, \DateTimeImmutable $dateOfBirth): array; + /** + * @return Member[] + */ public function search( string $keyword = '', int $yearOfBirth = 0, @@ -38,9 +44,21 @@ public function search( Grade $grade = null, int $minYearOfBirth = 0, int $maxYearOfBirth = 0, + bool $isActive = null, ): array; + /** + * @return Member[] + */ public function listActiveMembers(): array; + /** + * @return Member[] + */ public function getActiveMembersByFederationAndLocation(Federation $federation, Location $location): array; + + /** + * @return Member[] + */ + public function getActiveMembersByLocation(Location $location): array; } diff --git a/application/YoshiKan/Domain/Model/Member/Subscription.php b/application/YoshiKan/Domain/Model/Member/Subscription.php index 5ee3a7e..4a34331 100644 --- a/application/YoshiKan/Domain/Model/Member/Subscription.php +++ b/application/YoshiKan/Domain/Model/Member/Subscription.php @@ -150,7 +150,21 @@ class Subscription #[ORM\Column(length: 191, nullable: true)] private ?string $addressCity = null; - // ------------------------------------------------------------ associations + // -- payment fields -------------------------------------------------------- + + #[ORM\Column(length: 191)] + private string $paymentLink = ''; + + #[ORM\Column(length: 191)] + private string $paymentLinkId = ''; + + #[ORM\Column(length: 191)] + private string $paymentId = ''; + + #[ORM\Column(length: 36)] + private string $paymentType = SubscriptionPaymentType::TRANSFER->value; + + // -- associations ---------------------------------------------------------- #[ORM\ManyToOne(targetEntity: "App\YoshiKan\Domain\Model\Member\Member", fetch: 'EXTRA_LAZY', inversedBy: 'subscriptions')] #[ORM\JoinColumn(nullable: true)] private ?Member $member; @@ -366,7 +380,7 @@ public function setNewMemberFields( string $addressBox, string $addressZip, string $addressCity - ) { + ): void { $this->nationalRegisterNumber = $nationalRegisterNumber; $this->addressStreet = $addressStreet; $this->addressNumber = $addressNumber; @@ -375,6 +389,68 @@ public function setNewMemberFields( $this->addressCity = $addressCity; } + public function fullChange( + string $contactFirstname, + string $contactLastname, + string $contactEmail, + string $contactPhone, + string $firstname, + string $lastname, + \DateTimeImmutable $dateOfBirth, + Gender $gender, + SubscriptionType $type, + int $numberOfTraining, + bool $isExtraTraining, + bool $isNewMember, + bool $isReductionFamily, + bool $isJudogiBelt, + string $remarks, + Location $location, + Federation $federation, + \DateTimeImmutable $memberSubscriptionStart, + \DateTimeImmutable $memberSubscriptionEnd, + float $memberSubscriptionTotal, + bool $memberSubscriptionIsPartSubscription, + bool $memberSubscriptionIsHalfYear, + bool $memberSubscriptionIsPayed, + \DateTimeImmutable $licenseStart, + \DateTimeImmutable $licenseEnd, + float $licenseTotal, + bool $licenseIsPartSubscription, + bool $licenseIsPayed, + ): void { + $this->contactFirstname = $contactFirstname; + $this->contactLastname = $contactLastname; + $this->contactEmail = $contactEmail; + $this->contactPhone = $contactPhone; + $this->firstname = $firstname; + $this->lastname = $lastname; + $this->dateOfBirth = $dateOfBirth; + $this->gender = $gender->value; + $this->type = $type->value; + $this->numberOfTraining = $numberOfTraining; + $this->isExtraTraining = $isExtraTraining; + $this->isNewMember = $isNewMember; + $this->isReductionFamily = $isReductionFamily; + $this->isJudogiBelt = $isJudogiBelt; + $this->remarks = $remarks; + $this->location = $location; + $this->federation = $federation; + $this->memberSubscriptionStart = $memberSubscriptionStart; + $this->memberSubscriptionEnd = $memberSubscriptionEnd; + $this->memberSubscriptionTotal = $memberSubscriptionTotal; + $this->memberSubscriptionIsPartSubscription = $memberSubscriptionIsPartSubscription; + $this->memberSubscriptionIsHalfYear = $memberSubscriptionIsHalfYear; + $this->memberSubscriptionIsPayed = $memberSubscriptionIsPayed; + $this->licenseStart = $licenseStart; + $this->licenseEnd = $licenseEnd; + $this->licenseTotal = $licenseTotal; + $this->licenseIsPartSubscription = $licenseIsPartSubscription; + $this->licenseIsPayed = $licenseIsPayed; + $this->total = ceil($this->memberSubscriptionTotal + $this->licenseTotal); + $this->items = new ArrayCollection(); + } + public function changeStatus(SubscriptionStatus $status): void { $this->status = $status->value; @@ -395,6 +471,35 @@ public function flagSubscriptionIsPrinted(): void $this->isPrinted = true; } + public function setTotal(float $total): void + { + $this->total = $total; + } + + public function updateSettings(array $settings): void + { + $this->settings = $settings; + } + + // ————————————————————————————————————————————————————————————————————————— + // Payment information setters + // ————————————————————————————————————————————————————————————————————————— + + public function setMolliePaymentInfo( + string $paymentId, + string $paymentLink, + string $paymentLinkId, + ): void { + $this->paymentId = $paymentId; + $this->paymentLink = $paymentLink; + $this->paymentLinkId = $paymentLinkId; + } + + public function setPaymentTypeInfo(SubscriptionPaymentType $type): void + { + $this->paymentType = $type->value; + } + // ————————————————————————————————————————————————————————————————————————— // Getters // ————————————————————————————————————————————————————————————————————————— @@ -630,7 +735,7 @@ public function isLicenseIsPayed(): bool public function getMessages(): array { - return $this->messages->getValues(); + return null !== $this->messages ? $this->messages->getValues() : []; } /** @@ -641,6 +746,30 @@ public function getItems(): array return $this->items->getValues(); } + // ————————————————————————————————————————————————————————————————————————— + // Payment information fields + // ————————————————————————————————————————————————————————————————————————— + + public function getPaymentLink(): string + { + return $this->paymentLink; + } + + public function getPaymentLinkId(): string + { + return $this->paymentLinkId; + } + + public function getPaymentId(): string + { + return $this->paymentId; + } + + public function getPaymentType(): string + { + return $this->paymentType; + } + // ————————————————————————————————————————————————————————————————————————— // Subscription fee calculation function // ————————————————————————————————————————————————————————————————————————— @@ -693,7 +822,12 @@ public function calculate(): float } if ($this->licenseIsPartSubscription()) { - $this->licenseTotal = $this->federation->getYearlySubscriptionFee(); + $federationFee = $this->federation->getYearlySubscriptionFee(); + if (false === is_null($federationFee)) { + $this->licenseTotal = $federationFee; + } else { + $this->licenseTotal = 0; + } } else { $this->licenseTotal = 0; } diff --git a/application/YoshiKan/Domain/Model/Member/SubscriptionPaymentType.php b/application/YoshiKan/Domain/Model/Member/SubscriptionPaymentType.php new file mode 100644 index 0000000..bda7cda --- /dev/null +++ b/application/YoshiKan/Domain/Model/Member/SubscriptionPaymentType.php @@ -0,0 +1,21 @@ +subscriptions->getValues(); + return null !== $this->subscriptions ? $this->subscriptions->getValues() : []; } } diff --git a/application/YoshiKan/Domain/Model/TwoFactor/MemberAccessCode.php b/application/YoshiKan/Domain/Model/TwoFactor/MemberAccessCode.php new file mode 100644 index 0000000..5d31010 --- /dev/null +++ b/application/YoshiKan/Domain/Model/TwoFactor/MemberAccessCode.php @@ -0,0 +1,114 @@ + 0])] + private bool $isActive = false; + + #[ORM\Column(nullable: true)] + private ?\DateTimeImmutable $usedAt = null; + + #[ORM\ManyToOne(targetEntity: "Bolt\Entity\User", fetch: 'EXTRA_LAZY')] + #[ORM\JoinColumn(nullable: false)] + private User $user; + + // ————————————————————————————————————————————————————————————————————————— + // Constructor + // ————————————————————————————————————————————————————————————————————————— + + private function __construct( + User $user, + Uuid $uuid, + string $code, + ) { + $this->user = $user; + $this->uuid = $uuid; + $this->code = $code; + $this->isActive = true; + } + + public function use(): void + { + $this->isActive = false; + $this->usedAt = new \DateTimeImmutable(); + } + + public function invalidate(): void + { + $this->isActive = false; + } + + // ————————————————————————————————————————————————————————————————————————— + // Maker + // ————————————————————————————————————————————————————————————————————————— + + public static function make( + User $user, + Uuid $uuid, + string $code, + ): self { + return new self( + user: $user, + uuid: $uuid, + code: $code, + ); + } + + // ————————————————————————————————————————————————————————————————————————— + // Getters + // ————————————————————————————————————————————————————————————————————————— + + public function getCode(): string + { + return $this->code; + } + + public function isActive(): bool + { + return $this->isActive; + } + + public function getUsedAt(): ?\DateTimeImmutable + { + return $this->usedAt; + } + + public function getUser(): User + { + return $this->user; + } +} diff --git a/application/YoshiKan/Domain/Model/TwoFactor/MemberAccessCodeRepository.php b/application/YoshiKan/Domain/Model/TwoFactor/MemberAccessCodeRepository.php new file mode 100644 index 0000000..f37e21d --- /dev/null +++ b/application/YoshiKan/Domain/Model/TwoFactor/MemberAccessCodeRepository.php @@ -0,0 +1,37 @@ +createQueryBuilder('t') @@ -122,6 +125,9 @@ public function findByNameOrDateOfBirth(string $firstname, string $lastname, \Da return $q->getQuery()->getResult(); } + /** + * @return Member[] + */ public function search( string $keyword = '', int $yearOfBirth = 0, @@ -129,9 +135,10 @@ public function search( Grade $grade = null, int $minYearOfBirth = 0, int $maxYearOfBirth = 0, + bool $isActive = null, ): array { $q = $this->createQueryBuilder('t')->andWhere('0 = 0'); - if (!is_null($keyword) && 0 != mb_strlen(trim($keyword))) { + if (0 != mb_strlen(trim($keyword))) { $q->andWhere('LOWER(t.firstname) LIKE :keyword OR LOWER(t.lastname) LIKE :keyword OR t.id = :id') ->setParameter('keyword', '%'.mb_strtolower($keyword).'%') ->setParameter('id', intval($keyword)); @@ -153,11 +160,19 @@ public function search( ->setParameter('minYearOfBirth', $minYearOfBirth) ->setParameter('maxYearOfBirth', $maxYearOfBirth); } + if (false === is_null($isActive)) { + $q->andWhere('t.status = :status') + ->setParameter('status', $isActive ? MemberStatus::ACTIVE->value : MemberStatus::NON_ACTIVE->value); + } + $q->addOrderBy('t.id', 'DESC'); return $q->getQuery()->getResult(); } + /** + * @return Member[] + */ public function listActiveMembers(): array { $q = $this->createQueryBuilder('t') @@ -168,6 +183,9 @@ public function listActiveMembers(): array return $q->getQuery()->getResult(); } + /** + * @return Member[] + */ public function getActiveMembersByFederationAndLocation(Federation $federation, Location $location): array { $q = $this->createQueryBuilder('t') @@ -181,4 +199,19 @@ public function getActiveMembersByFederationAndLocation(Federation $federation, return $q->getQuery()->getResult(); } + + /** + * @return Member[] + */ + public function getActiveMembersByLocation(Location $location): array + { + $q = $this->createQueryBuilder('t') + ->where('t.status = :status') + ->setParameter('status', MemberStatus::ACTIVE->value) + ->andWhere('t.location = :locationId') + ->setParameter('locationId', $location->getId()) + ->addOrderBy('t.id', 'DESC'); + + return $q->getQuery()->getResult(); + } } diff --git a/application/YoshiKan/Infrastructure/Database/Member/SubscriptionRepository.php b/application/YoshiKan/Infrastructure/Database/Member/SubscriptionRepository.php index 7a7e1f6..4cf0804 100644 --- a/application/YoshiKan/Infrastructure/Database/Member/SubscriptionRepository.php +++ b/application/YoshiKan/Infrastructure/Database/Member/SubscriptionRepository.php @@ -89,6 +89,43 @@ public function getByUuid(Uuid $uuid): Subscription return $model; } + public function findByPaymentId(string $paymentId): ?Subscription + { + return $this->createQueryBuilder('t') + ->andWhere('t.paymentId = :payment_id') + ->setParameter('payment_id', $paymentId) + ->getQuery() + ->getOneOrNullResult(); + } + + public function findByMemberAndDatesAndAmounts( + Member $member, + \DateTimeImmutable $memberStartDate, + \DateTimeImmutable $memberEndDate, + \DateTimeImmutable $licenseStartDate, + \DateTimeImmutable $licenseEndDate, + float $memberShipAmount, + float $licenseAmount, + ): ?Subscription { + return $this->createQueryBuilder('t') + ->andWhere('t.member = :memberId') + ->setParameter('memberId', $member->getId()) + ->andWhere('t.memberSubscriptionStart = :memberShipStart') + ->setParameter('memberShipStart', $memberStartDate, 'datetime_immutable') + ->andWhere('t.memberSubscriptionEnd = :memberShipEnd') + ->setParameter('memberShipEnd', $memberEndDate, 'datetime_immutable') + ->andWhere('t.licenseStart = :licenseShipStart') + ->setParameter('licenseShipStart', $licenseStartDate, 'datetime_immutable') + ->andWhere('t.licenseEnd = :licenseShipEnd') + ->setParameter('licenseShipEnd', $licenseEndDate, 'datetime_immutable') + ->andWhere('t.memberSubscriptionTotal = :memberShipAmount') + ->setParameter('memberShipAmount', $memberShipAmount) + ->andWhere('t.licenseTotal = :licenseAmount') + ->setParameter('licenseAmount', $licenseAmount) + ->getQuery() + ->getOneOrNullResult(); + } + public function getMaxId(): int { $model = $this->createQueryBuilder('t') diff --git a/application/YoshiKan/Infrastructure/Database/TwoFactor/MemberAccessCodeRepository.php b/application/YoshiKan/Infrastructure/Database/TwoFactor/MemberAccessCodeRepository.php new file mode 100644 index 0000000..74dc521 --- /dev/null +++ b/application/YoshiKan/Infrastructure/Database/TwoFactor/MemberAccessCodeRepository.php @@ -0,0 +1,115 @@ +setChecksum(); + $em = $this->getEntityManager(); + $em->persist($model); + $id = 0; + if ($model->getId()) { + $id = $model->getId(); + } + + return $id; + } + + public function delete(MemberAccessCode $model): bool + { + $em = $this->getEntityManager(); + $em->remove($model); + + return true; + } + + public function getById(int $id): MemberAccessCode + { + $model = $this->find($id); + if (is_null($model)) { + throw new EntityNotFoundException(self::NO_ENTITY_FOUND); + } + + return $model; + } + + public function getByUuid(Uuid $uuid): MemberAccessCode + { + $model = $this->createQueryBuilder('t') + ->andWhere('t.uuid = :uuid') + ->setParameter('uuid', $uuid, 'uuid') + ->getQuery() + ->getOneOrNullResult(); + if (is_null($model)) { + throw new EntityNotFoundException(self::NO_ENTITY_FOUND); + } + + return $model; + } + + public function findByCode(string $code): ?MemberAccessCode + { + return $this->createQueryBuilder('t') + ->andWhere('t.code = :code') + ->setParameter('code', $code) + ->getQuery() + ->getOneOrNullResult(); + } + + // ————————————————————————————————————————————————————————————————————————— + // Multiple entity functions + // ————————————————————————————————————————————————————————————————————————— + + /** + * @return MemberAccessCode[] + */ + public function getByActiveUser(User $user): array + { + return $this->createQueryBuilder('t') + ->andWhere('t.user = :user_id') + ->setParameter('user_id', $user->getId()) + ->andWhere('t.isActive = 1') + ->getQuery() + ->getResult(); + } +} diff --git a/application/YoshiKan/Infrastructure/Mollie/MollieConfig.php b/application/YoshiKan/Infrastructure/Mollie/MollieConfig.php new file mode 100644 index 0000000..efe00d0 --- /dev/null +++ b/application/YoshiKan/Infrastructure/Mollie/MollieConfig.php @@ -0,0 +1,71 @@ +apiKey; + } + + public function getPartnerId(): string + { + return $this->partnerId; + } + + public function getProfileId(): string + { + return $this->profileId; + } + + public function getRedirectBaseUrl(): string + { + return $this->redirectBaseUrl; + } +} diff --git a/application/YoshiKan/Infrastructure/Templates/mail/member_access_code_mail.html.twig b/application/YoshiKan/Infrastructure/Templates/mail/member_access_code_mail.html.twig new file mode 100644 index 0000000..f6bf72b --- /dev/null +++ b/application/YoshiKan/Infrastructure/Templates/mail/member_access_code_mail.html.twig @@ -0,0 +1,25 @@ +{% extends 'mail/base_mail.html.twig' %} + +{% block title %}{{ subject }}{% endblock %} + +{% block body %} + +

Dag {{ user.displayName }},

+

+ Dit is je code om in te loggen op het ledenbeheer: +

+

+ {{ code }} +

+

+ Of gebruik deze link: {{ magicLink }} +

+

+ Als je dit niet hebt aangevraagd, kan je deze e-mail negeren. +

+

+ Met sportieve groeten, +
Team Yoshi-Kan. +

+ +{% endblock %} diff --git a/application/YoshiKan/Infrastructure/Templates/mail/member_extendMemberSubscription_mail.html.twig b/application/YoshiKan/Infrastructure/Templates/mail/member_extendMemberSubscription_mail.html.twig index 3cbdd05..7ff6ad7 100644 --- a/application/YoshiKan/Infrastructure/Templates/mail/member_extendMemberSubscription_mail.html.twig +++ b/application/YoshiKan/Infrastructure/Templates/mail/member_extendMemberSubscription_mail.html.twig @@ -25,7 +25,15 @@ verzoeken wij je vriendelijk om een bedrag van {{ subscription.total }} € over te maken naar het volgende bankrekeningnummer: BE37 7330 0101 8328 met vermelding van de referentie "YKS-{{ subscription.id }} {{ subscription.lastname }} {{ subscription.firstname }}". - Als {{ subscription.firstname }} niet langer lid wenst te zijn, geef dan ons een seintje. Alvast bedankt. +

+ {% if (subscription.paymentLink is not empty) %} +

+ Of betaal online via deze Mollie-link: + {{ subscription.paymentLink }}. +

+ {% endif %} +

+ Als {{ subscription.firstname }} niet langer lid wenst te zijn, geef dan ons een seintje. Alvast bedankt.

Mocht je nog vragen hebben of extra informatie nodig hebben, aarzel dan niet om contact diff --git a/application/YoshiKan/Infrastructure/Templates/mail/member_newMemberSubscription_mail.html.twig b/application/YoshiKan/Infrastructure/Templates/mail/member_newMemberSubscription_mail.html.twig index f9327b0..5b9e057 100644 --- a/application/YoshiKan/Infrastructure/Templates/mail/member_newMemberSubscription_mail.html.twig +++ b/application/YoshiKan/Infrastructure/Templates/mail/member_newMemberSubscription_mail.html.twig @@ -13,15 +13,24 @@ Welkom {{ subscription.firstname }} {{ subscription.lastname }}, bij Yoshi-Kan, de plek waar judo-liefhebbers samenkomen om hun passie voor deze prachtige sport te delen. We zijn verheugd dat je ervoor hebt gekozen - om deel uit te maken van onze judo familie! + om deel uit te maken van onze judo-familie!

Om de inschrijving definitief te maken en ervoor te zorgen dat je volop kunt genieten van onze judolessen, verzoeken wij je vriendelijk om een bedrag van {{ subscription.total }} € over te maken naar onze bankrekening op het volgende nummer: BE37 7330 0101 8328 met vermelding van volgende referentie - ""YKS-{{ subscription.id }} {{ subscription.lastname }} {{ subscription.firstname }}"". - Zo kunnen we je betaling snel identificeren. Wanneer we je betaling hebben ontvangen, zullen we je officieel + "YKS-{{ subscription.id }} {{ subscription.lastname }} {{ subscription.firstname }}". + Zo kunnen we je betaling snel identificeren. +

+ {% if (subscription.paymentLink is not empty) %} +

+ Of betaal online via deze Mollie-link: + {{ subscription.paymentLink }}. +

+ {% endif %} +

+ Wanneer we je betaling hebben ontvangen, zullen we je officieel inschrijven en krijg je toegang tot al onze trainingen en evenementen. We staan te popelen om je te verwelkomen op de mat.

diff --git a/application/YoshiKan/Infrastructure/Templates/mail/payment_confirmation_mail.html.twig b/application/YoshiKan/Infrastructure/Templates/mail/payment_confirmation_mail.html.twig new file mode 100644 index 0000000..feccbbf --- /dev/null +++ b/application/YoshiKan/Infrastructure/Templates/mail/payment_confirmation_mail.html.twig @@ -0,0 +1,21 @@ +{% extends 'mail/base_mail.html.twig' %} + +{% block title %}{{ subject }}{% endblock %} + +{% block body %} + +

Beste {{ subscription.contactLastname }} {{ subscription.contactFirstname }},

+

+ We hebben de betaling van het lidgeld (YKS-{{ subscription.id }}) van + {{ subscription.lastname | upper }} {{ subscription.firstname }} + goed ontvangen. Bedankt hiervoor! +

+

+ Tot binnenkort. +

+

+ Met sportieve groeten, +
Team Yoshi-Kan. +

+ +{% endblock %} diff --git a/application/YoshiKan/Infrastructure/Templates/pdf/due_payments.html.twig b/application/YoshiKan/Infrastructure/Templates/pdf/due_payments.html.twig index c4aafd0..2e7a96d 100644 --- a/application/YoshiKan/Infrastructure/Templates/pdf/due_payments.html.twig +++ b/application/YoshiKan/Infrastructure/Templates/pdf/due_payments.html.twig @@ -130,7 +130,7 @@ Voornaam Groep Lidgeld - Vergunning + Vergunning Totaal @@ -139,6 +139,7 @@ tot bedrag betaald + fed. van tot bedrag @@ -154,19 +155,20 @@ {{ subscription.firstname }} {{ subscription.memberSubscriptionStart | date('m/Y')}} - {{ subscription.memberSubscriptionEnd | date('m/Y')}} + {{ subscription.memberSubscriptionEnd | date('m/Y')}} {% if subscription.memberSubscriptionTotal != 0 %} {{ subscription.memberSubscriptionTotal }} € {% endif %} - {% if subscription.memberSubscriptionIsPayed or subscription.memberSubscriptionTotal == 0 %} + {% if subscription.isMemberSubscriptionIsPayed or subscription.memberSubscriptionTotal == 0 %} x {% endif %} + {{ subscription.federation.code }} {{ subscription.licenseStart | date('m/Y')}} - {{ subscription.licenseEnd | date('m/Y')}} + {{ subscription.licenseEnd | date('m/Y')}} {% if subscription.licenseTotal != 0 %} {{ subscription.licenseTotal }} € diff --git a/application/YoshiKan/Infrastructure/Templates/pdf/list_member.html.twig b/application/YoshiKan/Infrastructure/Templates/pdf/list_member.html.twig new file mode 100644 index 0000000..7a698c7 --- /dev/null +++ b/application/YoshiKan/Infrastructure/Templates/pdf/list_member.html.twig @@ -0,0 +1,179 @@ +{# #} +{# This file is part of the Yoshi-Kan software. #} +{# #} +{# (c) Koen Caerels #} +{# #} +{# For the full copyright and license information, please view the LICENSE #} +{# file that was distributed with this source code. #} +{# #} + + + + + + + +{# ------------------------------------------------------------------------------------------------------------------ #} +
+ Leden lijst Yoshi-Kan vzw - {{ locationName }} +
+ + +{# ------------------------------------------------------------------------------------------------------------------ #} + +
+

{{ locationName }}: {{ members | length }} leden

+ + + + + + + + + + + + + + + + {% for member in members %} + + {% set dateDiff = generatedOn|date("U") - member.dateOfBirth|date("U") %} + {% set dateDiffYears = dateDiff / (60 * 60 * 24 * 365.25) %} + + + + + + + + + + + + + {% endfor %} + + +
Ref.NaamVoornaamGeslachtGeboortedatumLeeftijdAdresPostcodeGemeente
YK-{{ member.id }}{{ member.lastname }}{{ member.firstname }}{{ member.gender.value }}{{ member.dateOfBirth | date('d / m / Y') }} + {% if dateDiffYears > 18 %} + {{ dateDiffYears | number_format(0) }} + {% else %} + {{ dateDiffYears | number_format(0) }} + {% endif %} + {{ member.addressStreet }} {{ member.addressNumber }} {{ member.addressBox }}{{ member.addressZip }}{{ member.addressCity }}
+
+ + + + diff --git a/application/YoshiKan/Infrastructure/Web/Controller/ApiController.php b/application/YoshiKan/Infrastructure/Web/Controller/ApiController.php index f944f51..03bada8 100644 --- a/application/YoshiKan/Infrastructure/Web/Controller/ApiController.php +++ b/application/YoshiKan/Infrastructure/Web/Controller/ApiController.php @@ -24,11 +24,13 @@ use App\YoshiKan\Domain\Model\Member\Settings; use App\YoshiKan\Domain\Model\Member\Subscription; use App\YoshiKan\Domain\Model\Member\SubscriptionItem; +use App\YoshiKan\Domain\Model\Message\Message; use App\YoshiKan\Domain\Model\Product\Judogi; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\KernelInterface; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Routing\Annotation\Route; @@ -96,7 +98,8 @@ public function __construct( $this->entityManager->getRepository(Judogi::class), $this->entityManager->getRepository(Settings::class), $this->entityManager->getRepository(Member::class), - $this->entityManager->getRepository(Federation::class) + $this->entityManager->getRepository(Federation::class), + $this->entityManager->getRepository(Message::class), ); } @@ -147,4 +150,27 @@ public function subscribeAction(Request $request): JsonResponse return new JsonResponse($response, 200, $this->apiAccess); } + + // ——————————————————————————————————————————————————————————————————————————— + // Mollie redirect and webhooks + // ——————————————————————————————————————————————————————————————————————————— + + #[Route('/mm/lidgeld/betaling/{paymentId}', name: 'mollie_payment_confirmation', methods: ['GET', 'POST', 'PUT'])] + public function molliePaymentConfirmation(Request $request, string $paymentId): Response + { + $response = $this->commandBus->markSubscriptionAsPayedFromMollie($paymentId); + if ($response->subscriptionId > 0) { + $response_mail = $this->commandBus->sendPaymentReceivedConfirmationMail($response->subscriptionId); + + return $this->redirectToRoute('mollie_payment_confirmation_feedback', ['paymentId' => $paymentId]); + } else { + return new JsonResponse('No subscription linked to this ID.', 200, $this->apiAccess); + } + } + + #[Route('/mm/lidgeld/betaling/{paymentId}/webhook', name: 'mollie_webhook', methods: ['GET', 'POST', 'PUT'])] + public function mollieWebHook(Request $request, string $paymentId): JsonResponse + { + return new JsonResponse(true, 200, $this->apiAccess); + } } diff --git a/application/YoshiKan/Infrastructure/Web/Controller/ImportController.php b/application/YoshiKan/Infrastructure/Web/Controller/ImportController.php new file mode 100644 index 0000000..d27c968 --- /dev/null +++ b/application/YoshiKan/Infrastructure/Web/Controller/ImportController.php @@ -0,0 +1,120 @@ +importFolder = $appKernel->getProjectDir().'/'.$_SERVER['UPLOAD_FOLDER'].'/_import/'; + } + + // —————————————————————————————————————————————————————————————————————————— + // Payment confirmation feedback + // —————————————————————————————————————————————————————————————————————————— + + #[IsGranted('ROLE_DEVELOPER')] + #[Route('/mm/fWXCq7sBpYQngXil/import/active', name: 'import_active_members', methods: ['GET'])] + public function importActiveMembers(Request $request): Response + { + $dataFile = $this->importFolder.'Gegevens.xlsx'; + $importHandler = new ImportActiveMembersHandler( + $dataFile, + $this->entityManager, + $this->entityManager->getRepository(Member::class), + $this->entityManager->getRepository(Subscription::class), + $this->entityManager->getRepository(Federation::class), + $this->entityManager->getRepository(Location::class), + $this->entityManager->getRepository(Grade::class), + $this->entityManager->getRepository(Settings::class), + $this->entityManager->getRepository(SubscriptionItem::class), + ); + + $result = $importHandler->import(); + + $response = 'Imported!'; + + return new JsonResponse($response, 200, []); + } + + #[IsGranted('ROLE_DEVELOPER')] + #[Route('/mm/fWXCq7sBpYQngXil/import/archive', name: 'import_archive_members', methods: ['GET'])] + public function importArchiveMembers(Request $request): Response + { + $dataFile = $this->importFolder.'Logging.xlsx'; + $importHandler = new ImportSubscriptionArchiveHandler( + $dataFile, + $this->entityManager, + $this->entityManager->getRepository(Member::class), + $this->entityManager->getRepository(Subscription::class), + $this->entityManager->getRepository(Federation::class), + $this->entityManager->getRepository(Location::class), + $this->entityManager->getRepository(Grade::class), + ); + + $result = $importHandler->import(); + + $response = 'Imported!'; + + return new JsonResponse($response, 200, []); + } + + #[IsGranted('ROLE_DEVELOPER')] + #[Route('/mm/fWXCq7sBpYQngXil/import/archive/grades', name: 'import_archive_members_grades', methods: ['GET'])] + public function importArchiveMembersGrades(Request $request): Response + { + $dataFile = $this->importFolder.'Logging.xlsx'; + $importHandler = new ImportSubscriptionArchiveHandler( + $dataFile, + $this->entityManager, + $this->entityManager->getRepository(Member::class), + $this->entityManager->getRepository(Subscription::class), + $this->entityManager->getRepository(Federation::class), + $this->entityManager->getRepository(Location::class), + $this->entityManager->getRepository(Grade::class), + ); + + $result = $importHandler->importGrades(); + + $response = 'Imported!'; + + return new JsonResponse($response, 200, []); + } +} diff --git a/application/YoshiKan/Infrastructure/Web/Controller/MemberApiController.php b/application/YoshiKan/Infrastructure/Web/Controller/MemberApiController.php index e35a52e..c139f3c 100644 --- a/application/YoshiKan/Infrastructure/Web/Controller/MemberApiController.php +++ b/application/YoshiKan/Infrastructure/Web/Controller/MemberApiController.php @@ -28,19 +28,23 @@ use App\YoshiKan\Domain\Model\Member\SubscriptionItem; use App\YoshiKan\Domain\Model\Message\Message; use App\YoshiKan\Domain\Model\Product\Judogi; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\configuration_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\federation_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\grade_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\group_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\judogi_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\location_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\member_image_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\member_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\period_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\settings_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\subscription_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Message\message_routes; -use App\YoshiKan\Infrastructure\Web\Controller\Routes\Reporting\reporting_routes; +use App\YoshiKan\Domain\Model\TwoFactor\MemberAccessCode; +use App\YoshiKan\Infrastructure\Mollie\MollieConfig; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\ConfigurationRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\FederationRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\GradeRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\GroupRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\JudogiRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\LocationRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\MemberImageRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\MemberRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\PeriodRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\SettingsRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Member\SubscriptionRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Message\MessageRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\Reporting\ReportingRoutes; +use App\YoshiKan\Infrastructure\Web\Controller\Routes\TwoFactor\TwoFactorRoutes; +use Bolt\Entity\User; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; @@ -59,19 +63,20 @@ class MemberApiController extends AbstractController // Routes // —————————————————————————————————————————————————————————————————————————— - use grade_routes; - use group_routes; - use period_routes; - use location_routes; - use judogi_routes; - use settings_routes; - use configuration_routes; - use subscription_routes; - use member_routes; - use member_image_routes; - use federation_routes; - use message_routes; - use reporting_routes; + use GradeRoutes; + use GroupRoutes; + use PeriodRoutes; + use LocationRoutes; + use JudogiRoutes; + use SettingsRoutes; + use ConfigurationRoutes; + use SubscriptionRoutes; + use MemberRoutes; + use MemberImageRoutes; + use FederationRoutes; + use MessageRoutes; + use ReportingRoutes; + use TwoFactorRoutes; // —————————————————————————————————————————————————————————————————————————— // Attributes @@ -103,45 +108,55 @@ public function __construct( $this->uploadFolder = $appKernel->getProjectDir().'/'.$_SERVER['UPLOAD_FOLDER'].'/'; $this->setTwigLoader($this->appKernel); + $mollieConfig = MollieConfig::make( + apiKey: $_SERVER['MOLLIE_API_KEY'], + partnerId: $_SERVER['MOLLIE_PARTNER_ID'], + profileId: $_SERVER['MOLLIE_PROFILE_ID'], + redirectBaseUrl: $_SERVER['MOLLIE_REDIRECT_BASE_URL'], + ); + $this->queryBus = new MemberQueryBus( - $this->security, - $this->entityManager, - $isolationMode, - $this->twig, - $this->uploadFolder, - $this->entityManager->getRepository(Grade::class), - $this->entityManager->getRepository(Group::class), - $this->entityManager->getRepository(Location::class), - $this->entityManager->getRepository(Member::class), - $this->entityManager->getRepository(Period::class), - $this->entityManager->getRepository(Settings::class), - $this->entityManager->getRepository(Subscription::class), - $this->entityManager->getRepository(MemberImage::class), - $this->entityManager->getRepository(Federation::class), - $this->entityManager->getRepository(Message::class), - $this->entityManager->getRepository(Judogi::class), + security: $this->security, + entityManager: $this->entityManager, + isolationMode: $isolationMode, + twig: $this->twig, + uploadFolder: $this->uploadFolder, + gradeRepository: $this->entityManager->getRepository(Grade::class), + groupRepository: $this->entityManager->getRepository(Group::class), + locationRepository: $this->entityManager->getRepository(Location::class), + memberRepository: $this->entityManager->getRepository(Member::class), + periodRepository: $this->entityManager->getRepository(Period::class), + settingsRepository: $this->entityManager->getRepository(Settings::class), + subscriptionRepository: $this->entityManager->getRepository(Subscription::class), + memberImageRepository: $this->entityManager->getRepository(MemberImage::class), + federationRepository: $this->entityManager->getRepository(Federation::class), + messageRepository: $this->entityManager->getRepository(Message::class), + judogiRepository: $this->entityManager->getRepository(Judogi::class), ); $this->commandBus = new MemberCommandBus( - $this->security, - $this->entityManager, - $isolationMode, - $this->twig, - $this->mailer, - $this->uploadFolder, - $this->entityManager->getRepository(Grade::class), - $this->entityManager->getRepository(Group::class), - $this->entityManager->getRepository(Location::class), - $this->entityManager->getRepository(Member::class), - $this->entityManager->getRepository(Period::class), - $this->entityManager->getRepository(Settings::class), - $this->entityManager->getRepository(Subscription::class), - $this->entityManager->getRepository(SubscriptionItem::class), - $this->entityManager->getRepository(GradeLog::class), - $this->entityManager->getRepository(MemberImage::class), - $this->entityManager->getRepository(Federation::class), - $this->entityManager->getRepository(Message::class), - $this->entityManager->getRepository(Judogi::class), + security: $this->security, + entityManager: $this->entityManager, + isolationMode: $isolationMode, + twig: $this->twig, + mailer: $this->mailer, + uploadFolder: $this->uploadFolder, + gradeRepository: $this->entityManager->getRepository(Grade::class), + groupRepository: $this->entityManager->getRepository(Group::class), + locationRepository: $this->entityManager->getRepository(Location::class), + memberRepository: $this->entityManager->getRepository(Member::class), + periodRepository: $this->entityManager->getRepository(Period::class), + settingsRepository: $this->entityManager->getRepository(Settings::class), + subscriptionRepository: $this->entityManager->getRepository(Subscription::class), + subscriptionItemRepository: $this->entityManager->getRepository(SubscriptionItem::class), + gradeLogRepository: $this->entityManager->getRepository(GradeLog::class), + memberImageRepository: $this->entityManager->getRepository(MemberImage::class), + federationRepository: $this->entityManager->getRepository(Federation::class), + messageRepository: $this->entityManager->getRepository(Message::class), + judogiRepository: $this->entityManager->getRepository(Judogi::class), + userRepository: $this->entityManager->getRepository(User::class), + memberAccessCodeRepository: $this->entityManager->getRepository(MemberAccessCode::class), + mollieConfig: $mollieConfig, ); } diff --git a/application/YoshiKan/Infrastructure/Web/Controller/MollieController.php b/application/YoshiKan/Infrastructure/Web/Controller/MollieController.php new file mode 100644 index 0000000..1796a72 --- /dev/null +++ b/application/YoshiKan/Infrastructure/Web/Controller/MollieController.php @@ -0,0 +1,73 @@ +setTwigLoader($this->appKernel); + } + + private function setTwigLoader(KernelInterface $appKernel): void + { + /** @var FilesystemLoader|ChainLoader $twigLoaders */ + $twigLoaders = $this->twig->getLoader(); + $twigLoaders = $twigLoaders instanceof ChainLoader ? + $twigLoaders->getLoaders() : + [$twigLoaders]; + $path = $appKernel->getProjectDir().'/public/theme/YoshiKan2023/'; + foreach ($twigLoaders as $twigLoader) { + if ($twigLoader instanceof FilesystemLoader) { + $twigLoader->prependPath($path, '__main__'); + } + } + } + + // —————————————————————————————————————————————————————————————————————————— + // Payment confirmation feedback + // —————————————————————————————————————————————————————————————————————————— + + #[Route('/mm/lidgeld/betaling/{paymentId}/ok', name: 'mollie_payment_confirmation_feedback', methods: ['GET', 'POST', 'PUT'])] + public function molliePaymentConfirmationFeedback(Request $request, string $paymentId): Response + { + $subscription = $this->entityManager->getRepository(Subscription::class)->findByPaymentId($paymentId); + if (false === is_null($subscription)) { + return $this->render('paid.twig', [ + 'subscription' => $subscription, + ]); + } else { + return new JsonResponse('No subscription linked to this ID.', 200, []); + } + } +} diff --git a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/configuration_routes.php b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/ConfigurationRoutes.php similarity index 84% rename from application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/configuration_routes.php rename to application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/ConfigurationRoutes.php index 0ea8365..0b7ab37 100644 --- a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/configuration_routes.php +++ b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/ConfigurationRoutes.php @@ -17,10 +17,10 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -trait configuration_routes +trait ConfigurationRoutes { #[Route('/mm/api/member/configuration', methods: ['GET'])] - public function getConfiguration(Request $request) + public function getConfiguration(Request $request): JsonResponse { $response = $this->queryBus->getConfiguration(); @@ -28,7 +28,7 @@ public function getConfiguration(Request $request) } #[Route('/mm/api/member/configuration/setup', methods: ['GET'])] - public function setupConfiguration(Request $request) + public function setupConfiguration(Request $request): JsonResponse { $response = $this->commandBus->setupConfiguration(); diff --git a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/federation_routes.php b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/FederationRoutes.php similarity index 87% rename from application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/federation_routes.php rename to application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/FederationRoutes.php index 9f39634..038bbd7 100644 --- a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/federation_routes.php +++ b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/FederationRoutes.php @@ -1,12 +1,23 @@ '\d+'], methods: ['GET'])] public function streamMemberImageById(int $id, Request $request): Response diff --git a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/member_routes.php b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/MemberRoutes.php similarity index 76% rename from application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/member_routes.php rename to application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/MemberRoutes.php index 11806c2..a9a5d2d 100644 --- a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/member_routes.php +++ b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/MemberRoutes.php @@ -15,13 +15,14 @@ use App\YoshiKan\Application\Command\Member\UploadMemberImage\UploadMemberImage; use App\YoshiKan\Application\Command\Member\UploadProfileImage\UploadProfileImage; +use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\ResponseHeaderBag; use Symfony\Component\Routing\Annotation\Route; -trait member_routes +trait MemberRoutes { #[Route('/mm/api/member/active', methods: ['GET'])] public function listActiveMembers(Request $request): JsonResponse @@ -138,7 +139,8 @@ public function extendMemberSubscription(int $id, Request $request): JsonRespons $command = json_decode($request->request->get('command')); $response = $this->commandBus->memberExtendSubscription($command); - $result = $this->commandBus->sendMemberExtendSubscriptionMail($response->id); + $result_mollie = $this->commandBus->createMolliePaymentLink($response->id); + $result_mail = $this->commandBus->sendMemberExtendSubscriptionMail($response->id); return new JsonResponse($response, 200, $this->apiAccess); } @@ -171,7 +173,23 @@ public function newMemberSubscription(Request $request): JsonResponse $command = json_decode($request->request->get('command')); $response = $this->commandBus->memberNewSubscription($command); - $result = $this->commandBus->sendMemberNewSubscriptionMail($response->id); + $result_mollie = $this->commandBus->createMolliePaymentLink($response->id); + $result_mail = $this->commandBus->sendMemberNewSubscriptionMail($response->id); + + return new JsonResponse($response, 200, $this->apiAccess); + } + + /** + * @throws \Exception + */ + #[Route('/mm/api/member/confirm-web-subscription', methods: ['POST', 'PUT'])] + public function confirmWebSubscription(Request $request): JsonResponse + { + $command = json_decode($request->request->get('command')); + $response = $this->commandBus->confirmMemberWebSubscription($command); + + $result_mollie = $this->commandBus->createMolliePaymentLink($response->id); + $result_mail = $this->commandBus->sendMemberNewSubscriptionMail($response->id); return new JsonResponse($response, 200, $this->apiAccess); } @@ -183,4 +201,27 @@ public function downloadOverviewDuePayments(Request $request): JsonResponse return new JsonResponse($response, 200, $this->apiAccess); } + + #[Route('/mm/api/member/list/location/{locationId}', requirements: ['locationId' => '\d+'], methods: ['GET'])] + public function downloadMemberList(Request $request, int $locationId): JsonResponse + { + $response = $this->queryBus->downloadMemberOverviewForLocation($locationId); + + return new JsonResponse($response, 200, $this->apiAccess); + } + + #[Route('/mm/api/member/list/location/{locationId}/excel', requirements: ['locationId' => '\d+'], methods: ['GET'])] + public function downloadMemberListAsExcel(Request $request, int $locationId): void + { + $spreadsheet = $this->queryBus->downloadMemberOverviewForLocationAsExcel($locationId); + $now = new \DateTimeImmutable(); + $fileName = $now->format('Ymd').'_yoshi-kan-leden-'.$locationId.'.xlsx'; + $writer = new Xlsx($spreadsheet); + + ob_end_clean(); + header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); + header('Content-Disposition: attachment; filename="'.urlencode($fileName).'"'); + $writer->save('php://output'); + exit; + } } diff --git a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/period_routes.php b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/PeriodRoutes.php similarity index 98% rename from application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/period_routes.php rename to application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/PeriodRoutes.php index 6b949a4..ae304f0 100644 --- a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/period_routes.php +++ b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/PeriodRoutes.php @@ -17,7 +17,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -trait period_routes +trait PeriodRoutes { #[Route('/mm/api/member/period/order', methods: ['POST', 'PUT'])] public function orderPeriod(Request $request): JsonResponse diff --git a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/settings_routes.php b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/SettingsRoutes.php similarity index 97% rename from application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/settings_routes.php rename to application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/SettingsRoutes.php index 9d09ae8..5b97b78 100644 --- a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/settings_routes.php +++ b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/SettingsRoutes.php @@ -17,7 +17,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -trait settings_routes +trait SettingsRoutes { #[Route('/mm/api/member/settings', methods: ['POST', 'PUT'])] public function saveSettings(Request $request): JsonResponse diff --git a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/SubscriptionRoutes.php b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/SubscriptionRoutes.php new file mode 100644 index 0000000..4b4b9a4 --- /dev/null +++ b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/SubscriptionRoutes.php @@ -0,0 +1,114 @@ + '\d+'], methods: ['GET'])] + public function getSubscriptionById(int $id): JsonResponse + { + $response = $this->queryBus->getSubscriptionById($id); + + return new JsonResponse($response, 200, $this->apiAccess); + } + + /** + * @throws \Exception + */ + #[Route('/mm/api/subscription/{id}/mark-as-paid', requirements: ['id' => '\d+'], methods: ['POST', 'PUT'])] + public function markSubscriptionAsPayed(int $id, Request $request): JsonResponse + { + $jsonCommand = json_decode($request->request->get('command')); + $response = $this->commandBus->markSubscriptionAsPayed($jsonCommand); + $response_mail = $this->commandBus->sendPaymentReceivedConfirmationMail($id); + + return new JsonResponse($response, 200, $this->apiAccess); + } + + /** + * @throws \Exception + */ + #[Route('/mm/api/subscription/{id}/mark-as-finished', requirements: ['id' => '\d+'], methods: ['POST', 'PUT'])] + public function markSubscriptionAsFinished(int $id, Request $request): JsonResponse + { + $jsonCommand = json_decode($request->request->get('command')); + $response = $this->commandBus->markSubscriptionAsFinished($jsonCommand); + + return new JsonResponse($response, 200, $this->apiAccess); + } + + /** + * @throws \Exception + */ + #[Route('/mm/api/subscription/{id}/cancel', requirements: ['id' => '\d+'], methods: ['POST', 'PUT'])] + public function markSubscriptionAsCanceled(int $id, Request $request): JsonResponse + { + $jsonCommand = json_decode($request->request->get('command')); + $response = $this->commandBus->markSubscriptionAsCanceled($jsonCommand); + + return new JsonResponse($response, 200, $this->apiAccess); + } + + #[Route('/mm/api/subscription/{status}', methods: ['GET'])] + public function getAllSubscriptions(string $status, Request $request): JsonResponse + { + $response = $this->queryBus->getSubscriptionsByStatus($status); + + return new JsonResponse($response->getCollection(), 200, $this->apiAccess); + } + + /** + * @throws Exception + */ + #[Route('/mm/api/subscriptions/export', methods: ['GET'])] + public function exportSubscriptions(Request $request): void + { + $listIds = $request->query->get('ids'); + $spreadsheet = $this->queryBus->exportSubscriptions($this->convertToArrayOfIds($listIds)); + $now = new \DateTimeImmutable(); + $fileName = $now->format('Ymd').'_yoshi-kan-inschrijvingen.xlsx'; + $writer = new Xlsx($spreadsheet); + + ob_end_clean(); + header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); + header('Content-Disposition: attachment; filename="'.urlencode($fileName).'"'); + $writer->save('php://output'); + exit; + } + + #[Route('/mm/api/subscriptions/print', methods: ['GET'])] + public function printSubscriptions(Request $request): void + { + $listIds = $request->query->get('ids'); + $document = $this->queryBus->printSubscriptions($this->convertToArrayOfIds($listIds)); + + exit; + } + + private function convertToArrayOfIds(string $ids): array + { + $arListIdsInt = []; + foreach (explode(',', $ids) as $id) { + $arListIdsInt[] = intval($id); + } + + return $arListIdsInt; + } +} diff --git a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/subscription_routes.php b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/subscription_routes.php deleted file mode 100644 index f9600d8..0000000 --- a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Member/subscription_routes.php +++ /dev/null @@ -1,188 +0,0 @@ - '\d+'], methods: ['GET'])] - public function getSubscriptionById(int $id): JsonResponse - { - $response = $this->queryBus->getSubscriptionById($id); - - return new JsonResponse($response, 200, $this->apiAccess); - } - - /** - * @throws \Exception - */ - #[Route('/mm/api/subscription/{id}/mark-as-paid', requirements: ['id' => '\d+'], methods: ['POST', 'PUT'])] - public function markSubscriptionAsPayed(int $id, Request $request): JsonResponse - { - $jsonCommand = json_decode($request->request->get('command')); - $response = $this->commandBus->markSubscriptionAsPayed($jsonCommand); - - return new JsonResponse($response, 200, $this->apiAccess); - } - - /** - * @throws \Exception - */ - #[Route('/mm/api/subscription/{id}/cancel', requirements: ['id' => '\d+'], methods: ['POST', 'PUT'])] - public function markSubscriptionAsCanceled(int $id, Request $request): JsonResponse - { - $jsonCommand = json_decode($request->request->get('command')); - $response = $this->commandBus->markSubscriptionAsCanceled($jsonCommand); - - return new JsonResponse($response, 200, $this->apiAccess); - } - - #[Route('/mm/api/subscription/{status}', methods: ['GET'])] - public function getAllSubscriptions(string $status, Request $request): JsonResponse - { - $response = $this->queryBus->getSubscriptionsByStatus($status); - - return new JsonResponse($response->getCollection(), 200, $this->apiAccess); - } - - /** - * @throws Exception - */ - #[Route('/mm/api/subscriptions/export', methods: ['GET'])] - public function exportSubscriptions(Request $request): void - { - $listIds = $request->query->get('ids'); - $spreadsheet = $this->queryBus->exportSubscriptions($this->convertToArrayOfIds($listIds)); - $now = new \DateTimeImmutable(); - $fileName = $now->format('Ymd').'_yoshi-kan-inschrijvingen.xlsx'; - $writer = new Xlsx($spreadsheet); - - ob_end_clean(); - header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - header('Content-Disposition: attachment; filename="'.urlencode($fileName).'"'); - $writer->save('php://output'); - exit; - } - - #[Route('/mm/api/subscriptions/print', methods: ['GET'])] - public function printSubscriptions(Request $request): void - { - $listIds = $request->query->get('ids'); - $document = $this->queryBus->printSubscriptions($this->convertToArrayOfIds($listIds)); - - exit; - } - - private function convertToArrayOfIds(string $ids): array - { - $arListIdsInt = []; - foreach (explode(',', $ids) as $id) { - $arListIdsInt[] = intval($id); - } - - return $arListIdsInt; - } - - // #[Route('/mm/api/subscribe', name: 'backend_subscribe', methods: ['POST', 'PUT'])] - // public function backendSubscribeAction(Request $request): JsonResponse - // { - // $jsonCommand = json_decode($request->request->get('subscription')); - // $response = $this->commandBus->WebSubscriptionAction($jsonCommand); - // - // return new JsonResponse($response, 200, $this->apiAccess); - // } - // - // #[Route('/mm/api/subscription/todo', name: 'get_todo_subscriptions', methods: ['GET'])] - // public function getTodoSubscriptions(): JsonResponse - // { - // // $response = $this->queryBus->getTodoSubscription(); - // // todo replace this with correct list - // $response = []; - // - // return new JsonResponse($response, 200, $this->apiAccess); - // } - // - // #[Route('/mm/api/subscription/active-period', methods: ['GET'])] - // public function getSubscriptionsByActivePeriod(): JsonResponse - // { - // $response = $this->queryBus->getSubscriptionsByActivePeriod(); - // - // return new JsonResponse($response, 200, $this->apiAccess); - // } - // - // #[Route('/mm/api/subscription/all', methods: ['GET'])] - // public function getAllSubscriptions(): JsonResponse - // { - // $response = $this->queryBus->getAllSubscriptions(); - // - // return new JsonResponse($response, 200, $this->apiAccess); - // } - // - // #[Route('/mm/api/subscription/mark-as-finished', methods: ['POST', 'PUT'])] - // public function markSubscriptionsAsFinished(Request $request): JsonResponse - // { - // $jsonCommand = json_decode($request->request->get('list-ids')); - // $response = $this->commandBus->markSubscriptionAsFinished($jsonCommand); - // - // return new JsonResponse($response, 200, $this->apiAccess); - // } - // - // #[Route('/mm/api/subscription/{id}', requirements: ['id' => '\d+'], methods: ['POST', 'PUT'])] - // public function changeSubscription(int $id, Request $request): JsonResponse - // { - // $jsonCommand = json_decode($request->request->get('subscription')); - // $response = $this->commandBus->changeSubscription($jsonCommand); - // - // return new JsonResponse($response, 200, $this->apiAccess); - // } - // - // #[Route('/mm/api/subscription/{id}/change-status', methods: ['POST', 'PUT'])] - // public function changeSubscriptionStatus(int $id, Request $request): JsonResponse - // { - // $jsonCommand = json_decode($request->request->get('change-status')); - // $response = $this->commandBus->changeSubscriptionStatus($jsonCommand); - // - // return new JsonResponse($response, 200, $this->apiAccess); - // } - // - // #[Route('/mm/api/subscription/{id}/mail-payment-information', methods: ['POST', 'PUT'])] - // public function sendPaymentOverviewMail(int $id, Request $request): JsonResponse - // { - // $response = $this->commandBus->sendPaymentOverviewMail($id); - // - // return new JsonResponse($response, 200, $this->apiAccess); - // } - // - // #[Route('/mm/api/subscription/{id}/connect-member', methods: ['POST', 'PUT'])] - // public function connectMemberToSubscription(int $id, Request $request): JsonResponse - // { - // $jsonCommand = json_decode($request->request->get('connect-member')); - // $response = $this->commandBus->connectSubscriptionToMember($jsonCommand); - // - // return new JsonResponse($response, 200, $this->apiAccess); - // } - // - // #[Route('/mm/api/subscription/{id}/create-member', methods: ['POST', 'PUT'])] - // public function createMemberFromSubscription(int $id, Request $request): JsonResponse - // { - // $response = $this->commandBus->createMemberFromSubscription($id); - // - // return new JsonResponse($response, 200, $this->apiAccess); - // } -} diff --git a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Message/message_routes.php b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Message/MessageRoutes.php similarity index 98% rename from application/YoshiKan/Infrastructure/Web/Controller/Routes/Message/message_routes.php rename to application/YoshiKan/Infrastructure/Web/Controller/Routes/Message/MessageRoutes.php index 3618809..2f1022f 100644 --- a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Message/message_routes.php +++ b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Message/MessageRoutes.php @@ -17,7 +17,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; -trait message_routes +trait MessageRoutes { /** * @throws \Exception diff --git a/application/YoshiKan/Infrastructure/Web/Controller/Routes/Product/ProductRoutes.php b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Product/ProductRoutes.php new file mode 100644 index 0000000..1c0b0f7 --- /dev/null +++ b/application/YoshiKan/Infrastructure/Web/Controller/Routes/Product/ProductRoutes.php @@ -0,0 +1,18 @@ +security->getUser(); + if (true === is_null($user)) { + return new JsonResponse(false, 200, $this->apiAccess); + } + $result = $this->commandBus->generateAndSendMemberAccessCode($user->getId()); /* @phpstan-ignore-line */ + + return new JsonResponse($result, 200, $this->apiAccess); + } + + #[Route('/mm/api/member/validate-access/{verificationCode}', requirements: ['verificationCode' => '\d+'], methods: ['GET'])] + public function validateAccessToTheMemberModule(Request $request, int $verificationCode): JsonResponse + { + $user = $this->security->getUser(); + if (true === is_null($user)) { + return new JsonResponse(false, 200, $this->apiAccess); + } + $result = $this->commandBus->validateMemberAccessCode($verificationCode, $user->getId()); /* @phpstan-ignore-line */ + + return new JsonResponse($result, 200, $this->apiAccess); + } +} diff --git a/assets/components/appInschrijving.vue b/assets/components/appInschrijving.vue index 1d59f43..dd329a0 100644 --- a/assets/components/appInschrijving.vue +++ b/assets/components/appInschrijving.vue @@ -182,28 +182,9 @@ - -
-
- Rijksregisternummer* -
-
- - - -
-
-
-
+
Geboortedatum*
@@ -524,30 +505,6 @@ onMounted(() => { loadSettings(); }); -function onChangeNationalNumber() { - if (subscription.value.nationalRegisterNumber.length === 2) { - let _year = subscription.value.nationalRegisterNumber; - if (_year > 50) { - subscription.value.dateOfBirthYYYY = '19' + _year; - } else { - subscription.value.dateOfBirthYYYY = '20' + _year; - } - } else if (subscription.value.nationalRegisterNumber.length === 5) { - let _month = subscription.value.nationalRegisterNumber.split('.')[1]; - subscription.value.dateOfBirthMM = _month; - } else if (subscription.value.nationalRegisterNumber.length === 8) { - let _day = subscription.value.nationalRegisterNumber.split('.')[2]; - subscription.value.dateOfBirthDD = _day; - } else if (subscription.value.nationalRegisterNumber.length === 12) { - let _dayNumber = subscription.value.nationalRegisterNumber.split('-')[1]; - let _dayNumberMod = parseInt(_dayNumber) % 2; - if (_dayNumberMod === 0) { - subscription.value.gender = 'V'; - } else { - subscription.value.gender = 'M'; - } - } -} function loadSettings() { axios.get('/inschrijving/api/configuration').then(response => (loadSettingsHandler(response.data))); @@ -627,10 +584,6 @@ const dateValidator = function (value) { return true; }; -const nationalRegisterNumberValidator = function (value) { - return (subscription.value.nationalRegisterNumber.length === 15); -} - const rules = { contactFirstname: {required}, contactLastname: {required}, @@ -640,7 +593,6 @@ const rules = { dateOfBirthDD: {required, numeric, maxValueValue: maxValue(31), minValueValue: minValue(1), dateValidator}, dateOfBirthMM: {required, numeric, maxValueValue: maxValue(12), minValueValue: minValue(1), dateValidator}, dateOfBirthYYYY: {required, numeric, minValueValue: minValue(1900), maxValueValue: maxValue(2400), dateValidator}, - nationalRegisterNumber: {nationalRegisterNumberValidator}, addressStreet: {required}, addressNumber: {required}, addressZip: {required}, @@ -659,7 +611,6 @@ const lastnameVariant = computed(() => v$.value.lastname.$invalid === false ? 's const dateOfBirthDDVariant = computed(() => v$.value.dateOfBirthDD.$invalid === false ? 'success' : 'danger'); const dateOfBirthMMVariant = computed(() => v$.value.dateOfBirthMM.$invalid === false ? 'success' : 'danger'); const dateOfBirthYYYVariant = computed(() => v$.value.dateOfBirthYYYY.$invalid === false ? 'success' : 'danger'); -const nationalRegisterNumberVariant = computed(() => v$.value.nationalRegisterNumber.$invalid === false ? 'success' : 'danger'); const addressStreetVariant = computed(() => v$.value.addressStreet.$invalid === false ? 'success' : 'danger'); const addressNumberVariant = computed(() => v$.value.addressNumber.$invalid === false ? 'success' : 'danger'); const addressZipVariant = computed(() => v$.value.addressZip.$invalid === false ? 'success' : 'danger'); diff --git a/assets/profileImage.js b/assets/profileImage.js index f83a699..e314060 100644 --- a/assets/profileImage.js +++ b/assets/profileImage.js @@ -1 +1,14 @@ import './styles/profileImage.css'; + +document.addEventListener('DOMContentLoaded', function () { + + var form = document.getElementById('uploadForm'); + var loadingDiv = document.getElementById('loadingDiv'); + var submitButton = document.getElementById('submitButton'); + + form.addEventListener('submit', function () { + loadingDiv.style.display = 'block'; + submitButton.style.display = 'none'; + }); + +}); diff --git a/assets/styles/app.css b/assets/styles/app.css index 9a46ed6..92bc2a8 100644 --- a/assets/styles/app.css +++ b/assets/styles/app.css @@ -116,6 +116,22 @@ footer { position: absolute; } +#paid-feedback { + background-color: white; + position: fixed; + display: block; + width: 500px; + margin-left:auto; + margin-right:auto; + top:120px; + box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.1), + 0px 3px 15px rgba(0, 0, 0, 0.1), + 0px 5px 30px rgba(0, 0, 0, 0.1), + 0px 8px 44px rgba(0, 0, 0, 0.1), + 0px 10px 59px rgba(0, 0, 0, 0.1), + 0px 13px 74px rgba(0, 0, 0, 0.1); +} + /* footer ------------------------------------------------------------------------ */ .footer-wrapper { diff --git a/composer.json b/composer.json index b882453..0e45709 100644 --- a/composer.json +++ b/composer.json @@ -19,11 +19,20 @@ "dompdf/dompdf": "^2.0", "fakerphp/faker": "^1.23", "jeschek/dragsort": "^1.0", + "mollie/mollie-api-php": "^2.64", "nelmio/security-bundle": "^2.12", "phpoffice/phpspreadsheet": "^1.26", + "resend/resend-php": "^0.10.0", + "sentry/sentry-symfony": "^4.13", "stof/doctrine-extensions-bundle": "^1.7", "symfony/flex": "^2.0", - "symfony/uid": "^5.1" + "symfony/uid": "^5.1", + "twig/cssinliner-extra": "^3.7", + "twig/extra-bundle": "^2.12|^3.0", + "twig/inky-extra": "^3.7", + "twig/intl-extra": "^3.8", + "twig/markdown-extra": "^3.7", + "twig/twig": "^2.12|^3.0" }, "minimum-stability": "stable", "prefer-stable": true, @@ -32,13 +41,17 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.13", + "pestphp/pest": "^1.23", "phpstan/phpstan": "^1.9.0", "phpstan/phpstan-doctrine": "^1.3.0", "phpstan/phpstan-symfony": "^1.2.0", "phpunit/phpunit": "^9.5", "qossmic/deptrac-shim": "^1.0", "symfony/phpunit-bridge": "^6.2", - "symplify/easy-coding-standard": "^9.4" + "symplify/easy-coding-standard": "^9.4", + "vimeo/psalm": "^5.19", + "weirdan/doctrine-psalm-plugin": "^2.9", + "psalm/plugin-symfony": "^5.1" }, "config": { "optimize-autoloader": true, @@ -49,7 +62,9 @@ "allow-plugins": { "composer/package-versions-deprecated": true, "drupol/composer-packages": true, - "symfony/flex": true + "symfony/flex": true, + "php-http/discovery": true, + "pestphp/pest-plugin": true } }, "extra": { diff --git a/composer.lock b/composer.lock index f86cab2..6d5f7bd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "48b20c64b95f032d5202267f540fdfaa", + "content-hash": "df6d86bdf1cf2d09b2ef6a3cd2891a26", "packages": [ { "name": "api-platform/core", - "version": "v2.7.15", + "version": "v2.7.16", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "dd433f76da60819cd01278b54e4fb70283302aa8" + "reference": "e6f77e20b4ed9cb3e44c7398d6cda971d32190b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/dd433f76da60819cd01278b54e4fb70283302aa8", - "reference": "dd433f76da60819cd01278b54e4fb70283302aa8", + "url": "https://api.github.com/repos/api-platform/core/zipball/e6f77e20b4ed9cb3e44c7398d6cda971d32190b0", + "reference": "e6f77e20b4ed9cb3e44c7398d6cda971d32190b0", "shasum": "" }, "require": { @@ -165,7 +165,7 @@ ], "support": { "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v2.7.15" + "source": "https://github.com/api-platform/core/tree/v2.7.16" }, "funding": [ { @@ -173,7 +173,7 @@ "type": "tidelift" } ], - "time": "2023-08-11T14:04:22+00:00" + "time": "2023-10-06T10:13:25+00:00" }, { "name": "babdev/pagerfanta-bundle", @@ -1124,6 +1124,141 @@ ], "time": "2023-01-15T23:15:59+00:00" }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "3c430083d0b41ceed84ecccf9dac613241d7305d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/3c430083d0b41ceed84ecccf9dac613241d7305d", + "reference": "3c430083d0b41ceed84ecccf9dac613241d7305d", + "shasum": "" + }, + "require": { + "php": "^7.1.8 || ^8.0" + }, + "conflict": { + "doctrine/dbal": ">=3.7.0" + }, + "require-dev": { + "doctrine/dbal": ">=2.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/1.0.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-10-01T12:35:29+00:00" + }, + { + "name": "clue/stream-filter", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/clue/stream-filter.git", + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/stream-filter/zipball/049509fef80032cb3f051595029ab75b49a3c2f7", + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "Clue\\StreamFilter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "A simple and modern approach to stream filtering in PHP", + "homepage": "https://github.com/clue/stream-filter", + "keywords": [ + "bucket brigade", + "callback", + "filter", + "php_user_filter", + "stream", + "stream_filter_append", + "stream_filter_register" + ], + "support": { + "issues": "https://github.com/clue/stream-filter/issues", + "source": "https://github.com/clue/stream-filter/tree/v1.7.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2023-12-20T15:40:13+00:00" + }, { "name": "cocur/slugify", "version": "v4.5.1", @@ -1200,16 +1335,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.3.7", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85" + "reference": "b66d11b7479109ab547f9405b97205640b17d385" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/76e46335014860eec1aa5a724799a00a2e47cc85", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/b66d11b7479109ab547f9405b97205640b17d385", + "reference": "b66d11b7479109ab547f9405b97205640b17d385", "shasum": "" }, "require": { @@ -1221,7 +1356,7 @@ "phpstan/phpstan": "^0.12.55", "psr/log": "^1.0", "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "extra": { @@ -1256,7 +1391,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.7" + "source": "https://github.com/composer/ca-bundle/tree/1.4.0" }, "funding": [ { @@ -1272,7 +1407,7 @@ "type": "tidelift" } ], - "time": "2023-08-30T09:31:38+00:00" + "time": "2023-12-18T12:05:55+00:00" }, { "name": "composer/class-map-generator", @@ -1349,16 +1484,16 @@ }, { "name": "composer/composer", - "version": "2.6.4", + "version": "2.6.6", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "d75d17c16a863438027d1d96401cddcd6aa5bb60" + "reference": "683557bd2466072777309d039534bb1332d0dda5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/d75d17c16a863438027d1d96401cddcd6aa5bb60", - "reference": "d75d17c16a863438027d1d96401cddcd6aa5bb60", + "url": "https://api.github.com/repos/composer/composer/zipball/683557bd2466072777309d039534bb1332d0dda5", + "reference": "683557bd2466072777309d039534bb1332d0dda5", "shasum": "" }, "require": { @@ -1376,7 +1511,7 @@ "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.2", "seld/signal-handler": "^2.0", - "symfony/console": "^5.4.11 || ^6.0.11 || ^7", + "symfony/console": "^5.4.11 || ^6.0.11", "symfony/filesystem": "^5.4 || ^6.0 || ^7", "symfony/finder": "^5.4 || ^6.0 || ^7", "symfony/polyfill-php73": "^1.24", @@ -1443,7 +1578,7 @@ "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", "security": "https://github.com/composer/composer/security/policy", - "source": "https://github.com/composer/composer/tree/2.6.4" + "source": "https://github.com/composer/composer/tree/2.6.6" }, "funding": [ { @@ -1459,7 +1594,7 @@ "type": "tidelift" } ], - "time": "2023-09-29T08:54:47+00:00" + "time": "2023-12-08T17:32:26+00:00" }, { "name": "composer/metadata-minifier", @@ -1605,16 +1740,16 @@ }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -1656,7 +1791,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -1672,7 +1807,7 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", @@ -1757,16 +1892,16 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.7", + "version": "1.5.8", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "c848241796da2abf65837d51dce1fae55a960149" + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", - "reference": "c848241796da2abf65837d51dce1fae55a960149", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", "shasum": "" }, "require": { @@ -1815,9 +1950,9 @@ "validator" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" + "source": "https://github.com/composer/spdx-licenses/tree/1.5.8" }, "funding": [ { @@ -1833,7 +1968,7 @@ "type": "tidelift" } ], - "time": "2022-05-23T07:37:50+00:00" + "time": "2023-11-20T07:44:33+00:00" }, { "name": "composer/xdebug-handler", @@ -1903,16 +2038,16 @@ }, { "name": "damienharper/auditor", - "version": "2.4.7", + "version": "2.4.8", "source": { "type": "git", "url": "https://github.com/DamienHarper/auditor.git", - "reference": "2fd4f3efaeb54bb837e98e54ddffd04e037f4419" + "reference": "bdfbaef161ec335d58d31e9cc90e3b6cd68e4504" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DamienHarper/auditor/zipball/2fd4f3efaeb54bb837e98e54ddffd04e037f4419", - "reference": "2fd4f3efaeb54bb837e98e54ddffd04e037f4419", + "url": "https://api.github.com/repos/DamienHarper/auditor/zipball/bdfbaef161ec335d58d31e9cc90e3b6cd68e4504", + "reference": "bdfbaef161ec335d58d31e9cc90e3b6cd68e4504", "shasum": "" }, "require": { @@ -1968,22 +2103,22 @@ ], "support": { "issues": "https://github.com/DamienHarper/auditor/issues", - "source": "https://github.com/DamienHarper/auditor/tree/2.4.7" + "source": "https://github.com/DamienHarper/auditor/tree/2.4.8" }, - "time": "2023-07-04T08:59:20+00:00" + "time": "2023-12-19T20:35:09+00:00" }, { "name": "damienharper/auditor-bundle", - "version": "5.2.4", + "version": "5.2.5", "source": { "type": "git", "url": "https://github.com/DamienHarper/auditor-bundle.git", - "reference": "f1c43175d14aeda10cae48a92d4ef5b053c6eec2" + "reference": "a03c399b3703fa5be1e69f166aa71f2adffdc43a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DamienHarper/auditor-bundle/zipball/f1c43175d14aeda10cae48a92d4ef5b053c6eec2", - "reference": "f1c43175d14aeda10cae48a92d4ef5b053c6eec2", + "url": "https://api.github.com/repos/DamienHarper/auditor-bundle/zipball/a03c399b3703fa5be1e69f166aa71f2adffdc43a", + "reference": "a03c399b3703fa5be1e69f166aa71f2adffdc43a", "shasum": "" }, "require": { @@ -2051,9 +2186,9 @@ ], "support": { "issues": "https://github.com/DamienHarper/auditor-bundle/issues", - "source": "https://github.com/DamienHarper/auditor-bundle/tree/5.2.4" + "source": "https://github.com/DamienHarper/auditor-bundle/tree/5.2.5" }, - "time": "2023-03-01T18:07:32+00:00" + "time": "2023-12-20T23:41:54+00:00" }, { "name": "doctrine/annotations", @@ -2578,29 +2713,25 @@ }, { "name": "doctrine/deprecations", - "version": "1.1.2", + "version": "v0.5.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", + "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^7.1|^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" + "doctrine/coding-standard": "^6.0|^7.0|^8.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0", + "psr/log": "^1.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -2619,9 +2750,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" }, - "time": "2023-09-27T20:04:15+00:00" + "time": "2021-03-21T12:59:47+00:00" }, { "name": "doctrine/doctrine-bundle", @@ -2739,16 +2870,16 @@ }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.4.4", + "version": "3.4.5", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "9ec3139c52a42e94c9fd1e95f8d2bca94326edfb" + "reference": "5988484f79362cd7d06564bd11be7ce622e08c87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/9ec3139c52a42e94c9fd1e95f8d2bca94326edfb", - "reference": "9ec3139c52a42e94c9fd1e95f8d2bca94326edfb", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/5988484f79362cd7d06564bd11be7ce622e08c87", + "reference": "5988484f79362cd7d06564bd11be7ce622e08c87", "shasum": "" }, "require": { @@ -2764,7 +2895,7 @@ "symfony/http-kernel": "^3.4|^4.3|^5.0|^6.0" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^9 || ^12", "phpstan/phpstan": "^1.4.10", "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", "symfony/phpunit-bridge": "^6.0.8", @@ -2802,7 +2933,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.4" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.5" }, "funding": [ { @@ -2818,38 +2949,44 @@ "type": "tidelift" } ], - "time": "2023-05-02T15:12:16+00:00" + "time": "2023-10-29T18:36:06+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.2.4", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e" + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e", - "reference": "94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1dd42906a5fb9c5960723e2ebb45c68006493835", + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "~1.0|~2.0", + "doctrine/doctrine-bundle": "^2.4", "doctrine/migrations": "^3.2", "php": "^7.2|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0" + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3||^2.0", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.6 || ^3", + "doctrine/persistence": "^2.0 || ^3 ", "phpstan/phpstan": "^1.4", "phpstan/phpstan-deprecation-rules": "^1", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.3", "phpunit/phpunit": "^8.5|^9.5", - "vimeo/psalm": "^4.22" + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^3 || ^5", + "symfony/phpunit-bridge": "^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6 || ^7", + "vimeo/psalm": "^4.30 || ^5.15" }, "type": "symfony-bundle", "autoload": { @@ -2887,7 +3024,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.4" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.0" }, "funding": [ { @@ -2903,7 +3040,7 @@ "type": "tidelift" } ], - "time": "2023-06-02T08:19:26+00:00" + "time": "2023-11-13T19:44:41+00:00" }, { "name": "doctrine/event-manager", @@ -2999,16 +3136,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.8", + "version": "2.0.9", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", "shasum": "" }, "require": { @@ -3070,7 +3207,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.8" + "source": "https://github.com/doctrine/inflector/tree/2.0.9" }, "funding": [ { @@ -3086,34 +3223,34 @@ "type": "tidelift" } ], - "time": "2023-06-16T13:40:37+00:00" + "time": "2024-01-15T18:05:13+00:00" }, { "name": "doctrine/instantiator", - "version": "2.0.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^11", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -3140,7 +3277,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { @@ -3156,37 +3293,35 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:23:10+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "doctrine/lexer", - "version": "2.1.0", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", + "doctrine/coding-standard": "^9.0", "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" + "vimeo/psalm": "^4.11" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -3218,7 +3353,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.0" + "source": "https://github.com/doctrine/lexer/tree/1.2.3" }, "funding": [ { @@ -3234,7 +3369,7 @@ "type": "tidelift" } ], - "time": "2022-12-14T08:49:07+00:00" + "time": "2022-02-28T11:07:21+00:00" }, { "name": "doctrine/migrations", @@ -3344,29 +3479,29 @@ }, { "name": "doctrine/orm", - "version": "2.16.2", + "version": "2.14.3", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0" + "reference": "a64f315dfeae5e50b17f132626fd9e9b4ec8985d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/17500f56eaa930f5cd14d765bc2cd851c7d37cc0", - "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0", + "url": "https://api.github.com/repos/doctrine/orm/zipball/a64f315dfeae5e50b17f132626fd9e9b4ec8985d", + "reference": "a64f315dfeae5e50b17f132626fd9e9b4ec8985d", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5 || ^2.1", + "doctrine/collections": "^1.5 || ^2.0", "doctrine/common": "^3.0.3", "doctrine/dbal": "^2.13.1 || ^3.2", "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", - "doctrine/instantiator": "^1.3 || ^2", - "doctrine/lexer": "^2", + "doctrine/instantiator": "^1.3", + "doctrine/lexer": "^1.2.3 || ^2", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", @@ -3380,16 +3515,16 @@ }, "require-dev": { "doctrine/annotations": "^1.13 || ^2", - "doctrine/coding-standard": "^9.0.2 || ^12.0", + "doctrine/coding-standard": "^9.0.2 || ^11.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.10.28", + "phpstan/phpstan": "~1.4.10 || 1.10.6", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.14.1" + "vimeo/psalm": "4.30.0 || 5.9.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -3439,45 +3574,45 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.16.2" + "source": "https://github.com/doctrine/orm/tree/2.14.3" }, - "time": "2023-08-27T18:21:56+00:00" + "time": "2023-04-20T09:46:32+00:00" }, { "name": "doctrine/persistence", - "version": "2.5.7", + "version": "2.5.1", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "e36f22765f4d10a7748228babbf73da5edfeed3c" + "reference": "4473480044c88f30e0e8288e7123b60c7eb9efa3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/e36f22765f4d10a7748228babbf73da5edfeed3c", - "reference": "e36f22765f4d10a7748228babbf73da5edfeed3c", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/4473480044c88f30e0e8288e7123b60c7eb9efa3", + "reference": "4473480044c88f30e0e8288e7123b60c7eb9efa3", "shasum": "" }, "require": { "doctrine/cache": "^1.11 || ^2.0", "doctrine/collections": "^1.0", - "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1 || ^2", + "doctrine/deprecations": "^0.5.3", + "doctrine/event-manager": "^1.0", "php": "^7.1 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/annotations": "<1.0 || >=3.0", + "doctrine/annotations": "<1.0 || >=2.0", "doctrine/common": "<2.10" }, "require-dev": { "composer/package-versions-deprecated": "^1.11", - "doctrine/annotations": "^1 || ^2", - "doctrine/coding-standard": "^9 || ^11", + "doctrine/annotations": "^1.0", + "doctrine/coding-standard": "^9.0", "doctrine/common": "^3.0", - "phpstan/phpstan": "~1.4.10 || 1.9.4", + "phpstan/phpstan": "~1.4.10 || 1.5.0", "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.3.0" + "vimeo/psalm": "4.22.0" }, "type": "library", "autoload": { @@ -3527,23 +3662,9 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/2.5.7" + "source": "https://github.com/doctrine/persistence/tree/2.5.1" }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fpersistence", - "type": "tidelift" - } - ], - "time": "2023-02-03T15:51:16+00:00" + "time": "2022-04-14T21:47:17+00:00" }, { "name": "doctrine/sql-formatter", @@ -3599,16 +3720,16 @@ }, { "name": "dompdf/dompdf", - "version": "v2.0.3", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "e8d2d5e37e8b0b30f0732a011295ab80680d7e85" + "reference": "093f2d9739cec57428e39ddadedfd4f3ae862c0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/e8d2d5e37e8b0b30f0732a011295ab80680d7e85", - "reference": "e8d2d5e37e8b0b30f0732a011295ab80680d7e85", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/093f2d9739cec57428e39ddadedfd4f3ae862c0f", + "reference": "093f2d9739cec57428e39ddadedfd4f3ae862c0f", "shasum": "" }, "require": { @@ -3655,9 +3776,9 @@ "homepage": "https://github.com/dompdf/dompdf", "support": { "issues": "https://github.com/dompdf/dompdf/issues", - "source": "https://github.com/dompdf/dompdf/tree/v2.0.3" + "source": "https://github.com/dompdf/dompdf/tree/v2.0.4" }, - "time": "2023-02-07T12:51:48+00:00" + "time": "2023-12-12T20:19:39+00:00" }, { "name": "drupol/composer-packages", @@ -3725,26 +3846,26 @@ }, { "name": "egulias/email-validator", - "version": "4.0.1", + "version": "3.2.6", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", "shasum": "" }, "require": { - "doctrine/lexer": "^2.0 || ^3.0", - "php": ">=8.1", - "symfony/polyfill-intl-idn": "^1.26" + "doctrine/lexer": "^1.2|^2", + "php": ">=7.2", + "symfony/polyfill-intl-idn": "^1.15" }, "require-dev": { - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^4.30" + "phpunit/phpunit": "^8.5.8|^9.3.3", + "vimeo/psalm": "^4" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -3752,7 +3873,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -3780,7 +3901,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" + "source": "https://github.com/egulias/EmailValidator/tree/3.2.6" }, "funding": [ { @@ -3788,7 +3909,7 @@ "type": "github" } ], - "time": "2023-01-14T14:17:03+00:00" + "time": "2023-06-01T07:04:22+00:00" }, { "name": "embed/embed", @@ -3915,20 +4036,20 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.16.0", + "version": "v4.17.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -3970,22 +4091,22 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" }, - "time": "2022-09-18T07:06:19+00:00" + "time": "2023-11-17T15:01:25+00:00" }, { "name": "fakerphp/faker", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { @@ -4011,11 +4132,6 @@ "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.21-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -4038,9 +4154,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" }, - "time": "2023-06-12T08:44:38+00:00" + "time": "2024-01-02T13:46:09+00:00" }, { "name": "friendsofphp/proxy-manager-lts", @@ -4252,36 +4368,42 @@ "time": "2023-09-06T13:16:12+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "2.6.1", + "name": "guzzlehttp/guzzle", + "version": "7.8.1", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" + "url": "https://github.com/guzzle/guzzle.git", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", - "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" + "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { @@ -4291,8 +4413,11 @@ } }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" + "GuzzleHttp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4310,6 +4435,11 @@ "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, { "name": "George Mponos", "email": "gmponos@gmail.com", @@ -4329,27 +4459,23 @@ "name": "Tobias Schultze", "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" } ], - "description": "PSR-7 message implementation that also provides common utility methods", + "description": "Guzzle is a PHP HTTP client library", "keywords": [ + "client", + "curl", + "framework", "http", - "message", + "http client", + "psr-18", "psr-7", - "request", - "response", - "stream", - "uri", - "url" + "rest", + "web service" ], "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.1" + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -4361,57 +4487,43 @@ "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", "type": "tidelift" } ], - "time": "2023-08-27T10:13:57+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { - "name": "intervention/image", - "version": "2.7.2", + "name": "guzzlehttp/promises", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/Intervention/image.git", - "reference": "04be355f8d6734c826045d02a1079ad658322dad" + "url": "https://github.com/guzzle/promises.git", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", - "reference": "04be355f8d6734c826045d02a1079ad658322dad", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "guzzlehttp/psr7": "~1.1 || ^2.0", - "php": ">=5.4.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "mockery/mockery": "~0.9.2", - "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" - }, - "suggest": { - "ext-gd": "to use GD library based image processing.", - "ext-imagick": "to use Imagick based image processing.", - "intervention/imagecache": "Caching extension for the Intervention Image library" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - }, - "laravel": { - "providers": [ - "Intervention\\Image\\ImageServiceProvider" - ], - "aliases": { - "Image": "Intervention\\Image\\Facades\\Image" - } + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { "psr-4": { - "Intervention\\Image\\": "src/Intervention/Image" + "GuzzleHttp\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4420,69 +4532,92 @@ ], "authors": [ { - "name": "Oliver Vogel", - "email": "oliver@intervention.io", - "homepage": "https://intervention.io/" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], - "description": "Image handling and manipulation library with support for Laravel integration", - "homepage": "http://image.intervention.io/", + "description": "Guzzle promises library", "keywords": [ - "gd", - "image", - "imagick", - "laravel", - "thumbnail", - "watermark" + "promise" ], "support": { - "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/2.7.2" + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { - "url": "https://paypal.me/interventionio", - "type": "custom" + "url": "https://github.com/GrahamCampbell", + "type": "github" }, { - "url": "https://github.com/Intervention", + "url": "https://github.com/Nyholm", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" } ], - "time": "2022-05-21T17:30:32+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { - "name": "jasny/twig-extensions", - "version": "v1.3.0", + "name": "guzzlehttp/psr7", + "version": "2.6.2", "source": { "type": "git", - "url": "https://github.com/jasny/twig-extensions.git", - "reference": "a694eb02f6fc14ff8e2fceb8b80882c0c926102b" + "url": "https://github.com/guzzle/psr7.git", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jasny/twig-extensions/zipball/a694eb02f6fc14ff8e2fceb8b80882c0c926102b", - "reference": "a694eb02f6fc14ff8e2fceb8b80882c0c926102b", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { - "php": ">=7.0.0", - "twig/twig": "^2.0 | ^3.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-intl": "*", - "ext-pcre": "*", - "jasny/php-code-quality": "^2.5", - "php": ">=7.2.0" + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { - "ext-intl": "Required for the use of the LocalDate Twig extension", - "ext-pcre": "Required for the use of the PCRE Twig extension" + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { "psr-4": { - "Jasny\\Twig\\": "src/" + "GuzzleHttp\\Psr7\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4491,59 +4626,105 @@ ], "authors": [ { - "name": "Arnold Daniels", - "email": "arnold@jasny.net", - "homepage": "http://www.jasny.net" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], - "description": "A set of useful Twig filters", - "homepage": "http://github.com/jasny/twig-extensions#README", + "description": "PSR-7 message implementation that also provides common utility methods", "keywords": [ - "PCRE", - "array", - "date", - "datetime", - "preg", - "regex", - "templating", - "text", - "time" + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" ], "support": { - "issues": "https://github.com/jasny/twig-extensions/issues", - "source": "https://github.com/jasny/twig-extensions" + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, - "time": "2019-12-10T16:04:23+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:05:35+00:00" }, { - "name": "jeschek/dragsort", - "version": "1.0.5", + "name": "http-interop/http-factory-guzzle", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/philippjeschek/bolt-dragsort.git", - "reference": "0e3522002e59536765376fd1c8621ba114d12558" + "url": "https://github.com/http-interop/http-factory-guzzle.git", + "reference": "8f06e92b95405216b237521cc64c804dd44c4a81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/philippjeschek/bolt-dragsort/zipball/0e3522002e59536765376fd1c8621ba114d12558", - "reference": "0e3522002e59536765376fd1c8621ba114d12558", + "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/8f06e92b95405216b237521cc64c804dd44c4a81", + "reference": "8f06e92b95405216b237521cc64c804dd44c4a81", "shasum": "" }, "require": { - "php": "^8.0", - "twig/twig": "^2.12 | ^3.0" + "guzzlehttp/psr7": "^1.7||^2.0", + "php": ">=7.3", + "psr/http-factory": "^1.0" + }, + "provide": { + "psr/http-factory-implementation": "^1.0" }, "require-dev": { - "bolt/core": "^5.1", - "symplify/easy-coding-standard": "^9.4" + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^9.5" }, - "type": "bolt-extension", - "extra": { - "entrypoint": "Jeschek\\DragSort\\Extension" + "suggest": { + "guzzlehttp/psr7": "Includes an HTTP factory starting in version 2.0" }, + "type": "library", "autoload": { "psr-4": { - "Jeschek\\DragSort\\": "src/" + "Http\\Factory\\Guzzle\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4552,51 +4733,68 @@ ], "authors": [ { - "name": "Philipp Jeschek", - "email": "mail@philippjeschek.me" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "This extension enables drag and drop sorting for records in the backend.", + "description": "An HTTP Factory using Guzzle PSR7", + "keywords": [ + "factory", + "http", + "psr-17", + "psr-7" + ], "support": { - "issues": "https://github.com/philippjeschek/bolt-dragsort/issues", - "source": "https://github.com/philippjeschek/bolt-dragsort/tree/1.0.5" + "issues": "https://github.com/http-interop/http-factory-guzzle/issues", + "source": "https://github.com/http-interop/http-factory-guzzle/tree/1.2.0" }, - "time": "2022-04-07T09:28:14+00:00" + "time": "2021-07-21T13:50:14+00:00" }, { - "name": "justinrainbow/json-schema", - "version": "v5.2.13", + "name": "intervention/image", + "version": "2.7.2", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" + "url": "https://github.com/Intervention/image.git", + "reference": "04be355f8d6734c826045d02a1079ad658322dad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", - "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", + "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", + "reference": "04be355f8d6734c826045d02a1079ad658322dad", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ext-fileinfo": "*", + "guzzlehttp/psr7": "~1.1 || ^2.0", + "php": ">=5.4.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" }, - "bin": [ - "bin/validate-json" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0.x-dev" + "dev-master": "2.4-dev" + }, + "laravel": { + "providers": [ + "Intervention\\Image\\ImageServiceProvider" + ], + "aliases": { + "Image": "Intervention\\Image\\Facades\\Image" + } } }, "autoload": { "psr-4": { - "JsonSchema\\": "src/JsonSchema/" + "Intervention\\Image\\": "src/Intervention/Image" } }, "notification-url": "https://packagist.org/downloads/", @@ -4605,61 +4803,305 @@ ], "authors": [ { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" } ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", "keywords": [ - "json", - "schema" + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" ], "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/2.7.2" }, - "time": "2023-09-26T02:20:38+00:00" + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + } + ], + "time": "2022-05-21T17:30:32+00:00" }, { - "name": "kevinlebrun/colors.php", - "version": "0.4.1", + "name": "jasny/twig-extensions", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/kevinlebrun/colors.php.git", - "reference": "d132f36d06e48ea080855af19b4bcb1fb615224a" + "url": "https://github.com/jasny/twig-extensions.git", + "reference": "a694eb02f6fc14ff8e2fceb8b80882c0c926102b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kevinlebrun/colors.php/zipball/d132f36d06e48ea080855af19b4bcb1fb615224a", - "reference": "d132f36d06e48ea080855af19b4bcb1fb615224a", + "url": "https://api.github.com/repos/jasny/twig-extensions/zipball/a694eb02f6fc14ff8e2fceb8b80882c0c926102b", + "reference": "a694eb02f6fc14ff8e2fceb8b80882c0c926102b", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.0.0", + "twig/twig": "^2.0 | ^3.0" }, "require-dev": { - "phpunit/phpunit": "3.7.*", - "satooshi/php-coveralls": "dev-master", - "squizlabs/php_codesniffer": "1.*" + "ext-intl": "*", + "ext-pcre": "*", + "jasny/php-code-quality": "^2.5", + "php": ">=7.2.0" + }, + "suggest": { + "ext-intl": "Required for the use of the LocalDate Twig extension", + "ext-pcre": "Required for the use of the PCRE Twig extension" }, "type": "library", "autoload": { - "psr-0": { - "Colors": "src/" - } + "psr-4": { + "Jasny\\Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arnold Daniels", + "email": "arnold@jasny.net", + "homepage": "http://www.jasny.net" + } + ], + "description": "A set of useful Twig filters", + "homepage": "http://github.com/jasny/twig-extensions#README", + "keywords": [ + "PCRE", + "array", + "date", + "datetime", + "preg", + "regex", + "templating", + "text", + "time" + ], + "support": { + "issues": "https://github.com/jasny/twig-extensions/issues", + "source": "https://github.com/jasny/twig-extensions" + }, + "time": "2019-12-10T16:04:23+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.17", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^0.12.66", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + }, + "time": "2021-10-08T21:21:46+00:00" + }, + { + "name": "jeschek/dragsort", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/philippjeschek/bolt-dragsort.git", + "reference": "0e3522002e59536765376fd1c8621ba114d12558" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/philippjeschek/bolt-dragsort/zipball/0e3522002e59536765376fd1c8621ba114d12558", + "reference": "0e3522002e59536765376fd1c8621ba114d12558", + "shasum": "" + }, + "require": { + "php": "^8.0", + "twig/twig": "^2.12 | ^3.0" + }, + "require-dev": { + "bolt/core": "^5.1", + "symplify/easy-coding-standard": "^9.4" + }, + "type": "bolt-extension", + "extra": { + "entrypoint": "Jeschek\\DragSort\\Extension" + }, + "autoload": { + "psr-4": { + "Jeschek\\DragSort\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Philipp Jeschek", + "email": "mail@philippjeschek.me" + } + ], + "description": "This extension enables drag and drop sorting for records in the backend.", + "support": { + "issues": "https://github.com/philippjeschek/bolt-dragsort/issues", + "source": "https://github.com/philippjeschek/bolt-dragsort/tree/1.0.5" + }, + "time": "2022-04-07T09:28:14+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "v5.2.13", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "support": { + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" + }, + "time": "2023-09-26T02:20:38+00:00" + }, + { + "name": "kevinlebrun/colors.php", + "version": "0.4.1", + "source": { + "type": "git", + "url": "https://github.com/kevinlebrun/colors.php.git", + "reference": "d132f36d06e48ea080855af19b4bcb1fb615224a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kevinlebrun/colors.php/zipball/d132f36d06e48ea080855af19b4bcb1fb615224a", + "reference": "d132f36d06e48ea080855af19b4bcb1fb615224a", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*", + "satooshi/php-coveralls": "dev-master", + "squizlabs/php_codesniffer": "1.*" + }, + "type": "library", + "autoload": { + "psr-0": { + "Colors": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4850,28 +5292,29 @@ }, { "name": "knplabs/knp-menu-bundle", - "version": "v3.2.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpMenuBundle.git", - "reference": "a0b4224f872d74ae939589eb1ccf0e11291370a9" + "reference": "02a2c68a2d6247a21c1d5ed185e2e3e3d9e7dfb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/a0b4224f872d74ae939589eb1ccf0e11291370a9", - "reference": "a0b4224f872d74ae939589eb1ccf0e11291370a9", + "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/02a2c68a2d6247a21c1d5ed185e2e3e3d9e7dfb5", + "reference": "02a2c68a2d6247a21c1d5ed185e2e3e3d9e7dfb5", "shasum": "" }, "require": { - "knplabs/knp-menu": "^3.1", - "php": "^7.2 || ^8.0", - "symfony/framework-bundle": "^3.4 | ^4.4 | ^5.0 | ^6.0" + "knplabs/knp-menu": "^3.3", + "php": "^8.0", + "symfony/deprecation-contracts": "^2.5 | ^3.3", + "symfony/framework-bundle": "^5.4 | ^6.0 | ^7.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 | ^9.5", - "symfony/expression-language": "^3.4 | ^4.4 | ^5.0 | ^6.0", - "symfony/phpunit-bridge": "^5.2 | ^6.0", - "symfony/templating": "^3.4 | ^4.4 | ^5.0 | ^6.0" + "phpunit/phpunit": "^9.6 | ^10.1", + "symfony/expression-language": "^5.4 | ^6.0 | ^7.0", + "symfony/phpunit-bridge": "^6.0 | ^7.0", + "symfony/templating": "^5.4 | ^6.0 | ^7.0" }, "type": "symfony-bundle", "extra": { @@ -4908,35 +5351,35 @@ ], "support": { "issues": "https://github.com/KnpLabs/KnpMenuBundle/issues", - "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.2.0" + "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.3.0" }, - "time": "2021-10-24T07:53:34+00:00" + "time": "2023-11-01T09:25:40+00:00" }, { "name": "laminas/laminas-code", - "version": "4.12.0", + "version": "4.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0" + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/36cbee228b427446419dd51944bdfb6bb8ddbcd0", - "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf", + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "doctrine/annotations": "^2.0.0", + "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.3.0", - "laminas/laminas-stdlib": "^3.6.1", - "phpunit/phpunit": "^10.0.9", + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-stdlib": "^3.17.0", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.7.1" + "vimeo/psalm": "^5.15.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", @@ -4973,58 +5416,56 @@ "type": "community_bridge" } ], - "time": "2023-09-06T14:56:25+00:00" + "time": "2023-10-18T10:00:55+00:00" }, { "name": "league/flysystem", - "version": "1.1.10", + "version": "3.23.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1" + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1", - "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "league/mime-type-detection": "^1.3", - "php": "^7.2.5 || ^8.0" + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" }, "conflict": { - "league/flysystem-sftp": "<1.0.6" + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" }, "require-dev": { - "phpspec/prophecy": "^1.11.1", - "phpunit/phpunit": "^8.5.8" - }, - "suggest": { - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.220.0", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "microsoft/azure-storage-blob": "^1.1", + "phpseclib/phpseclib": "^3.0.34", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.3.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { "psr-4": { - "League\\Flysystem\\": "src/" + "League\\Flysystem\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -5034,75 +5475,63 @@ "authors": [ { "name": "Frank de Jonge", - "email": "info@frenky.net" + "email": "info@frankdejonge.nl" } ], - "description": "Filesystem abstraction: Many filesystems, one API.", + "description": "File storage abstraction for PHP", "keywords": [ - "Cloud Files", "WebDAV", - "abstraction", "aws", "cloud", - "copy.com", - "dropbox", - "file systems", + "file", "files", "filesystem", "filesystems", "ftp", - "rackspace", - "remote", "s3", "sftp", "storage" ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.1.10" + "source": "https://github.com/thephpleague/flysystem/tree/3.23.0" }, "funding": [ { - "url": "https://offset.earth/frankdejonge", - "type": "other" + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" } ], - "time": "2022-10-04T09:16:37+00:00" + "time": "2023-12-04T10:16:17+00:00" }, { - "name": "league/glide", - "version": "1.7.2", + "name": "league/flysystem-local", + "version": "3.23.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/glide.git", - "reference": "8dba756ada0b8e525bf6f1f7d1bd83c1e99e124e" + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/glide/zipball/8dba756ada0b8e525bf6f1f7d1bd83c1e99e124e", - "reference": "8dba756ada0b8e525bf6f1f7d1bd83c1e99e124e", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/5cf046ba5f059460e86a997c504dd781a39a109b", + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b", "shasum": "" }, "require": { - "intervention/image": "^2.4", - "league/flysystem": "^1.0", - "php": "^7.2|^8.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^1.3.3", - "phpunit/php-token-stream": "^3.1|^4.0", - "phpunit/phpunit": "^8.5|^9.0" + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { "psr-4": { - "League\\Glide\\": "src/" + "League\\Flysystem\\Local\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -5111,10 +5540,75 @@ ], "authors": [ { - "name": "Jonathan Reinink", - "email": "jonathan@reinink.ca", - "homepage": "http://reinink.ca" - }, + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem-local/issues", + "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-12-04T10:14:46+00:00" + }, + { + "name": "league/glide", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/glide.git", + "reference": "2ff92c8f1edc80b74e2d3c5efccfc7223f74d407" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/glide/zipball/2ff92c8f1edc80b74e2d3c5efccfc7223f74d407", + "reference": "2ff92c8f1edc80b74e2d3c5efccfc7223f74d407", + "shasum": "" + }, + "require": { + "intervention/image": "^2.7", + "league/flysystem": "^2.0|^3.0", + "php": "^7.2|^8.0", + "psr/http-message": "^1.0|^2.0" + }, + "require-dev": { + "mockery/mockery": "^1.3.3", + "phpunit/php-token-stream": "^3.1|^4.0", + "phpunit/phpunit": "^8.5|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Glide\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Reinink", + "email": "jonathan@reinink.ca", + "homepage": "http://reinink.ca" + }, { "name": "Titouan Galopin", "email": "galopintitouan@gmail.com", @@ -5135,31 +5629,31 @@ ], "support": { "issues": "https://github.com/thephpleague/glide/issues", - "source": "https://github.com/thephpleague/glide/tree/1.7.2" + "source": "https://github.com/thephpleague/glide/tree/2.3.0" }, - "time": "2023-02-14T06:26:04+00:00" + "time": "2023-07-08T06:26:07+00:00" }, { "name": "league/glide-symfony", - "version": "1.1.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/thephpleague/glide-symfony.git", - "reference": "8162ec0e0b070e53e88a840a67208ec4baec9291" + "reference": "8d0b117d5335699c374288a7cd6a041b7612e198" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/glide-symfony/zipball/8162ec0e0b070e53e88a840a67208ec4baec9291", - "reference": "8162ec0e0b070e53e88a840a67208ec4baec9291", + "url": "https://api.github.com/repos/thephpleague/glide-symfony/zipball/8d0b117d5335699c374288a7cd6a041b7612e198", + "reference": "8d0b117d5335699c374288a7cd6a041b7612e198", "shasum": "" }, "require": { - "league/glide": "^1.0", - "symfony/http-foundation": "^2.3|^3.0|^4.0|^5.0" + "league/glide": "^2.0", + "symfony/http-foundation": "^2.3|^3.0|^4.0|^5.0|^6.0" }, "require-dev": { - "mockery/mockery": "^0.9", - "phpunit/phpunit": "^4.0" + "mockery/mockery": "^1.3.3", + "phpunit/phpunit": "^8.5|^9.4" }, "type": "library", "autoload": { @@ -5182,22 +5676,22 @@ "homepage": "http://glide.thephpleague.com", "support": { "issues": "https://github.com/thephpleague/glide-symfony/issues", - "source": "https://github.com/thephpleague/glide-symfony/tree/1.0.4" + "source": "https://github.com/thephpleague/glide-symfony/tree/1.1.0" }, - "time": "2020-03-05T12:38:10+00:00" + "time": "2021-12-01T13:25:09+00:00" }, { "name": "league/mime-type-detection", - "version": "1.13.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", - "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", "shasum": "" }, "require": { @@ -5228,7 +5722,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" }, "funding": [ { @@ -5240,7 +5734,60 @@ "type": "tidelift" } ], - "time": "2023-08-05T12:09:49+00:00" + "time": "2023-10-17T14:13:20+00:00" + }, + { + "name": "lorenzo/pinky", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/lorenzo/pinky.git", + "reference": "e1b1bdb2c132b8a7ba32bca64d2443f646ddbd17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lorenzo/pinky/zipball/e1b1bdb2c132b8a7ba32bca64d2443f646ddbd17", + "reference": "e1b1bdb2c132b8a7ba32bca64d2443f646ddbd17", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xsl": "*", + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "autoload": { + "files": [ + "src/pinky.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jose Lorenzo Rodriguez", + "email": "jose.zap@gmail.com" + } + ], + "description": "A Foundation for Emails (Inky) template transpiler", + "keywords": [ + "email", + "foundation", + "inky", + "template", + "zurb" + ], + "support": { + "issues": "https://github.com/lorenzo/pinky/issues", + "source": "https://github.com/lorenzo/pinky/tree/1.1.0" + }, + "time": "2023-07-31T13:36:50+00:00" }, { "name": "maennchen/zipstream-php", @@ -5557,18 +6104,110 @@ }, "time": "2019-02-11T13:47:52+00:00" }, + { + "name": "mollie/mollie-api-php", + "version": "v2.64.0", + "source": { + "type": "git", + "url": "https://github.com/mollie/mollie-api-php.git", + "reference": "b54e0b05b98e15233d89724933c42c249d4b13d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/b54e0b05b98e15233d89724933c42c249d4b13d4", + "reference": "b54e0b05b98e15233d89724933c42c249d4b13d4", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.2", + "ext-curl": "*", + "ext-json": "*", + "ext-openssl": "*", + "php": "^7.2|^8.0" + }, + "require-dev": { + "eloquent/liberator": "^2.0||^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "guzzlehttp/guzzle": "^6.3 || ^7.0", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^8.5 || ^9.5" + }, + "suggest": { + "mollie/oauth2-mollie-php": "Use OAuth to authenticate with the Mollie API. This is needed for some endpoints. Visit https://docs.mollie.com/ for more information." + }, + "type": "library", + "autoload": { + "psr-4": { + "Mollie\\Api\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Mollie B.V.", + "email": "info@mollie.com" + } + ], + "description": "Mollie API client library for PHP. Mollie is a European Payment Service provider and offers international payment methods such as Mastercard, VISA, American Express and PayPal, and local payment methods such as iDEAL, Bancontact, SOFORT Banking, SEPA direct debit, Belfius Direct Net, KBC Payment Button and various gift cards such as Podiumcadeaukaart and fashioncheque.", + "homepage": "https://www.mollie.com/en/developers", + "keywords": [ + "Apple Pay", + "CBC", + "Przelewy24", + "api", + "bancontact", + "banktransfer", + "belfius", + "belfius direct net", + "charges", + "creditcard", + "direct debit", + "fashioncheque", + "gateway", + "gift cards", + "ideal", + "inghomepay", + "intersolve", + "kbc", + "klarna", + "mistercash", + "mollie", + "paylater", + "payment", + "payments", + "paypal", + "paysafecard", + "podiumcadeaukaart", + "recurring", + "refunds", + "sepa", + "service", + "sliceit", + "sofort", + "sofortbanking", + "subscriptions" + ], + "support": { + "issues": "https://github.com/mollie/mollie-api-php/issues", + "source": "https://github.com/mollie/mollie-api-php/tree/v2.64.0" + }, + "time": "2023-12-19T16:06:39+00:00" + }, { "name": "monolog/monolog", - "version": "2.9.1", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", "shasum": "" }, "require": { @@ -5645,7 +6284,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" }, "funding": [ { @@ -5657,7 +6296,7 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:44:46+00:00" + "time": "2023-10-27T15:25:26+00:00" }, { "name": "nelexa/zip", @@ -5734,25 +6373,25 @@ }, { "name": "nelmio/cors-bundle", - "version": "2.3.1", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "185d2c0ae50a3f0b628790170164d5f1c5b7c281" + "reference": "78fcdb91f76b080a1008133def9c7f613833933d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/185d2c0ae50a3f0b628790170164d5f1c5b7c281", - "reference": "185d2c0ae50a3f0b628790170164d5f1c5b7c281", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/78fcdb91f76b080a1008133def9c7f613833933d", + "reference": "78fcdb91f76b080a1008133def9c7f613833933d", "shasum": "" }, "require": { "psr/log": "^1.0 || ^2.0 || ^3.0", - "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0" + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "mockery/mockery": "^1.2", - "symfony/phpunit-bridge": "^4.4 || ^5.4 || ^6.0" + "mockery/mockery": "^1.3.6", + "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { @@ -5790,9 +6429,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", - "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.3.1" + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.4.0" }, - "time": "2023-02-16T08:49:29+00:00" + "time": "2023-11-30T16:41:19+00:00" }, { "name": "nelmio/security-bundle", @@ -5864,19 +6503,20 @@ }, { "name": "nesbot/carbon", - "version": "2.71.0", + "version": "2.72.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "98276233188583f2ff845a0f992a235472d9466a" + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/98276233188583f2ff845a0f992a235472d9466a", - "reference": "98276233188583f2ff845a0f992a235472d9466a", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", "shasum": "" }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", "php": "^7.1.8 || ^8.0", "psr/clock": "^1.0", @@ -5888,8 +6528,8 @@ "psr/clock-implementation": "1.0" }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", "ondrejmirtes/better-reflection": "*", @@ -5966,7 +6606,7 @@ "type": "tidelift" } ], - "time": "2023-09-25T11:31:05+00:00" + "time": "2023-12-08T23:47:49+00:00" }, { "name": "nette/utils", @@ -6056,16 +6696,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -6106,9 +6746,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "nyholm/nsa", @@ -6265,23 +6905,23 @@ }, { "name": "phenx/php-font-lib", - "version": "0.5.4", + "version": "0.5.5", "source": { "type": "git", "url": "https://github.com/dompdf/php-font-lib.git", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4" + "reference": "671df0f3516252011aa94f9e8e3b3b66199339f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/671df0f3516252011aa94f9e8e3b3b66199339f8", + "reference": "671df0f3516252011aa94f9e8e3b3b66199339f8", "shasum": "" }, "require": { "ext-mbstring": "*" }, "require-dev": { - "symfony/phpunit-bridge": "^3 || ^4 || ^5" + "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6" }, "type": "library", "autoload": { @@ -6291,7 +6931,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0" + "LGPL-2.1-or-later" ], "authors": [ { @@ -6303,22 +6943,22 @@ "homepage": "https://github.com/PhenX/php-font-lib", "support": { "issues": "https://github.com/dompdf/php-font-lib/issues", - "source": "https://github.com/dompdf/php-font-lib/tree/0.5.4" + "source": "https://github.com/dompdf/php-font-lib/tree/0.5.5" }, - "time": "2021-12-17T19:44:54+00:00" + "time": "2024-01-07T18:13:29+00:00" }, { "name": "phenx/php-svg-lib", - "version": "0.5.0", + "version": "0.5.1", "source": { "type": "git", "url": "https://github.com/dompdf/php-svg-lib.git", - "reference": "76876c6cf3080bcb6f249d7d59705108166a6685" + "reference": "8a8a1ebcf6aea861ef30197999f096f7bd4b4456" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/76876c6cf3080bcb6f249d7d59705108166a6685", - "reference": "76876c6cf3080bcb6f249d7d59705108166a6685", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/8a8a1ebcf6aea861ef30197999f096f7bd4b4456", + "reference": "8a8a1ebcf6aea861ef30197999f096f7bd4b4456", "shasum": "" }, "require": { @@ -6349,36 +6989,53 @@ "homepage": "https://github.com/PhenX/php-svg-lib", "support": { "issues": "https://github.com/dompdf/php-svg-lib/issues", - "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.0" + "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.1" }, - "time": "2022-09-06T12:16:56+00:00" + "time": "2023-12-11T20:56:08+00:00" }, { - "name": "php-translation/common", - "version": "3.2.0", + "name": "php-http/client-common", + "version": "2.7.1", "source": { "type": "git", - "url": "https://github.com/php-translation/common.git", - "reference": "986ddf4e3b2b3458d2a7353658bd40764d8ca1d1" + "url": "https://github.com/php-http/client-common.git", + "reference": "1e19c059b0e4d5f717bf5d524d616165aeab0612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-translation/common/zipball/986ddf4e3b2b3458d2a7353658bd40764d8ca1d1", - "reference": "986ddf4e3b2b3458d2a7353658bd40764d8ca1d1", + "url": "https://api.github.com/repos/php-http/client-common/zipball/1e19c059b0e4d5f717bf5d524d616165aeab0612", + "reference": "1e19c059b0e4d5f717bf5d524d616165aeab0612", "shasum": "" }, "require": { - "php": ">=7.2", - "symfony/translation": " ^3.4 || ^4.3 || ^5.0 || ^6.0" + "php": "^7.1 || ^8.0", + "php-http/httplug": "^2.0", + "php-http/message": "^1.6", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 || ^2.0", + "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.17" }, "require-dev": { - "phpunit/phpunit": "^8.4", - "symfony/phpunit-bridge": "^4.3 || ^5.0 || ^6.0" + "doctrine/instantiator": "^1.1", + "guzzlehttp/psr7": "^1.4", + "nyholm/psr7": "^1.2", + "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", + "phpspec/prophecy": "^1.10.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.33 || ^9.6.7" + }, + "suggest": { + "ext-json": "To detect JSON responses with the ContentTypePlugin", + "ext-libxml": "To detect XML responses with the ContentTypePlugin", + "php-http/cache-plugin": "PSR-6 Cache plugin", + "php-http/logger-plugin": "PSR-3 Logger plugin", + "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" }, "type": "library", "autoload": { "psr-4": { - "Translation\\Common\\": "src/" + "Http\\Client\\Common\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6387,55 +7044,73 @@ ], "authors": [ { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "Common translation stuff", + "description": "Common HTTP Client implementations and tools for HTTPlug", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "common", + "http", + "httplug" + ], "support": { - "issues": "https://github.com/php-translation/common/issues", - "source": "https://github.com/php-translation/common/tree/3.2.0" + "issues": "https://github.com/php-http/client-common/issues", + "source": "https://github.com/php-http/client-common/tree/2.7.1" }, - "time": "2022-02-04T11:49:38+00:00" + "time": "2023-11-30T10:31:25+00:00" }, { - "name": "php-translation/extractor", - "version": "2.1.1", + "name": "php-http/discovery", + "version": "1.19.2", "source": { "type": "git", - "url": "https://github.com/php-translation/extractor.git", - "reference": "09ad2f3654e6badb95a739b0284f5785531f7c8d" + "url": "https://github.com/php-http/discovery.git", + "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-translation/extractor/zipball/09ad2f3654e6badb95a739b0284f5785531f7c8d", - "reference": "09ad2f3654e6badb95a739b0284f5785531f7c8d", + "url": "https://api.github.com/repos/php-http/discovery/zipball/61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", + "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", "shasum": "" }, "require": { - "doctrine/annotations": "^1.7 || ^2.0", - "nikic/php-parser": "^3.0 || ^4.0", - "php": "^7.2 || ^8.0", - "symfony/finder": "^3.4 || ^4.4 || ^5.0 || ^6.0", - "twig/twig": "^2.0 || ^3.0" + "composer-plugin-api": "^1.0|^2.0", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "*", + "psr/http-factory-implementation": "*", + "psr/http-message-implementation": "*" }, "require-dev": { - "knplabs/knp-menu": "^3.1", - "symfony/phpunit-bridge": "^5.0 || ^6.0", - "symfony/translation": "^3.4 || ^4.4 || ^5.0 || ^6.0", - "symfony/twig-bridge": "^3.4 || ^4.4 || ^5.0 || ^6.0", - "symfony/validator": "^3.4 || ^4.4 || ^5.0 || ^6.0" + "composer/composer": "^1.0.2|^2.0", + "graham-campbell/phpspec-skip-example-extension": "^5.0", + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", + "symfony/phpunit-bridge": "^6.2" }, - "type": "library", + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true }, "autoload": { "psr-4": { - "Translation\\Extractor\\": "src/" - } + "Http\\Discovery\\": "src/" + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6443,77 +7118,57 @@ ], "authors": [ { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "Extract translations form the source code", + "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", + "homepage": "http://php-http.org", + "keywords": [ + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr17", + "psr7" + ], "support": { - "issues": "https://github.com/php-translation/extractor/issues", - "source": "https://github.com/php-translation/extractor/tree/2.1.1" + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.19.2" }, - "time": "2023-03-28T11:37:22+00:00" + "time": "2023-11-30T16:49:05+00:00" }, { - "name": "php-translation/symfony-bundle", - "version": "0.12.8", + "name": "php-http/httplug", + "version": "2.4.0", "source": { "type": "git", - "url": "https://github.com/php-translation/symfony-bundle.git", - "reference": "9bd3ecace0a4019a7a4327ca9ea8df1c23ff0da3" + "url": "https://github.com/php-http/httplug.git", + "reference": "625ad742c360c8ac580fcc647a1541d29e257f67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-translation/symfony-bundle/zipball/9bd3ecace0a4019a7a4327ca9ea8df1c23ff0da3", - "reference": "9bd3ecace0a4019a7a4327ca9ea8df1c23ff0da3", + "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67", + "reference": "625ad742c360c8ac580fcc647a1541d29e257f67", "shasum": "" }, "require": { - "nyholm/nsa": "^1.1", - "php": "^7.2 || ^8.0", - "php-translation/extractor": "^2.0", - "php-translation/symfony-storage": "^2.1", - "symfony/asset": "^4.4.20 || ^5.2.4 || ^6.0", - "symfony/finder": "^4.4.20 || ^5.2.4 || ^6.0", - "symfony/framework-bundle": "^4.4.20 || ^5.2.5 || ^6.0", - "symfony/intl": "^4.4.20 || ^5.2.4 || ^6.0", - "symfony/translation": "^4.4.20 || ^5.2.5 || ^6.0", - "symfony/twig-bundle": "^4.4.20 || ^5.2.4 || ^6.0", - "symfony/validator": "^4.4.20 || ^5.2.5 || ^6.0", - "twig/twig": "^2.14.4 || ^3.3" + "php": "^7.1 || ^8.0", + "php-http/promise": "^1.1", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.3", - "matthiasnoback/symfony-config-test": "^4.1", - "matthiasnoback/symfony-dependency-injection-test": "^4.1", - "nyholm/psr7": "^1.1", - "nyholm/symfony-bundle-test": "^2.0", - "php-http/curl-client": "^1.7 || ^2.0", - "php-http/message": "^1.11", - "php-http/message-factory": "^1.0.2", - "php-translation/translator": "^1.0", - "symfony/console": "^4.4.20 || ^5.2.5 || ^6.0", - "symfony/dependency-injection": "^4.4.20 || ^5.2.5 || ^6.0", - "symfony/phpunit-bridge": "^5.2 || ^6.0", - "symfony/twig-bridge": "^4.4.20 || ^5.2.5 || ^6.0", - "symfony/web-profiler-bundle": "^4.4.20 || ^5.2.4 || ^6.0" - }, - "suggest": { - "php-http/httplug-bundle": "To easier configure your httplug clients." - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } + "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0", + "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" }, + "type": "library", "autoload": { "psr-4": { - "Translation\\Bundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Http\\Client\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6521,48 +7176,71 @@ ], "authors": [ { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "http" + ], "support": { - "issues": "https://github.com/php-translation/symfony-bundle/issues", - "source": "https://github.com/php-translation/symfony-bundle/tree/0.12.8" + "issues": "https://github.com/php-http/httplug/issues", + "source": "https://github.com/php-http/httplug/tree/2.4.0" }, - "time": "2022-12-19T12:38:39+00:00" + "time": "2023-04-14T15:10:03+00:00" }, { - "name": "php-translation/symfony-storage", - "version": "2.3.1", + "name": "php-http/message", + "version": "1.16.0", "source": { "type": "git", - "url": "https://github.com/php-translation/symfony-storage.git", - "reference": "95d52dd86d41fe0ec2c75e1469b5003956044cc8" + "url": "https://github.com/php-http/message.git", + "reference": "47a14338bf4ebd67d317bf1144253d7db4ab55fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-translation/symfony-storage/zipball/95d52dd86d41fe0ec2c75e1469b5003956044cc8", - "reference": "95d52dd86d41fe0ec2c75e1469b5003956044cc8", + "url": "https://api.github.com/repos/php-http/message/zipball/47a14338bf4ebd67d317bf1144253d7db4ab55fd", + "reference": "47a14338bf4ebd67d317bf1144253d7db4ab55fd", "shasum": "" }, "require": { + "clue/stream-filter": "^1.5", "php": "^7.2 || ^8.0", - "php-translation/common": "^3.0", - "symfony/translation": "^3.4 || ^4.2 || ^5.0 || ^6.0" + "psr/http-message": "^1.1 || ^2.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0" }, "require-dev": { - "phpunit/phpunit": ">=8.5.20", - "symfony/framework-bundle": " ^3.4 || ^4.2 || ^5.0 || ^6.0" + "ergebnis/composer-normalize": "^2.6", + "ext-zlib": "*", + "guzzlehttp/psr7": "^1.0 || ^2.0", + "laminas/laminas-diactoros": "^2.0 || ^3.0", + "php-http/message-factory": "^1.0.2", + "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", + "slim/slim": "^3.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } + "suggest": { + "ext-zlib": "Used with compressor/decompressor streams", + "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", + "laminas/laminas-diactoros": "Used with Diactoros Factories", + "slim/slim": "Used with Slim Framework PSR-7 implementation" }, + "type": "library", "autoload": { + "files": [ + "src/filters.php" + ], "psr-4": { - "Translation\\SymfonyStorage\\": "src/" + "Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6571,43 +7249,50 @@ ], "authors": [ { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "A translation file storage using Symfony translation component.", + "description": "HTTP Message related tools", + "homepage": "http://php-http.org", + "keywords": [ + "http", + "message", + "psr-7" + ], "support": { - "issues": "https://github.com/php-translation/symfony-storage/issues", - "source": "https://github.com/php-translation/symfony-storage/tree/2.3.1" + "issues": "https://github.com/php-http/message/issues", + "source": "https://github.com/php-http/message/tree/1.16.0" }, - "time": "2022-02-14T11:36:15+00:00" + "time": "2023-05-17T06:43:38+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "php-http/message-factory", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/php-http/message-factory.git", + "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/php-http/message-factory/zipball/4d8778e1c7d405cbb471574821c1ff5b68cc8f57", + "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=5.4", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-2.x": "2.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src/" + "Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6616,59 +7301,51 @@ ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "Factory interfaces for PSR-7 HTTP Message", + "homepage": "http://php-http.org", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "factory", + "http", + "message", + "stream", + "uri" ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "issues": "https://github.com/php-http/message-factory/issues", + "source": "https://github.com/php-http/message-factory/tree/1.1.0" }, - "time": "2020-06-27T09:03:43+00:00" + "abandoned": "psr/http-factory", + "time": "2023-04-14T14:16:17+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "name": "php-http/promise", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "url": "https://github.com/php-http/promise.git", + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/php-http/promise/zipball/2916a606d3b390f4e9e8e2b8dd68581508be0f07", + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07", "shasum": "" }, "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" + "php": "^7.1 || ^8.0" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", + "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "Http\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6677,60 +7354,51 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" }, { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", + "keywords": [ + "promise" + ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.3.0" }, - "time": "2021-10-19T17:43:47+00:00" + "time": "2024-01-04T18:49:48+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.7.3", + "name": "php-translation/common", + "version": "3.2.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" + "url": "https://github.com/php-translation/common.git", + "reference": "986ddf4e3b2b3458d2a7353658bd40764d8ca1d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "url": "https://api.github.com/repos/php-translation/common/zipball/986ddf4e3b2b3458d2a7353658bd40764d8ca1d1", + "reference": "986ddf4e3b2b3458d2a7353658bd40764d8ca1d1", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" + "php": ">=7.2", + "symfony/translation": " ^3.4 || ^4.3 || ^5.0 || ^6.0" }, "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" + "phpunit/phpunit": "^8.4", + "symfony/phpunit-bridge": "^4.3 || ^5.0 || ^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "Translation\\Common\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6739,78 +7407,54 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "Common translation stuff", "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" + "issues": "https://github.com/php-translation/common/issues", + "source": "https://github.com/php-translation/common/tree/3.2.0" }, - "time": "2023-08-12T11:01:26+00:00" + "time": "2022-02-04T11:49:38+00:00" }, { - "name": "phpoffice/phpspreadsheet", - "version": "1.29.0", + "name": "php-translation/extractor", + "version": "2.1.1", "source": { "type": "git", - "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0" + "url": "https://github.com/php-translation/extractor.git", + "reference": "09ad2f3654e6badb95a739b0284f5785531f7c8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fde2ccf55eaef7e86021ff1acce26479160a0fa0", - "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0", + "url": "https://api.github.com/repos/php-translation/extractor/zipball/09ad2f3654e6badb95a739b0284f5785531f7c8d", + "reference": "09ad2f3654e6badb95a739b0284f5785531f7c8d", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-dom": "*", - "ext-fileinfo": "*", - "ext-gd": "*", - "ext-iconv": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "ext-xml": "*", - "ext-xmlreader": "*", - "ext-xmlwriter": "*", - "ext-zip": "*", - "ext-zlib": "*", - "ezyang/htmlpurifier": "^4.15", - "maennchen/zipstream-php": "^2.1 || ^3.0", - "markbaker/complex": "^3.0", - "markbaker/matrix": "^3.0", - "php": "^7.4 || ^8.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" + "doctrine/annotations": "^1.7 || ^2.0", + "nikic/php-parser": "^3.0 || ^4.0", + "php": "^7.2 || ^8.0", + "symfony/finder": "^3.4 || ^4.4 || ^5.0 || ^6.0", + "twig/twig": "^2.0 || ^3.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "dev-main", - "dompdf/dompdf": "^1.0 || ^2.0", - "friendsofphp/php-cs-fixer": "^3.2", - "mitoteam/jpgraph": "^10.3", - "mpdf/mpdf": "^8.1.1", - "phpcompatibility/php-compatibility": "^9.3", - "phpstan/phpstan": "^1.1", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^8.5 || ^9.0 || ^10.0", - "squizlabs/php_codesniffer": "^3.7", - "tecnickcom/tcpdf": "^6.5" - }, - "suggest": { - "dompdf/dompdf": "Option for rendering PDF with PDF Writer", - "ext-intl": "PHP Internationalization Functions", - "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", - "mpdf/mpdf": "Option for rendering PDF with PDF Writer", - "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" + "knplabs/knp-menu": "^3.1", + "symfony/phpunit-bridge": "^5.0 || ^6.0", + "symfony/translation": "^3.4 || ^4.4 || ^5.0 || ^6.0", + "symfony/twig-bridge": "^3.4 || ^4.4 || ^5.0 || ^6.0", + "symfony/validator": "^3.4 || ^4.4 || ^5.0 || ^6.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "psr-4": { - "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + "Translation\\Extractor\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6819,115 +7463,126 @@ ], "authors": [ { - "name": "Maarten Balliauw", - "homepage": "https://blog.maartenballiauw.be" - }, - { - "name": "Mark Baker", - "homepage": "https://markbakeruk.net" - }, - { - "name": "Franck Lefevre", - "homepage": "https://rootslabs.net" - }, - { - "name": "Erik Tilt" - }, - { - "name": "Adrien Crivelli" + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" } ], - "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", - "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", - "keywords": [ - "OpenXML", - "excel", - "gnumeric", - "ods", - "php", - "spreadsheet", - "xls", - "xlsx" - ], + "description": "Extract translations form the source code", "support": { - "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.0" + "issues": "https://github.com/php-translation/extractor/issues", + "source": "https://github.com/php-translation/extractor/tree/2.1.1" }, - "time": "2023-06-14T22:48:31+00:00" + "time": "2023-03-28T11:37:22+00:00" }, { - "name": "phpstan/phpdoc-parser", - "version": "1.24.2", + "name": "php-translation/symfony-bundle", + "version": "0.12.8", "source": { "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bcad8d995980440892759db0c32acae7c8e79442" + "url": "https://github.com/php-translation/symfony-bundle.git", + "reference": "9bd3ecace0a4019a7a4327ca9ea8df1c23ff0da3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", - "reference": "bcad8d995980440892759db0c32acae7c8e79442", + "url": "https://api.github.com/repos/php-translation/symfony-bundle/zipball/9bd3ecace0a4019a7a4327ca9ea8df1c23ff0da3", + "reference": "9bd3ecace0a4019a7a4327ca9ea8df1c23ff0da3", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "nyholm/nsa": "^1.1", + "php": "^7.2 || ^8.0", + "php-translation/extractor": "^2.0", + "php-translation/symfony-storage": "^2.1", + "symfony/asset": "^4.4.20 || ^5.2.4 || ^6.0", + "symfony/finder": "^4.4.20 || ^5.2.4 || ^6.0", + "symfony/framework-bundle": "^4.4.20 || ^5.2.5 || ^6.0", + "symfony/intl": "^4.4.20 || ^5.2.4 || ^6.0", + "symfony/translation": "^4.4.20 || ^5.2.5 || ^6.0", + "symfony/twig-bundle": "^4.4.20 || ^5.2.4 || ^6.0", + "symfony/validator": "^4.4.20 || ^5.2.5 || ^6.0", + "twig/twig": "^2.14.4 || ^3.3" }, "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" + "bamarni/composer-bin-plugin": "^1.3", + "matthiasnoback/symfony-config-test": "^4.1", + "matthiasnoback/symfony-dependency-injection-test": "^4.1", + "nyholm/psr7": "^1.1", + "nyholm/symfony-bundle-test": "^2.0", + "php-http/curl-client": "^1.7 || ^2.0", + "php-http/message": "^1.11", + "php-http/message-factory": "^1.0.2", + "php-translation/translator": "^1.0", + "symfony/console": "^4.4.20 || ^5.2.5 || ^6.0", + "symfony/dependency-injection": "^4.4.20 || ^5.2.5 || ^6.0", + "symfony/phpunit-bridge": "^5.2 || ^6.0", + "symfony/twig-bridge": "^4.4.20 || ^5.2.5 || ^6.0", + "symfony/web-profiler-bundle": "^4.4.20 || ^5.2.4 || ^6.0" + }, + "suggest": { + "php-http/httplug-bundle": "To easier configure your httplug clients." + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "0.12-dev" + } }, - "type": "library", "autoload": { "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } + "Translation\\Bundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + } + ], "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" + "issues": "https://github.com/php-translation/symfony-bundle/issues", + "source": "https://github.com/php-translation/symfony-bundle/tree/0.12.8" }, - "time": "2023-09-26T12:28:12+00:00" + "time": "2022-12-19T12:38:39+00:00" }, { - "name": "psr/cache", - "version": "2.0.0", + "name": "php-translation/symfony-storage", + "version": "2.3.1", "source": { "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" + "url": "https://github.com/php-translation/symfony-storage.git", + "reference": "95d52dd86d41fe0ec2c75e1469b5003956044cc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", - "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "url": "https://api.github.com/repos/php-translation/symfony-storage/zipball/95d52dd86d41fe0ec2c75e1469b5003956044cc8", + "reference": "95d52dd86d41fe0ec2c75e1469b5003956044cc8", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": "^7.2 || ^8.0", + "php-translation/common": "^3.0", + "symfony/translation": "^3.4 || ^4.2 || ^5.0 || ^6.0" + }, + "require-dev": { + "phpunit/phpunit": ">=8.5.20", + "symfony/framework-bundle": " ^3.4 || ^4.2 || ^5.0 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.4-dev" } }, "autoload": { "psr-4": { - "Psr\\Cache\\": "src/" + "Translation\\SymfonyStorage\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6936,42 +7591,43 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" } ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], + "description": "A translation file storage using Symfony translation component.", "support": { - "source": "https://github.com/php-fig/cache/tree/2.0.0" + "issues": "https://github.com/php-translation/symfony-storage/issues", + "source": "https://github.com/php-translation/symfony-storage/tree/2.3.1" }, - "time": "2021-02-03T23:23:37+00:00" + "time": "2022-02-14T11:36:15+00:00" }, { - "name": "psr/clock", - "version": "1.0.0", + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/php-fig/clock.git", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0" + "php": "^7.2 || ^8.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, "autoload": { "psr-4": { - "Psr\\Clock\\": "src/" + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6980,46 +7636,59 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Common interface for reading the clock.", - "homepage": "https://github.com/php-fig/clock", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "clock", - "now", - "psr", - "psr-20", - "time" + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" ], "support": { - "issues": "https://github.com/php-fig/clock/issues", - "source": "https://github.com/php-fig/clock/tree/1.0.0" + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" }, - "time": "2022-11-25T14:36:26+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { - "name": "psr/container", - "version": "1.1.2", + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { - "php": ">=7.4.0" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, "autoload": { "psr-4": { - "Psr\\Container\\": "src/" + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -7028,51 +7697,57 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { - "name": "psr/event-dispatcher", - "version": "1.0.0", + "name": "phpdocumentor/type-resolver", + "version": "1.6.2", "source": { "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { "psr-4": { - "Psr\\EventDispatcher\\": "src/" + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -7081,49 +7756,78 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2" }, - "time": "2019-01-08T18:20:26+00:00" + "time": "2022-10-14T12:47:21+00:00" }, { - "name": "psr/http-client", - "version": "1.0.3", + "name": "phpoffice/phpspreadsheet", + "version": "1.29.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fde2ccf55eaef7e86021ff1acce26479160a0fa0", + "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "ezyang/htmlpurifier": "^4.15", + "maennchen/zipstream-php": "^2.1 || ^3.0", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": "^7.4 || ^8.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-main", + "dompdf/dompdf": "^1.0 || ^2.0", + "friendsofphp/php-cs-fixer": "^3.2", + "mitoteam/jpgraph": "^10.3", + "mpdf/mpdf": "^8.1.1", + "phpcompatibility/php-compatibility": "^9.3", + "phpstan/phpstan": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5 || ^9.0 || ^10.0", + "squizlabs/php_codesniffer": "^3.7", + "tecnickcom/tcpdf": "^6.5" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer", + "ext-intl": "PHP Internationalization Functions", + "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" }, + "type": "library", "autoload": { "psr-4": { - "Psr\\Http\\Client\\": "src/" + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" } }, "notification-url": "https://packagist.org/downloads/", @@ -7132,40 +7836,58 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" } ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", "keywords": [ - "http", - "http-client", - "psr", - "psr-18" + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" ], "support": { - "source": "https://github.com/php-fig/http-client" + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.0" }, - "time": "2023-09-23T14:17:50+00:00" + "time": "2023-06-14T22:48:31+00:00" }, { - "name": "psr/http-factory", - "version": "1.0.2", + "name": "psr/cache", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "url": "https://github.com/php-fig/cache.git", + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", "shasum": "" }, "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0 || ^2.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -7175,7 +7897,7 @@ }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7188,48 +7910,38 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "Common interface for caching libraries", "keywords": [ - "factory", - "http", - "message", + "cache", "psr", - "psr-17", - "psr-7", - "request", - "response" + "psr-6" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "source": "https://github.com/php-fig/cache/tree/2.0.0" }, - "time": "2023-04-10T20:10:41+00:00" + "time": "2021-02-03T23:23:37+00:00" }, { - "name": "psr/http-message", - "version": "1.1", + "name": "psr/clock", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.0 || ^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Psr\\Clock\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7239,50 +7951,45 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", "keywords": [ - "http", - "http-message", + "clock", + "now", "psr", - "psr-7", - "request", - "response" + "psr-20", + "time" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" }, - "time": "2023-04-04T09:50:52+00:00" + "time": "2022-11-25T14:36:26+00:00" }, { - "name": "psr/link", - "version": "1.1.1", + "name": "psr/container", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/php-fig/link.git", - "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807" + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/link/zipball/846c25f58a1f02b93a00f2404e3626b6bf9b7807", - "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=7.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Psr\\Link\\": "src/" + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7292,50 +7999,50 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for HTTP links", - "homepage": "https://github.com/php-fig/link", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "http", - "http-link", - "link", - "psr", - "psr-13", - "rest" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], "support": { - "source": "https://github.com/php-fig/link/tree/1.1.1" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-03-11T22:59:13+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { - "name": "psr/log", - "version": "2.0.0", + "name": "psr/event-dispatcher", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", - "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=7.2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "src" + "Psr\\EventDispatcher\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7345,37 +8052,38 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "Standard interfaces for event handling.", "keywords": [ - "log", + "events", "psr", - "psr-3" + "psr-14" ], "support": { - "source": "https://github.com/php-fig/log/tree/2.0.0" + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2021-07-14T16:41:46+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { - "name": "psr/simple-cache", - "version": "1.0.1", + "name": "psr/http-client", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -7385,7 +8093,7 @@ }, "autoload": { "psr-4": { - "Psr\\SimpleCache\\": "src/" + "Psr\\Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7395,48 +8103,50 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for simple caching", + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", "keywords": [ - "cache", - "caching", + "http", + "http-client", "psr", - "psr-16", - "simple-cache" + "psr-18" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" + "source": "https://github.com/php-fig/http-client" }, - "time": "2017-10-23T01:57:42+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { - "name": "ralouphie/getallheaders", - "version": "3.0.3", + "name": "psr/http-factory", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" + "php": ">=7.0.0", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { - "files": [ - "src/getallheaders.php" - ] + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7444,68 +8154,52 @@ ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "A polyfill for getallheaders.", + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-03-08T08:55:37+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { - "name": "ramsey/collection", - "version": "2.0.0", + "name": "psr/http-message", + "version": "2.0", "source": { "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": "^8.1" - }, - "require-dev": { - "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.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" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { - "captainhook": { - "force-install": true - }, - "ramsey/conventional-commits": { - "configFile": "conventional-commits.json" + "branch-alias": { + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Ramsey\\Collection\\": "src/" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7514,156 +8208,104 @@ ], "authors": [ { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "A PHP library for representing and manipulating collections.", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" ], "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2022-12-31T21:50:55+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { - "name": "ramsey/uuid", - "version": "4.7.4", + "name": "psr/link", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "60a4c63ab724854332900504274f6150ff26d286" + "url": "https://github.com/php-fig/link.git", + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", - "reference": "60a4c63ab724854332900504274f6150ff26d286", + "url": "https://api.github.com/repos/php-fig/link/zipball/846c25f58a1f02b93a00f2404e3626b6bf9b7807", + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", - "ext-json": "*", - "php": "^8.0", - "ramsey/collection": "^1.2 || ^2.0" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "captainhook/captainhook": "^5.10", - "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", - "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "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", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + "php": ">=8.0.0" }, "type": "library", "extra": { - "captainhook": { - "force-install": true + "branch-alias": { + "dev-master": "1.0.x-dev" } }, "autoload": { - "files": [ - "src/functions.php" - ], "psr-4": { - "Ramsey\\Uuid\\": "src/" + "Psr\\Link\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", "keywords": [ - "guid", - "identifier", - "uuid" + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" ], "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.4" + "source": "https://github.com/php-fig/link/tree/1.1.1" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2023-04-15T23:01:58+00:00" + "time": "2021-03-11T22:59:13+00:00" }, { - "name": "react/promise", - "version": "v3.0.0", + "name": "psr/log", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "c86753c76fd3be465d93b308f18d189f01a22be4" + "url": "https://github.com/php-fig/log.git", + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/c86753c76fd3be465d93b308f18d189f01a22be4", - "reference": "c86753c76fd3be465d93b308f18d189f01a22be4", + "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", "shasum": "" }, "require": { - "php": ">=7.1.0" - }, - "require-dev": { - "phpstan/phpstan": "1.10.20 || 1.4.10", - "phpunit/phpunit": "^9.5 || ^7.5" + "php": ">=8.0.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "React\\Promise\\": "src/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -7672,72 +8314,48 @@ ], "authors": [ { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "promise", - "promises" + "log", + "psr", + "psr-3" ], "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v3.0.0" + "source": "https://github.com/php-fig/log/tree/2.0.0" }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "time": "2023-07-11T16:12:49+00:00" + "time": "2021-07-14T16:41:46+00:00" }, { - "name": "sabberworm/php-css-parser", - "version": "8.4.0", + "name": "psr/simple-cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { - "ext-iconv": "*", - "php": ">=5.6.20" - }, - "require-dev": { - "codacy/coverage": "^1.4", - "phpunit/phpunit": "^4.8.36" - }, - "suggest": { - "ext-mbstring": "for parsing UTF-8 CSS" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Sabberworm\\CSS\\": "src/" + "Psr\\SimpleCache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7746,60 +8364,49 @@ ], "authors": [ { - "name": "Raphael Schweikert" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Parser for CSS Files written in PHP", - "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "description": "Common interfaces for simple caching", "keywords": [ - "css", - "parser", - "stylesheet" + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" ], "support": { - "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + "source": "https://github.com/php-fig/simple-cache/tree/master" }, - "time": "2021-12-11T13:40:54+00:00" + "time": "2017-10-23T01:57:42+00:00" }, { - "name": "scienta/doctrine-json-functions", - "version": "4.5.0", + "name": "ralouphie/getallheaders", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/ScientaNL/DoctrineJsonFunctions.git", - "reference": "138a017a92d9f0dfd22e221584b66517f005c222" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ScientaNL/DoctrineJsonFunctions/zipball/138a017a92d9f0dfd22e221584b66517f005c222", - "reference": "138a017a92d9f0dfd22e221584b66517f005c222", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "doctrine/dbal": "2.*", - "doctrine/orm": "2.*", - "ext-pdo": "*", - "php": "^7.1 || ^8.0" + "php": ">=5.6" }, "require-dev": { - "doctrine/coding-standard": "^8.0 || ^9.0", - "doctrine/orm": "^2.7", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "suggest": { - "dunglas/doctrine-json-odm": "To serialize / deserialize objects as JSON documents." + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, "autoload": { - "psr-4": { - "Scienta\\DoctrineJsonFunctions\\": "src/" - } + "files": [ + "src/getallheaders.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7807,57 +8414,68 @@ ], "authors": [ { - "name": "Doctrine Json Functions Contributors", - "homepage": "https://github.com/ScientaNL/DoctrineJsonFunctions/contributors" + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" } ], - "description": "A set of extensions to Doctrine 2 that add support for json query functions.", - "keywords": [ - "database", - "doctrine", - "dql", - "json", - "mariadb", - "mysql", - "orm", - "postgres", - "postgresql", - "sqlite" - ], + "description": "A polyfill for getallheaders.", "support": { - "issues": "https://github.com/ScientaNL/DoctrineJsonFunctions/issues", - "source": "https://github.com/ScientaNL/DoctrineJsonFunctions/tree/4.5.0" + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" }, - "time": "2022-01-12T09:54:17+00:00" + "time": "2019-03-08T08:55:37+00:00" }, { - "name": "seld/jsonlint", - "version": "1.10.0", + "name": "ramsey/collection", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0 || ^8.0" + "php": "^8.1" }, "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" + "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.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" }, - "bin": [ - "bin/jsonlint" - ], "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, "autoload": { "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" + "Ramsey\\Collection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7866,116 +8484,156 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" } ], - "description": "JSON Linter", + "description": "A PHP library for representing and manipulating collections.", "keywords": [ - "json", - "linter", - "parser", - "validator" + "array", + "collection", + "hash", + "map", + "queue", + "set" ], "support": { - "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" }, "funding": [ { - "url": "https://github.com/Seldaek", + "url": "https://github.com/ramsey", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", "type": "tidelift" } ], - "time": "2023-05-11T13:16:46+00:00" + "time": "2022-12-31T21:50:55+00:00" }, { - "name": "seld/phar-utils", - "version": "1.2.1", + "name": "ramsey/uuid", + "version": "4.7.5", "source": { "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c" + "url": "https://github.com/ramsey/uuid.git", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", - "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { - "php": ">=5.3" + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "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", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" + "captainhook": { + "force-install": true } }, "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { - "Seld\\PharUtils\\": "src/" + "Ramsey\\Uuid\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "keywords": [ - "phar" + "guid", + "identifier", + "uuid" ], "support": { - "issues": "https://github.com/Seldaek/phar-utils/issues", - "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1" + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, - "time": "2022-08-31T10:31:18+00:00" + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2023-11-08T05:53:05+00:00" }, { - "name": "seld/signal-handler", - "version": "2.0.2", + "name": "react/promise", + "version": "v3.1.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/signal-handler.git", - "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98" + "url": "https://github.com/reactphp/promise.git", + "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", - "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", + "url": "https://api.github.com/repos/reactphp/promise/zipball/e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", + "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.1.0" }, "require-dev": { - "phpstan/phpstan": "^1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^7.5.20 || ^8.5.23", - "psr/log": "^1 || ^2 || ^3" + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.x-dev" - } - }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "Seld\\Signal\\": "src/" + "React\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7984,81 +8642,74 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "Simple unix signal handler that silently fails where signals are not supported for easy cross-platform development", + "description": "A lightweight implementation of CommonJS Promises/A for PHP", "keywords": [ - "posix", - "sigint", - "signal", - "sigterm", - "unix" + "promise", + "promises" ], "support": { - "issues": "https://github.com/Seldaek/signal-handler/issues", - "source": "https://github.com/Seldaek/signal-handler/tree/2.0.2" + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.1.0" }, - "time": "2023-09-03T09:24:00+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-16T16:21:57+00:00" }, { - "name": "sensio/framework-extra-bundle", - "version": "v6.2.10", + "name": "resend/resend-php", + "version": "v0.10.0", "source": { "type": "git", - "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f" + "url": "https://github.com/resend/resend-php.git", + "reference": "f9452a8db7d471c9a774c7c0d5b198bb58b74823" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/2f886f4b31f23c76496901acaedfedb6936ba61f", - "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f", + "url": "https://api.github.com/repos/resend/resend-php/zipball/f9452a8db7d471c9a774c7c0d5b198bb58b74823", + "reference": "f9452a8db7d471c9a774c7c0d5b198bb58b74823", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0|^2.0", - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0" - }, - "conflict": { - "doctrine/doctrine-cache-bundle": "<1.3.1", - "doctrine/persistence": "<1.3" + "guzzlehttp/guzzle": "^7.5", + "php": "^8.1.0" }, "require-dev": { - "doctrine/dbal": "^2.10|^3.0", - "doctrine/doctrine-bundle": "^1.11|^2.0", - "doctrine/orm": "^2.5", - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/doctrine-bridge": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/monolog-bridge": "^4.0|^5.0|^6.0", - "symfony/monolog-bundle": "^3.2", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", - "symfony/security-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^1.34|^2.4|^3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "6.1.x-dev" - } + "friendsofphp/php-cs-fixer": "^3.13", + "mockery/mockery": "^1.6", + "pestphp/pest": "^2.0" }, + "type": "library", "autoload": { + "files": [ + "src/Resend.php" + ], "psr-4": { - "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/" - }, - "exclude-from-classmap": [ - "/tests/" - ] + "Resend\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8066,52 +8717,54 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Resend and contributors", + "homepage": "https://github.com/resend/resend-php/contributors" } ], - "description": "This bundle provides a way to configure your controllers with annotations", + "description": "Resend PHP library.", + "homepage": "https://resend.com/", "keywords": [ - "annotations", - "controllers" + "api", + "client", + "php", + "resend", + "sdk" ], "support": { - "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.10" + "issues": "https://github.com/resend/resend-php/issues", + "source": "https://github.com/resend/resend-php/tree/v0.10.0" }, - "abandoned": "Symfony", - "time": "2023-02-24T14:57:12+00:00" + "time": "2024-01-02T19:17:07+00:00" }, { - "name": "siriusphp/upload", - "version": "3.0.1", + "name": "sabberworm/php-css-parser", + "version": "8.4.0", "source": { "type": "git", - "url": "https://github.com/siriusphp/upload.git", - "reference": "3a5a1d130c91d505bb6d06f4c9e2428ea5c01214" + "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/siriusphp/upload/zipball/3a5a1d130c91d505bb6d06f4c9e2428ea5c01214", - "reference": "3a5a1d130c91d505bb6d06f4c9e2428ea5c01214", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", + "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", "shasum": "" }, "require": { - "php": ">=7.1", - "siriusphp/validation": "~3.0" + "ext-iconv": "*", + "php": ">=5.6.20" }, "require-dev": { - "laminas/laminas-diactoros": "^2.2", - "phpunit/phpunit": "~8.5", - "symfony/http-foundation": "^4.4" + "codacy/coverage": "^1.4", + "phpunit/phpunit": "^4.8.36" }, "suggest": { - "knplabs/gaufrette": "Alternative filesystem abstraction library for upload destinations", - "league/flysystem": "To upload to different destinations, not just to the local file system" + "ext-mbstring": "for parsing UTF-8 CSS" }, "type": "library", "autoload": { "psr-4": { - "Sirius\\Upload\\": "src/" + "Sabberworm\\CSS\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8120,50 +8773,59 @@ ], "authors": [ { - "name": "Adrian Miu", - "email": "adrian@adrianmiu.ro" + "name": "Raphael Schweikert" } ], - "description": "Framework agnostic upload library", + "description": "Parser for CSS Files written in PHP", + "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", "keywords": [ - "file", - "file upload", - "form", - "psr-7", - "security", - "upload", - "validation" + "css", + "parser", + "stylesheet" ], "support": { - "issues": "https://github.com/siriusphp/upload/issues", - "source": "https://github.com/siriusphp/upload/tree/3.0.1" + "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", + "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" }, - "time": "2020-03-14T15:02:29+00:00" + "time": "2021-12-11T13:40:54+00:00" }, { - "name": "siriusphp/validation", - "version": "3.1.0", + "name": "scienta/doctrine-json-functions", + "version": "4.5.0", "source": { "type": "git", - "url": "https://github.com/siriusphp/validation.git", - "reference": "14dd292b10053d6269126f4cb6e334f78d4686c4" + "url": "https://github.com/ScientaNL/DoctrineJsonFunctions.git", + "reference": "138a017a92d9f0dfd22e221584b66517f005c222" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/siriusphp/validation/zipball/14dd292b10053d6269126f4cb6e334f78d4686c4", - "reference": "14dd292b10053d6269126f4cb6e334f78d4686c4", + "url": "https://api.github.com/repos/ScientaNL/DoctrineJsonFunctions/zipball/138a017a92d9f0dfd22e221584b66517f005c222", + "reference": "138a017a92d9f0dfd22e221584b66517f005c222", "shasum": "" }, "require": { - "php": ">=7.1" + "doctrine/dbal": "2.*", + "doctrine/orm": "2.*", + "ext-pdo": "*", + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "doctrine/coding-standard": "^8.0 || ^9.0", + "doctrine/orm": "^2.7", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "suggest": { + "dunglas/doctrine-json-odm": "To serialize / deserialize objects as JSON documents." }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, "autoload": { "psr-4": { - "Sirius\\Validation\\": "src/" + "Scienta\\DoctrineJsonFunctions\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8172,51 +8834,57 @@ ], "authors": [ { - "name": "Adrian Miu", - "email": "adrian@adrianmiu.ro" + "name": "Doctrine Json Functions Contributors", + "homepage": "https://github.com/ScientaNL/DoctrineJsonFunctions/contributors" } ], - "description": "Data validation library. Validate arrays, array objects, domain models etc using a simple API. Easily add your own validators on top of the already dozens built-in validation rules", + "description": "A set of extensions to Doctrine 2 that add support for json query functions.", "keywords": [ - "form", - "modeling", - "sanitization", - "security", - "validation" + "database", + "doctrine", + "dql", + "json", + "mariadb", + "mysql", + "orm", + "postgres", + "postgresql", + "sqlite" ], "support": { - "issues": "https://github.com/siriusphp/validation/issues", - "source": "https://github.com/siriusphp/validation/tree/3.1.0" + "issues": "https://github.com/ScientaNL/DoctrineJsonFunctions/issues", + "source": "https://github.com/ScientaNL/DoctrineJsonFunctions/tree/4.5.0" }, - "time": "2022-09-21T19:51:46+00:00" + "time": "2022-01-12T09:54:17+00:00" }, { - "name": "squirrelphp/twig-php-syntax", - "version": "v1.7", + "name": "seld/jsonlint", + "version": "1.10.1", "source": { "type": "git", - "url": "https://github.com/squirrelphp/twig-php-syntax.git", - "reference": "97738f7533de0fd5ed8f03d052d219bd23398976" + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "76d449a358ece77d6f1d6331c68453e657172202" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squirrelphp/twig-php-syntax/zipball/97738f7533de0fd5ed8f03d052d219bd23398976", - "reference": "97738f7533de0fd5ed8f03d052d219bd23398976", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/76d449a358ece77d6f1d6331c68453e657172202", + "reference": "76d449a358ece77d6f1d6331c68453e657172202", "shasum": "" }, "require": { - "php": ">=7.2.5", - "twig/twig": "^3.0" + "php": "^5.3 || ^7.0 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.3", - "captainhook/plugin-composer": "^5.0", - "phpunit/phpunit": "^8.0|^9.0" + "phpstan/phpstan": "^1.5", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" }, + "bin": [ + "bin/jsonlint" + ], "type": "library", "autoload": { "psr-4": { - "Squirrel\\TwigPhpSyntax\\": "src/" + "Seld\\JsonLint\\": "src/Seld/JsonLint/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8225,66 +8893,60 @@ ], "authors": [ { - "name": "Andreas Leathley", - "email": "andreas.leathley@panaxis.ch" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" } ], - "description": "Adds common PHP syntax to twig templates, like ===, foreach and continue/break.", - "homepage": "https://github.com/squirrelphp/twig-php-syntax", + "description": "JSON Linter", "keywords": [ - "foreach", - "php", - "syntax", - "twig" + "json", + "linter", + "parser", + "validator" ], "support": { - "issues": "https://github.com/squirrelphp/twig-php-syntax/issues", - "source": "https://github.com/squirrelphp/twig-php-syntax/tree/v1.7" + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.1" }, - "time": "2021-11-29T23:24:13+00:00" + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2023-12-18T13:03:25+00:00" }, { - "name": "stof/doctrine-extensions-bundle", - "version": "v1.8.0", + "name": "seld/phar-utils", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/stof/StofDoctrineExtensionsBundle.git", - "reference": "b40623da645d0e206331f506fb1065d8b0a0f3d6" + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/b40623da645d0e206331f506fb1065d8b0a0f3d6", - "reference": "b40623da645d0e206331f506fb1065d8b0a0f3d6", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", + "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", "shasum": "" }, "require": { - "gedmo/doctrine-extensions": "^3.5.0", - "php": "^7.2.5 || ^8.0", - "symfony/cache": "^5.4 || ^6.0", - "symfony/config": "^5.4 || ^6.0", - "symfony/dependency-injection": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/http-kernel": "^5.4 || ^6.0" - }, - "require-dev": { - "symfony/mime": "^5.4 || ^6.0", - "symfony/phpunit-bridge": "^v5.4 || ^6.0", - "symfony/security-core": "^5.4 || ^6.0" - }, - "suggest": { - "doctrine/doctrine-bundle": "to use the ORM extensions", - "doctrine/mongodb-odm-bundle": "to use the MongoDB ODM extensions", - "symfony/mime": "To use the Mime component integration for Uploadable" + "php": ">=5.3" }, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-main": "1.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Stof\\DoctrineExtensionsBundle\\": "src" + "Seld\\PharUtils\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8293,69 +8955,55 @@ ], "authors": [ { - "name": "Christophe Coevoet", - "email": "stof@notk.org" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" } ], - "description": "Integration of the gedmo/doctrine-extensions with Symfony", - "homepage": "https://github.com/stof/StofDoctrineExtensionsBundle", + "description": "PHAR file format utilities, for when PHP phars you up", "keywords": [ - "behaviors", - "doctrine2", - "extensions", - "gedmo", - "loggable", - "nestedset", - "sluggable", - "sortable", - "timestampable", - "translatable", - "tree" + "phar" ], "support": { - "issues": "https://github.com/stof/StofDoctrineExtensionsBundle/issues", - "source": "https://github.com/stof/StofDoctrineExtensionsBundle/tree/v1.8.0" + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1" }, - "time": "2023-07-07T15:34:33+00:00" + "time": "2022-08-31T10:31:18+00:00" }, { - "name": "symfony/asset", - "version": "v5.4.21", + "name": "seld/signal-handler", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/asset.git", - "reference": "1504b6773c6b90118f9871e90a67833b5d1dca3c" + "url": "https://github.com/Seldaek/signal-handler.git", + "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/1504b6773c6b90118f9871e90a67833b5d1dca3c", - "reference": "1504b6773c6b90118f9871e90a67833b5d1dca3c", + "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", + "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "symfony/http-foundation": "<5.3" + "php": ">=7.2.0" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/http-foundation": "" + "phpstan/phpstan": "^1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^7.5.20 || ^8.5.23", + "psr/log": "^1 || ^2 || ^3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Asset\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Seld\\Signal\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8363,91 +9011,80 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", - "homepage": "https://symfony.com", + "description": "Simple unix signal handler that silently fails where signals are not supported for easy cross-platform development", + "keywords": [ + "posix", + "sigint", + "signal", + "sigterm", + "unix" + ], "support": { - "source": "https://github.com/symfony/asset/tree/v5.4.21" + "issues": "https://github.com/Seldaek/signal-handler/issues", + "source": "https://github.com/Seldaek/signal-handler/tree/2.0.2" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-09-03T09:24:00+00:00" }, { - "name": "symfony/cache", - "version": "v5.4.29", + "name": "sensio/framework-extra-bundle", + "version": "v6.2.10", "source": { "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "e29c5a97bc2d81269973c3e1d7ceb9d48b4d5151" + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/e29c5a97bc2d81269973c3e1d7ceb9d48b4d5151", - "reference": "e29c5a97bc2d81269973c3e1d7ceb9d48b4d5151", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/2f886f4b31f23c76496901acaedfedb6936ba61f", + "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f", "shasum": "" }, "require": { + "doctrine/annotations": "^1.0|^2.0", "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0", - "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^1.1.7|^2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" }, "conflict": { - "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/var-dumper": "<4.4" - }, - "provide": { - "psr/cache-implementation": "1.0|2.0", - "psr/simple-cache-implementation": "1.0|2.0", - "symfony/cache-implementation": "1.0|2.0" + "doctrine/doctrine-cache-bundle": "<1.3.1", + "doctrine/persistence": "<1.3" }, "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.13.1|^3.0", - "predis/predis": "^1.1", - "psr/simple-cache": "^1.0|^2.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "doctrine/dbal": "^2.10|^3.0", + "doctrine/doctrine-bundle": "^1.11|^2.0", + "doctrine/orm": "^2.5", + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/doctrine-bridge": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/monolog-bridge": "^4.0|^5.0|^6.0", + "symfony/monolog-bundle": "^3.2", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", + "symfony/security-bundle": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/twig": "^1.34|^2.4|^3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "6.1.x-dev" + } }, - "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Cache\\": "" + "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/" }, "exclude-from-classmap": [ - "/Tests/" + "/tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8456,161 +9093,140 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", - "homepage": "https://symfony.com", + "description": "This bundle provides a way to configure your controllers with annotations", "keywords": [ - "caching", - "psr6" - ], + "annotations", + "controllers" + ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.4.29" + "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.10" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-09-19T13:25:51+00:00" + "abandoned": "Symfony", + "time": "2023-02-24T14:57:12+00:00" }, { - "name": "symfony/cache-contracts", - "version": "v2.5.2", + "name": "sentry/sdk", + "version": "3.6.0", "source": { "type": "git", - "url": "https://github.com/symfony/cache-contracts.git", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" + "url": "https://github.com/getsentry/sentry-php-sdk.git", + "reference": "24c235ff2027401cbea099bf88689e1a1f197c7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/24c235ff2027401cbea099bf88689e1a1f197c7a", + "reference": "24c235ff2027401cbea099bf88689e1a1f197c7a", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0|^3.0" - }, - "suggest": { - "symfony/cache-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Cache\\": "" - } + "http-interop/http-factory-guzzle": "^1.0", + "sentry/sentry": "^3.22", + "symfony/http-client": "^4.3|^5.0|^6.0|^7.0" }, + "type": "metapackage", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sentry", + "email": "accounts@sentry.io" } ], - "description": "Generic abstractions related to caching", - "homepage": "https://symfony.com", + "description": "This is a metapackage shipping sentry/sentry with a recommended HTTP client.", + "homepage": "http://sentry.io", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "crash-reporting", + "crash-reports", + "error-handler", + "error-monitoring", + "log", + "logging", + "sentry" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" + "issues": "https://github.com/getsentry/sentry-php-sdk/issues", + "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.6.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://sentry.io/", "type": "custom" }, { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "url": "https://sentry.io/pricing/", + "type": "custom" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-12-04T10:49:33+00:00" }, { - "name": "symfony/config", - "version": "v5.4.26", + "name": "sentry/sentry", + "version": "3.22.1", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "8109892f27beed9252bd1f1c1880aeb4ad842650" + "url": "https://github.com/getsentry/sentry-php.git", + "reference": "8859631ba5ab15bc1af420b0eeed19ecc6c9d81d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/8109892f27beed9252bd1f1c1880aeb4ad842650", - "reference": "8109892f27beed9252bd1f1c1880aeb4ad842650", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/8859631ba5ab15bc1af420b0eeed19ecc6c9d81d", + "reference": "8859631ba5ab15bc1af420b0eeed19ecc6c9d81d", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22" + "ext-json": "*", + "ext-mbstring": "*", + "guzzlehttp/promises": "^1.5.3|^2.0", + "jean85/pretty-package-versions": "^1.5|^2.0.4", + "php": "^7.2|^8.0", + "php-http/async-client-implementation": "^1.0", + "php-http/client-common": "^1.5|^2.0", + "php-http/discovery": "^1.15", + "php-http/httplug": "^1.1|^2.0", + "php-http/message": "^1.5", + "php-http/message-factory": "^1.1", + "psr/http-factory": "^1.0", + "psr/http-factory-implementation": "^1.0", + "psr/log": "^1.0|^2.0|^3.0", + "symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0|^7.0", + "symfony/polyfill-php80": "^1.17" }, "conflict": { - "symfony/finder": "<4.4" + "php-http/client-common": "1.8.0", + "raven/raven": "*" }, "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" + "friendsofphp/php-cs-fixer": "^2.19|3.4.*", + "guzzlehttp/psr7": "^1.8.4|^2.1.1", + "http-interop/http-factory-guzzle": "^1.0", + "monolog/monolog": "^1.6|^2.0|^3.0", + "nikic/php-parser": "^4.10.3", + "php-http/mock-client": "^1.3", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5.14|^9.4", + "symfony/phpunit-bridge": "^5.2|^6.0", + "vimeo/psalm": "^4.17" }, "suggest": { - "symfony/yaml": "To use the yaml reference dumper" + "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." }, "type": "library", "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Sentry\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8618,92 +9234,112 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sentry", + "email": "accounts@sentry.io" } ], - "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", - "homepage": "https://symfony.com", + "description": "A PHP SDK for Sentry (http://sentry.io)", + "homepage": "http://sentry.io", + "keywords": [ + "crash-reporting", + "crash-reports", + "error-handler", + "error-monitoring", + "log", + "logging", + "sentry" + ], "support": { - "source": "https://github.com/symfony/config/tree/v5.4.26" + "issues": "https://github.com/getsentry/sentry-php/issues", + "source": "https://github.com/getsentry/sentry-php/tree/3.22.1" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://sentry.io/", "type": "custom" }, { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "url": "https://sentry.io/pricing/", + "type": "custom" } ], - "time": "2023-07-19T20:21:11+00:00" + "time": "2023-11-13T11:47:28+00:00" }, { - "name": "symfony/console", - "version": "v5.4.28", + "name": "sentry/sentry-symfony", + "version": "4.13.2", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827" + "url": "https://github.com/getsentry/sentry-symfony.git", + "reference": "bf049e69863465f2e0ba2555dbb5224641a37d67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f4f71842f24c2023b91237c72a365306f3c58827", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827", + "url": "https://api.github.com/repos/getsentry/sentry-symfony/zipball/bf049e69863465f2e0ba2555dbb5224641a37d67", + "reference": "bf049e69863465f2e0ba2555dbb5224641a37d67", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" + "guzzlehttp/psr7": "^1.7 || ^2.0", + "jean85/pretty-package-versions": "^1.5 || ^2.0", + "php": "^7.2||^8.0", + "sentry/sdk": "^3.6", + "sentry/sentry": "^3.22.1", + "symfony/cache-contracts": "^1.1||^2.4||^3.0", + "symfony/config": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/console": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/dependency-injection": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/event-dispatcher": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/http-kernel": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/polyfill-php80": "^1.22", + "symfony/psr-http-message-bridge": "^1.2||^2.0||^6.4||^7.0", + "symfony/security-core": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/security-http": "^4.4.20||^5.0.11||^6.0||^7.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "doctrine/dbal": "^2.13||^3.0", + "doctrine/doctrine-bundle": "^1.12||^2.5", + "friendsofphp/php-cs-fixer": "^2.19||^3.40", + "masterminds/html5": "^2.8", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-symfony": "^1.0", + "phpunit/phpunit": "^8.5.14||^9.3.9", + "symfony/browser-kit": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/cache": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/dom-crawler": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/framework-bundle": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/http-client": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/messenger": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/monolog-bundle": "^3.4", + "symfony/phpunit-bridge": "^5.2.6||^6.0||^7.0", + "symfony/process": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/twig-bundle": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/yaml": "^4.4.20||^5.0.11||^6.0||^7.0", + "vimeo/psalm": "^4.3||^5.16.0" }, "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "doctrine/doctrine-bundle": "Allow distributed tracing of database queries using Sentry.", + "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler.", + "symfony/cache": "Allow distributed tracing of cache pools using Sentry.", + "symfony/twig-bundle": "Allow distributed tracing of Twig template rendering using Sentry." + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "releases/3.2.x": "3.2.x-dev", + "releases/2.x": "2.x-dev", + "releases/1.x": "1.x-dev" + } }, - "type": "library", "autoload": { + "files": [ + "src/aliases.php" + ], "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Sentry\\SentryBundle\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8711,84 +9347,70 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "David Cramer", + "email": "dcramer@gmail.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", + "description": "Symfony integration for Sentry (http://getsentry.com)", + "homepage": "http://getsentry.com", "keywords": [ - "cli", - "command-line", - "console", - "terminal" + "errors", + "logging", + "sentry", + "symfony" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.28" + "issues": "https://github.com/getsentry/sentry-symfony/issues", + "source": "https://github.com/getsentry/sentry-symfony/tree/4.13.2" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://sentry.io/", "type": "custom" }, { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "url": "https://sentry.io/pricing/", + "type": "custom" } ], - "time": "2023-08-07T06:12:30+00:00" + "time": "2024-01-11T14:55:45+00:00" }, { - "name": "symfony/debug-bundle", - "version": "v5.4.26", + "name": "siriusphp/upload", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/debug-bundle.git", - "reference": "17c372891d4554d5d2f5cf602aef02c859ad52d8" + "url": "https://github.com/siriusphp/upload.git", + "reference": "3a5a1d130c91d505bb6d06f4c9e2428ea5c01214" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/17c372891d4554d5d2f5cf602aef02c859ad52d8", - "reference": "17c372891d4554d5d2f5cf602aef02c859ad52d8", + "url": "https://api.github.com/repos/siriusphp/upload/zipball/3a5a1d130c91d505bb6d06f4c9e2428ea5c01214", + "reference": "3a5a1d130c91d505bb6d06f4c9e2428ea5c01214", "shasum": "" }, "require": { - "ext-xml": "*", - "php": ">=7.2.5", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "conflict": { - "symfony/config": "<4.4", - "symfony/dependency-injection": "<5.2" + "php": ">=7.1", + "siriusphp/validation": "~3.0" }, "require-dev": { - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/web-profiler-bundle": "^4.4|^5.0|^6.0" + "laminas/laminas-diactoros": "^2.2", + "phpunit/phpunit": "~8.5", + "symfony/http-foundation": "^4.4" }, "suggest": { - "symfony/config": "For service container configuration", - "symfony/dependency-injection": "For using as a service from the container" + "knplabs/gaufrette": "Alternative filesystem abstraction library for upload destinations", + "league/flysystem": "To upload to different destinations, not just to the local file system" }, - "type": "symfony-bundle", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bundle\\DebugBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Sirius\\Upload\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8796,88 +9418,51 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Adrian Miu", + "email": "adrian@adrianmiu.ro" } ], - "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v5.4.26" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } + "description": "Framework agnostic upload library", + "keywords": [ + "file", + "file upload", + "form", + "psr-7", + "security", + "upload", + "validation" ], - "time": "2023-07-11T21:42:03+00:00" + "support": { + "issues": "https://github.com/siriusphp/upload/issues", + "source": "https://github.com/siriusphp/upload/tree/3.0.1" + }, + "time": "2020-03-14T15:02:29+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v5.4.29", + "name": "siriusphp/validation", + "version": "3.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "338638ed8c9d5c7fcb136a73f5c7043465ae2f05" + "url": "https://github.com/siriusphp/validation.git", + "reference": "14dd292b10053d6269126f4cb6e334f78d4686c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/338638ed8c9d5c7fcb136a73f5c7043465ae2f05", - "reference": "338638ed8c9d5c7fcb136a73f5c7043465ae2f05", + "url": "https://api.github.com/repos/siriusphp/validation/zipball/14dd292b10053d6269126f4cb6e334f78d4686c4", + "reference": "14dd292b10053d6269126f4cb6e334f78d4686c4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "ext-psr": "<1.1|>=2", - "symfony/config": "<5.3", - "symfony/finder": "<4.4", - "symfony/proxy-manager-bridge": "<4.4", - "symfony/yaml": "<4.4.26" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" + "php": ">=7.1" }, "require-dev": { - "symfony/config": "^5.3|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4.26|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "phpunit/phpunit": "^8.5" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Sirius\\Validation\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8885,65 +9470,189 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Adrian Miu", + "email": "adrian@adrianmiu.ro" } ], - "description": "Allows you to standardize and centralize the way objects are constructed in your application", - "homepage": "https://symfony.com", + "description": "Data validation library. Validate arrays, array objects, domain models etc using a simple API. Easily add your own validators on top of the already dozens built-in validation rules", + "keywords": [ + "form", + "modeling", + "sanitization", + "security", + "validation" + ], "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.29" + "issues": "https://github.com/siriusphp/validation/issues", + "source": "https://github.com/siriusphp/validation/tree/3.1.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, + "time": "2022-09-21T19:51:46+00:00" + }, + { + "name": "squirrelphp/twig-php-syntax", + "version": "v1.7", + "source": { + "type": "git", + "url": "https://github.com/squirrelphp/twig-php-syntax.git", + "reference": "97738f7533de0fd5ed8f03d052d219bd23398976" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squirrelphp/twig-php-syntax/zipball/97738f7533de0fd5ed8f03d052d219bd23398976", + "reference": "97738f7533de0fd5ed8f03d052d219bd23398976", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "twig/twig": "^3.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.3", + "captainhook/plugin-composer": "^5.0", + "phpunit/phpunit": "^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Squirrel\\TwigPhpSyntax\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "name": "Andreas Leathley", + "email": "andreas.leathley@panaxis.ch" } ], - "time": "2023-09-20T06:23:43+00:00" + "description": "Adds common PHP syntax to twig templates, like ===, foreach and continue/break.", + "homepage": "https://github.com/squirrelphp/twig-php-syntax", + "keywords": [ + "foreach", + "php", + "syntax", + "twig" + ], + "support": { + "issues": "https://github.com/squirrelphp/twig-php-syntax/issues", + "source": "https://github.com/squirrelphp/twig-php-syntax/tree/v1.7" + }, + "time": "2021-11-29T23:24:13+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "name": "stof/doctrine-extensions-bundle", + "version": "v1.10.1", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "url": "https://github.com/stof/StofDoctrineExtensionsBundle.git", + "reference": "299d5333ce83941069852be36b949abbc776bf1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/299d5333ce83941069852be36b949abbc776bf1d", + "reference": "299d5333ce83941069852be36b949abbc776bf1d", "shasum": "" }, "require": { - "php": ">=7.1" + "gedmo/doctrine-extensions": "^3.5.0", + "php": "^7.2.5 || ^8.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0" }, - "type": "library", + "require-dev": { + "symfony/mime": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^v6.4.1 || ^7.0.1", + "symfony/security-core": "^5.4 || ^6.0 || ^7.0" + }, + "suggest": { + "doctrine/doctrine-bundle": "to use the ORM extensions", + "doctrine/mongodb-odm-bundle": "to use the MongoDB ODM extensions", + "symfony/mime": "To use the Mime component integration for Uploadable" + }, + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-main": "1.x-dev" } }, "autoload": { - "files": [ - "function.php" + "psr-4": { + "Stof\\DoctrineExtensionsBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + } + ], + "description": "Integration of the gedmo/doctrine-extensions with Symfony", + "homepage": "https://github.com/stof/StofDoctrineExtensionsBundle", + "keywords": [ + "behaviors", + "doctrine2", + "extensions", + "gedmo", + "loggable", + "nestedset", + "sluggable", + "sortable", + "timestampable", + "translatable", + "tree" + ], + "support": { + "issues": "https://github.com/stof/StofDoctrineExtensionsBundle/issues", + "source": "https://github.com/stof/StofDoctrineExtensionsBundle/tree/v1.10.1" + }, + "time": "2023-12-09T09:33:39+00:00" + }, + { + "name": "symfony/asset", + "version": "v5.4.31", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset.git", + "reference": "edb2457a0ef615d420d2319851f679a4cc3b3635" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset/zipball/edb2457a0ef615d420d2319851f679a4cc3b3635", + "reference": "edb2457a0ef615d420d2319851f679a4cc3b3635", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/http-foundation": "<5.3" + }, + "require-dev": { + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/http-foundation": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Asset\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8952,18 +9661,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A generic function and convention to trigger deprecation notices", + "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/asset/tree/v5.4.31" }, "funding": [ { @@ -8979,84 +9688,61 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { - "name": "symfony/doctrine-bridge", - "version": "v5.4.28", + "name": "symfony/cache", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "70780f364af653951da5f82caea2e83407d890d0" + "url": "https://github.com/symfony/cache.git", + "reference": "b17f28169f7a2f2c0cddf2b044d729f5b75efe5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/70780f364af653951da5f82caea2e83407d890d0", - "reference": "70780f364af653951da5f82caea2e83407d890d0", + "url": "https://api.github.com/repos/symfony/cache/zipball/b17f28169f7a2f2c0cddf2b044d729f5b75efe5a", + "reference": "b17f28169f7a2f2c0cddf2b044d729f5b75efe5a", "shasum": "" }, "require": { - "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^2|^3", "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "conflict": { "doctrine/dbal": "<2.13.1", - "doctrine/lexer": "<1.1", - "doctrine/orm": "<2.7.4", - "symfony/cache": "<5.4", "symfony/dependency-injection": "<4.4", - "symfony/form": "<5.4.21|>=6,<6.2.7", - "symfony/http-kernel": "<5", - "symfony/messenger": "<4.4", - "symfony/property-info": "<5", - "symfony/proxy-manager-bridge": "<4.4.19", - "symfony/security-bundle": "<5", - "symfony/security-core": "<5.3", - "symfony/validator": "<5.4.25|>=6,<6.2.12|>=6.3,<6.3.1" + "symfony/http-kernel": "<4.4", + "symfony/var-dumper": "<4.4" + }, + "provide": { + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0|2.0", + "symfony/cache-implementation": "1.0|2.0" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "doctrine/collections": "^1.0|^2.0", - "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.13.1|^3.0", - "doctrine/orm": "^2.7.4", - "psr/log": "^1|^2|^3", - "symfony/cache": "^5.4|^6.0", + "cache/integration-tests": "dev-master", + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0|^2.0", "symfony/config": "^4.4|^5.0|^6.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/doctrine-messenger": "^5.1|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^5.4.21|^6.2.7", - "symfony/http-kernel": "^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/property-info": "^5.0|^6.0", - "symfony/proxy-manager-bridge": "^4.4|^5.0|^6.0", - "symfony/security-core": "^5.3|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", - "symfony/validator": "^5.4.25|~6.2.12|^6.3.1", "symfony/var-dumper": "^4.4|^5.0|^6.0" }, - "suggest": { - "doctrine/data-fixtures": "", - "doctrine/dbal": "", - "doctrine/orm": "", - "symfony/form": "", - "symfony/property-info": "", - "symfony/validator": "" - }, - "type": "symfony-bridge", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bridge\\Doctrine\\": "" + "Symfony\\Component\\Cache\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9068,18 +9754,22 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides integration for Doctrine with various Symfony components", + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.28" + "source": "https://github.com/symfony/cache/tree/v5.4.34" }, "funding": [ { @@ -9095,38 +9785,43 @@ "type": "tidelift" } ], - "time": "2023-08-08T10:04:45+00:00" + "time": "2023-12-18T14:56:06+00:00" }, { - "name": "symfony/dotenv", - "version": "v5.4.22", + "name": "symfony/cache-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/dotenv.git", - "reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3" + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/77b7660bfcb85e8f28287d557d7af0046bcd2ca3", - "reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3" + "psr/cache": "^1.0|^2.0|^3.0" }, - "require-dev": { - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0" + "suggest": { + "symfony/cache-implementation": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Dotenv\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Cache\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9134,23 +9829,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Registers environment variables from a .env file", + "description": "Generic abstractions related to caching", "homepage": "https://symfony.com", "keywords": [ - "dotenv", - "env", - "environment" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.4.22" + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" }, "funding": [ { @@ -9166,39 +9864,47 @@ "type": "tidelift" } ], - "time": "2023-03-09T20:36:58+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { - "name": "symfony/error-handler", - "version": "v5.4.29", + "name": "symfony/config", + "version": "v5.4.31", "source": { "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078" + "url": "https://github.com/symfony/config.git", + "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/328c6fcfd2f90b64c16efaf0ea67a311d672f078", - "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078", + "url": "https://api.github.com/repos/symfony/config/zipball/dd5ea39de228813aba0c23c3a4153da2a4cf3cd9", + "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" + }, + "conflict": { + "symfony/finder": "<4.4" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" + "Symfony\\Component\\Config\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9218,10 +9924,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to manage errors and ease debugging PHP code", + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.4.29" + "source": "https://github.com/symfony/config/tree/v5.4.31" }, "funding": [ { @@ -9237,53 +9943,61 @@ "type": "tidelift" } ], - "time": "2023-09-06T21:54:06+00:00" + "time": "2023-11-09T08:22:43+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v5.4.26", + "name": "symfony/console", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac" + "url": "https://github.com/symfony/console.git", + "reference": "4b4d8cd118484aa604ec519062113dd87abde18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/5dcc00e03413f05c1e7900090927bb7247cb0aac", - "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac", + "url": "https://api.github.com/repos/symfony/console/zipball/4b4d8cd118484aa604ec519062113dd87abde18c", + "reference": "4b4d8cd118484aa604ec519062113dd87abde18c", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher-contracts": "^2|^3", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { - "symfony/dependency-injection": "<4.4" + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" }, "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0" + "psr/log-implementation": "1.0|2.0" }, "require-dev": { - "psr/log": "^1|^2|^3", + "psr/log": "^1|^2", "symfony/config": "^4.4|^5.0|^6.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^4.4|^5.0|^6.0" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Component\\Console\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9303,10 +10017,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.26" + "source": "https://github.com/symfony/console/tree/v5.4.34" }, "funding": [ { @@ -9322,40 +10042,34 @@ "type": "tidelift" } ], - "time": "2023-07-06T06:34:20+00:00" + "time": "2023-12-08T13:33:03+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "name": "symfony/css-selector", + "version": "v5.4.26", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "url": "https://github.com/symfony/css-selector.git", + "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", + "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9363,26 +10077,22 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", + "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/css-selector/tree/v5.4.26" }, "funding": [ { @@ -9398,31 +10108,47 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2023-07-07T06:10:25+00:00" }, { - "name": "symfony/expression-language", - "version": "v5.4.21", + "name": "symfony/debug-bundle", + "version": "v5.4.26", "source": { "type": "git", - "url": "https://github.com/symfony/expression-language.git", - "reference": "501589522b844b8eecf012c133f0404f0eef77ac" + "url": "https://github.com/symfony/debug-bundle.git", + "reference": "17c372891d4554d5d2f5cf602aef02c859ad52d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/501589522b844b8eecf012c133f0404f0eef77ac", - "reference": "501589522b844b8eecf012c133f0404f0eef77ac", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/17c372891d4554d5d2f5cf602aef02c859ad52d8", + "reference": "17c372891d4554d5d2f5cf602aef02c859ad52d8", "shasum": "" }, "require": { + "ext-xml": "*", "php": ">=7.2.5", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/polyfill-php80": "^1.16", + "symfony/twig-bridge": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, - "type": "library", + "conflict": { + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.2" + }, + "require-dev": { + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/web-profiler-bundle": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/config": "For service container configuration", + "symfony/dependency-injection": "For using as a service from the container" + }, + "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Component\\ExpressionLanguage\\": "" + "Symfony\\Bundle\\DebugBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9442,10 +10168,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an engine that can compile and evaluate expressions", + "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v5.4.21" + "source": "https://github.com/symfony/debug-bundle/tree/v5.4.26" }, "funding": [ { @@ -9461,32 +10187,57 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-07-11T21:42:03+00:00" }, { - "name": "symfony/filesystem", - "version": "v5.4.25", + "name": "symfony/dependency-injection", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "75d568165a65fa7d8124869ec7c3a90424352e6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/75d568165a65fa7d8124869ec7c3a90424352e6c", + "reference": "75d568165a65fa7d8124869ec7c3a90424352e6c", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" + "psr/container": "^1.1.1", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "ext-psr": "<1.1|>=2", + "symfony/config": "<5.3", + "symfony/finder": "<4.4", + "symfony/proxy-manager-bridge": "<4.4", + "symfony/yaml": "<4.4.26" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/config": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4.26|^5.0|^6.0" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Filesystem\\": "" + "Symfony\\Component\\DependencyInjection\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9506,10 +10257,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides basic utilities for the filesystem", + "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.25" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.34" }, "funding": [ { @@ -9525,34 +10276,38 @@ "type": "tidelift" } ], - "time": "2023-05-31T13:04:02+00:00" + "time": "2023-12-28T09:31:38+00:00" }, { - "name": "symfony/finder", - "version": "v5.4.27", + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.1" }, "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" }, - "exclude-from-classmap": [ - "/Tests/" + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -9561,83 +10316,18 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Finds files and directories via an intuitive fluent interface", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.27" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-31T08:02:31+00:00" - }, - { - "name": "symfony/flex", - "version": "v2.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/flex.git", - "reference": "9c402af768c6c9f8126a9ffa192ecf7c16581e35" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/9c402af768c6c9f8126a9ffa192ecf7c16581e35", - "reference": "9c402af768c6c9f8126a9ffa192ecf7c16581e35", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^2.1", - "php": ">=8.0" - }, - "require-dev": { - "composer/composer": "^2.1", - "symfony/dotenv": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/phpunit-bridge": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Symfony\\Flex\\Flex" - }, - "autoload": { - "psr-4": { - "Symfony\\Flex\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien.potencier@gmail.com" - } - ], - "description": "Composer plugin for Symfony", - "support": { - "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.3.3" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" }, "funding": [ { @@ -9653,70 +10343,84 @@ "type": "tidelift" } ], - "time": "2023-08-04T09:02:35+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { - "name": "symfony/form", - "version": "v5.4.29", + "name": "symfony/doctrine-bridge", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/form.git", - "reference": "57baf5a73a68c24dfe12d0d93bec119ec71acb48" + "url": "https://github.com/symfony/doctrine-bridge.git", + "reference": "0c5e5ad8b8249a0a86f415e16695180c3b61be76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/57baf5a73a68c24dfe12d0d93bec119ec71acb48", - "reference": "57baf5a73a68c24dfe12d0d93bec119ec71acb48", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/0c5e5ad8b8249a0a86f415e16695180c3b61be76", + "reference": "0c5e5ad8b8249a0a86f415e16695180c3b61be76", "shasum": "" }, "require": { + "doctrine/event-manager": "~1.0", + "doctrine/persistence": "^2|^3", "php": ">=7.2.5", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/options-resolver": "^5.1|^6.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.23", - "symfony/property-access": "^5.0.8|^6.0", "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "symfony/console": "<4.4", + "doctrine/dbal": "<2.13.1", + "doctrine/lexer": "<1.1", + "doctrine/orm": "<2.7.4", + "symfony/cache": "<5.4", "symfony/dependency-injection": "<4.4", - "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", - "symfony/error-handler": "<4.4.5", - "symfony/framework-bundle": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/translation": "<4.4", - "symfony/translation-contracts": "<1.1.7", - "symfony/twig-bridge": "<5.4.21|>=6,<6.2.7" + "symfony/form": "<5.4.21|>=6,<6.2.7", + "symfony/http-kernel": "<5", + "symfony/messenger": "<4.4", + "symfony/property-info": "<5", + "symfony/proxy-manager-bridge": "<4.4.19", + "symfony/security-bundle": "<5", + "symfony/security-core": "<5.3", + "symfony/validator": "<5.4.25|>=6,<6.2.12|>=6.3,<6.3.1" }, "require-dev": { + "doctrine/annotations": "^1.10.4|^2", "doctrine/collections": "^1.0|^2.0", + "doctrine/data-fixtures": "^1.1", + "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/orm": "^2.7.4|^3", + "psr/log": "^1|^2|^3", + "symfony/cache": "^5.4|^6.0", "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^5.4|^6.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/doctrine-messenger": "^5.1|^6.0", "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/form": "^5.4.21|^6.2.7", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.0|^6.0", + "symfony/proxy-manager-bridge": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.3|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", "symfony/translation": "^4.4|^5.0|^6.0", "symfony/uid": "^5.1|^6.0", - "symfony/validator": "^4.4.17|^5.1.9|^6.0", + "symfony/validator": "^5.4.25|~6.2.12|^6.3.1", "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { - "symfony/security-csrf": "For protecting forms against CSRF attacks.", - "symfony/twig-bridge": "For templating with Twig.", - "symfony/validator": "For form validation." + "doctrine/data-fixtures": "", + "doctrine/dbal": "", + "doctrine/orm": "", + "symfony/form": "", + "symfony/property-info": "", + "symfony/validator": "" }, - "type": "library", + "type": "symfony-bridge", "autoload": { "psr-4": { - "Symfony\\Component\\Form\\": "" + "Symfony\\Bridge\\Doctrine\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9736,10 +10440,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Allows to easily create, process and reuse HTML forms", + "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v5.4.29" + "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.34" }, "funding": [ { @@ -9755,118 +10459,34 @@ "type": "tidelift" } ], - "time": "2023-09-10T17:22:50+00:00" + "time": "2023-12-14T14:38:10+00:00" }, { - "name": "symfony/framework-bundle", - "version": "v5.4.29", + "name": "symfony/dotenv", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/framework-bundle.git", - "reference": "63e4ad1386fd4f31a005d751cd4dc016f9f2346e" + "url": "https://github.com/symfony/dotenv.git", + "reference": "07d75571cc7efc88f1aae96eddc5f671826c7327" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/63e4ad1386fd4f31a005d751cd4dc016f9f2346e", - "reference": "63e4ad1386fd4f31a005d751cd4dc016f9f2346e", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/07d75571cc7efc88f1aae96eddc5f671826c7327", + "reference": "07d75571cc7efc88f1aae96eddc5f671826c7327", "shasum": "" }, "require": { - "ext-xml": "*", "php": ">=7.2.5", - "symfony/cache": "^5.2|^6.0", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^5.4.5|^6.0.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4.1|^5.0.1|^6.0", - "symfony/event-dispatcher": "^5.1|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.4.24|^6.2.11", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/routing": "^5.3|^6.0" - }, - "conflict": { - "doctrine/annotations": "<1.13.1", - "doctrine/cache": "<1.11", - "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/asset": "<5.3", - "symfony/console": "<5.2.5", - "symfony/dom-crawler": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/form": "<5.2", - "symfony/http-client": "<4.4", - "symfony/lock": "<4.4", - "symfony/mailer": "<5.2", - "symfony/messenger": "<5.4", - "symfony/mime": "<4.4", - "symfony/property-access": "<5.3", - "symfony/property-info": "<4.4", - "symfony/security-csrf": "<5.3", - "symfony/serializer": "<5.2", - "symfony/service-contracts": ">=3.0", - "symfony/stopwatch": "<4.4", - "symfony/translation": "<5.3", - "symfony/twig-bridge": "<4.4", - "symfony/twig-bundle": "<4.4", - "symfony/validator": "<5.3.11", - "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<5.2" + "symfony/deprecation-contracts": "^2.1|^3" }, "require-dev": { - "doctrine/annotations": "^1.13.1|^2", - "doctrine/cache": "^1.11|^2.0", - "doctrine/persistence": "^1.3|^2|^3", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.3|^6.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/console": "^5.4.9|^6.0.9", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0", - "symfony/dotenv": "^5.1|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^5.2|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/mailer": "^5.2|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/notifier": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/property-info": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/security-bundle": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/string": "^5.0|^6.0", - "symfony/translation": "^5.3|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/validator": "^5.3.11|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/workflow": "^5.2|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^2.10|^3.0" - }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, - "type": "symfony-bundle", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bundle\\FrameworkBundle\\": "" + "Symfony\\Component\\Dotenv\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9886,10 +10506,15 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", + "description": "Registers environment variables from a .env file", "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v5.4.29" + "source": "https://github.com/symfony/dotenv/tree/v5.4.34" }, "funding": [ { @@ -9905,56 +10530,124 @@ "type": "tidelift" } ], - "time": "2023-09-27T13:49:58+00:00" + "time": "2023-12-28T12:17:46+00:00" }, { - "name": "symfony/http-client", + "name": "symfony/error-handler", "version": "v5.4.29", "source": { "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "04784c66cbee613a827363ee1e65db65392893c1" + "url": "https://github.com/symfony/error-handler.git", + "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/04784c66cbee613a827363ee1e65db65392893c1", - "reference": "04784c66cbee613a827363ee1e65db65392893c1", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/328c6fcfd2f90b64c16efaf0ea67a311d672f078", + "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "require-dev": { "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-client-contracts": "^2.4", - "symfony/polyfill-php73": "^1.11", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.0|^2|^3" + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v5.4.29" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-06T21:54:06+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v5.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e3bca343efeb613f843c254e7718ef17c9bdf7a3", + "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<4.4" }, "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "2.4" + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { - "amphp/amp": "^2.5", - "amphp/http-client": "^4.2.1", - "amphp/http-tunnel": "^1.0", - "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4", - "nyholm/psr7": "^1.0", - "php-http/httplug": "^1.0|^2.0", - "php-http/message-factory": "^1.0", - "psr/http-client": "^1.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0|^6.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", "symfony/stopwatch": "^4.4|^5.0|^6.0" }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpClient\\": "" + "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9966,21 +10659,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", - "keywords": [ - "http" - ], "support": { - "source": "https://github.com/symfony/http-client/tree/v5.4.29" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.34" }, "funding": [ { @@ -9996,32 +10686,30 @@ "type": "tidelift" } ], - "time": "2023-09-14T20:49:15+00:00" + "time": "2023-12-27T21:12:56+00:00" }, { - "name": "symfony/http-client-contracts", - "version": "v2.5.2", + "name": "symfony/event-dispatcher-contracts", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -10030,7 +10718,7 @@ }, "autoload": { "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" + "Symfony\\Contracts\\EventDispatcher\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -10047,7 +10735,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to HTTP clients", + "description": "Generic abstractions related to dispatching event", "homepage": "https://symfony.com", "keywords": [ "abstractions", @@ -10058,7 +10746,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -10074,44 +10762,31 @@ "type": "tidelift" } ], - "time": "2022-04-12T15:48:08+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { - "name": "symfony/http-foundation", - "version": "v5.4.28", + "name": "symfony/expression-language", + "version": "v5.4.21", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "365992c83a836dfe635f1e903ccca43ee03d3dd2" + "url": "https://github.com/symfony/expression-language.git", + "reference": "501589522b844b8eecf012c133f0404f0eef77ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/365992c83a836dfe635f1e903ccca43ee03d3dd2", - "reference": "365992c83a836dfe635f1e903ccca43ee03d3dd2", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/501589522b844b8eecf012c133f0404f0eef77ac", + "reference": "501589522b844b8eecf012c133f0404f0eef77ac", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "predis/predis": "~1.0", "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" + "symfony/service-contracts": "^1.1|^2|^3" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" + "Symfony\\Component\\ExpressionLanguage\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -10131,10 +10806,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Defines an object-oriented layer for the HTTP specification", + "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.28" + "source": "https://github.com/symfony/expression-language/tree/v5.4.21" }, "funding": [ { @@ -10150,80 +10825,32 @@ "type": "tidelift" } ], - "time": "2023-08-21T07:23:18+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { - "name": "symfony/http-kernel", - "version": "v5.4.29", + "name": "symfony/filesystem", + "version": "v5.4.25", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7" + "url": "https://github.com/symfony/filesystem.git", + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7", - "reference": "f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/log": "^1|^2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^5.0|^6.0", - "symfony/http-foundation": "^5.4.21|^6.2.7", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", "symfony/polyfill-php80": "^1.16" }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.0", - "symfony/config": "<5.0", - "symfony/console": "<4.4", - "symfony/dependency-injection": "<5.3", - "symfony/doctrine-bridge": "<5.0", - "symfony/form": "<5.0", - "symfony/http-client": "<5.0", - "symfony/mailer": "<5.0", - "symfony/messenger": "<5.0", - "symfony/translation": "<5.0", - "symfony/twig-bridge": "<5.0", - "symfony/validator": "<5.0", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" + "Symfony\\Component\\Filesystem\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -10243,10 +10870,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a structured process for converting a Request into a Response", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.4.29" + "source": "https://github.com/symfony/filesystem/tree/v5.4.25" }, "funding": [ { @@ -10262,20 +10889,20 @@ "type": "tidelift" } ], - "time": "2023-09-30T06:31:17+00:00" + "time": "2023-05-31T13:04:02+00:00" }, { - "name": "symfony/intl", - "version": "v5.4.26", + "name": "symfony/finder", + "version": "v5.4.27", "source": { "type": "git", - "url": "https://github.com/symfony/intl.git", - "reference": "c26c40b64ecdc056810e294ea67ac5b34182cd69" + "url": "https://github.com/symfony/finder.git", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/c26c40b64ecdc056810e294ea67ac5b34182cd69", - "reference": "c26c40b64ecdc056810e294ea67ac5b34182cd69", + "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", "shasum": "" }, "require": { @@ -10283,21 +10910,11 @@ "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, - "require-dev": { - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/var-exporter": "^5.4|^6.0" - }, "type": "library", "autoload": { - "files": [ - "Resources/functions.php" - ], "psr-4": { - "Symfony\\Component\\Intl\\": "" + "Symfony\\Component\\Finder\\": "" }, - "classmap": [ - "Resources/stubs" - ], "exclude-from-classmap": [ "/Tests/" ] @@ -10308,34 +10925,18 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - }, - { - "name": "Eriksen Costa", - "email": "eriksen.costa@infranology.com.br" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", - "keywords": [ - "i18n", - "icu", - "internationalization", - "intl", - "l10n", - "localization" - ], "support": { - "source": "https://github.com/symfony/intl/tree/v5.4.26" + "source": "https://github.com/symfony/finder/tree/v5.4.27" }, "funding": [ { @@ -10351,43 +10952,41 @@ "type": "tidelift" } ], - "time": "2023-07-13T09:02:54+00:00" + "time": "2023-07-31T08:02:31+00:00" }, { - "name": "symfony/lock", - "version": "v5.4.25", + "name": "symfony/flex", + "version": "v2.4.3", "source": { "type": "git", - "url": "https://github.com/symfony/lock.git", - "reference": "ed4055b2e03c8893ce2d0042c8f0e0707be8e179" + "url": "https://github.com/symfony/flex.git", + "reference": "6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/ed4055b2e03c8893ce2d0042c8f0e0707be8e179", - "reference": "ed4055b2e03c8893ce2d0042c8f0e0707be8e179", + "url": "https://api.github.com/repos/symfony/flex/zipball/6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1", + "reference": "6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "doctrine/dbal": "<2.13" + "composer-plugin-api": "^2.1", + "php": ">=8.0" }, "require-dev": { - "doctrine/dbal": "^2.13|^3.0", - "predis/predis": "~1.0" + "composer/composer": "^2.1", + "symfony/dotenv": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/phpunit-bridge": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Flex\\Flex" }, - "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Lock\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Flex\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10395,26 +10994,14 @@ ], "authors": [ { - "name": "Jérémy Derussé", - "email": "jeremy@derusse.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" } ], - "description": "Creates and manages locks, a mechanism to provide exclusive access to a shared resource", - "homepage": "https://symfony.com", - "keywords": [ - "cas", - "flock", - "locking", - "mutex", - "redlock", - "semaphore" - ], + "description": "Composer plugin for Symfony", "support": { - "source": "https://github.com/symfony/lock/tree/v5.4.25" + "issues": "https://github.com/symfony/flex/issues", + "source": "https://github.com/symfony/flex/tree/v2.4.3" }, "funding": [ { @@ -10430,44 +11017,70 @@ "type": "tidelift" } ], - "time": "2023-06-22T08:06:06+00:00" + "time": "2024-01-02T11:08:32+00:00" }, { - "name": "symfony/mailer", - "version": "v5.4.22", + "name": "symfony/form", + "version": "v5.4.33", "source": { "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "6330cd465dfd8b7a07515757a1c37069075f7b0b" + "url": "https://github.com/symfony/form.git", + "reference": "9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/6330cd465dfd8b7a07515757a1c37069075f7b0b", - "reference": "6330cd465dfd8b7a07515757a1c37069075f7b0b", + "url": "https://api.github.com/repos/symfony/form/zipball/9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec", + "reference": "9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3|^4", "php": ">=7.2.5", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.1|^3", "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/mime": "^5.2.6|^6.0", + "symfony/options-resolver": "^5.1|^6.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.23", + "symfony/property-access": "^5.0.8|^6.0", "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "symfony/http-kernel": "<4.4" + "symfony/console": "<4.4", + "symfony/dependency-injection": "<4.4", + "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", + "symfony/error-handler": "<4.4.5", + "symfony/framework-bundle": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/translation": "<4.4", + "symfony/translation-contracts": "<1.1.7", + "symfony/twig-bridge": "<5.4.21|>=6,<6.2.7" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0" + "doctrine/collections": "^1.0|^2.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "symfony/validator": "^4.4.17|^5.1.9|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/security-csrf": "For protecting forms against CSRF attacks.", + "symfony/twig-bridge": "For templating with Twig.", + "symfony/validator": "For form validation." }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Mailer\\": "" + "Symfony\\Component\\Form\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -10487,10 +11100,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Helps sending emails", + "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v5.4.22" + "source": "https://github.com/symfony/form/tree/v5.4.33" }, "funding": [ { @@ -10506,48 +11119,118 @@ "type": "tidelift" } ], - "time": "2023-03-10T10:15:32+00:00" + "time": "2023-11-30T10:45:54+00:00" }, { - "name": "symfony/mime", - "version": "v5.4.26", + "name": "symfony/framework-bundle", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2" + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "ee446bb6a89ec758ffc1614f54c003124c7d7a88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2ea06dfeee20000a319d8407cea1d47533d5a9d2", - "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ee446bb6a89ec758ffc1614f54c003124c7d7a88", + "reference": "ee446bb6a89ec758ffc1614f54c003124c7d7a88", "shasum": "" }, "require": { + "ext-xml": "*", "php": ">=7.2.5", + "symfony/cache": "^5.2|^6.0", + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^5.4.5|^6.0.5", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16" + "symfony/error-handler": "^4.4.1|^5.0.1|^6.0", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.4.24|^6.2.11", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22", + "symfony/routing": "^5.3|^6.0" }, "conflict": { - "egulias/email-validator": "~3.0.0", + "doctrine/annotations": "<1.13.1", + "doctrine/cache": "<1.11", + "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4", - "symfony/serializer": "<5.4.26|>=6,<6.2.13|>=6.3,<6.3.2" + "symfony/asset": "<5.3", + "symfony/console": "<5.2.5|>=7.0", + "symfony/dom-crawler": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/form": "<5.2", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<5.2", + "symfony/messenger": "<5.4", + "symfony/mime": "<4.4", + "symfony/property-access": "<5.3", + "symfony/property-info": "<4.4", + "symfony/security-csrf": "<5.3", + "symfony/serializer": "<5.2", + "symfony/service-contracts": ">=3.0", + "symfony/stopwatch": "<4.4", + "symfony/translation": "<5.3", + "symfony/twig-bridge": "<4.4", + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<5.3.11", + "symfony/web-profiler-bundle": "<4.4", + "symfony/workflow": "<5.2" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", + "doctrine/annotations": "^1.13.1|^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/persistence": "^1.3|^2|^3", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.1|^6.0", - "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.4.26|~6.2.13|^6.3.2" + "symfony/asset": "^5.3|^6.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/console": "^5.4.9|^6.0.9", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0", + "symfony/dotenv": "^5.1|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^5.2|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/mailer": "^5.2|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/notifier": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-info": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/security-bundle": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/string": "^5.0|^6.0", + "symfony/translation": "^5.3|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^5.3.11|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/twig": "^2.10|^3.0" }, - "type": "library", + "suggest": { + "ext-apcu": "For best performance of the system caches", + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Component\\Mime\\": "" + "Symfony\\Bundle\\FrameworkBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -10567,14 +11250,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Allows manipulating MIME messages", + "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.26" + "source": "https://github.com/symfony/framework-bundle/tree/v5.4.34" }, "funding": [ { @@ -10590,52 +11269,56 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:29:31+00:00" + "time": "2023-12-29T14:52:40+00:00" }, { - "name": "symfony/monolog-bridge", - "version": "v5.4.22", + "name": "symfony/http-client", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "34be6f0695e4187dbb832a05905fb4c6581ac39a" + "url": "https://github.com/symfony/http-client.git", + "reference": "8fe833b758bc5b325e9d96a913376d6d57a90fb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/34be6f0695e4187dbb832a05905fb4c6581ac39a", - "reference": "34be6f0695e4187dbb832a05905fb4c6581ac39a", + "url": "https://api.github.com/repos/symfony/http-client/zipball/8fe833b758bc5b325e9d96a913376d6d57a90fb0", + "reference": "8fe833b758bc5b325e9d96a913376d6d57a90fb0", "shasum": "" }, "require": { - "monolog/monolog": "^1.25.1|^2", "php": ">=7.2.5", + "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.3|^6.0", + "symfony/http-client-contracts": "^2.4", + "symfony/polyfill-php73": "^1.11", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/service-contracts": "^1.0|^2|^3" }, - "conflict": { - "symfony/console": "<4.4", - "symfony/http-foundation": "<5.3" + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "2.4" }, "require-dev": { - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/mailer": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", - "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", - "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "php-http/message-factory": "^1.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bridge\\Monolog\\": "" + "Symfony\\Component\\HttpClient\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -10647,18 +11330,21 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides integration for Monolog with various Symfony components", + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", + "keywords": [ + "http" + ], "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.22" + "source": "https://github.com/symfony/http-client/tree/v5.4.34" }, "funding": [ { @@ -10674,48 +11360,42 @@ "type": "tidelift" } ], - "time": "2023-03-06T21:29:33+00:00" + "time": "2023-12-02T08:41:43+00:00" }, { - "name": "symfony/monolog-bundle", - "version": "v3.8.0", + "name": "symfony/http-client-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d" + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", "shasum": "" }, "require": { - "monolog/monolog": "^1.22 || ^2.0 || ^3.0", - "php": ">=7.1.3", - "symfony/config": "~4.4 || ^5.0 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", - "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" + "php": ">=7.2.5" }, - "require-dev": { - "symfony/console": "~4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.2 || ^6.0", - "symfony/yaml": "~4.4 || ^5.0 || ^6.0" + "suggest": { + "symfony/http-client-implementation": "" }, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Symfony\\Bundle\\MonologBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\HttpClient\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10723,23 +11403,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony MonologBundle", + "description": "Generic abstractions related to HTTP clients", "homepage": "https://symfony.com", "keywords": [ - "log", - "logging" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.8.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" }, "funding": [ { @@ -10755,32 +11438,44 @@ "type": "tidelift" } ], - "time": "2022-05-10T14:24:36+00:00" + "time": "2022-04-12T15:48:08+00:00" }, { - "name": "symfony/options-resolver", - "version": "v5.4.21", + "name": "symfony/http-foundation", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "4da1713e88cf9c44bd4bf65f54772681222fcbec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", - "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/4da1713e88cf9c44bd4bf65f54772681222fcbec", + "reference": "4da1713e88cf9c44bd4bf65f54772681222fcbec", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.16" }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" + "Symfony\\Component\\HttpFoundation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -10800,15 +11495,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an improved replacement for the array_replace PHP function", + "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.34" }, "funding": [ { @@ -10824,38 +11514,80 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-12-27T11:45:35+00:00" }, { - "name": "symfony/password-hasher", - "version": "v5.4.29", + "name": "symfony/http-kernel", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/password-hasher.git", - "reference": "57cd0369af1a92b87c1e960251ebdf9457225bfd" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/57cd0369af1a92b87c1e960251ebdf9457225bfd", - "reference": "57cd0369af1a92b87c1e960251ebdf9457225bfd", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b", + "reference": "f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b", "shasum": "" }, "require": { "php": ">=7.2.5", + "psr/log": "^1|^2", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.15" + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/security-core": "<5.3" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" }, - "require-dev": { - "symfony/console": "^5.3|^6.0", - "symfony/security-core": "^5.3|^6.0" + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PasswordHasher\\": "" + "Symfony\\Component\\HttpKernel\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -10867,22 +11599,18 @@ ], "authors": [ { - "name": "Robin Chalas", - "email": "robin.chalas@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides password hashing utilities", + "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", - "keywords": [ - "hashing", - "password" - ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v5.4.29" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.34" }, "funding": [ { @@ -10898,48 +11626,45 @@ "type": "tidelift" } ], - "time": "2023-09-19T07:33:45+00:00" + "time": "2023-12-30T13:02:02+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "name": "symfony/intl", + "version": "v5.4.30", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "url": "https://github.com/symfony/intl.git", + "reference": "cd6cce16151ac871071a3495e7a325460b952b5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/intl/zipball/cd6cce16151ac871071a3495e7a325460b952b5a", + "reference": "cd6cce16151ac871071a3495e7a325460b952b5a", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, - "suggest": { - "ext-ctype": "For best performance" + "require-dev": { + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "files": [ - "bootstrap.php" + "Resources/functions.php" ], "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } + "Symfony\\Component\\Intl\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10947,24 +11672,34 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Eriksen Costa", + "email": "eriksen.costa@infranology.com.br" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "i18n", + "icu", + "internationalization", + "intl", + "l10n", + "localization" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/intl/tree/v5.4.30" }, "funding": [ { @@ -10980,45 +11715,43 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2023-10-28T09:19:54+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "name": "symfony/lock", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "url": "https://github.com/symfony/lock.git", + "reference": "26ff165e2b501ff7ead2f30a02f7e0eb0975866e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/lock/zipball/26ff165e2b501ff7ead2f30a02f7e0eb0975866e", + "reference": "26ff165e2b501ff7ead2f30a02f7e0eb0975866e", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, - "suggest": { - "ext-intl": "For best performance" + "conflict": { + "doctrine/dbal": "<2.13" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "doctrine/dbal": "^2.13|^3|^4", + "predis/predis": "~1.0" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } + "Symfony\\Component\\Lock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11026,26 +11759,26 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Jérémy Derussé", + "email": "jeremy@derusse.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", + "description": "Creates and manages locks, a mechanism to provide exclusive access to a shared resource", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" + "cas", + "flock", + "locking", + "mutex", + "redlock", + "semaphore" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/lock/tree/v5.4.34" }, "funding": [ { @@ -11061,48 +11794,45 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2023-12-18T14:56:06+00:00" }, { - "name": "symfony/polyfill-intl-icu", - "version": "v1.28.0", + "name": "symfony/mailer", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "e46b4da57951a16053cd751f63f4a24292788157" + "url": "https://github.com/symfony/mailer.git", + "reference": "0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e46b4da57951a16053cd751f63f4a24292788157", - "reference": "e46b4da57951a16053cd751f63f4a24292788157", + "url": "https://api.github.com/repos/symfony/mailer/zipball/0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5", + "reference": "0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5", "shasum": "" }, "require": { - "php": ">=7.1" + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=7.2.5", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2.6|^6.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3" }, - "suggest": { - "ext-intl": "For best performance and support of other locales than \"en\"" + "conflict": { + "symfony/http-kernel": "<4.4" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Icu\\": "" + "Symfony\\Component\\Mailer\\": "" }, - "classmap": [ - "Resources/stubs" - ], "exclude-from-classmap": [ "/Tests/" ] @@ -11113,26 +11843,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's ICU-related data and classes", + "description": "Helps sending emails", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "icu", - "intl", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.28.0" + "source": "https://github.com/symfony/mailer/tree/v5.4.34" }, "funding": [ { @@ -11148,47 +11870,52 @@ "type": "tidelift" } ], - "time": "2023-03-21T17:27:24+00:00" + "time": "2023-12-02T08:41:43+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.28.0", + "name": "symfony/mime", + "version": "v5.4.26", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + "url": "https://github.com/symfony/mime.git", + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "url": "https://api.github.com/repos/symfony/mime/zipball/2ea06dfeee20000a319d8407cea1d47533d5a9d2", + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" }, - "suggest": { - "ext-intl": "For best performance" + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<4.4", + "symfony/serializer": "<5.4.26|>=6,<6.2.13|>=6.3,<6.3.2" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.4.26|~6.2.13|^6.3.2" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - } + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11196,30 +11923,22 @@ ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "description": "Allows manipulating MIME messages", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" + "mime", + "mime-type" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + "source": "https://github.com/symfony/mime/tree/v5.4.26" }, "funding": [ { @@ -11235,47 +11954,55 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:30:37+00:00" + "time": "2023-07-27T06:29:31+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "name": "symfony/monolog-bridge", + "version": "v5.4.31", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "3e295d9b0a873476356cb6cff0ce39b3f528b387" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/3e295d9b0a873476356cb6cff0ce39b3f528b387", + "reference": "3e295d9b0a873476356cb6cff0ce39b3f528b387", "shasum": "" }, "require": { - "php": ">=7.1" + "monolog/monolog": "^1.25.1|^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3" }, - "suggest": { - "ext-intl": "For best performance" + "conflict": { + "symfony/console": "<4.4", + "symfony/http-foundation": "<5.3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mailer": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", + "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", + "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." }, + "type": "symfony-bridge", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + "Symfony\\Bridge\\Monolog\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -11284,26 +12011,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", + "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.31" }, "funding": [ { @@ -11319,48 +12038,48 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "name": "symfony/monolog-bundle", + "version": "v3.10.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" + "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", + "php": ">=7.2.5", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" }, - "suggest": { - "ext-mbstring": "For best performance" + "require-dev": { + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "3.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } + "Symfony\\Bundle\\MonologBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11368,25 +12087,23 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony MonologBundle", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "log", + "logging" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" }, "funding": [ { @@ -11402,42 +12119,36 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2023-11-06T17:08:13+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.28.0", + "name": "symfony/options-resolver", + "version": "v5.4.21", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11445,24 +12156,23 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Provides an improved replacement for the array_replace PHP function", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "config", + "configuration", + "options" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" }, "funding": [ { @@ -11478,44 +12188,41 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.28.0", + "name": "symfony/password-hasher", + "version": "v5.4.31", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" + "url": "https://github.com/symfony/password-hasher.git", + "reference": "f1a07181f3442836b0aadfd4c65841804d4173c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/f1a07181f3442836b0aadfd4c65841804d4173c4", + "reference": "f1a07181f3442836b0aadfd4c65841804d4173c4", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.15" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "symfony/security-core": "<5.3" + }, + "require-dev": { + "symfony/console": "^5.3|^6.0", + "symfony/security-core": "^5.3|^6.0" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" + "Symfony\\Component\\PasswordHasher\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -11524,24 +12231,22 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Robin Chalas", + "email": "robin.chalas@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Provides password hashing utilities", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "hashing", + "password" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" + "source": "https://github.com/symfony/password-hasher/tree/v5.4.31" }, "funding": [ { @@ -11557,25 +12262,31 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2023-11-02T10:18:11+00:00" }, { - "name": "symfony/polyfill-php80", + "name": "symfony/polyfill-ctype", "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, "type": "library", "extra": { "branch-alias": { @@ -11591,11 +12302,8 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11603,28 +12311,24 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "ctype", "polyfill", - "portable", - "shim" + "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -11643,22 +12347,25 @@ "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-php81", + "name": "symfony/polyfill-intl-grapheme", "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { "php": ">=7.1" }, + "suggest": { + "ext-intl": "For best performance" + }, "type": "library", "extra": { "branch-alias": { @@ -11674,11 +12381,8 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11694,16 +12398,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "grapheme", + "intl", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -11722,27 +12428,24 @@ "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-uuid", + "name": "symfony/polyfill-intl-icu", "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "e46b4da57951a16053cd751f63f4a24292788157" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", - "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e46b4da57951a16053cd751f63f4a24292788157", + "reference": "e46b4da57951a16053cd751f63f4a24292788157", "shasum": "" }, "require": { "php": ">=7.1" }, - "provide": { - "ext-uuid": "*" - }, "suggest": { - "ext-uuid": "For best performance" + "ext-intl": "For best performance and support of other locales than \"en\"" }, "type": "library", "extra": { @@ -11759,8 +12462,14 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" - } + "Symfony\\Polyfill\\Intl\\Icu\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11768,24 +12477,26 @@ ], "authors": [ { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for uuid functions", + "description": "Symfony polyfill for intl's ICU-related data and classes", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "icu", + "intl", "polyfill", "portable", - "uuid" + "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.28.0" }, "funding": [ { @@ -11801,34 +12512,47 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2023-03-21T17:27:24+00:00" }, { - "name": "symfony/process", - "version": "v5.4.28", + "name": "symfony/polyfill-intl-idn", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", - "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -11836,18 +12560,30 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Executes commands in sub-processes", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/process/tree/v5.4.28" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -11863,41 +12599,47 @@ "type": "tidelift" } ], - "time": "2023-08-07T10:36:04+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { - "name": "symfony/property-access", - "version": "v5.4.26", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/0249e46f69e92049a488f39fcf531cb42c50caaa", - "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2|^6.0" - }, - "require-dev": { - "symfony/cache": "^4.4|^5.0|^6.0" + "php": ">=7.1" }, "suggest": { - "psr/cache-implementation": "To cache access methods." + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -11906,29 +12648,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property-path", - "reflection" + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.4.26" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -11944,55 +12683,48 @@ "type": "tidelift" } ], - "time": "2023-07-13T15:20:41+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/property-info", - "version": "v5.4.24", + "name": "symfony/polyfill-mbstring", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/property-info.git", - "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/d43b85b00699b4484964c297575b5c6f9dc5f6e1", - "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.1|^6.0" + "php": ">=7.1" }, - "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" + "provide": { + "ext-mbstring": "*" }, "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" + "ext-mbstring": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\PropertyInfo\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -12000,26 +12732,25 @@ ], "authors": [ { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Extracts information about PHP class' properties using metadata of popular sources", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ - "doctrine", - "phpdoc", - "property", - "symfony", - "type", - "validator" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.4.24" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -12035,56 +12766,42 @@ "type": "tidelift" } ], - "time": "2023-05-15T20:11:03+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { - "name": "symfony/routing", - "version": "v5.4.26", + "name": "symfony/polyfill-php72", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "853fc7df96befc468692de0a48831b38f04d2cb2" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/853fc7df96befc468692de0a48831b38f04d2cb2", - "reference": "853fc7df96befc468692de0a48831b38f04d2cb2", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<5.3", - "symfony/dependency-injection": "<4.4", - "symfony/yaml": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12|^2", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "php": ">=7.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Php72\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -12092,24 +12809,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Maps an HTTP request to a set of configuration variables", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "router", - "routing", - "uri", - "url" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.4.26" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" }, "funding": [ { @@ -12125,73 +12842,44 @@ "type": "tidelift" } ], - "time": "2023-07-24T13:28:37+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/security-bundle", - "version": "v5.4.29", + "name": "symfony/polyfill-php73", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/security-bundle.git", - "reference": "8f432fae02bd908c1decea70a359d85a9be37f2c" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/8f432fae02bd908c1decea70a359d85a9be37f2c", - "reference": "8f432fae02bd908c1decea70a359d85a9be37f2c", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", "shasum": "" }, "require": { - "ext-xml": "*", - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher": "^5.1|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/password-hasher": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^5.4|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/security-guard": "^5.3", - "symfony/security-http": "^5.4.20|~6.0.20|~6.1.12|^6.2.6" - }, - "conflict": { - "symfony/browser-kit": "<4.4", - "symfony/console": "<4.4", - "symfony/framework-bundle": "<4.4", - "symfony/ldap": "<5.1", - "symfony/twig-bundle": "<4.4" + "php": ">=7.1" }, - "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.3|^6.0", - "symfony/ldap": "^5.3|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^2.13|^3.0.4" + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } }, - "type": "symfony-bundle", "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Bundle\\SecurityBundle\\": "" + "Symfony\\Polyfill\\Php73\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -12200,18 +12888,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/security-bundle/tree/v5.4.29" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" }, "funding": [ { @@ -12227,65 +12921,45 @@ "type": "tidelift" } ], - "time": "2023-09-19T07:33:45+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/security-core", - "version": "v5.4.29", + "name": "symfony/polyfill-php80", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/security-core.git", - "reference": "f8421bb428f48655d2b327d4bf58870983eef84a" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/f8421bb428f48655d2b327d4bf58870983eef84a", - "reference": "f8421bb428f48655d2b327d4bf58870983eef84a", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher-contracts": "^1.1|^2|^3", - "symfony/password-hasher": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2|^3" - }, - "conflict": { - "symfony/event-dispatcher": "<4.4", - "symfony/http-foundation": "<5.3", - "symfony/ldap": "<4.4", - "symfony/security-guard": "<4.4", - "symfony/validator": "<5.2" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "psr/container": "^1.0|^2.0", - "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/ldap": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/validator": "^5.2|^6.0" - }, - "suggest": { - "psr/container-implementation": "To instantiate the Security class", - "symfony/event-dispatcher": "", - "symfony/expression-language": "For using the expression voter", - "symfony/http-foundation": "", - "symfony/ldap": "For using LDAP integration", - "symfony/validator": "For using the user password constraint" + "php": ">=7.1" }, "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\Core\\": "" + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -12293,18 +12967,28 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - Core Library", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/security-core/tree/v5.4.29" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -12320,44 +13004,44 @@ "type": "tidelift" } ], - "time": "2023-09-10T17:22:50+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/security-csrf", - "version": "v5.4.27", + "name": "symfony/polyfill-php81", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/security-csrf.git", - "reference": "995fcfcc5a3be09df157b4960668f61cceb86611" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/995fcfcc5a3be09df157b4960668f61cceb86611", - "reference": "995fcfcc5a3be09df157b4960668f61cceb86611", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^4.4|^5.0|^6.0" - }, - "conflict": { - "symfony/http-foundation": "<5.3" - }, - "require-dev": { - "symfony/http-foundation": "^5.3|^6.0" - }, - "suggest": { - "symfony/http-foundation": "For using the class SessionTokenStorage." + "php": ">=7.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Security\\Csrf\\": "" + "Symfony\\Polyfill\\Php81\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -12366,18 +13050,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - CSRF Library", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/security-csrf/tree/v5.4.27" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" }, "funding": [ { @@ -12393,40 +13083,48 @@ "type": "tidelift" } ], - "time": "2023-07-28T14:44:35+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/security-guard", - "version": "v5.4.27", + "name": "symfony/polyfill-uuid", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/security-guard.git", - "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc" + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/72c53142533462fc6fda4a429c2a21c2b944a8cc", - "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.15", - "symfony/security-core": "^5.0", - "symfony/security-http": "^5.3" + "php": ">=7.1" }, - "require-dev": { - "psr/log": "^1|^2|^3" + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Security\\Guard\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Uuid\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -12434,18 +13132,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - Guard", + "description": "Symfony polyfill for uuid functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], "support": { - "source": "https://github.com/symfony/security-guard/tree/v5.4.27" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" }, "funding": [ { @@ -12461,53 +13165,30 @@ "type": "tidelift" } ], - "time": "2023-07-28T14:44:35+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/security-http", - "version": "v5.4.28", + "name": "symfony/process", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/security-http.git", - "reference": "7815edb5716e765063469b6b9232d4eaf8c03516" + "url": "https://github.com/symfony/process.git", + "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/7815edb5716e765063469b6b9232d4eaf8c03516", - "reference": "7815edb5716e765063469b6b9232d4eaf8c03516", + "url": "https://api.github.com/repos/symfony/process/zipball/8fa22178dfc368911dbd513b431cd9b06f9afe7a", + "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/security-core": "^5.4.19|~6.0.19|~6.1.11|^6.2.5" - }, - "conflict": { - "symfony/event-dispatcher": "<4.3", - "symfony/security-bundle": "<5.3", - "symfony/security-csrf": "<4.4" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Security\\Http\\": "" + "Symfony\\Component\\Process\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -12527,10 +13208,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - HTTP Integration", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v5.4.28" + "source": "https://github.com/symfony/process/tree/v5.4.34" }, "funding": [ { @@ -12546,71 +13227,38 @@ "type": "tidelift" } ], - "time": "2023-08-23T10:00:20+00:00" + "time": "2023-12-02T08:41:43+00:00" }, { - "name": "symfony/serializer", - "version": "v5.4.29", + "name": "symfony/property-access", + "version": "v5.4.26", "source": { "type": "git", - "url": "https://github.com/symfony/serializer.git", - "reference": "b893175000155839170d589f3a3593f2ce601829" + "url": "https://github.com/symfony/property-access.git", + "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/b893175000155839170d589f3a3593f2ce601829", - "reference": "b893175000155839170d589f3a3593f2ce601829", + "url": "https://api.github.com/repos/symfony/property-access/zipball/0249e46f69e92049a488f39fcf531cb42c50caaa", + "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4", - "symfony/property-access": "<5.4", - "symfony/property-info": "<5.4.24|>=6,<6.2.11", - "symfony/uid": "<5.3", - "symfony/yaml": "<4.4" + "symfony/polyfill-php80": "^1.16", + "symfony/property-info": "^5.2|^6.0" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", - "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4.24|^6.2.11", - "symfony/uid": "^5.3|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0", - "symfony/var-exporter": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" + "symfony/cache": "^4.4|^5.0|^6.0" }, "suggest": { - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/property-info": "To deserialize relations.", - "symfony/var-exporter": "For using the metadata compiler.", - "symfony/yaml": "For using the default YAML mapping loader." + "psr/cache-implementation": "To cache access methods." }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Serializer\\": "" + "Symfony\\Component\\PropertyAccess\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -12630,10 +13278,21 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "description": "Provides functions to read and write from/to an object or array using a simple string notation", "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property-path", + "reflection" + ], "support": { - "source": "https://github.com/symfony/serializer/tree/v5.4.29" + "source": "https://github.com/symfony/property-access/tree/v5.4.26" }, "funding": [ { @@ -12649,47 +13308,55 @@ "type": "tidelift" } ], - "time": "2023-09-20T07:40:46+00:00" + "time": "2023-07-13T15:20:41+00:00" }, { - "name": "symfony/service-contracts", - "version": "v2.5.2", + "name": "symfony/property-info", + "version": "v5.4.24", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + "url": "https://github.com/symfony/property-info.git", + "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "url": "https://api.github.com/repos/symfony/property-info/zipball/d43b85b00699b4484964c297575b5c6f9dc5f6e1", + "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/string": "^5.1|^6.0" }, "conflict": { - "ext-psr": "<1.1|>=2" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4|^2", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, "suggest": { - "symfony/service-implementation": "" + "phpdocumentor/reflection-docblock": "To use the PHPDoc", + "psr/cache-implementation": "To cache results", + "symfony/doctrine-bridge": "To use Doctrine metadata", + "symfony/serializer": "To use Serializer metadata" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -12697,26 +13364,26 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to writing services", + "description": "Extracts information about PHP class' properties using metadata of popular sources", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/property-info/tree/v5.4.24" }, "funding": [ { @@ -12732,30 +13399,50 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:29+00:00" + "time": "2023-05-15T20:11:03+00:00" }, { - "name": "symfony/stopwatch", - "version": "v5.4.21", + "name": "symfony/psr-http-message-bridge", + "version": "v2.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" + "url": "https://github.com/symfony/psr-http-message-bridge.git", + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/581ca6067eb62640de5ff08ee1ba6850a0ee472e", + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/service-contracts": "^1|^2|^3" + "psr/http-message": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/http-foundation": "^5.4 || ^6.0" + }, + "require-dev": { + "nyholm/psr7": "^1.1", + "psr/log": "^1.1 || ^2 || ^3", + "symfony/browser-kit": "^5.4 || ^6.0", + "symfony/config": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/http-kernel": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.2" + }, + "suggest": { + "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" + }, + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-main": "2.3-dev" + } }, - "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" + "Symfony\\Bridge\\PsrHttpMessage\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -12772,13 +13459,20 @@ }, { "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "homepage": "http://symfony.com/contributors" } ], - "description": "Provides a way to profile code", - "homepage": "https://symfony.com", + "description": "PSR HTTP message bridge", + "homepage": "http://symfony.com", + "keywords": [ + "http", + "http-message", + "psr-17", + "psr-7" + ], "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.3.1" }, "funding": [ { @@ -12794,46 +13488,52 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-07-26T11:53:26+00:00" }, { - "name": "symfony/string", - "version": "v5.4.29", + "name": "symfony/routing", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "e41bdc93def20eaf3bfc1537c4e0a2b0680a152d" + "url": "https://github.com/symfony/routing.git", + "reference": "f1d08ed59d7718845bb70acd7480fa7da8966ec0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e41bdc93def20eaf3bfc1537c4e0a2b0680a152d", - "reference": "e41bdc93def20eaf3bfc1537c4e0a2b0680a152d", + "url": "https://api.github.com/repos/symfony/routing/zipball/f1d08ed59d7718845bb70acd7480fa7da8966ec0", + "reference": "f1d08ed59d7718845bb70acd7480fa7da8966ec0", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" }, "type": "library", "autoload": { - "files": [ - "Resources/functions.php" - ], "psr-4": { - "Symfony\\Component\\String\\": "" + "Symfony\\Component\\Routing\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -12845,26 +13545,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" + "router", + "routing", + "uri", + "url" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.29" + "source": "https://github.com/symfony/routing/tree/v5.4.34" }, "funding": [ { @@ -12880,65 +13578,71 @@ "type": "tidelift" } ], - "time": "2023-09-13T11:47:41+00:00" + "time": "2023-12-27T12:51:02+00:00" }, { - "name": "symfony/translation", - "version": "v5.4.24", + "name": "symfony/security-bundle", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "de237e59c5833422342be67402d487fbf50334ff" + "url": "https://github.com/symfony/security-bundle.git", + "reference": "6477c31e36dfa25b07befea20bc8326f4ba11d75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/de237e59c5833422342be67402d487fbf50334ff", - "reference": "de237e59c5833422342be67402d487fbf50334ff", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6477c31e36dfa25b07befea20bc8326f4ba11d75", + "reference": "6477c31e36dfa25b07befea20bc8326f4ba11d75", "shasum": "" }, "require": { + "ext-xml": "*", "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/password-hasher": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^2.3" + "symfony/security-core": "^5.4|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/security-guard": "^5.3", + "symfony/security-http": "^5.4.30|^6.3.6", + "symfony/service-contracts": "^1.10|^2|^3" }, "conflict": { - "symfony/config": "<4.4", - "symfony/console": "<5.3", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" - }, - "provide": { - "symfony/translation-implementation": "2.3" + "symfony/browser-kit": "<4.4", + "symfony/console": "<4.4", + "symfony/framework-bundle": "<4.4", + "symfony/ldap": "<5.1", + "symfony/twig-bundle": "<4.4" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "doctrine/annotations": "^1.10.4|^2", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0", + "symfony/ldap": "^5.3|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/twig-bridge": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/twig": "^2.13|^3.0.4" }, - "type": "library", + "type": "symfony-bundle", "autoload": { - "files": [ - "Resources/functions.php" - ], "psr-4": { - "Symfony\\Component\\Translation\\": "" + "Symfony\\Bundle\\SecurityBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -12958,10 +13662,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to internationalize your application", + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.4.24" + "source": "https://github.com/symfony/security-bundle/tree/v5.4.34" }, "funding": [ { @@ -12977,42 +13681,65 @@ "type": "tidelift" } ], - "time": "2023-05-19T12:34:17+00:00" + "time": "2023-12-19T08:26:08+00:00" }, { - "name": "symfony/translation-contracts", - "version": "v2.5.2", + "name": "symfony/security-core", + "version": "v5.4.30", "source": { "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" + "url": "https://github.com/symfony/security-core.git", + "reference": "3908c54da30dd68c2fe31915d82a1c81809d1928" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", - "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "url": "https://api.github.com/repos/symfony/security-core/zipball/3908c54da30dd68c2fe31915d82a1c81809d1928", + "reference": "3908c54da30dd68c2fe31915d82a1c81809d1928", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^1.1|^2|^3", + "symfony/password-hasher": "^5.3|^6.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2|^3" }, - "suggest": { - "symfony/translation-implementation": "" + "conflict": { + "symfony/event-dispatcher": "<4.4", + "symfony/http-foundation": "<5.3", + "symfony/ldap": "<4.4", + "symfony/security-guard": "<4.4", + "symfony/validator": "<5.2" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "psr/container": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/ldap": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/validator": "^5.2|^6.0" }, + "suggest": { + "psr/container-implementation": "To instantiate the Security class", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/ldap": "For using LDAP integration", + "symfony/validator": "For using the user password constraint" + }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } + "Symfony\\Component\\Security\\Core\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -13020,26 +13747,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to translation", + "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/security-core/tree/v5.4.30" }, "funding": [ { @@ -13055,89 +13774,41 @@ "type": "tidelift" } ], - "time": "2022-06-27T16:58:25+00:00" + "time": "2023-10-27T07:38:28+00:00" }, { - "name": "symfony/twig-bridge", - "version": "v5.4.29", + "name": "symfony/security-csrf", + "version": "v5.4.27", "source": { "type": "git", - "url": "https://github.com/symfony/twig-bridge.git", - "reference": "8e94856da373b63e7ba69e51a6c4f834d991cd58" + "url": "https://github.com/symfony/security-csrf.git", + "reference": "995fcfcc5a3be09df157b4960668f61cceb86611" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/8e94856da373b63e7ba69e51a6c4f834d991cd58", - "reference": "8e94856da373b63e7ba69e51a6c4f834d991cd58", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/995fcfcc5a3be09df157b4960668f61cceb86611", + "reference": "995fcfcc5a3be09df157b4960668f61cceb86611", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.13|^3.0.4" + "symfony/security-core": "^4.4|^5.0|^6.0" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/console": "<5.3", - "symfony/form": "<5.4.21|>=6,<6.2.7", - "symfony/http-foundation": "<5.3", - "symfony/http-kernel": "<4.4", - "symfony/translation": "<5.2", - "symfony/workflow": "<5.2" + "symfony/http-foundation": "<5.3" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", - "egulias/email-validator": "^2.1.10|^3|^4", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/console": "^5.3|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/form": "^5.4.21|^6.2.7", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/security-http": "^4.4|^5.0|^6.0", - "symfony/serializer": "^5.2|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^5.2|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/workflow": "^5.2|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/cssinliner-extra": "^2.12|^3", - "twig/inky-extra": "^2.12|^3", - "twig/markdown-extra": "^2.12|^3" + "symfony/http-foundation": "^5.3|^6.0" }, "suggest": { - "symfony/asset": "For using the AssetExtension", - "symfony/expression-language": "For using the ExpressionExtension", - "symfony/finder": "", - "symfony/form": "For using the FormExtension", - "symfony/http-kernel": "For using the HttpKernelExtension", - "symfony/routing": "For using the RoutingExtension", - "symfony/security-core": "For using the SecurityExtension", - "symfony/security-csrf": "For using the CsrfExtension", - "symfony/security-http": "For using the LogoutUrlExtension", - "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/translation": "For using the TranslationExtension", - "symfony/var-dumper": "For using the DumpExtension", - "symfony/web-link": "For using the WebLinkExtension", - "symfony/yaml": "For using the YamlExtension" + "symfony/http-foundation": "For using the class SessionTokenStorage." }, - "type": "symfony-bridge", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bridge\\Twig\\": "" + "Symfony\\Component\\Security\\Csrf\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -13157,10 +13828,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides integration for Twig with various Symfony components", + "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v5.4.29" + "source": "https://github.com/symfony/security-csrf/tree/v5.4.27" }, "funding": [ { @@ -13176,58 +13847,36 @@ "type": "tidelift" } ], - "time": "2023-09-06T21:54:06+00:00" + "time": "2023-07-28T14:44:35+00:00" }, { - "name": "symfony/twig-bundle", + "name": "symfony/security-guard", "version": "v5.4.27", "source": { "type": "git", - "url": "https://github.com/symfony/twig-bundle.git", - "reference": "a16996ad54d75e220e91a0c7517437ad592eccca" + "url": "https://github.com/symfony/security-guard.git", + "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a16996ad54d75e220e91a0c7517437ad592eccca", - "reference": "a16996ad54d75e220e91a0c7517437ad592eccca", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/72c53142533462fc6fda4a429c2a21c2b944a8cc", + "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^5.3|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "conflict": { - "symfony/dependency-injection": "<5.3", - "symfony/framework-bundle": "<5.0", - "symfony/service-contracts": ">=3.0", - "symfony/translation": "<5.0" + "symfony/polyfill-php80": "^1.15", + "symfony/security-core": "^5.0", + "symfony/security-http": "^5.3" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^5.0|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" + "psr/log": "^1|^2|^3" }, - "type": "symfony-bundle", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bundle\\TwigBundle\\": "" + "Symfony\\Component\\Security\\Guard\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -13247,10 +13896,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a tight integration of Twig into the Symfony full-stack framework", + "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v5.4.27" + "source": "https://github.com/symfony/security-guard/tree/v5.4.27" }, "funding": [ { @@ -13269,30 +13918,51 @@ "time": "2023-07-28T14:44:35+00:00" }, { - "name": "symfony/uid", - "version": "v5.4.21", + "name": "symfony/security-http", + "version": "v5.4.31", "source": { "type": "git", - "url": "https://github.com/symfony/uid.git", - "reference": "a30744506976aafc807ccb0d4f95865c0a690d02" + "url": "https://github.com/symfony/security-http.git", + "reference": "6d3cd5a4deee9697738db8d24258890ca4140ae9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/a30744506976aafc807ccb0d4f95865c0a690d02", - "reference": "a30744506976aafc807ccb0d4f95865c0a690d02", + "url": "https://api.github.com/repos/symfony/security-http/zipball/6d3cd5a4deee9697738db8d24258890ca4140ae9", + "reference": "6d3cd5a4deee9697738db8d24258890ca4140ae9", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/polyfill-uuid": "^1.15" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.4.19|~6.0.19|~6.1.11|^6.2.5", + "symfony/service-contracts": "^1.10|^2|^3" + }, + "conflict": { + "symfony/event-dispatcher": "<4.3", + "symfony/security-bundle": "<5.3", + "symfony/security-csrf": "<4.4" }, "require-dev": { - "symfony/console": "^4.4|^5.0|^6.0" + "psr/log": "^1|^2|^3", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Uid\\": "" + "Symfony\\Component\\Security\\Http\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -13304,27 +13974,18 @@ ], "authors": [ { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an object-oriented API to generate and represent UIDs", + "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", - "keywords": [ - "UID", - "ulid", - "uuid" - ], "support": { - "source": "https://github.com/symfony/uid/tree/v5.4.21" + "source": "https://github.com/symfony/security-http/tree/v5.4.31" }, "funding": [ { @@ -13340,80 +14001,71 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-11-03T16:13:08+00:00" }, { - "name": "symfony/validator", - "version": "v5.4.29", + "name": "symfony/serializer", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/validator.git", - "reference": "287ef8c80d1c23d5d1db8c3e26a8ad56680d535b" + "url": "https://github.com/symfony/serializer.git", + "reference": "b8353e4208e9161f34d22c4631c63404b26ba929" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/287ef8c80d1c23d5d1db8c3e26a8ad56680d535b", - "reference": "287ef8c80d1c23d5d1db8c3e26a8ad56680d535b", + "url": "https://api.github.com/repos/symfony/serializer/zipball/b8353e4208e9161f34d22c4631c63404b26ba929", + "reference": "b8353e4208e9161f34d22c4631c63404b26ba929", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/translation-contracts": "^1.1|^2|^3" + "symfony/polyfill-php80": "^1.16" }, "conflict": { - "doctrine/annotations": "<1.13", - "doctrine/cache": "<1.11", - "doctrine/lexer": "<1.1", + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", "symfony/dependency-injection": "<4.4", - "symfony/expression-language": "<5.1", - "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.4", - "symfony/property-info": "<5.3", - "symfony/translation": "<4.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4.24|>=6,<6.2.11", + "symfony/uid": "<5.3", "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.13|^2", - "doctrine/cache": "^1.11|^2.0", - "egulias/email-validator": "^2.1.10|^3|^4", + "doctrine/annotations": "^1.12|^2", + "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", "symfony/cache": "^4.4|^5.0|^6.0", "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^5.1|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", "symfony/http-foundation": "^4.4|^5.0|^6.0", "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/property-info": "^5.3|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4.24|^6.2.11", + "symfony/uid": "^5.3|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "egulias/email-validator": "Strict (RFC compliant) email validation", - "psr/cache-implementation": "For using the mapping cache.", - "symfony/config": "", - "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For accessing properties within comparison constraints", - "symfony/property-info": "To automatically add NotNull and Type constraints", - "symfony/translation": "For translating validation errors.", - "symfony/yaml": "" + "psr/cache-implementation": "For using the metadata cache.", + "symfony/config": "For using the XML mapping loader.", + "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", + "symfony/property-access": "For using the ObjectNormalizer.", + "symfony/property-info": "To deserialize relations.", + "symfony/var-exporter": "For using the metadata compiler.", + "symfony/yaml": "For using the default YAML mapping loader." }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Validator\\": "" + "Symfony\\Component\\Serializer\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -13433,10 +14085,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to validate values", + "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v5.4.29" + "source": "https://github.com/symfony/serializer/tree/v5.4.34" }, "funding": [ { @@ -13452,57 +14104,47 @@ "type": "tidelift" } ], - "time": "2023-09-10T17:22:50+00:00" + "time": "2023-12-27T08:53:17+00:00" }, { - "name": "symfony/var-dumper", - "version": "v5.4.29", + "name": "symfony/service-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6172e4ae3534d25ee9e07eb487c20be7760fcc65", - "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { - "symfony/console": "<4.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", - "twig/twig": "^2.13|^3.0.4" + "ext-psr": "<1.1|>=2" }, "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + "symfony/service-implementation": "" }, - "bin": [ - "Resources/bin/var-dump-server" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { - "files": [ - "Resources/functions/dump.php" - ], "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -13518,14 +14160,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ - "debug", - "dump" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.29" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -13541,33 +14187,30 @@ "type": "tidelift" } ], - "time": "2023-09-12T10:09:58+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { - "name": "symfony/var-exporter", - "version": "v5.4.26", + "name": "symfony/stopwatch", + "version": "v5.4.21", "source": { "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "11401fe94f960249b3c63a488c63ba73091c1e4a" + "url": "https://github.com/symfony/stopwatch.git", + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/11401fe94f960249b3c63a488c63ba73091c1e4a", - "reference": "11401fe94f960249b3c63a488c63ba73091c1e4a", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" + "symfony/service-contracts": "^1|^2|^3" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\VarExporter\\": "" + "Symfony\\Component\\Stopwatch\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -13579,26 +14222,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "description": "Provides a way to profile code", "homepage": "https://symfony.com", - "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "serialize" - ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.4.26" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" }, "funding": [ { @@ -13614,43 +14249,46 @@ "type": "tidelift" } ], - "time": "2023-07-20T07:21:16+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { - "name": "symfony/web-link", - "version": "v5.4.21", + "name": "symfony/string", + "version": "v5.4.34", "source": { "type": "git", - "url": "https://github.com/symfony/web-link.git", - "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb" + "url": "https://github.com/symfony/string.git", + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/57c03a5e89ed7c2d7a1a09258dfec12f95f95adb", - "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb", + "url": "https://api.github.com/repos/symfony/string/zipball/e3f98bfc7885c957488f443df82d97814a3ce061", + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/link": "^1.0", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" }, "conflict": { - "symfony/http-kernel": "<5.3" - }, - "provide": { - "psr/link-implementation": "1.0" + "symfony/translation-contracts": ">=3.0" }, "require-dev": { - "symfony/http-kernel": "^5.3|^6.0" - }, - "suggest": { - "symfony/http-kernel": "" + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Symfony\\Component\\WebLink\\": "" + "Symfony\\Component\\String\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -13662,30 +14300,26 @@ ], "authors": [ { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Manages links between resources", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", "homepage": "https://symfony.com", "keywords": [ - "dns-prefetch", - "http", - "http2", - "link", - "performance", - "prefetch", - "preload", - "prerender", - "psr13", - "push" + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v5.4.21" + "source": "https://github.com/symfony/string/tree/v5.4.34" }, "funding": [ { @@ -13701,48 +14335,65 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-12-09T13:20:28+00:00" }, { - "name": "symfony/web-profiler-bundle", - "version": "v5.4.26", + "name": "symfony/translation", + "version": "v5.4.31", "source": { "type": "git", - "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "a08572ac2e4aea7ed85065524bb4fe3ace6c81c3" + "url": "https://github.com/symfony/translation.git", + "reference": "ba72f72fceddf36f00bd495966b5873f2d17ad8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/a08572ac2e4aea7ed85065524bb4fe3ace6c81c3", - "reference": "a08572ac2e4aea7ed85065524bb4fe3ace6c81c3", + "url": "https://api.github.com/repos/symfony/translation/zipball/ba72f72fceddf36f00bd495966b5873f2d17ad8f", + "reference": "ba72f72fceddf36f00bd495966b5873f2d17ad8f", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/translation-contracts": "^2.3" }, "conflict": { - "symfony/dependency-injection": "<5.2", - "symfony/form": "<4.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<4.4" + "symfony/config": "<4.4", + "symfony/console": "<5.3", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" + }, + "provide": { + "symfony/translation-implementation": "2.3" }, "require-dev": { - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, - "type": "symfony-bundle", + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Symfony\\Bundle\\WebProfilerBundle\\": "" + "Symfony\\Component\\Translation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -13762,10 +14413,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a development tool that gives detailed information about the execution of any request", + "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.26" + "source": "https://github.com/symfony/translation/tree/v5.4.31" }, "funding": [ { @@ -13781,40 +14432,257 @@ "type": "tidelift" } ], - "time": "2023-07-19T19:34:05+00:00" + "time": "2023-11-03T16:16:43+00:00" }, { - "name": "symfony/web-server-bundle", - "version": "v4.4.44", + "name": "symfony/translation-contracts", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/web-server-bundle.git", - "reference": "b58e4ab115c6f6879f6e0de35c08b2dfd9e24c3b" + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-server-bundle/zipball/b58e4ab115c6f6879f6e0de35c08b2dfd9e24c3b", - "reference": "b58e4ab115c6f6879f6e0de35c08b2dfd9e24c3b", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/http-kernel": "^3.4|^4.0|^5.0", - "symfony/polyfill-ctype": "~1.8", + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-27T16:58:25+00:00" + }, + { + "name": "symfony/twig-bridge", + "version": "v5.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "4ced0e91705d689b77763678367bd522d79f9f9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/4ced0e91705d689b77763678367bd522d79f9f9a", + "reference": "4ced0e91705d689b77763678367bd522d79f9f9a", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16", - "symfony/process": "^3.4.2|^4.0.2|^5.0" + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<5.3", + "symfony/form": "<5.4.21|>=6,<6.2.7", + "symfony/http-foundation": "<5.3", + "symfony/http-kernel": "<4.4", + "symfony/translation": "<5.2", + "symfony/workflow": "<5.2" + }, + "require-dev": { + "doctrine/annotations": "^1.12|^2", + "egulias/email-validator": "^2.1.10|^3|^4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/console": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^5.4.21|^6.2.7", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2|^6.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/security-acl": "^2.8|^3.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/security-http": "^4.4|^5.0|^6.0", + "symfony/serializer": "^5.2|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.2|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/cssinliner-extra": "^2.12|^3", + "twig/inky-extra": "^2.12|^3", + "twig/markdown-extra": "^2.12|^3" }, "suggest": { - "symfony/expression-language": "For using the filter option of the log server.", - "symfony/monolog-bridge": "For using the log server." + "symfony/asset": "For using the AssetExtension", + "symfony/expression-language": "For using the ExpressionExtension", + "symfony/finder": "", + "symfony/form": "For using the FormExtension", + "symfony/http-kernel": "For using the HttpKernelExtension", + "symfony/routing": "For using the RoutingExtension", + "symfony/security-core": "For using the SecurityExtension", + "symfony/security-csrf": "For using the CsrfExtension", + "symfony/security-http": "For using the LogoutUrlExtension", + "symfony/stopwatch": "For using the StopwatchExtension", + "symfony/translation": "For using the TranslationExtension", + "symfony/var-dumper": "For using the DumpExtension", + "symfony/web-link": "For using the WebLinkExtension", + "symfony/yaml": "For using the YamlExtension" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Twig\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Twig with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bridge/tree/v5.4.34" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-12-15T11:59:38+00:00" + }, + { + "name": "symfony/twig-bundle", + "version": "v5.4.31", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "62e3505a62f482a577f55ba08747dc6a3b7463b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/62e3505a62f482a577f55ba08747dc6a3b7463b3", + "reference": "62e3505a62f482a577f55ba08747dc6a3b7463b3", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/twig-bridge": "^5.3|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "symfony/dependency-injection": "<5.3", + "symfony/framework-bundle": "<5.0", + "symfony/service-contracts": ">=3.0", + "symfony/translation": "<5.0" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4|^2", + "doctrine/cache": "^1.0|^2.0", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.0|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Bundle\\WebServerBundle\\": "" + "Symfony\\Bundle\\TwigBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -13834,10 +14702,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides commands for running applications using the PHP built-in web server", + "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-server-bundle/tree/v4.4.44" + "source": "https://github.com/symfony/twig-bundle/tree/v5.4.31" }, "funding": [ { @@ -13849,125 +14717,1700 @@ "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-10-31T07:58:33+00:00" + }, + { + "name": "symfony/uid", + "version": "v5.4.31", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "d76766c457aacff7acea4482c207231aea93362c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/d76766c457aacff7acea4482c207231aea93362c", + "reference": "d76766c457aacff7acea4482c207231aea93362c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v5.4.31" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-10-31T07:58:33+00:00" + }, + { + "name": "symfony/validator", + "version": "v5.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "0700751f19b5e8dcfadb6614662216a93f37e2dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/0700751f19b5e8dcfadb6614662216a93f37e2dd", + "reference": "0700751f19b5e8dcfadb6614662216a93f37e2dd", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22", + "symfony/translation-contracts": "^1.1|^2|^3" + }, + "conflict": { + "doctrine/annotations": "<1.13", + "doctrine/cache": "<1.11", + "doctrine/lexer": "<1.1", + "symfony/dependency-injection": "<4.4", + "symfony/expression-language": "<5.1", + "symfony/http-kernel": "<4.4", + "symfony/intl": "<4.4", + "symfony/property-info": "<5.3", + "symfony/translation": "<4.4", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.13|^2", + "doctrine/cache": "^1.11|^2.0", + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^5.1|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.3|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "egulias/email-validator": "Strict (RFC compliant) email validation", + "psr/cache-implementation": "For using the mapping cache.", + "symfony/config": "", + "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For accessing properties within comparison constraints", + "symfony/property-info": "To automatically add NotNull and Type constraints", + "symfony/translation": "For translating validation errors.", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to validate values", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/validator/tree/v5.4.34" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-12-29T15:57:36+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.4.29", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6172e4ae3534d25ee9e07eb487c20be7760fcc65", + "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/console": "<4.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v5.4.29" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-12T10:09:58+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v5.4.32", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "fdb022f0d3d41df240c18e2eb9a117c430f06add" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/fdb022f0d3d41df240c18e2eb9a117c430f06add", + "reference": "fdb022f0d3d41df240c18e2eb9a117c430f06add", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v5.4.32" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-16T19:33:05+00:00" + }, + { + "name": "symfony/web-link", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-link.git", + "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-link/zipball/57c03a5e89ed7c2d7a1a09258dfec12f95f95adb", + "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/link": "^1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/http-kernel": "<5.3" + }, + "provide": { + "psr/link-implementation": "1.0" + }, + "require-dev": { + "symfony/http-kernel": "^5.3|^6.0" + }, + "suggest": { + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\WebLink\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Manages links between resources", + "homepage": "https://symfony.com", + "keywords": [ + "dns-prefetch", + "http", + "http2", + "link", + "performance", + "prefetch", + "preload", + "prerender", + "psr13", + "push" + ], + "support": { + "source": "https://github.com/symfony/web-link/tree/v5.4.21" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-02-14T08:03:56+00:00" + }, + { + "name": "symfony/web-profiler-bundle", + "version": "v5.4.34", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "8b3344d0d7faeb6c52e60d4a3657405c5c68625f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8b3344d0d7faeb6c52e60d4a3657405c5c68625f", + "reference": "8b3344d0d7faeb6c52e60d4a3657405c5c68625f", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0,<6.4", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/polyfill-php80": "^1.16", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "conflict": { + "symfony/dependency-injection": "<5.2", + "symfony/form": "<4.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<4.4" + }, + "require-dev": { + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a development tool that gives detailed information about the execution of any request", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.34" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-12-20T14:42:24+00:00" + }, + { + "name": "symfony/web-server-bundle", + "version": "v4.4.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-server-bundle.git", + "reference": "b58e4ab115c6f6879f6e0de35c08b2dfd9e24c3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-server-bundle/zipball/b58e4ab115c6f6879f6e0de35c08b2dfd9e24c3b", + "reference": "b58e4ab115c6f6879f6e0de35c08b2dfd9e24c3b", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/http-kernel": "^3.4|^4.0|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/process": "^3.4.2|^4.0.2|^5.0" + }, + "suggest": { + "symfony/expression-language": "For using the filter option of the log server.", + "symfony/monolog-bridge": "For using the log server." + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\WebServerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides commands for running applications using the PHP built-in web server", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/web-server-bundle/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "abandoned": true, + "time": "2022-06-27T13:16:42+00:00" + }, + { + "name": "symfony/webpack-encore-bundle", + "version": "v1.17.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/webpack-encore-bundle.git", + "reference": "471ebbc03072dad6e31840dc317bc634a32785f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/471ebbc03072dad6e31840dc317bc634a32785f5", + "reference": "471ebbc03072dad6e31840dc317bc634a32785f5", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/asset": "^4.4 || ^5.0 || ^6.0", + "symfony/config": "^4.4 || ^5.0 || ^6.0", + "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", + "symfony/polyfill-php80": "^1.25.0", + "symfony/service-contracts": "^1.0 || ^2.0 || ^3.0" + }, + "require-dev": { + "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.3 || ^6.0", + "symfony/twig-bundle": "^4.4 || ^5.0 || ^6.0", + "symfony/web-link": "^4.4 || ^5.0 || ^6.0" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "name": "symfony/webpack-encore", + "url": "https://github.com/symfony/webpack-encore" + } + }, + "autoload": { + "psr-4": { + "Symfony\\WebpackEncoreBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Integration with your Symfony app & Webpack Encore!", + "support": { + "issues": "https://github.com/symfony/webpack-encore-bundle/issues", + "source": "https://github.com/symfony/webpack-encore-bundle/tree/v1.17.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-26T14:36:28+00:00" + }, + { + "name": "symfony/yaml", + "version": "v5.4.31", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "f387675d7f5fc4231f7554baa70681f222f73563" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/f387675d7f5fc4231f7554baa70681f222f73563", + "reference": "f387675d7f5fc4231f7554baa70681f222f73563", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<5.3" + }, + "require-dev": { + "symfony/console": "^5.3|^6.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.4.31" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-03T14:41:28+00:00" + }, + { + "name": "symfonycasts/reset-password-bundle", + "version": "v1.20.1", + "source": { + "type": "git", + "url": "https://github.com/SymfonyCasts/reset-password-bundle.git", + "reference": "aaf9477d0aa3a28e9c4ef7d3eb6b917f1e11f9f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SymfonyCasts/reset-password-bundle/zipball/aaf9477d0aa3a28e9c4ef7d3eb6b917f1e11f9f8", + "reference": "aaf9477d0aa3a28e9c4ef7d3eb6b917f1e11f9f8", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=8.1.10", + "symfony/config": "^5.4 | ^6.0 | ^7.0", + "symfony/dependency-injection": "^5.4 | ^6.0 | ^7.0", + "symfony/deprecation-contracts": "^2.2 | ^3.0", + "symfony/http-kernel": "^5.4 | ^6.0 | ^7.0" + }, + "require-dev": { + "doctrine/annotations": "^1.0", + "doctrine/doctrine-bundle": "^2.8", + "doctrine/orm": "^2.13", + "symfony/framework-bundle": "^5.4 | ^6.0 | ^7.0", + "symfony/phpunit-bridge": "^5.4 | ^6.0 | ^7.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "SymfonyCasts\\Bundle\\ResetPassword\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Symfony bundle that adds password reset functionality.", + "support": { + "issues": "https://github.com/SymfonyCasts/reset-password-bundle/issues", + "source": "https://github.com/SymfonyCasts/reset-password-bundle/tree/v1.20.1" + }, + "time": "2024-01-02T16:46:54+00:00" + }, + { + "name": "tightenco/collect", + "version": "v8.83.27", + "source": { + "type": "git", + "url": "https://github.com/tighten/collect.git", + "reference": "07eed6cf7441c7a69c379fdcb118eec1a1fdd0e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tighten/collect/zipball/07eed6cf7441c7a69c379fdcb118eec1a1fdd0e6", + "reference": "07eed6cf7441c7a69c379fdcb118eec1a1fdd0e6", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0", + "symfony/var-dumper": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "nesbot/carbon": "^2.23.0", + "phpunit/phpunit": "^8.3" + }, + "type": "library", + "autoload": { + "files": [ + "src/Collect/Support/helpers.php", + "src/Collect/Support/alias.php" + ], + "psr-4": { + "Tightenco\\Collect\\": "src/Collect" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" + } + ], + "description": "Collect - Illuminate Collections as a separate package.", + "keywords": [ + "collection", + "laravel" + ], + "support": { + "issues": "https://github.com/tighten/collect/issues", + "source": "https://github.com/tighten/collect/tree/v8.83.27" + }, + "time": "2023-01-13T18:05:42+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.2.7", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" + }, + "time": "2023-12-08T13:03:43+00:00" + }, + { + "name": "twig/cssinliner-extra", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/cssinliner-extra.git", + "reference": "259a4b861732545e0e1ecd43bf25b251494af45b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/cssinliner-extra/zipball/259a4b861732545e0e1ecd43bf25b251494af45b", + "reference": "259a4b861732545e0e1ecd43bf25b251494af45b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "tijsverkoyen/css-to-inline-styles": "^2.0", + "twig/twig": "^3.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Twig\\Extra\\CssInliner\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Twig extension to allow inlining CSS", + "homepage": "https://twig.symfony.com", + "keywords": [ + "css", + "inlining", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.8.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2023-11-21T14:02:01+00:00" + }, + { + "name": "twig/extra-bundle", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/twig-extra-bundle.git", + "reference": "32807183753de0388c8e59f7ac2d13bb47311140" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/32807183753de0388c8e59f7ac2d13bb47311140", + "reference": "32807183753de0388c8e59f7ac2d13bb47311140", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "twig/twig": "^3.0" + }, + "require-dev": { + "league/commonmark": "^1.0|^2.0", + "symfony/phpunit-bridge": "^6.4|^7.0", + "twig/cache-extra": "^3.0", + "twig/cssinliner-extra": "^2.12|^3.0", + "twig/html-extra": "^2.12|^3.0", + "twig/inky-extra": "^2.12|^3.0", + "twig/intl-extra": "^2.12|^3.0", + "twig/markdown-extra": "^2.12|^3.0", + "twig/string-extra": "^2.12|^3.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Twig\\Extra\\TwigExtraBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Symfony bundle for extra Twig extensions", + "homepage": "https://twig.symfony.com", + "keywords": [ + "bundle", + "extra", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.8.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2023-11-21T14:02:01+00:00" + }, + { + "name": "twig/html-extra", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/html-extra.git", + "reference": "c04603bb3b71d8d2ece9e583dbf7bd77811df1f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/html-extra/zipball/c04603bb3b71d8d2ece9e583dbf7bd77811df1f2", + "reference": "c04603bb3b71d8d2ece9e583dbf7bd77811df1f2", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/mime": "^5.4|^6.0|^7.0", + "twig/twig": "^3.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Twig\\Extra\\Html\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Twig extension for HTML", + "homepage": "https://twig.symfony.com", + "keywords": [ + "html", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/html-extra/tree/v3.8.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2023-11-21T14:02:01+00:00" + }, + { + "name": "twig/inky-extra", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/inky-extra.git", + "reference": "8c12463f6d66697347692b04b12c5c1789dc1a5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/inky-extra/zipball/8c12463f6d66697347692b04b12c5c1789dc1a5c", + "reference": "8c12463f6d66697347692b04b12c5c1789dc1a5c", + "shasum": "" + }, + "require": { + "lorenzo/pinky": "^1.0.5", + "php": ">=7.2.5", + "twig/twig": "^3.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Twig\\Extra\\Inky\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Twig extension for the inky email templating engine", + "homepage": "https://twig.symfony.com", + "keywords": [ + "email", + "emails", + "inky", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/inky-extra/tree/v3.8.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2023-11-21T14:02:01+00:00" + }, + { + "name": "twig/intl-extra", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/intl-extra.git", + "reference": "7b3db67c700735f473a265a97e1adaeba3e6ca0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/7b3db67c700735f473a265a97e1adaeba3e6ca0c", + "reference": "7b3db67c700735f473a265a97e1adaeba3e6ca0c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/intl": "^5.4|^6.0|^7.0", + "twig/twig": "^3.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Twig\\Extra\\Intl\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Twig extension for Intl", + "homepage": "https://twig.symfony.com", + "keywords": [ + "intl", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/intl-extra/tree/v3.8.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2023-11-21T17:27:48+00:00" + }, + { + "name": "twig/markdown-extra", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/markdown-extra.git", + "reference": "b6e4954ab60030233df5d293886b5404558daac8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/markdown-extra/zipball/b6e4954ab60030233df5d293886b5404558daac8", + "reference": "b6e4954ab60030233df5d293886b5404558daac8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "twig/twig": "^3.0" + }, + "require-dev": { + "erusev/parsedown": "^1.7", + "league/commonmark": "^1.0|^2.0", + "league/html-to-markdown": "^4.8|^5.0", + "michelf/php-markdown": "^1.8|^2.0", + "symfony/phpunit-bridge": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Twig\\Extra\\Markdown\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Twig extension for Markdown", + "homepage": "https://twig.symfony.com", + "keywords": [ + "html", + "markdown", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/markdown-extra/tree/v3.8.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2023-11-21T14:02:01+00:00" + }, + { + "name": "twig/twig", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" + }, + "require-dev": { + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.8.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2023-11-21T18:54:41+00:00" + }, + { + "name": "ua-parser/uap-php", + "version": "v3.9.14", + "source": { + "type": "git", + "url": "https://github.com/ua-parser/uap-php.git", + "reference": "b796c5ea5df588e65aeb4e2c6cce3811dec4fed6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ua-parser/uap-php/zipball/b796c5ea5df588e65aeb4e2c6cce3811dec4fed6", + "reference": "b796c5ea5df588e65aeb4e2c6cce3811dec4fed6", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.1", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.33", + "phpunit/phpunit": "^8 || ^9", + "symfony/console": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "symfony/filesystem": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "symfony/finder": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "symfony/yaml": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "vimeo/psalm": "^3.12" + }, + "suggest": { + "symfony/console": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", + "symfony/filesystem": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", + "symfony/finder": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", + "symfony/yaml": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0" + }, + "bin": [ + "bin/uaparser" + ], + "type": "library", + "autoload": { + "psr-4": { + "UAParser\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dave Olsen", + "email": "dmolsen@gmail.com" + }, + { + "name": "Lars Strojny", + "email": "lars@strojny.net" + } + ], + "description": "A multi-language port of Browserscope's user agent parser.", + "support": { + "issues": "https://github.com/ua-parser/uap-php/issues", + "source": "https://github.com/ua-parser/uap-php/tree/v3.9.14" + }, + "time": "2020-10-02T23:36:20+00:00" + }, + { + "name": "webimpress/safe-writer", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/webimpress/safe-writer.git", + "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", + "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5.4", + "vimeo/psalm": "^4.7", + "webimpress/coding-standard": "^1.2.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev", + "dev-develop": "2.3.x-dev", + "dev-release-1.0": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Webimpress\\SafeWriter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "Tool to write files safely, to avoid race conditions", + "keywords": [ + "concurrent write", + "file writer", + "race condition", + "safe writer", + "webimpress" + ], + "support": { + "issues": "https://github.com/webimpress/safe-writer/issues", + "source": "https://github.com/webimpress/safe-writer/tree/2.2.0" + }, + "funding": [ + { + "url": "https://github.com/michalbundyra", + "type": "github" + } + ], + "time": "2021-04-19T16:34:45+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + }, + { + "name": "webmozart/path-util", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/path-util.git", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "webmozart/assert": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\PathUtil\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "abandoned": true, - "time": "2022-06-27T13:16:42+00:00" + "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", + "support": { + "issues": "https://github.com/webmozart/path-util/issues", + "source": "https://github.com/webmozart/path-util/tree/2.3.0" + }, + "abandoned": "symfony/filesystem", + "time": "2015-12-17T08:42:14+00:00" }, { - "name": "symfony/webpack-encore-bundle", - "version": "v1.17.2", + "name": "webonyx/graphql-php", + "version": "v14.11.10", "source": { "type": "git", - "url": "https://github.com/symfony/webpack-encore-bundle.git", - "reference": "471ebbc03072dad6e31840dc317bc634a32785f5" + "url": "https://github.com/webonyx/graphql-php.git", + "reference": "d9c2fdebc6aa01d831bc2969da00e8588cffef19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/471ebbc03072dad6e31840dc317bc634a32785f5", - "reference": "471ebbc03072dad6e31840dc317bc634a32785f5", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/d9c2fdebc6aa01d831bc2969da00e8588cffef19", + "reference": "d9c2fdebc6aa01d831bc2969da00e8588cffef19", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/asset": "^4.4 || ^5.0 || ^6.0", - "symfony/config": "^4.4 || ^5.0 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", - "symfony/polyfill-php80": "^1.25.0", - "symfony/service-contracts": "^1.0 || ^2.0 || ^3.0" + "ext-json": "*", + "ext-mbstring": "*", + "php": "^7.1 || ^8" }, "require-dev": { - "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.3 || ^6.0", - "symfony/twig-bundle": "^4.4 || ^5.0 || ^6.0", - "symfony/web-link": "^4.4 || ^5.0 || ^6.0" + "amphp/amp": "^2.3", + "doctrine/coding-standard": "^6.0", + "nyholm/psr7": "^1.2", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "0.12.82", + "phpstan/phpstan-phpunit": "0.12.18", + "phpstan/phpstan-strict-rules": "0.12.9", + "phpunit/phpunit": "^7.2 || ^8.5", + "psr/http-message": "^1.0", + "react/promise": "2.*", + "simpod/php-coveralls-mirror": "^3.0" }, - "type": "symfony-bundle", - "extra": { - "thanks": { - "name": "symfony/webpack-encore", - "url": "https://github.com/symfony/webpack-encore" - } + "suggest": { + "psr/http-message": "To use standard GraphQL server", + "react/promise": "To leverage async resolving on React PHP platform" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\WebpackEncoreBundle\\": "src" + "GraphQL\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } + "description": "A PHP port of GraphQL reference implementation", + "homepage": "https://github.com/webonyx/graphql-php", + "keywords": [ + "api", + "graphql" ], - "description": "Integration with your Symfony app & Webpack Encore!", "support": { - "issues": "https://github.com/symfony/webpack-encore-bundle/issues", - "source": "https://github.com/symfony/webpack-encore-bundle/tree/v1.17.2" + "issues": "https://github.com/webonyx/graphql-php/issues", + "source": "https://github.com/webonyx/graphql-php/tree/v14.11.10" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "url": "https://opencollective.com/webonyx-graphql-php", + "type": "open_collective" } ], - "time": "2023-09-26T14:36:28+00:00" + "time": "2023-07-05T14:23:37+00:00" }, { - "name": "symfony/yaml", - "version": "v5.4.23", + "name": "willdurand/negotiation", + "version": "3.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b" + "url": "https://github.com/willdurand/Negotiation.git", + "reference": "68e9ea0553ef6e2ee8db5c1d98829f111e623ec2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b", - "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/68e9ea0553ef6e2ee8db5c1d98829f111e623ec2", + "reference": "68e9ea0553ef6e2ee8db5c1d98829f111e623ec2", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.3" + "php": ">=7.1.0" }, "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/phpunit-bridge": "^5.0" }, - "bin": [ - "Resources/bin/yaml-lint" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Negotiation\\": "src/Negotiation" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -13975,116 +16418,121 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "William Durand", + "email": "will+git@drnd.me" } ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "homepage": "http://williamdurand.fr/Negotiation/", + "keywords": [ + "accept", + "content", + "format", + "header", + "negotiation" + ], "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.23" + "issues": "https://github.com/willdurand/Negotiation/issues", + "source": "https://github.com/willdurand/Negotiation/tree/3.1.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-04-23T19:33:36+00:00" + "time": "2022-01-30T20:08:53+00:00" }, { - "name": "symfonycasts/reset-password-bundle", - "version": "v1.18.0", + "name": "xemlock/htmlpurifier-html5", + "version": "v0.1.11", "source": { "type": "git", - "url": "https://github.com/SymfonyCasts/reset-password-bundle.git", - "reference": "9906cebac5676adf5d05384dfeebd7cac7c0da83" + "url": "https://github.com/xemlock/htmlpurifier-html5.git", + "reference": "f0d563f9fd4a82a3d759043483f9a94c0d8c2255" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SymfonyCasts/reset-password-bundle/zipball/9906cebac5676adf5d05384dfeebd7cac7c0da83", - "reference": "9906cebac5676adf5d05384dfeebd7cac7c0da83", + "url": "https://api.github.com/repos/xemlock/htmlpurifier-html5/zipball/f0d563f9fd4a82a3d759043483f9a94c0d8c2255", + "reference": "f0d563f9fd4a82a3d759043483f9a94c0d8c2255", "shasum": "" }, "require": { - "ext-json": "*", - "php": ">=7.2.5", - "symfony/config": "^5.4 | ^6.0", - "symfony/dependency-injection": "^5.4 | ^6.0", - "symfony/deprecation-contracts": "^2.2 | ^3.0", - "symfony/http-kernel": "^5.4 | ^6.0" - }, - "conflict": { - "doctrine/orm": "<2.7", - "php": ">=8.1 <8.1.10" + "ezyang/htmlpurifier": "^4.8", + "php": ">=5.2" }, "require-dev": { - "doctrine/annotations": "^1.0", - "doctrine/doctrine-bundle": "^2.0.3", - "doctrine/orm": "^2.7", - "symfony/framework-bundle": "^5.4 | ^6.0", - "symfony/phpunit-bridge": "^5.4 | ^6.0" + "php-coveralls/php-coveralls": "^1.1|^2.1", + "phpunit/phpunit": ">=4.7 <8.0" }, - "type": "symfony-bundle", + "type": "library", "autoload": { - "psr-4": { - "SymfonyCasts\\Bundle\\ResetPassword\\": "src/" - } + "classmap": [ + "library/HTMLPurifier/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Symfony bundle that adds password reset functionality.", + "authors": [ + { + "name": "xemlock", + "email": "xemlock@gmail.com" + } + ], + "description": "HTML5 element definitions for HTML Purifier", + "keywords": [ + "HTML5", + "Purifier", + "html", + "htmlpurifier", + "security", + "tidy", + "validator", + "xss" + ], "support": { - "issues": "https://github.com/SymfonyCasts/reset-password-bundle/issues", - "source": "https://github.com/SymfonyCasts/reset-password-bundle/tree/v1.18.0" + "issues": "https://github.com/xemlock/htmlpurifier-html5/issues", + "source": "https://github.com/xemlock/htmlpurifier-html5/tree/master" }, - "time": "2023-09-19T14:10:50+00:00" - }, + "time": "2019-08-07T17:19:21+00:00" + } + ], + "packages-dev": [ { - "name": "tightenco/collect", - "version": "v8.83.27", + "name": "amphp/amp", + "version": "v2.6.2", "source": { "type": "git", - "url": "https://github.com/tighten/collect.git", - "reference": "07eed6cf7441c7a69c379fdcb118eec1a1fdd0e6" + "url": "https://github.com/amphp/amp.git", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tighten/collect/zipball/07eed6cf7441c7a69c379fdcb118eec1a1fdd0e6", - "reference": "07eed6cf7441c7a69c379fdcb118eec1a1fdd0e6", + "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", "shasum": "" }, "require": { - "php": "^7.3|^8.0", - "symfony/var-dumper": "^3.4 || ^4.0 || ^5.0 || ^6.0" + "php": ">=7.1" }, "require-dev": { - "mockery/mockery": "^1.0", - "nesbot/carbon": "^2.23.0", - "phpunit/phpunit": "^8.3" + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1", + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^7 | ^8 | ^9", + "psalm/phar": "^3.11@dev", + "react/promise": "^2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, "autoload": { "files": [ - "src/Collect/Support/helpers.php", - "src/Collect/Support/alias.php" + "lib/functions.php", + "lib/Internal/functions.php" ], "psr-4": { - "Tightenco\\Collect\\": "src/Collect" + "Amp\\": "lib" } }, "notification-url": "https://packagist.org/downloads/", @@ -14093,60 +16541,87 @@ ], "authors": [ { - "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com" + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "Collect - Illuminate Collections as a separate package.", + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "https://amphp.org/amp", "keywords": [ - "collection", - "laravel" + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" ], "support": { - "issues": "https://github.com/tighten/collect/issues", - "source": "https://github.com/tighten/collect/tree/v8.83.27" + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/amp/issues", + "source": "https://github.com/amphp/amp/tree/v2.6.2" }, - "time": "2023-01-13T18:05:42+00:00" + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2022-02-20T17:52:18+00:00" }, { - "name": "twig/extra-bundle", - "version": "v3.7.1", + "name": "amphp/byte-stream", + "version": "v1.8.1", "source": { "type": "git", - "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3" + "url": "https://github.com/amphp/byte-stream.git", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", - "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/framework-bundle": "^5.4|^6.0", - "symfony/twig-bundle": "^5.4|^6.0", - "twig/twig": "^2.7|^3.0" + "amphp/amp": "^2", + "php": ">=7.1" }, "require-dev": { - "league/commonmark": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4|^6.3", - "twig/cache-extra": "^3.0", - "twig/cssinliner-extra": "^2.12|^3.0", - "twig/html-extra": "^2.12|^3.0", - "twig/inky-extra": "^2.12|^3.0", - "twig/intl-extra": "^2.12|^3.0", - "twig/markdown-extra": "^2.12|^3.0", - "twig/string-extra": "^2.12|^3.0" + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1.4", + "friendsofphp/php-cs-fixer": "^2.3", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^6 || ^7 || ^8", + "psalm/phar": "^3.11.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } }, - "type": "symfony-bundle", "autoload": { + "files": [ + "lib/functions.php" + ], "psr-4": { - "Twig\\Extra\\TwigExtraBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Amp\\ByteStream\\": "lib" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -14154,128 +16629,101 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "A Symfony bundle for extra Twig extensions", - "homepage": "https://twig.symfony.com", + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "http://amphp.org/byte-stream", "keywords": [ - "bundle", - "extra", - "twig" + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.7.1" + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/byte-stream/issues", + "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" }, "funding": [ { - "url": "https://github.com/fabpot", + "url": "https://github.com/amphp", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" } ], - "time": "2023-07-29T15:34:56+00:00" + "time": "2021-03-30T17:13:30+00:00" }, { - "name": "twig/html-extra", - "version": "v3.7.1", + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", "source": { "type": "git", - "url": "https://github.com/twigphp/html-extra.git", - "reference": "95ceb36e70fa8d07af08cf5135ecbf5e0bd8f386" + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/html-extra/zipball/95ceb36e70fa8d07af08cf5135ecbf5e0bd8f386", - "reference": "95ceb36e70fa8d07af08cf5135ecbf5e0bd8f386", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^5.4|^6.0", - "twig/twig": "^2.7|^3.0" + "php": ">=5.3.2" }, "require-dev": { - "symfony/phpunit-bridge": "^5.4|^6.3" + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" }, "type": "library", "autoload": { "psr-4": { - "Twig\\Extra\\Html\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "XdgBaseDir\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - } - ], - "description": "A Twig extension for HTML", - "homepage": "https://twig.symfony.com", - "keywords": [ - "html", - "twig" - ], + "description": "implementation of xdg base directory specification for php", "support": { - "source": "https://github.com/twigphp/html-extra/tree/v3.7.1" + "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", + "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2023-07-29T15:34:56+00:00" + "time": "2019-12-04T15:06:13+00:00" }, { - "name": "twig/intl-extra", - "version": "v3.7.1", + "name": "facade/ignition-contracts", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/twigphp/intl-extra.git", - "reference": "4f4fe572f635534649cc069e1dafe4a8ad63774d" + "url": "https://github.com/facade/ignition-contracts.git", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/4f4fe572f635534649cc069e1dafe4a8ad63774d", - "reference": "4f4fe572f635534649cc069e1dafe4a8ad63774d", + "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/intl": "^5.4|^6.0", - "twig/twig": "^2.7|^3.0" + "php": "^7.3|^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^5.4|^6.3" + "friendsofphp/php-cs-fixer": "^v2.15.8", + "phpunit/phpunit": "^9.3.11", + "vimeo/psalm": "^3.17.1" }, "type": "library", "autoload": { "psr-4": { - "Twig\\Extra\\Intl\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Facade\\IgnitionContracts\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -14283,260 +16731,223 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://flareapp.io", + "role": "Developer" } ], - "description": "A Twig extension for Intl", - "homepage": "https://twig.symfony.com", + "description": "Solution contracts for Ignition", + "homepage": "https://github.com/facade/ignition-contracts", "keywords": [ - "intl", - "twig" + "contracts", + "flare", + "ignition" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.7.1" + "issues": "https://github.com/facade/ignition-contracts/issues", + "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2023-07-29T15:34:56+00:00" + "time": "2020-10-16T08:27:54+00:00" }, { - "name": "twig/twig", - "version": "v3.7.1", + "name": "felixfbecker/advanced-json-rpc", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554" + "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", - "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", + "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "php": "^7.1 || ^8.0", + "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" }, "require-dev": { - "psr/container": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4.9|^6.3" + "phpunit/phpunit": "^7.0 || ^8.0" }, "type": "library", "autoload": { "psr-4": { - "Twig\\": "src/" + "AdvancedJsonRpc\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "ISC" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" + "name": "Felix Becker", + "email": "felix.b@outlook.com" } ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], + "description": "A more advanced JSONRPC implementation", "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.7.1" + "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", + "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2023-08-28T11:09:02+00:00" + "time": "2021-06-11T22:34:44+00:00" }, { - "name": "ua-parser/uap-php", - "version": "v3.9.14", + "name": "felixfbecker/language-server-protocol", + "version": "v1.5.2", "source": { "type": "git", - "url": "https://github.com/ua-parser/uap-php.git", - "reference": "b796c5ea5df588e65aeb4e2c6cce3811dec4fed6" + "url": "https://github.com/felixfbecker/php-language-server-protocol.git", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ua-parser/uap-php/zipball/b796c5ea5df588e65aeb4e2c6cce3811dec4fed6", - "reference": "b796c5ea5df588e65aeb4e2c6cce3811dec4fed6", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", "shasum": "" }, "require": { - "composer/ca-bundle": "^1.1", - "php": "^7.2 || ^8.0" + "php": ">=7.1" }, "require-dev": { - "phpstan/phpstan": "^0.12.33", - "phpunit/phpunit": "^8 || ^9", - "symfony/console": "^3.4 || ^4.2 || ^4.3 || ^5.0", - "symfony/filesystem": "^3.4 || ^4.2 || ^4.3 || ^5.0", - "symfony/finder": "^3.4 || ^4.2 || ^4.3 || ^5.0", - "symfony/yaml": "^3.4 || ^4.2 || ^4.3 || ^5.0", - "vimeo/psalm": "^3.12" - }, - "suggest": { - "symfony/console": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", - "symfony/filesystem": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", - "symfony/finder": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", - "symfony/yaml": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0" + "phpstan/phpstan": "*", + "squizlabs/php_codesniffer": "^3.1", + "vimeo/psalm": "^4.0" }, - "bin": [ - "bin/uaparser" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { "psr-4": { - "UAParser\\": "src" + "LanguageServerProtocol\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "ISC" ], "authors": [ { - "name": "Dave Olsen", - "email": "dmolsen@gmail.com" - }, - { - "name": "Lars Strojny", - "email": "lars@strojny.net" + "name": "Felix Becker", + "email": "felix.b@outlook.com" } ], - "description": "A multi-language port of Browserscope's user agent parser.", + "description": "PHP classes for the Language Server Protocol", + "keywords": [ + "language", + "microsoft", + "php", + "server" + ], "support": { - "issues": "https://github.com/ua-parser/uap-php/issues", - "source": "https://github.com/ua-parser/uap-php/tree/v3.9.14" + "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" }, - "time": "2020-10-02T23:36:20+00:00" + "time": "2022-03-02T22:36:06+00:00" }, { - "name": "webimpress/safe-writer", - "version": "2.2.0", + "name": "fidry/cpu-core-counter", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/webimpress/safe-writer.git", - "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6" + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", - "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077", + "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077", "shasum": "" }, "require": { - "php": "^7.3 || ^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.5.4", - "vimeo/psalm": "^4.7", - "webimpress/coding-standard": "^1.2.2" + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev", - "dev-develop": "2.3.x-dev", - "dev-release-1.0": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Webimpress\\SafeWriter\\": "src/" + "Fidry\\CpuCoreCounter\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "MIT" ], - "description": "Tool to write files safely, to avoid race conditions", + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", "keywords": [ - "concurrent write", - "file writer", - "race condition", - "safe writer", - "webimpress" + "CPU", + "core" ], "support": { - "issues": "https://github.com/webimpress/safe-writer/issues", - "source": "https://github.com/webimpress/safe-writer/tree/2.2.0" + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0" }, "funding": [ { - "url": "https://github.com/michalbundyra", + "url": "https://github.com/theofidry", "type": "github" } ], - "time": "2021-04-19T16:34:45+00:00" + "time": "2023-09-17T21:38:23+00:00" }, { - "name": "webmozart/assert", - "version": "1.11.0", + "name": "filp/whoops", + "version": "2.15.4", "source": { "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + "url": "https://github.com/filp/whoops.git", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", "shasum": "" }, "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "require-dev": { - "phpunit/phpunit": "^8.5.13" + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10-dev" + "dev-master": "2.7-dev" } }, "autoload": { "psr-4": { - "Webmozart\\Assert\\": "src/" + "Whoops\\": "src/Whoops/" } }, "notification-url": "https://packagist.org/downloads/", @@ -14545,53 +16956,89 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" } ], - "description": "Assertions to validate method input/output with nice error messages.", + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", "keywords": [ - "assert", - "check", - "validate" + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.4" }, - "time": "2022-06-03T18:03:27+00:00" + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-11-03T12:00:00+00:00" }, { - "name": "webmozart/path-util", - "version": "2.3.0", + "name": "friendsofphp/php-cs-fixer", + "version": "v3.47.1", "source": { "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "173c60d1eff911c9c54322704623a45561d3241d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/173c60d1eff911c9c54322704623a45561d3241d", + "reference": "173c60d1eff911c9c54322704623a45561d3241d", "shasum": "" }, "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0", + "sebastian/diff": "^4.0 || ^5.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "facile-it/paraunit": "^1.3 || ^2.0", + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.7", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpunit/phpunit": "^9.6 || ^10.5.5", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", "autoload": { "psr-4": { - "Webmozart\\PathUtil\\": "src/" + "PhpCsFixer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -14600,166 +17047,186 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" } ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", + "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.47.1" }, - "abandoned": "symfony/filesystem", - "time": "2015-12-17T08:42:14+00:00" + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2024-01-16T18:54:21+00:00" }, { - "name": "webonyx/graphql-php", - "version": "v14.11.10", + "name": "myclabs/deep-copy", + "version": "1.11.1", "source": { "type": "git", - "url": "https://github.com/webonyx/graphql-php.git", - "reference": "d9c2fdebc6aa01d831bc2969da00e8588cffef19" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/d9c2fdebc6aa01d831bc2969da00e8588cffef19", - "reference": "d9c2fdebc6aa01d831bc2969da00e8588cffef19", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { - "ext-json": "*", - "ext-mbstring": "*", - "php": "^7.1 || ^8" + "php": "^7.1 || ^8.0" }, - "require-dev": { - "amphp/amp": "^2.3", - "doctrine/coding-standard": "^6.0", - "nyholm/psr7": "^1.2", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "0.12.82", - "phpstan/phpstan-phpunit": "0.12.18", - "phpstan/phpstan-strict-rules": "0.12.9", - "phpunit/phpunit": "^7.2 || ^8.5", - "psr/http-message": "^1.0", - "react/promise": "2.*", - "simpod/php-coveralls-mirror": "^3.0" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, - "suggest": { - "psr/http-message": "To use standard GraphQL server", - "react/promise": "To leverage async resolving on React PHP platform" + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], "psr-4": { - "GraphQL\\": "src/" + "DeepCopy\\": "src/DeepCopy/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A PHP port of GraphQL reference implementation", - "homepage": "https://github.com/webonyx/graphql-php", + "description": "Create deep copies (clones) of your objects", "keywords": [ - "api", - "graphql" + "clone", + "copy", + "duplicate", + "object", + "object graph" ], "support": { - "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v14.11.10" + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { - "url": "https://opencollective.com/webonyx-graphql-php", - "type": "open_collective" + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" } ], - "time": "2023-07-05T14:23:37+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { - "name": "willdurand/negotiation", - "version": "3.1.0", + "name": "netresearch/jsonmapper", + "version": "v4.2.0", "source": { "type": "git", - "url": "https://github.com/willdurand/Negotiation.git", - "reference": "68e9ea0553ef6e2ee8db5c1d98829f111e623ec2" + "url": "https://github.com/cweiske/jsonmapper.git", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/68e9ea0553ef6e2ee8db5c1d98829f111e623ec2", - "reference": "68e9ea0553ef6e2ee8db5c1d98829f111e623ec2", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", "shasum": "" }, "require": { - "php": ">=7.1.0" + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=7.1" }, "require-dev": { - "symfony/phpunit-bridge": "^5.0" + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "squizlabs/php_codesniffer": "~3.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, "autoload": { - "psr-4": { - "Negotiation\\": "src/Negotiation" + "psr-0": { + "JsonMapper": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "OSL-3.0" ], "authors": [ { - "name": "William Durand", - "email": "will+git@drnd.me" + "name": "Christian Weiske", + "email": "cweiske@cweiske.de", + "homepage": "http://github.com/cweiske/jsonmapper/", + "role": "Developer" } ], - "description": "Content Negotiation tools for PHP provided as a standalone library.", - "homepage": "http://williamdurand.fr/Negotiation/", - "keywords": [ - "accept", - "content", - "format", - "header", - "negotiation" - ], + "description": "Map nested JSON structures onto PHP classes", "support": { - "issues": "https://github.com/willdurand/Negotiation/issues", - "source": "https://github.com/willdurand/Negotiation/tree/3.1.0" + "email": "cweiske@cweiske.de", + "issues": "https://github.com/cweiske/jsonmapper/issues", + "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" }, - "time": "2022-01-30T20:08:53+00:00" + "time": "2023-04-09T17:37:40+00:00" }, { - "name": "xemlock/htmlpurifier-html5", - "version": "v0.1.11", + "name": "nunomaduro/collision", + "version": "v5.11.0", "source": { "type": "git", - "url": "https://github.com/xemlock/htmlpurifier-html5.git", - "reference": "f0d563f9fd4a82a3d759043483f9a94c0d8c2255" + "url": "https://github.com/nunomaduro/collision.git", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/xemlock/htmlpurifier-html5/zipball/f0d563f9fd4a82a3d759043483f9a94c0d8c2255", - "reference": "f0d563f9fd4a82a3d759043483f9a94c0d8c2255", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", "shasum": "" }, "require": { - "ezyang/htmlpurifier": "^4.8", - "php": ">=5.2" + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.14.3", + "php": "^7.3 || ^8.0", + "symfony/console": "^5.0" }, "require-dev": { - "php-coveralls/php-coveralls": "^1.1|^2.1", - "phpunit/phpunit": ">=4.7 <8.0" + "brianium/paratest": "^6.1", + "fideloper/proxy": "^4.4.1", + "fruitcake/laravel-cors": "^2.0.3", + "laravel/framework": "8.x-dev", + "nunomaduro/larastan": "^0.6.2", + "nunomaduro/mock-final-classes": "^1.0", + "orchestra/testbench": "^6.0", + "phpstan/phpstan": "^0.12.64", + "phpunit/phpunit": "^9.5.0" }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, "autoload": { - "classmap": [ - "library/HTMLPurifier/" - ] + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -14767,92 +17234,99 @@ ], "authors": [ { - "name": "xemlock", - "email": "xemlock@gmail.com" + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "HTML5 element definitions for HTML Purifier", + "description": "Cli error handling for console/command-line PHP applications.", "keywords": [ - "HTML5", - "Purifier", - "html", - "htmlpurifier", - "security", - "tidy", - "validator", - "xss" + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" ], "support": { - "issues": "https://github.com/xemlock/htmlpurifier-html5/issues", - "source": "https://github.com/xemlock/htmlpurifier-html5/tree/master" + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" }, - "time": "2019-08-07T17:19:21+00:00" - } - ], - "packages-dev": [ + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2022-01-10T16:22:52+00:00" + }, { - "name": "friendsofphp/php-cs-fixer", - "version": "v3.34.0", + "name": "pestphp/pest", + "version": "v1.23.1", "source": { "type": "git", - "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "7c7a4ad2ed8fe50df3e25528218b13d383608f23" + "url": "https://github.com/pestphp/pest.git", + "reference": "5c56ad8772b89611c72a07e23f6e30aa29dc677a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7c7a4ad2ed8fe50df3e25528218b13d383608f23", - "reference": "7c7a4ad2ed8fe50df3e25528218b13d383608f23", + "url": "https://api.github.com/repos/pestphp/pest/zipball/5c56ad8772b89611c72a07e23f6e30aa29dc677a", + "reference": "5c56ad8772b89611c72a07e23f6e30aa29dc677a", "shasum": "" }, "require": { - "composer/semver": "^3.3", - "composer/xdebug-handler": "^3.0.3", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" - }, - "conflict": { - "stevebauman/unfinalize": "*" + "nunomaduro/collision": "^5.11.0|^6.4.0", + "pestphp/pest-plugin": "^1.1.0", + "php": "^7.3 || ^8.0", + "phpunit/phpunit": "^9.6.10" }, "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.0", - "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", - "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", - "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.6", - "phpunitgoodpractices/traits": "^1.9.2", - "symfony/phpunit-bridge": "^6.2.3", - "symfony/yaml": "^5.4 || ^6.0" + "illuminate/console": "^8.83.27", + "illuminate/support": "^8.83.27", + "laravel/dusk": "^6.25.2", + "pestphp/pest-dev-tools": "^1.0.0", + "pestphp/pest-plugin-parallel": "^1.2.1" }, - "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters." + "bin": [ + "bin/pest" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + }, + "pest": { + "plugins": [ + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Environment" + ] + }, + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] + } }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", "autoload": { + "files": [ + "src/Functions.php", + "src/Pest.php" + ], "psr-4": { - "PhpCsFixer\\": "src/" + "Pest\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -14861,91 +17335,106 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "A tool to automatically fix PHP code style", + "description": "An elegant PHP Testing Framework.", "keywords": [ - "Static code analysis", - "fixer", - "standards", - "static analysis" + "framework", + "pest", + "php", + "test", + "testing", + "unit" ], "support": { - "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.34.0" + "issues": "https://github.com/pestphp/pest/issues", + "source": "https://github.com/pestphp/pest/tree/v1.23.1" }, "funding": [ { - "url": "https://github.com/keradus", + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", "type": "github" } ], - "time": "2023-09-29T15:34:26+00:00" + "time": "2023-07-12T19:42:47+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.11.1", + "name": "pestphp/pest-plugin", + "version": "v1.1.0", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "606c5f79c6a339b49838ffbee0151ca519efe378" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/606c5f79c6a339b49838ffbee0151ca519efe378", + "reference": "606c5f79c6a339b49838ffbee0151ca519efe378", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "composer-plugin-api": "^1.1.0 || ^2.0.0", + "php": "^7.3 || ^8.0" }, "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "pestphp/pest": "<1.0" }, "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + "composer/composer": "^2.4.2", + "pestphp/pest": "^1.22.1", + "pestphp/pest-dev-tools": "^1.0.0" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "class": "Pest\\Plugin\\Manager" }, - "type": "library", "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], "psr-4": { - "DeepCopy\\": "src/DeepCopy/" + "Pest\\Plugin\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", + "description": "The Pest plugin manager", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" ], "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/pestphp/pest-plugin/tree/v1.1.0" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2022-09-18T13:18:17+00:00" }, { "name": "phar-io/manifest", @@ -15060,16 +17549,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.37", + "version": "1.10.56", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "058ba07e92f744d4dcf6061ae75283d0c6456f2e" + "reference": "27816a01aea996191ee14d010f325434c0ee76fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/058ba07e92f744d4dcf6061ae75283d0c6456f2e", - "reference": "058ba07e92f744d4dcf6061ae75283d0c6456f2e", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/27816a01aea996191ee14d010f325434c0ee76fa", + "reference": "27816a01aea996191ee14d010f325434c0ee76fa", "shasum": "" }, "require": { @@ -15118,25 +17607,25 @@ "type": "tidelift" } ], - "time": "2023-10-02T16:18:37+00:00" + "time": "2024-01-15T10:43:00+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.43", + "version": "1.3.57", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "c5015035755ad2d5013bd6bf98ff423ca6150822" + "reference": "b3e7d2d45edf5e423132901a5563f30c391990a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/c5015035755ad2d5013bd6bf98ff423ca6150822", - "reference": "c5015035755ad2d5013bd6bf98ff423ca6150822", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/b3e7d2d45edf5e423132901a5563f30c391990a0", + "reference": "b3e7d2d45edf5e423132901a5563f30c391990a0", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10.12" + "phpstan/phpstan": "^1.10.48" }, "conflict": { "doctrine/collections": "<1.0", @@ -15153,7 +17642,7 @@ "doctrine/dbal": "^2.13.8 || ^3.3.3", "doctrine/lexer": "^1.2.1", "doctrine/mongodb-odm": "^1.3 || ^2.1", - "doctrine/orm": "^2.11.0", + "doctrine/orm": "^2.14.0", "doctrine/persistence": "^1.3.8 || ^2.2.1", "gedmo/doctrine-extensions": "^3.8", "nesbot/carbon": "^2.49", @@ -15186,22 +17675,22 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.43" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.57" }, - "time": "2023-09-01T15:01:13+00:00" + "time": "2024-01-16T12:26:37+00:00" }, { "name": "phpstan/phpstan-symfony", - "version": "1.3.4", + "version": "1.3.7", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "383855999db6a7d65d0bf580ce2762e17188c2a5" + "reference": "ef7db637be9b85fa00278fc3477ac66abe8eb7d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/383855999db6a7d65d0bf580ce2762e17188c2a5", - "reference": "383855999db6a7d65d0bf580ce2762e17188c2a5", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/ef7db637be9b85fa00278fc3477ac66abe8eb7d1", + "reference": "ef7db637be9b85fa00278fc3477ac66abe8eb7d1", "shasum": "" }, "require": { @@ -15258,29 +17747,29 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.4" + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.7" }, - "time": "2023-09-29T14:10:11+00:00" + "time": "2024-01-10T21:54:42+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.29", + "version": "9.2.30", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089", + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -15330,7 +17819,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30" }, "funding": [ { @@ -15338,7 +17827,7 @@ "type": "github" } ], - "time": "2023-09-19T04:57:46+00:00" + "time": "2023-12-22T06:47:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -15583,16 +18072,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.13", + "version": "9.6.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be" + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be", - "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", + "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", "shasum": "" }, "require": { @@ -15666,7 +18155,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" }, "funding": [ { @@ -15682,7 +18171,72 @@ "type": "tidelift" } ], - "time": "2023-09-19T05:39:22+00:00" + "time": "2023-12-01T16:55:19+00:00" + }, + { + "name": "psalm/plugin-symfony", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/psalm/psalm-plugin-symfony.git", + "reference": "f23ec3439743fb24f5c1101e52d032f23d5befa6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/f23ec3439743fb24f5c1101e52d032f23d5befa6", + "reference": "f23ec3439743fb24f5c1101e52d032f23d5befa6", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "php": "^7.4 || ^8.0", + "symfony/framework-bundle": "^5.0 || ^6.0 || ^7.0", + "vimeo/psalm": "^5.1" + }, + "require-dev": { + "doctrine/annotations": "^1.8|^2", + "doctrine/orm": "^2.9", + "phpunit/phpunit": "~7.5 || ~9.5", + "symfony/cache-contracts": "^1.0 || ^2.0", + "symfony/console": "*", + "symfony/form": "^5.0 || ^6.0 || ^7.0", + "symfony/messenger": "^5.0 || ^6.0 || ^7.0", + "symfony/security-guard": "*", + "symfony/serializer": "^5.0 || ^6.0 || ^7.0", + "symfony/validator": "*", + "twig/twig": "^2.10 || ^3.0", + "weirdan/codeception-psalm-module": "dev-master" + }, + "suggest": { + "weirdan/doctrine-psalm-plugin": "If Doctrine is used, it is recommended install this plugin" + }, + "type": "psalm-plugin", + "extra": { + "psalm": { + "pluginClass": "Psalm\\SymfonyPsalmPlugin\\Plugin" + } + }, + "autoload": { + "psr-4": { + "Psalm\\SymfonyPsalmPlugin\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Farhad Safarov", + "email": "farhad.safarov@gmail.com" + } + ], + "description": "Psalm Plugin for Symfony", + "support": { + "issues": "https://github.com/psalm/psalm-plugin-symfony/issues", + "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v5.1.0" + }, + "time": "2023-11-12T10:04:27+00:00" }, { "name": "qossmic/deptrac-shim", @@ -15982,20 +18536,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -16027,7 +18581,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -16035,7 +18589,7 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", @@ -16309,20 +18863,20 @@ }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -16354,7 +18908,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -16362,7 +18916,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -16703,18 +19257,81 @@ ], "time": "2020-09-28T06:39:44+00:00" }, + { + "name": "spatie/array-to-xml", + "version": "3.2.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/array-to-xml.git", + "reference": "96be97e664c87613121d073ea39af4c74e57a7f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/96be97e664c87613121d073ea39af4c74e57a7f8", + "reference": "96be97e664c87613121d073ea39af4c74e57a7f8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": "^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.2", + "pestphp/pest": "^1.21", + "spatie/pest-plugin-snapshots": "^1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\ArrayToXml\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://freek.dev", + "role": "Developer" + } + ], + "description": "Convert an array to xml", + "homepage": "https://github.com/spatie/array-to-xml", + "keywords": [ + "array", + "convert", + "xml" + ], + "support": { + "source": "https://github.com/spatie/array-to-xml/tree/3.2.2" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-11-14T14:08:51+00:00" + }, { "name": "symfony/phpunit-bridge", - "version": "v6.3.2", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "e020e1efbd1b42cb670fcd7d19a25abbddba035d" + "reference": "bd0455b7888e4adac29cf175d819c51f88fed942" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/e020e1efbd1b42cb670fcd7d19a25abbddba035d", - "reference": "e020e1efbd1b42cb670fcd7d19a25abbddba035d", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/bd0455b7888e4adac29cf175d819c51f88fed942", + "reference": "bd0455b7888e4adac29cf175d819c51f88fed942", "shasum": "" }, "require": { @@ -16725,7 +19342,7 @@ }, "require-dev": { "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/error-handler": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", "symfony/polyfill-php81": "^1.27" }, "bin": [ @@ -16766,7 +19383,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.3.2" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.2" }, "funding": [ { @@ -16782,7 +19399,7 @@ "type": "tidelift" } ], - "time": "2023-07-12T16:00:22+00:00" + "time": "2023-12-19T09:12:31+00:00" }, { "name": "symplify/easy-coding-standard", @@ -16841,16 +19458,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -16879,7 +19496,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -16887,7 +19504,195 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" + }, + { + "name": "vimeo/psalm", + "version": "5.19.0", + "source": { + "type": "git", + "url": "https://github.com/vimeo/psalm.git", + "reference": "06b71be009a6bd6d81b9811855d6629b9fe90e1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/06b71be009a6bd6d81b9811855d6629b9fe90e1b", + "reference": "06b71be009a6bd6d81b9811855d6629b9fe90e1b", + "shasum": "" + }, + "require": { + "amphp/amp": "^2.4.2", + "amphp/byte-stream": "^1.5", + "composer-runtime-api": "^2", + "composer/semver": "^1.4 || ^2.0 || ^3.0", + "composer/xdebug-handler": "^2.0 || ^3.0", + "dnoegel/php-xdg-base-dir": "^0.1.1", + "ext-ctype": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-tokenizer": "*", + "felixfbecker/advanced-json-rpc": "^3.1", + "felixfbecker/language-server-protocol": "^1.5.2", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "nikic/php-parser": "^4.16", + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "sebastian/diff": "^4.0 || ^5.0", + "spatie/array-to-xml": "^2.17.0 || ^3.0", + "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0" + }, + "conflict": { + "nikic/php-parser": "4.17.0" + }, + "provide": { + "psalm/psalm": "self.version" + }, + "require-dev": { + "amphp/phpunit-util": "^2.0", + "bamarni/composer-bin-plugin": "^1.4", + "brianium/paratest": "^6.9", + "ext-curl": "*", + "mockery/mockery": "^1.5", + "nunomaduro/mock-final-classes": "^1.1", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpdoc-parser": "^1.6", + "phpunit/phpunit": "^9.6", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.6", + "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-curl": "In order to send data to shepherd", + "ext-igbinary": "^2.0.5 is required, used to serialize caching data" + }, + "bin": [ + "psalm", + "psalm-language-server", + "psalm-plugin", + "psalm-refactor", + "psalter" + ], + "type": "project", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev", + "dev-4.x": "4.x-dev", + "dev-3.x": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psalm\\": "src/Psalm/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Brown" + } + ], + "description": "A static analysis tool for finding errors in PHP applications", + "keywords": [ + "code", + "inspection", + "php", + "static analysis" + ], + "support": { + "docs": "https://psalm.dev/docs", + "issues": "https://github.com/vimeo/psalm/issues", + "source": "https://github.com/vimeo/psalm" + }, + "time": "2024-01-09T21:02:43+00:00" + }, + { + "name": "weirdan/doctrine-psalm-plugin", + "version": "v2.9.0", + "source": { + "type": "git", + "url": "https://github.com/psalm/psalm-plugin-doctrine.git", + "reference": "3db8e55b2ea15373338d2a3eab71c5f5a31c8b08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psalm/psalm-plugin-doctrine/zipball/3db8e55b2ea15373338d2a3eab71c5f5a31c8b08", + "reference": "3db8e55b2ea15373338d2a3eab71c5f5a31c8b08", + "shasum": "" + }, + "require": { + "composer/semver": "^1.4 || ^2.0 || ^3.0", + "php": "^7.2 || ^8", + "vimeo/psalm": "^4.28|^5.0" + }, + "conflict": { + "doctrine/collections": "<1.8", + "doctrine/orm": "<2.6", + "doctrine/persistence": "<2.0" + }, + "require-dev": { + "codeception/codeception": "^4.0", + "doctrine/coding-standard": "^9.0", + "doctrine/collections": "^1.8 || ^2.0", + "doctrine/doctrine-bundle": "^1.11 || ^2.0", + "doctrine/orm": "^2.6", + "doctrine/persistence": "^2.0", + "phly/keep-a-changelog": "^2.1", + "squizlabs/php_codesniffer": "^3.3", + "weirdan/codeception-psalm-module": "^0.13.1" + }, + "type": "psalm-plugin", + "extra": { + "psalm": { + "pluginClass": "Weirdan\\DoctrinePsalmPlugin\\Plugin" + } + }, + "autoload": { + "psr-4": { + "Weirdan\\DoctrinePsalmPlugin\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruce Weirdan", + "email": "weirdan@gmail.com" + } + ], + "description": "Stubs to let Psalm understand Doctrine better", + "keywords": [ + "code", + "dbal", + "doctrine", + "doctrine2", + "extension", + "inspection", + "orm", + "php", + "plugin", + "psalm", + "psalm-plugin", + "static analysis", + "static-analysis" + ], + "support": { + "issues": "https://github.com/psalm/psalm-plugin-doctrine/issues", + "source": "https://github.com/psalm/psalm-plugin-doctrine/tree/v2.9.0" + }, + "time": "2023-07-15T05:44:30+00:00" } ], "aliases": [], diff --git a/config/bolt/menu.yaml b/config/bolt/menu.yaml index bb75570..fc5bf97 100644 --- a/config/bolt/menu.yaml +++ b/config/bolt/menu.yaml @@ -25,6 +25,9 @@ top: - label: Heist op den Berg link: locatie/124 class: heistopdenberg + - label: Herselt + link: locatie/138 + class: heistopdenberg - label: Praktische info class: mdi mdi-information submenu: @@ -80,7 +83,9 @@ footer_c1: - label: Heist op den Berg link: locatie/124 class: footer_heistopdenberg - + - label: Herselt + link: locatie/138 + class: footer_herselt footer_c2: - label: Over ons link: trainers diff --git a/config/bundles.php b/config/bundles.php index d190461..a77fdb7 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -25,4 +25,5 @@ Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle::class => ['all' => true], DH\AuditorBundle\DHAuditorBundle::class => ['all' => true], + Sentry\SentryBundle\SentryBundle::class => ['prod' => true], ]; diff --git a/config/packages/http_discovery.yaml b/config/packages/http_discovery.yaml new file mode 100644 index 0000000..2a789e7 --- /dev/null +++ b/config/packages/http_discovery.yaml @@ -0,0 +1,10 @@ +services: + Psr\Http\Message\RequestFactoryInterface: '@http_discovery.psr17_factory' + Psr\Http\Message\ResponseFactoryInterface: '@http_discovery.psr17_factory' + Psr\Http\Message\ServerRequestFactoryInterface: '@http_discovery.psr17_factory' + Psr\Http\Message\StreamFactoryInterface: '@http_discovery.psr17_factory' + Psr\Http\Message\UploadedFileFactoryInterface: '@http_discovery.psr17_factory' + Psr\Http\Message\UriFactoryInterface: '@http_discovery.psr17_factory' + + http_discovery.psr17_factory: + class: Http\Discovery\Psr17Factory diff --git a/config/packages/sentry.yaml b/config/packages/sentry.yaml new file mode 100644 index 0000000..e042cb3 --- /dev/null +++ b/config/packages/sentry.yaml @@ -0,0 +1,28 @@ +when@prod: + sentry: + dsn: '%env(SENTRY_DSN)%' + + # this hooks into critical paths of the framework (and vendors) to perform + # automatic instrumentation (there might be some performance penalty) + # https://docs.sentry.io/platforms/php/guides/symfony/performance/instrumentation/automatic-instrumentation/ + #tracing: + # enabled: false + + +# If you are using Monolog, you also need this additional configuration to log the errors correctly: +# https://docs.sentry.io/platforms/php/guides/symfony/#monolog-integration +# register_error_listener: false +# register_error_handler: false + +# monolog: +# handlers: +# sentry: +# type: sentry +# level: !php/const Monolog\Logger::ERROR +# hub_id: Sentry\State\HubInterface + +# Uncomment these lines to register a log message processor that resolves PSR-3 placeholders +# https://docs.sentry.io/platforms/php/guides/symfony/#monolog-integration +# services: +# Monolog\Processor\PsrLogMessageProcessor: +# tags: { name: monolog.processor, handler: sentry } diff --git a/docker-compose.yml b/docker-compose.yml index bdcc8e7..721d475 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -100,7 +100,7 @@ services: # working_dir: /app # volumes: # - .:/app -# command: bash -c "cd frontends/member_module/ && npm install && npm run build" +# command: bash -c "cd frontends/member_module/ && npm install && npm run build-only" # docs-builder: # image: node:latest diff --git a/ecs.php b/ecs.php index 93b0e68..5a6b178 100644 --- a/ecs.php +++ b/ecs.php @@ -57,10 +57,10 @@ $parameters->set('sets', ['clean-code', 'common', 'php70', 'php71', 'php81', 'psr12', 'symfony', 'symfony-risky']); $parameters->set('paths', [ - __DIR__ . '/application', - __DIR__ . '/tests', - __DIR__ . '/src', - __DIR__ . '/ecs.php', + __DIR__.'/application', + __DIR__.'/tests', + __DIR__.'/src', + __DIR__.'/ecs.php', ]); $parameters->set('cache_directory', 'var/cache/ecs'); diff --git a/frontends/member_module/package.json b/frontends/member_module/package.json index 2599ab1..27a2170 100644 --- a/frontends/member_module/package.json +++ b/frontends/member_module/package.json @@ -49,16 +49,16 @@ }, "devDependencies": { "@types/dropzone": "^5.7.4", - "@types/node": "^16.11.56", + "@types/node": "^20.11.0", "@types/twig": "^1.12.9", - "@vitejs/plugin-vue": "^3.0.3", + "@vitejs/plugin-vue": "^5.0.3", "@vue/tsconfig": "^0.1.3", "autoprefixer": "^10.4.12", "npm-run-all": "^4.1.5", "postcss": "^8.4.17", "tailwindcss": "^3.1.8", - "typescript": "~4.7.4", - "vite": "^3.0.9", + "typescript": "^5.3.3", + "vite": "^5.0.11", "vue-tsc": "^0.40.7" } } diff --git a/frontends/member_module/public/theme/nano/theme.css b/frontends/member_module/public/theme/nano/theme.css new file mode 100644 index 0000000..3cabdd0 --- /dev/null +++ b/frontends/member_module/public/theme/nano/theme.css @@ -0,0 +1,5704 @@ +:root { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + --font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + --surface-a:#ffffff; + --surface-b:#f2f4f8; + --surface-c:#dde1e6; + --surface-d:#dee2e6; + --surface-e:#ffffff; + --surface-f:#ffffff; + --text-color:#343a3f; + --text-color-secondary:#697077; + --primary-color:#1174c0; + --primary-color-text:#ffffff; + --surface-0: #ffffff; + --surface-50: #eff0f0; + --surface-100: #dfe0e1; + --surface-200: #bfc1c4; + --surface-300: #9fa3a6; + --surface-400: #7f8489; + --surface-500: #5f656b; + --surface-600: #4c5156; + --surface-700: #393d40; + --surface-800: #26282b; + --surface-900: #131415; + --gray-50: #eff0f0; + --gray-100: #dfe0e1; + --gray-200: #bfc1c4; + --gray-300: #9fa3a6; + --gray-400: #7f8489; + --gray-500: #5f656b; + --gray-600: #4c5156; + --gray-700: #393d40; + --gray-800: #26282b; + --gray-900: #131415; + --content-padding:0.5rem; + --inline-spacing:0.5rem; + --border-radius:1px; + --surface-ground:#f2f4f8; + --surface-section:#ffffff; + --surface-card:#ffffff; + --surface-overlay:#ffffff; + --surface-border:#dee2e6; + --surface-hover:#dde1e6; + --focus-ring: 0 0 0 0.2rem #90c9f5; + --maskbg: rgba(0, 0, 0, 0.4); + --highlight-bg: #44A1D9; + --highlight-text-color: #ffffff; + color-scheme: light; +} + +:root { + --blue-50:#f4f9fd; + --blue-100:#c9e2f4; + --blue-200:#9ecbec; + --blue-300:#74b3e4; + --blue-400:#499cdb; + --blue-500:#1e85d3; + --blue-600:#1a71b3; + --blue-700:#155d94; + --blue-800:#114974; + --blue-900:#0c3554; + --green-50:#f5fbf7; + --green-100:#cfead7; + --green-200:#a9dab7; + --green-300:#84ca97; + --green-400:#5eb978; + --green-500:#38a958; + --green-600:#30904b; + --green-700:#27763e; + --green-800:#1f5d30; + --green-900:#164423; + --yellow-50:#fefcf5; + --yellow-100:#fbf0cf; + --yellow-200:#f9e4a8; + --yellow-300:#f6d982; + --yellow-400:#f3cd5b; + --yellow-500:#f0c135; + --yellow-600:#cca42d; + --yellow-700:#a88725; + --yellow-800:#846a1d; + --yellow-900:#604d15; + --cyan-50:#f4fcfe; + --cyan-100:#caf0fc; + --cyan-200:#a0e4fa; + --cyan-300:#75d9f8; + --cyan-400:#4bcdf5; + --cyan-500:#21c1f3; + --cyan-600:#1ca4cf; + --cyan-700:#1787aa; + --cyan-800:#126a86; + --cyan-900:#0d4d61; + --pink-50:#fdf6f6; + --pink-100:#f5d3d6; + --pink-200:#eeb0b5; + --pink-300:#e68e94; + --pink-400:#df6b74; + --pink-500:#d74853; + --pink-600:#b73d47; + --pink-700:#97323a; + --pink-800:#76282e; + --pink-900:#561d21; + --indigo-50:#f3f6fc; + --indigo-100:#c6d4f0; + --indigo-200:#99b2e4; + --indigo-300:#6b90d8; + --indigo-400:#3e6ecc; + --indigo-500:#114cc0; + --indigo-600:#0e41a3; + --indigo-700:#0c3586; + --indigo-800:#092a6a; + --indigo-900:#071e4d; + --teal-50:#f3f9f8; + --teal-100:#c6e0df; + --teal-200:#98c7c5; + --teal-300:#6baeac; + --teal-400:#3d9692; + --teal-500:#107d79; + --teal-600:#0e6a67; + --teal-700:#0b5855; + --teal-800:#094543; + --teal-900:#063230; + --orange-50:#fef9f5; + --orange-100:#fbe4cf; + --orange-200:#f9cfa8; + --orange-300:#f6ba82; + --orange-400:#f3a45b; + --orange-500:#f08f35; + --orange-600:#cc7a2d; + --orange-700:#a86425; + --orange-800:#844f1d; + --orange-900:#603915; + --bluegray-50:#f8f8f8; + --bluegray-100:#dbddde; + --bluegray-200:#bfc2c5; + --bluegray-300:#a2a6ab; + --bluegray-400:#868b91; + --bluegray-500:#697077; + --bluegray-600:#595f65; + --bluegray-700:#4a4e53; + --bluegray-800:#3a3e41; + --bluegray-900:#2a2d30; + --purple-50:#f9f6ff; + --purple-100:#e3d3fd; + --purple-200:#ccb1fc; + --purple-300:#b68efb; + --purple-400:#9f6cf9; + --purple-500:#8949f8; + --purple-600:#743ed3; + --purple-700:#6033ae; + --purple-800:#4b2888; + --purple-900:#371d63; + --red-50:#fff4f5; + --red-100:#ffccce; + --red-200:#ffa4a7; + --red-300:#ff7c80; + --red-400:#ff5359; + --red-500:#ff2b32; + --red-600:#d9252b; + --red-700:#b31e23; + --red-800:#8c181c; + --red-900:#661114; + --primary-50:#f3f8fc; + --primary-100:#c6def0; + --primary-200:#99c3e4; + --primary-300:#6ba9d8; + --primary-400:#3e8ecc; + --primary-500:#1174c0; + --primary-600:#0e63a3; + --primary-700:#0c5186; + --primary-800:#09406a; + --primary-900:#072e4d; +} + +.p-editor-container .p-editor-toolbar { + background: #f2f4f8; + border-top-right-radius: 1px; + border-top-left-radius: 1px; +} +.p-editor-container .p-editor-toolbar.ql-snow { + border: 1px solid #dee2e6; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-stroke { + stroke: #697077; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-fill { + fill: #697077; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label { + border: 0 none; + color: #697077; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover { + color: #343a3f; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-stroke { + stroke: #343a3f; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-picker .ql-picker-label:hover .ql-fill { + fill: #343a3f; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label { + color: #343a3f; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke { + stroke: #343a3f; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill { + fill: #343a3f; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options { + background: #ffffff; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + border-radius: 1px; + padding: 0.25rem 0; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item { + color: #343a3f; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item:hover { + color: #343a3f; + background: #dde1e6; +} +.p-editor-container .p-editor-toolbar.ql-snow .ql-picker.ql-expanded:not(.ql-icon-picker) .ql-picker-item { + padding: 0.25rem 0.5rem; +} +.p-editor-container .p-editor-content { + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; +} +.p-editor-container .p-editor-content.ql-snow { + border: 1px solid #dee2e6; +} +.p-editor-container .p-editor-content .ql-editor { + background: #ffffff; + color: #343a3f; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; +} +.p-editor-container .ql-snow.ql-toolbar button:hover, +.p-editor-container .ql-snow.ql-toolbar button:focus { + color: #343a3f; +} +.p-editor-container .ql-snow.ql-toolbar button:hover .ql-stroke, +.p-editor-container .ql-snow.ql-toolbar button:focus .ql-stroke { + stroke: #343a3f; +} +.p-editor-container .ql-snow.ql-toolbar button:hover .ql-fill, +.p-editor-container .ql-snow.ql-toolbar button:focus .ql-fill { + fill: #343a3f; +} +.p-editor-container .ql-snow.ql-toolbar button.ql-active, +.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active, +.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected { + color: #1174c0; +} +.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-stroke, +.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, +.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke { + stroke: #1174c0; +} +.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-fill, +.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill, +.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill { + fill: #1174c0; +} +.p-editor-container .ql-snow.ql-toolbar button.ql-active .ql-picker-label, +.p-editor-container .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-picker-label, +.p-editor-container .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-picker-label { + color: #1174c0; +} + +@layer primevue { + * { + box-sizing: border-box; + } + + .p-component { + font-family: var(--font-family); + font-feature-settings: var(--font-feature-settings, normal); + font-size: 1rem; + font-weight: normal; + } + + .p-component-overlay { + background-color: rgba(0, 0, 0, 0.4); + transition-duration: 0.2s; + } + + .p-disabled, .p-component:disabled { + opacity: 0.6; + } + + .p-error { + color: #d8222f; + } + + .p-text-secondary { + color: #697077; + } + + .pi { + font-size: 1rem; + } + + .p-icon { + width: 1rem; + height: 1rem; + } + + .p-link { + font-family: var(--font-family); + font-feature-settings: var(--font-feature-settings, normal); + font-size: 1rem; + border-radius: 1px; + } + .p-link:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + + .p-component-overlay-enter { + animation: p-component-overlay-enter-animation 150ms forwards; + } + + .p-component-overlay-leave { + animation: p-component-overlay-leave-animation 150ms forwards; + } + + @keyframes p-component-overlay-enter-animation { + from { + background-color: transparent; + } + to { + background-color: var(--maskbg); + } + } + @keyframes p-component-overlay-leave-animation { + from { + background-color: var(--maskbg); + } + to { + background-color: transparent; + } + } + + .p-autocomplete .p-autocomplete-loader { + right: 0.25rem; + } + .p-autocomplete.p-autocomplete-dd .p-autocomplete-loader { + right: 2.607rem; + } + .p-autocomplete:not(.p-disabled):hover .p-autocomplete-multiple-container { + border-color: #1174c0; + } + .p-autocomplete:not(.p-disabled).p-focus .p-autocomplete-multiple-container { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-autocomplete .p-autocomplete-multiple-container { + padding: 0.125rem 0.25rem; + gap: 0.5rem; + } + .p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token { + padding: 0.125rem 0; + } + .p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-input-token input { + font-family: var(--font-family); + font-feature-settings: var(--font-feature-settings, normal); + font-size: 1rem; + color: #343a3f; + padding: 0; + margin: 0; + } + .p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token { + padding: 0.125rem 0.25rem; + background: #dee2e6; + color: #343a3f; + border-radius: 16px; + } + .p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token .p-autocomplete-token-icon { + margin-left: 0.5rem; + } + .p-autocomplete .p-autocomplete-multiple-container .p-autocomplete-token.p-focus { + background: #c8cbcf; + color: #343a3f; + } + .p-autocomplete.p-invalid.p-component > .p-inputtext { + border-color: #d8222f; + } + + .p-autocomplete-panel { + background: #ffffff; + color: #343a3f; + border: 0 none; + border-radius: 1px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-autocomplete-panel .p-autocomplete-items { + padding: 0.25rem 0; + } + .p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item { + margin: 0; + padding: 0.25rem 0.5rem; + border: 0 none; + color: #343a3f; + background: transparent; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item.p-highlight.p-focus { + background: #1174c0; + } + .p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item:not(.p-highlight):not(.p-disabled).p-focus { + color: #343a3f; + background: #d2d6db; + } + .p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item:not(.p-highlight):not(.p-disabled):hover { + color: #343a3f; + background: #dde1e6; + } + .p-autocomplete-panel .p-autocomplete-items .p-autocomplete-item-group { + margin: 0; + padding: 0.25rem 0.5rem; + color: #343a3f; + background: #ffffff; + font-weight: 600; + } + + .p-calendar.p-invalid.p-component > .p-inputtext { + border-color: #d8222f; + } + .p-calendar:not(.p-calendar-disabled).p-focus > .p-inputtext { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + + .p-datepicker { + padding: 0.25rem; + background: #ffffff; + color: #343a3f; + border: 1px solid #a5acb3; + border-radius: 1px; + } + .p-datepicker:not(.p-datepicker-inline) { + background: #ffffff; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-datepicker:not(.p-datepicker-inline) .p-datepicker-header { + background: #ffffff; + } + .p-datepicker .p-datepicker-header { + padding: 0.5rem; + color: #343a3f; + background: #ffffff; + font-weight: 600; + margin: 0; + border-bottom: 1px solid #dee2e6; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-datepicker .p-datepicker-header .p-datepicker-prev, +.p-datepicker .p-datepicker-header .p-datepicker-next { + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-datepicker .p-datepicker-header .p-datepicker-prev:enabled:hover, +.p-datepicker .p-datepicker-header .p-datepicker-next:enabled:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-datepicker .p-datepicker-header .p-datepicker-prev:focus-visible, +.p-datepicker .p-datepicker-header .p-datepicker-next:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-datepicker .p-datepicker-header .p-datepicker-title { + line-height: 1rem; + } + .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-year, +.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month { + color: #343a3f; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + font-weight: 600; + padding: 0.5rem; + } + .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-year:enabled:hover, +.p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month:enabled:hover { + color: #1174c0; + } + .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month { + margin-right: 0.5rem; + } + .p-datepicker table { + font-size: 1rem; + margin: 0.25rem 0; + } + .p-datepicker table th { + padding: 0.5rem; + } + .p-datepicker table th > span { + width: 1.75rem; + height: 1.75rem; + } + .p-datepicker table td { + padding: 0.5rem; + } + .p-datepicker table td > span { + width: 1.75rem; + height: 1.75rem; + border-radius: 50%; + transition: box-shadow 0.2s; + border: 1px solid transparent; + } + .p-datepicker table td > span.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-datepicker table td > span:focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-datepicker table td.p-datepicker-today > span { + background: #a5acb3; + color: #343a3f; + border-color: transparent; + } + .p-datepicker table td.p-datepicker-today > span.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-datepicker .p-datepicker-buttonbar { + padding: 0.5rem 0; + border-top: 1px solid #dee2e6; + } + .p-datepicker .p-datepicker-buttonbar .p-button { + width: auto; + } + .p-datepicker .p-timepicker { + border-top: 1px solid #dee2e6; + padding: 0.5rem; + } + .p-datepicker .p-timepicker button { + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-datepicker .p-timepicker button:enabled:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-datepicker .p-timepicker button:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-datepicker .p-timepicker button:last-child { + margin-top: 0.2em; + } + .p-datepicker .p-timepicker span { + font-size: 1rem; + } + .p-datepicker .p-timepicker > div { + padding: 0 0.5rem; + } + .p-datepicker.p-datepicker-timeonly .p-timepicker { + border-top: 0 none; + } + .p-datepicker .p-monthpicker { + margin: 0.25rem 0; + } + .p-datepicker .p-monthpicker .p-monthpicker-month { + padding: 0.5rem; + transition: box-shadow 0.2s; + border-radius: 1px; + } + .p-datepicker .p-monthpicker .p-monthpicker-month.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-datepicker .p-yearpicker { + margin: 0.25rem 0; + } + .p-datepicker .p-yearpicker .p-yearpicker-year { + padding: 0.5rem; + transition: box-shadow 0.2s; + border-radius: 1px; + } + .p-datepicker .p-yearpicker .p-yearpicker-year.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-datepicker.p-datepicker-multiple-month .p-datepicker-group { + border-left: 1px solid #dee2e6; + padding-right: 0.25rem; + padding-left: 0.25rem; + padding-top: 0; + padding-bottom: 0; + } + .p-datepicker.p-datepicker-multiple-month .p-datepicker-group:first-child { + padding-left: 0; + border-left: 0 none; + } + .p-datepicker.p-datepicker-multiple-month .p-datepicker-group:last-child { + padding-right: 0; + } + .p-datepicker.p-datepicker-mobile table th, .p-datepicker.p-datepicker-mobile table td { + padding: 0; + } + .p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover { + background: #dde1e6; + } + .p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-disabled):not(.p-highlight):hover { + background: #dde1e6; + } + .p-datepicker:not(.p-disabled) .p-monthpicker .p-monthpicker-month:not(.p-disabled):focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-datepicker:not(.p-disabled) .p-yearpicker .p-yearpicker-year:not(.p-disabled):not(.p-highlight):hover { + background: #dde1e6; + } + .p-datepicker:not(.p-disabled) .p-yearpicker .p-yearpicker-year:not(.p-disabled):focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + + .p-cascadeselect { + background: #ffffff; + border: 1px solid #a5acb3; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + border-radius: 1px; + } + .p-cascadeselect:not(.p-disabled):hover { + border-color: #1174c0; + } + .p-cascadeselect:not(.p-disabled).p-focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-cascadeselect .p-cascadeselect-label { + background: transparent; + border: 0 none; + padding: 0.25rem 0.25rem; + } + .p-cascadeselect .p-cascadeselect-label.p-placeholder { + color: #697077; + } + .p-cascadeselect .p-cascadeselect-label:enabled:focus { + outline: 0 none; + box-shadow: none; + } + .p-cascadeselect .p-cascadeselect-trigger { + background: transparent; + color: #697077; + width: 2.357rem; + border-top-right-radius: 1px; + border-bottom-right-radius: 1px; + } + .p-cascadeselect.p-invalid.p-component { + border-color: #d8222f; + } + + .p-cascadeselect-panel { + background: #ffffff; + color: #343a3f; + border: 0 none; + border-radius: 1px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-cascadeselect-panel .p-cascadeselect-items { + padding: 0.25rem 0; + } + .p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item { + margin: 0; + border: 0 none; + color: #343a3f; + background: transparent; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item.p-highlight.p-focus { + background: #1174c0; + } + .p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:not(.p-highlight):not(.p-disabled).p-focus { + color: #343a3f; + background: #d2d6db; + } + .p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item:not(.p-highlight):not(.p-disabled):hover { + color: #343a3f; + background: #dde1e6; + } + .p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-item-content { + padding: 0.25rem 0.5rem; + } + .p-cascadeselect-panel .p-cascadeselect-items .p-cascadeselect-item .p-cascadeselect-group-icon { + font-size: 0.875rem; + } + + .p-input-filled .p-cascadeselect { + background: #f2f4f8; + } + .p-input-filled .p-cascadeselect:not(.p-disabled):hover { + background-color: #f2f4f8; + } + .p-input-filled .p-cascadeselect:not(.p-disabled).p-focus { + background-color: #ffffff; + } + + .p-checkbox { + width: 14px; + height: 14px; + } + .p-checkbox .p-checkbox-box { + border: 2px solid #a5acb3; + background: #ffffff; + width: 14px; + height: 14px; + color: #343a3f; + border-radius: 1px; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + } + .p-checkbox .p-checkbox-box .p-checkbox-icon { + transition-duration: 0.2s; + color: #ffffff; + font-size: 12px; + } + .p-checkbox .p-checkbox-box .p-checkbox-icon.p-icon { + width: 12px; + height: 12px; + } + .p-checkbox .p-checkbox-box.p-highlight { + border-color: #1174c0; + background: #1174c0; + } + .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover { + border-color: #1174c0; + } + .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover { + border-color: #0e5d9a; + background: #0e5d9a; + color: #ffffff; + } + .p-checkbox.p-invalid > .p-checkbox-box { + border-color: #d8222f; + } + + .p-input-filled .p-checkbox .p-checkbox-box { + background-color: #f2f4f8; + } + .p-input-filled .p-checkbox .p-checkbox-box.p-highlight { + background: #1174c0; + } + .p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover { + background-color: #f2f4f8; + } + .p-input-filled .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover { + background: #0e5d9a; + } + + .p-chips:not(.p-disabled):hover .p-chips-multiple-container { + border-color: #1174c0; + } + .p-chips:not(.p-disabled).p-focus .p-chips-multiple-container { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-chips .p-chips-multiple-container { + padding: 0.125rem 0.25rem; + } + .p-chips .p-chips-multiple-container .p-chips-token { + padding: 0.125rem 0.25rem; + margin-right: 0.5rem; + background: #dee2e6; + color: #343a3f; + border-radius: 16px; + } + .p-chips .p-chips-multiple-container .p-chips-token.p-focus { + background: #c8cbcf; + color: #343a3f; + } + .p-chips .p-chips-multiple-container .p-chips-token .p-chips-token-icon { + margin-left: 0.5rem; + } + .p-chips .p-chips-multiple-container .p-chips-input-token { + padding: 0.125rem 0; + } + .p-chips .p-chips-multiple-container .p-chips-input-token input { + font-family: var(--font-family); + font-feature-settings: var(--font-feature-settings, normal); + font-size: 1rem; + color: #343a3f; + padding: 0; + margin: 0; + } + .p-chips.p-invalid.p-component > .p-inputtext { + border-color: #d8222f; + } + + .p-colorpicker-preview { + width: 2rem; + height: 2rem; + } + + .p-colorpicker-panel { + background: #323232; + border: 1px solid #191919; + } + .p-colorpicker-panel .p-colorpicker-color-handle, +.p-colorpicker-panel .p-colorpicker-hue-handle { + border-color: #ffffff; + } + + .p-colorpicker-overlay-panel { + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + + .p-dropdown { + background: #ffffff; + border: 1px solid #a5acb3; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + border-radius: 1px; + } + .p-dropdown:not(.p-disabled):hover { + border-color: #1174c0; + } + .p-dropdown:not(.p-disabled).p-focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-dropdown.p-dropdown-clearable .p-dropdown-label { + padding-right: 1.25rem; + } + .p-dropdown .p-dropdown-label { + background: transparent; + border: 0 none; + } + .p-dropdown .p-dropdown-label.p-placeholder { + color: #697077; + } + .p-dropdown .p-dropdown-label:focus, .p-dropdown .p-dropdown-label:enabled:focus { + outline: 0 none; + box-shadow: none; + } + .p-dropdown .p-dropdown-trigger { + background: transparent; + color: #697077; + width: 2.357rem; + border-top-right-radius: 1px; + border-bottom-right-radius: 1px; + } + .p-dropdown .p-dropdown-clear-icon { + color: #697077; + right: 2.357rem; + } + .p-dropdown.p-invalid.p-component { + border-color: #d8222f; + } + + .p-dropdown-panel { + background: #ffffff; + color: #343a3f; + border: 0 none; + border-radius: 1px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-dropdown-panel .p-dropdown-header { + padding: 0.25rem 0.5rem; + border-bottom: 0 none; + color: #343a3f; + background: #f2f4f8; + margin: 0; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-dropdown-panel .p-dropdown-header .p-dropdown-filter { + padding-right: 1.25rem; + margin-right: -1.25rem; + } + .p-dropdown-panel .p-dropdown-header .p-dropdown-filter-icon { + right: 0.25rem; + color: #697077; + } + .p-dropdown-panel .p-dropdown-items { + padding: 0.25rem 0; + } + .p-dropdown-panel .p-dropdown-items .p-dropdown-item { + margin: 0; + padding: 0.25rem 0.5rem; + border: 0 none; + color: #343a3f; + background: transparent; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight.p-focus { + background: #1174c0; + } + .p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled).p-focus { + color: #343a3f; + background: #d2d6db; + } + .p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled):hover { + color: #343a3f; + background: #dde1e6; + } + .p-dropdown-panel .p-dropdown-items .p-dropdown-item-group { + margin: 0; + padding: 0.25rem 0.5rem; + color: #343a3f; + background: #ffffff; + font-weight: 600; + } + .p-dropdown-panel .p-dropdown-items .p-dropdown-empty-message { + padding: 0.25rem 0.5rem; + color: #343a3f; + background: transparent; + } + + .p-input-filled .p-dropdown { + background: #f2f4f8; + } + .p-input-filled .p-dropdown:not(.p-disabled):hover { + background-color: #f2f4f8; + } + .p-input-filled .p-dropdown:not(.p-disabled).p-focus { + background-color: #ffffff; + } + .p-input-filled .p-dropdown:not(.p-disabled).p-focus .p-inputtext { + background-color: transparent; + } + + .p-inputgroup-addon { + background: #dde1e6; + color: #697077; + border-top: 1px solid #a5acb3; + border-left: 1px solid #a5acb3; + border-bottom: 1px solid #a5acb3; + padding: 0.25rem 0.25rem; + min-width: 2.357rem; + } + .p-inputgroup-addon:last-child { + border-right: 1px solid #a5acb3; + } + + .p-inputgroup > .p-component, +.p-inputgroup > .p-inputwrapper > .p-inputtext, +.p-inputgroup > .p-float-label > .p-component { + border-radius: 0; + margin: 0; + } + .p-inputgroup > .p-component + .p-inputgroup-addon, +.p-inputgroup > .p-inputwrapper > .p-inputtext + .p-inputgroup-addon, +.p-inputgroup > .p-float-label > .p-component + .p-inputgroup-addon { + border-left: 0 none; + } + .p-inputgroup > .p-component:focus, +.p-inputgroup > .p-inputwrapper > .p-inputtext:focus, +.p-inputgroup > .p-float-label > .p-component:focus { + z-index: 1; + } + .p-inputgroup > .p-component:focus ~ label, +.p-inputgroup > .p-inputwrapper > .p-inputtext:focus ~ label, +.p-inputgroup > .p-float-label > .p-component:focus ~ label { + z-index: 1; + } + + .p-inputgroup-addon:first-child, +.p-inputgroup button:first-child, +.p-inputgroup input:first-child, +.p-inputgroup > .p-inputwrapper:first-child, +.p-inputgroup > .p-inputwrapper:first-child > .p-inputtext { + border-top-left-radius: 1px; + border-bottom-left-radius: 1px; + } + + .p-inputgroup .p-float-label:first-child input { + border-top-left-radius: 1px; + border-bottom-left-radius: 1px; + } + + .p-inputgroup-addon:last-child, +.p-inputgroup button:last-child, +.p-inputgroup input:last-child, +.p-inputgroup > .p-inputwrapper:last-child, +.p-inputgroup > .p-inputwrapper:last-child > .p-inputtext { + border-top-right-radius: 1px; + border-bottom-right-radius: 1px; + } + + .p-inputgroup .p-float-label:last-child input { + border-top-right-radius: 1px; + border-bottom-right-radius: 1px; + } + + .p-fluid .p-inputgroup .p-button { + width: auto; + } + .p-fluid .p-inputgroup .p-button.p-button-icon-only { + width: 2.357rem; + } + + .p-inputnumber.p-invalid.p-component > .p-inputtext { + border-color: #d8222f; + } + + .p-inputswitch { + width: 2rem; + height: 1.155rem; + } + .p-inputswitch .p-inputswitch-slider { + background: #a5acb3; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + border-radius: 30px; + } + .p-inputswitch .p-inputswitch-slider:before { + background: #ffffff; + width: 0.825rem; + height: 0.825rem; + left: 0.165rem; + margin-top: -0.4125rem; + border-radius: 50%; + transition-duration: 0.2s; + } + .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before { + transform: translateX(0.825rem); + } + .p-inputswitch.p-focus .p-inputswitch-slider { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider { + background: #929ba3; + } + .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider { + background: #1174c0; + } + .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider:before { + background: #ffffff; + } + .p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider { + background: #0f68ad; + } + .p-inputswitch.p-invalid .p-inputswitch-slider { + border-color: #d8222f; + } + + .p-inputtext { + font-family: var(--font-family); + font-feature-settings: var(--font-feature-settings, normal); + font-size: 1rem; + color: #343a3f; + background: #ffffff; + padding: 0.25rem 0.25rem; + border: 1px solid #a5acb3; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + appearance: none; + border-radius: 1px; + } + .p-inputtext:enabled:hover { + border-color: #1174c0; + } + .p-inputtext:enabled:focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-inputtext.p-invalid.p-component { + border-color: #d8222f; + } + .p-inputtext.p-inputtext-sm { + font-size: 0.875rem; + padding: 0.21875rem 0.21875rem; + } + .p-inputtext.p-inputtext-lg { + font-size: 1.25rem; + padding: 0.3125rem 0.3125rem; + } + + .p-float-label > label { + left: 0.25rem; + color: #697077; + transition-duration: 0.2s; + } + + .p-float-label > .p-invalid + label { + color: #d8222f; + } + + .p-input-icon-left > svg:first-of-type, +.p-input-icon-left > i:first-of-type { + left: 0.25rem; + color: #697077; + } + + .p-input-icon-left > .p-inputtext { + padding-left: 1.5rem; + } + + .p-input-icon-left.p-float-label > label { + left: 1.5rem; + } + + .p-input-icon-right > svg:last-of-type, +.p-input-icon-right > i:last-of-type { + right: 0.25rem; + color: #697077; + } + + .p-input-icon-right > .p-inputtext { + padding-right: 1.5rem; + } + + ::-webkit-input-placeholder { + color: #697077; + } + + :-moz-placeholder { + color: #697077; + } + + ::-moz-placeholder { + color: #697077; + } + + :-ms-input-placeholder { + color: #697077; + } + + .p-input-filled .p-inputtext { + background-color: #f2f4f8; + } + .p-input-filled .p-inputtext:enabled:hover { + background-color: #f2f4f8; + } + .p-input-filled .p-inputtext:enabled:focus { + background-color: #ffffff; + } + + .p-inputtext-sm .p-inputtext { + font-size: 0.875rem; + padding: 0.21875rem 0.21875rem; + } + + .p-inputtext-lg .p-inputtext { + font-size: 1.25rem; + padding: 0.3125rem 0.3125rem; + } + + .p-listbox { + background: #ffffff; + color: #343a3f; + border: 1px solid #a5acb3; + border-radius: 1px; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + } + .p-listbox .p-listbox-header { + padding: 0.25rem 0.5rem; + border-bottom: 0 none; + color: #343a3f; + background: #f2f4f8; + margin: 0; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-listbox .p-listbox-header .p-listbox-filter { + padding-right: 1.25rem; + } + .p-listbox .p-listbox-header .p-listbox-filter-icon { + right: 0.25rem; + color: #697077; + } + .p-listbox .p-listbox-list { + padding: 0.25rem 0; + outline: 0 none; + } + .p-listbox .p-listbox-list .p-listbox-item { + margin: 0; + padding: 0.25rem 0.5rem; + border: 0 none; + color: #343a3f; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-listbox .p-listbox-list .p-listbox-item.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-listbox .p-listbox-list .p-listbox-item-group { + margin: 0; + padding: 0.25rem 0.5rem; + color: #343a3f; + background: #ffffff; + font-weight: 600; + } + .p-listbox .p-listbox-list .p-listbox-empty-message { + padding: 0.25rem 0.5rem; + color: #343a3f; + background: transparent; + } + .p-listbox:not(.p-disabled) .p-listbox-item.p-highlight.p-focus { + background: #1174c0; + } + .p-listbox:not(.p-disabled) .p-listbox-item:not(.p-highlight):not(.p-disabled).p-focus { + color: #343a3f; + background: #d2d6db; + } + .p-listbox:not(.p-disabled) .p-listbox-item:not(.p-highlight):not(.p-disabled):hover { + color: #343a3f; + background: #dde1e6; + } + .p-listbox.p-focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-listbox.p-invalid { + border-color: #d8222f; + } + + .p-multiselect { + background: #ffffff; + border: 1px solid #a5acb3; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + border-radius: 1px; + } + .p-multiselect:not(.p-disabled):hover { + border-color: #1174c0; + } + .p-multiselect:not(.p-disabled).p-focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-multiselect .p-multiselect-label { + padding: 0.25rem 0.25rem; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + } + .p-multiselect .p-multiselect-label.p-placeholder { + color: #697077; + } + .p-multiselect.p-multiselect-chip .p-multiselect-token { + padding: 0.125rem 0.25rem; + margin-right: 0.5rem; + background: #dee2e6; + color: #343a3f; + border-radius: 16px; + } + .p-multiselect.p-multiselect-chip .p-multiselect-token .p-multiselect-token-icon { + margin-left: 0.5rem; + } + .p-multiselect .p-multiselect-trigger { + background: transparent; + color: #697077; + width: 2.357rem; + border-top-right-radius: 1px; + border-bottom-right-radius: 1px; + } + .p-multiselect.p-invalid.p-component { + border-color: #d8222f; + } + + .p-inputwrapper-filled.p-multiselect.p-multiselect-chip .p-multiselect-label { + padding: 0.125rem 0.25rem; + } + + .p-multiselect-panel { + background: #ffffff; + color: #343a3f; + border: 0 none; + border-radius: 1px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-multiselect-panel .p-multiselect-header { + padding: 0.25rem 0.5rem; + border-bottom: 0 none; + color: #343a3f; + background: #f2f4f8; + margin: 0; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-inputtext { + padding-right: 1.25rem; + } + .p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-multiselect-filter-icon { + right: 0.25rem; + color: #697077; + } + .p-multiselect-panel .p-multiselect-header .p-checkbox { + margin-right: 0.5rem; + } + .p-multiselect-panel .p-multiselect-header .p-multiselect-close { + margin-left: 0.5rem; + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-multiselect-panel .p-multiselect-header .p-multiselect-close:enabled:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-multiselect-panel .p-multiselect-header .p-multiselect-close:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-multiselect-panel .p-multiselect-items { + padding: 0.25rem 0; + } + .p-multiselect-panel .p-multiselect-items .p-multiselect-item { + margin: 0; + padding: 0.25rem 0.5rem; + border: 0 none; + color: #343a3f; + background: transparent; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight.p-focus { + background: #1174c0; + } + .p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled).p-focus { + color: #343a3f; + background: #d2d6db; + } + .p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled):hover { + color: #343a3f; + background: #dde1e6; + } + .p-multiselect-panel .p-multiselect-items .p-multiselect-item .p-checkbox { + margin-right: 0.5rem; + } + .p-multiselect-panel .p-multiselect-items .p-multiselect-item-group { + margin: 0; + padding: 0.25rem 0.5rem; + color: #343a3f; + background: #ffffff; + font-weight: 600; + } + .p-multiselect-panel .p-multiselect-items .p-multiselect-empty-message { + padding: 0.25rem 0.5rem; + color: #343a3f; + background: transparent; + } + + .p-input-filled .p-multiselect { + background: #f2f4f8; + } + .p-input-filled .p-multiselect:not(.p-disabled):hover { + background-color: #f2f4f8; + } + .p-input-filled .p-multiselect:not(.p-disabled).p-focus { + background-color: #ffffff; + } + + .p-password.p-invalid.p-component > .p-inputtext { + border-color: #d8222f; + } + + .p-password-panel { + padding: 0.5rem; + background: #ffffff; + color: #343a3f; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + border-radius: 1px; + } + .p-password-panel .p-password-meter { + margin-bottom: 0.5rem; + background: #dee2e6; + } + .p-password-panel .p-password-meter .p-password-strength.weak { + background: #d8222f; + } + .p-password-panel .p-password-meter .p-password-strength.medium { + background: #f0c135; + } + .p-password-panel .p-password-meter .p-password-strength.strong { + background: #207f3b; + } + + .p-radiobutton { + width: 14px; + height: 14px; + } + .p-radiobutton .p-radiobutton-box { + border: 2px solid #a5acb3; + background: #ffffff; + width: 14px; + height: 14px; + color: #343a3f; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + } + .p-radiobutton .p-radiobutton-box:not(.p-disabled):not(.p-highlight):hover { + border-color: #1174c0; + } + .p-radiobutton .p-radiobutton-box:not(.p-disabled).p-focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-radiobutton .p-radiobutton-box .p-radiobutton-icon { + width: 8px; + height: 8px; + transition-duration: 0.2s; + background-color: #ffffff; + } + .p-radiobutton .p-radiobutton-box.p-highlight { + border-color: #1174c0; + background: #1174c0; + } + .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover { + border-color: #0e5d9a; + background: #0e5d9a; + color: #ffffff; + } + .p-radiobutton.p-invalid > .p-radiobutton-box { + border-color: #d8222f; + } + .p-radiobutton:focus { + outline: 0 none; + } + + .p-input-filled .p-radiobutton .p-radiobutton-box { + background-color: #f2f4f8; + } + .p-input-filled .p-radiobutton .p-radiobutton-box:not(.p-disabled):hover { + background-color: #f2f4f8; + } + .p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight { + background: #1174c0; + } + .p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover { + background: #0e5d9a; + } + + .p-rating { + gap: 0.5rem; + } + .p-rating .p-rating-item .p-rating-icon { + color: #343a3f; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + font-size: 1.143rem; + } + .p-rating .p-rating-item .p-rating-icon.p-icon { + width: 1.143rem; + height: 1.143rem; + } + .p-rating .p-rating-item .p-rating-icon.p-rating-cancel { + color: #e74c3c; + } + .p-rating .p-rating-item.p-focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-rating .p-rating-item.p-rating-item-active .p-rating-icon { + color: #1174c0; + } + .p-rating:not(.p-disabled):not(.p-readonly) .p-rating-item:hover .p-rating-icon { + color: #1174c0; + } + .p-rating:not(.p-disabled):not(.p-readonly) .p-rating-item:hover .p-rating-icon.p-rating-cancel { + color: #c0392b; + } + + .p-selectbutton .p-button { + background: #ffffff; + border: 1px solid #a5acb3; + color: #343a3f; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + } + .p-selectbutton .p-button .p-button-icon-left, +.p-selectbutton .p-button .p-button-icon-right { + color: #697077; + } + .p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover { + background: #dde1e6; + border-color: #a5acb3; + color: #343a3f; + } + .p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left, +.p-selectbutton .p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right { + color: #697077; + } + .p-selectbutton .p-button.p-highlight { + background: #1174c0; + border-color: #1174c0; + color: #ffffff; + } + .p-selectbutton .p-button.p-highlight .p-button-icon-left, +.p-selectbutton .p-button.p-highlight .p-button-icon-right { + color: #ffffff; + } + .p-selectbutton .p-button.p-highlight:hover { + background: #0f68ad; + border-color: #0f68ad; + color: #ffffff; + } + .p-selectbutton .p-button.p-highlight:hover .p-button-icon-left, +.p-selectbutton .p-button.p-highlight:hover .p-button-icon-right { + color: #ffffff; + } + .p-selectbutton.p-invalid > .p-button { + border-color: #d8222f; + } + + .p-slider { + background: #dee2e6; + border: 0 none; + border-radius: 1px; + } + .p-slider.p-slider-horizontal { + height: 0.286rem; + } + .p-slider.p-slider-horizontal .p-slider-handle { + margin-top: -0.5715rem; + margin-left: -0.5715rem; + } + .p-slider.p-slider-vertical { + width: 0.286rem; + } + .p-slider.p-slider-vertical .p-slider-handle { + margin-left: -0.5715rem; + margin-bottom: -0.5715rem; + } + .p-slider .p-slider-handle { + height: 1.143rem; + width: 1.143rem; + background: #ffffff; + border: 2px solid #1174c0; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + } + .p-slider .p-slider-handle:focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-slider .p-slider-range { + background: #1174c0; + } + .p-slider:not(.p-disabled) .p-slider-handle:hover { + background: #1174c0; + border-color: #1174c0; + } + + .p-treeselect { + background: #ffffff; + border: 1px solid #a5acb3; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + border-radius: 1px; + } + .p-treeselect:not(.p-disabled):hover { + border-color: #1174c0; + } + .p-treeselect:not(.p-disabled).p-focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-treeselect .p-treeselect-label { + padding: 0.25rem 0.25rem; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + } + .p-treeselect .p-treeselect-label.p-placeholder { + color: #697077; + } + .p-treeselect.p-treeselect-chip .p-treeselect-token { + padding: 0.125rem 0.25rem; + margin-right: 0.5rem; + background: #dee2e6; + color: #343a3f; + border-radius: 16px; + } + .p-treeselect .p-treeselect-trigger { + background: transparent; + color: #697077; + width: 2.357rem; + border-top-right-radius: 1px; + border-bottom-right-radius: 1px; + } + .p-treeselect.p-invalid.p-component { + border-color: #d8222f; + } + + .p-inputwrapper-filled.p-treeselect.p-treeselect-chip .p-treeselect-label { + padding: 0.125rem 0.25rem; + } + + .p-treeselect-panel { + background: #ffffff; + color: #343a3f; + border: 0 none; + border-radius: 1px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-treeselect-panel .p-treeselect-items-wrapper .p-tree { + border: 0 none; + } + .p-treeselect-panel .p-treeselect-items-wrapper .p-treeselect-empty-message { + padding: 0.25rem 0.5rem; + color: #343a3f; + background: transparent; + } + + .p-input-filled .p-treeselect { + background: #f2f4f8; + } + .p-input-filled .p-treeselect:not(.p-disabled):hover { + background-color: #f2f4f8; + } + .p-input-filled .p-treeselect:not(.p-disabled).p-focus { + background-color: #ffffff; + } + + .p-togglebutton.p-button { + background: #ffffff; + border: 1px solid #a5acb3; + color: #343a3f; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + } + .p-togglebutton.p-button .p-button-icon-left, +.p-togglebutton.p-button .p-button-icon-right { + color: #697077; + } + .p-togglebutton.p-button:not(.p-disabled).p-focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: #1174c0; + } + .p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover { + background: #dde1e6; + border-color: #a5acb3; + color: #343a3f; + } + .p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-left, +.p-togglebutton.p-button:not(.p-disabled):not(.p-highlight):hover .p-button-icon-right { + color: #697077; + } + .p-togglebutton.p-button.p-highlight { + background: #1174c0; + border-color: #1174c0; + color: #ffffff; + } + .p-togglebutton.p-button.p-highlight .p-button-icon-left, +.p-togglebutton.p-button.p-highlight .p-button-icon-right { + color: #ffffff; + } + .p-togglebutton.p-button.p-highlight:hover { + background: #0f68ad; + border-color: #0f68ad; + color: #ffffff; + } + .p-togglebutton.p-button.p-highlight:hover .p-button-icon-left, +.p-togglebutton.p-button.p-highlight:hover .p-button-icon-right { + color: #ffffff; + } + .p-togglebutton.p-button.p-invalid > .p-button { + border-color: #d8222f; + } + + .p-button { + color: #ffffff; + background: #1174c0; + border: 1px solid #1174c0; + padding: 0.25rem 0.5rem; + font-size: 1rem; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + border-radius: 1px; + } + .p-button:not(:disabled):hover { + background: #0f68ad; + color: #ffffff; + border-color: #0f68ad; + } + .p-button:not(:disabled):active { + background: #0e5d9a; + color: #ffffff; + border-color: #0e5d9a; + } + .p-button.p-button-outlined { + background-color: transparent; + color: #1174c0; + border: 1px solid; + } + .p-button.p-button-outlined:not(:disabled):hover { + background: rgba(17, 116, 192, 0.04); + color: #1174c0; + border: 1px solid; + } + .p-button.p-button-outlined:not(:disabled):active { + background: rgba(17, 116, 192, 0.16); + color: #1174c0; + border: 1px solid; + } + .p-button.p-button-outlined.p-button-plain { + color: #697077; + border-color: #697077; + } + .p-button.p-button-outlined.p-button-plain:not(:disabled):hover { + background: #dde1e6; + color: #697077; + } + .p-button.p-button-outlined.p-button-plain:not(:disabled):active { + background: #dee2e6; + color: #697077; + } + .p-button.p-button-text { + background-color: transparent; + color: #1174c0; + border-color: transparent; + } + .p-button.p-button-text:not(:disabled):hover { + background: rgba(17, 116, 192, 0.04); + color: #1174c0; + border-color: transparent; + } + .p-button.p-button-text:not(:disabled):active { + background: rgba(17, 116, 192, 0.16); + color: #1174c0; + border-color: transparent; + } + .p-button.p-button-text.p-button-plain { + color: #697077; + } + .p-button.p-button-text.p-button-plain:not(:disabled):hover { + background: #dde1e6; + color: #697077; + } + .p-button.p-button-text.p-button-plain:not(:disabled):active { + background: #dee2e6; + color: #697077; + } + .p-button:focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-button .p-button-label { + transition-duration: 0.2s; + } + .p-button .p-button-icon-left { + margin-right: 0.5rem; + } + .p-button .p-button-icon-right { + margin-left: 0.5rem; + } + .p-button .p-button-icon-bottom { + margin-top: 0.5rem; + } + .p-button .p-button-icon-top { + margin-bottom: 0.5rem; + } + .p-button .p-badge { + margin-left: 0.5rem; + min-width: 1rem; + height: 1rem; + line-height: 1rem; + color: #1174c0; + background-color: #ffffff; + } + .p-button.p-button-raised { + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + } + .p-button.p-button-rounded { + border-radius: 2rem; + } + .p-button.p-button-icon-only { + width: 2.357rem; + padding: 0.25rem 0; + } + .p-button.p-button-icon-only .p-button-icon-left, +.p-button.p-button-icon-only .p-button-icon-right { + margin: 0; + } + .p-button.p-button-icon-only.p-button-rounded { + border-radius: 50%; + height: 2.357rem; + } + .p-button.p-button-sm { + font-size: 0.875rem; + padding: 0.21875rem 0.4375rem; + } + .p-button.p-button-sm .p-button-icon { + font-size: 0.875rem; + } + .p-button.p-button-lg { + font-size: 1.25rem; + padding: 0.3125rem 0.625rem; + } + .p-button.p-button-lg .p-button-icon { + font-size: 1.25rem; + } + .p-button.p-button-loading-label-only .p-button-label { + margin-left: 0.5rem; + } + .p-button.p-button-loading-label-only .p-button-loading-icon { + margin-right: 0; + } + + .p-fluid .p-button { + width: 100%; + } + .p-fluid .p-button-icon-only { + width: 2.357rem; + } + .p-fluid .p-buttonset { + display: flex; + } + .p-fluid .p-buttonset .p-button { + flex: 1; + } + + .p-button.p-button-secondary, .p-buttonset.p-button-secondary > .p-button, .p-splitbutton.p-button-secondary > .p-button { + color: #ffffff; + background: #697077; + border: 1px solid #697077; + } + .p-button.p-button-secondary:not(:disabled):hover, .p-buttonset.p-button-secondary > .p-button:not(:disabled):hover, .p-splitbutton.p-button-secondary > .p-button:not(:disabled):hover { + background: #5f656b; + color: #ffffff; + border-color: #5f656b; + } + .p-button.p-button-secondary:not(:disabled):focus, .p-buttonset.p-button-secondary > .p-button:not(:disabled):focus, .p-splitbutton.p-button-secondary > .p-button:not(:disabled):focus { + box-shadow: 0 0 0 0.2rem #c2c6c9; + } + .p-button.p-button-secondary:not(:disabled):active, .p-buttonset.p-button-secondary > .p-button:not(:disabled):active, .p-splitbutton.p-button-secondary > .p-button:not(:disabled):active { + background: #545a5f; + color: #ffffff; + border-color: #545a5f; + } + .p-button.p-button-secondary.p-button-outlined, .p-buttonset.p-button-secondary > .p-button.p-button-outlined, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined { + background-color: transparent; + color: #697077; + border: 1px solid; + } + .p-button.p-button-secondary.p-button-outlined:not(:disabled):hover, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:not(:disabled):hover, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:not(:disabled):hover { + background: rgba(105, 112, 119, 0.04); + color: #697077; + border: 1px solid; + } + .p-button.p-button-secondary.p-button-outlined:not(:disabled):active, .p-buttonset.p-button-secondary > .p-button.p-button-outlined:not(:disabled):active, .p-splitbutton.p-button-secondary > .p-button.p-button-outlined:not(:disabled):active { + background: rgba(105, 112, 119, 0.16); + color: #697077; + border: 1px solid; + } + .p-button.p-button-secondary.p-button-text, .p-buttonset.p-button-secondary > .p-button.p-button-text, .p-splitbutton.p-button-secondary > .p-button.p-button-text { + background-color: transparent; + color: #697077; + border-color: transparent; + } + .p-button.p-button-secondary.p-button-text:not(:disabled):hover, .p-buttonset.p-button-secondary > .p-button.p-button-text:not(:disabled):hover, .p-splitbutton.p-button-secondary > .p-button.p-button-text:not(:disabled):hover { + background: rgba(105, 112, 119, 0.04); + border-color: transparent; + color: #697077; + } + .p-button.p-button-secondary.p-button-text:not(:disabled):active, .p-buttonset.p-button-secondary > .p-button.p-button-text:not(:disabled):active, .p-splitbutton.p-button-secondary > .p-button.p-button-text:not(:disabled):active { + background: rgba(105, 112, 119, 0.16); + border-color: transparent; + color: #697077; + } + + .p-button.p-button-info, .p-buttonset.p-button-info > .p-button, .p-splitbutton.p-button-info > .p-button { + color: #ffffff; + background: #107d79; + border: 1px solid #107d79; + } + .p-button.p-button-info:not(:disabled):hover, .p-buttonset.p-button-info > .p-button:not(:disabled):hover, .p-splitbutton.p-button-info > .p-button:not(:disabled):hover { + background: #0e716d; + color: #ffffff; + border-color: #0e716d; + } + .p-button.p-button-info:not(:disabled):focus, .p-buttonset.p-button-info > .p-button:not(:disabled):focus, .p-splitbutton.p-button-info > .p-button:not(:disabled):focus { + box-shadow: 0 0 0 0.2rem #7ceeea; + } + .p-button.p-button-info:not(:disabled):active, .p-buttonset.p-button-info > .p-button:not(:disabled):active, .p-splitbutton.p-button-info > .p-button:not(:disabled):active { + background: #0d6461; + color: #ffffff; + border-color: #0d6461; + } + .p-button.p-button-info.p-button-outlined, .p-buttonset.p-button-info > .p-button.p-button-outlined, .p-splitbutton.p-button-info > .p-button.p-button-outlined { + background-color: transparent; + color: #107d79; + border: 1px solid; + } + .p-button.p-button-info.p-button-outlined:not(:disabled):hover, .p-buttonset.p-button-info > .p-button.p-button-outlined:not(:disabled):hover, .p-splitbutton.p-button-info > .p-button.p-button-outlined:not(:disabled):hover { + background: rgba(16, 125, 121, 0.04); + color: #107d79; + border: 1px solid; + } + .p-button.p-button-info.p-button-outlined:not(:disabled):active, .p-buttonset.p-button-info > .p-button.p-button-outlined:not(:disabled):active, .p-splitbutton.p-button-info > .p-button.p-button-outlined:not(:disabled):active { + background: rgba(16, 125, 121, 0.16); + color: #107d79; + border: 1px solid; + } + .p-button.p-button-info.p-button-text, .p-buttonset.p-button-info > .p-button.p-button-text, .p-splitbutton.p-button-info > .p-button.p-button-text { + background-color: transparent; + color: #107d79; + border-color: transparent; + } + .p-button.p-button-info.p-button-text:not(:disabled):hover, .p-buttonset.p-button-info > .p-button.p-button-text:not(:disabled):hover, .p-splitbutton.p-button-info > .p-button.p-button-text:not(:disabled):hover { + background: rgba(16, 125, 121, 0.04); + border-color: transparent; + color: #107d79; + } + .p-button.p-button-info.p-button-text:not(:disabled):active, .p-buttonset.p-button-info > .p-button.p-button-text:not(:disabled):active, .p-splitbutton.p-button-info > .p-button.p-button-text:not(:disabled):active { + background: rgba(16, 125, 121, 0.16); + border-color: transparent; + color: #107d79; + } + + .p-button.p-button-success, .p-buttonset.p-button-success > .p-button, .p-splitbutton.p-button-success > .p-button { + color: #ffffff; + background: #207f3b; + border: 1px solid #207f3b; + } + .p-button.p-button-success:not(:disabled):hover, .p-buttonset.p-button-success > .p-button:not(:disabled):hover, .p-splitbutton.p-button-success > .p-button:not(:disabled):hover { + background: #1d7235; + color: #ffffff; + border-color: #1d7235; + } + .p-button.p-button-success:not(:disabled):focus, .p-buttonset.p-button-success > .p-button:not(:disabled):focus, .p-splitbutton.p-button-success > .p-button:not(:disabled):focus { + box-shadow: 0 0 0 0.2rem #8fe3a7; + } + .p-button.p-button-success:not(:disabled):active, .p-buttonset.p-button-success > .p-button:not(:disabled):active, .p-splitbutton.p-button-success > .p-button:not(:disabled):active { + background: #1a662f; + color: #ffffff; + border-color: #1a662f; + } + .p-button.p-button-success.p-button-outlined, .p-buttonset.p-button-success > .p-button.p-button-outlined, .p-splitbutton.p-button-success > .p-button.p-button-outlined { + background-color: transparent; + color: #207f3b; + border: 1px solid; + } + .p-button.p-button-success.p-button-outlined:not(:disabled):hover, .p-buttonset.p-button-success > .p-button.p-button-outlined:not(:disabled):hover, .p-splitbutton.p-button-success > .p-button.p-button-outlined:not(:disabled):hover { + background: rgba(32, 127, 59, 0.04); + color: #207f3b; + border: 1px solid; + } + .p-button.p-button-success.p-button-outlined:not(:disabled):active, .p-buttonset.p-button-success > .p-button.p-button-outlined:not(:disabled):active, .p-splitbutton.p-button-success > .p-button.p-button-outlined:not(:disabled):active { + background: rgba(32, 127, 59, 0.16); + color: #207f3b; + border: 1px solid; + } + .p-button.p-button-success.p-button-text, .p-buttonset.p-button-success > .p-button.p-button-text, .p-splitbutton.p-button-success > .p-button.p-button-text { + background-color: transparent; + color: #207f3b; + border-color: transparent; + } + .p-button.p-button-success.p-button-text:not(:disabled):hover, .p-buttonset.p-button-success > .p-button.p-button-text:not(:disabled):hover, .p-splitbutton.p-button-success > .p-button.p-button-text:not(:disabled):hover { + background: rgba(32, 127, 59, 0.04); + border-color: transparent; + color: #207f3b; + } + .p-button.p-button-success.p-button-text:not(:disabled):active, .p-buttonset.p-button-success > .p-button.p-button-text:not(:disabled):active, .p-splitbutton.p-button-success > .p-button.p-button-text:not(:disabled):active { + background: rgba(32, 127, 59, 0.16); + border-color: transparent; + color: #207f3b; + } + + .p-button.p-button-warning, .p-buttonset.p-button-warning > .p-button, .p-splitbutton.p-button-warning > .p-button { + color: #212529; + background: #f0c135; + border: 1px solid #f0c135; + } + .p-button.p-button-warning:not(:disabled):hover, .p-buttonset.p-button-warning > .p-button:not(:disabled):hover, .p-splitbutton.p-button-warning > .p-button:not(:disabled):hover { + background: #eeb91a; + color: #212529; + border-color: #eeb91a; + } + .p-button.p-button-warning:not(:disabled):focus, .p-buttonset.p-button-warning > .p-button:not(:disabled):focus, .p-splitbutton.p-button-warning > .p-button:not(:disabled):focus { + box-shadow: 0 0 0 0.2rem #f9e6ae; + } + .p-button.p-button-warning:not(:disabled):active, .p-buttonset.p-button-warning > .p-button:not(:disabled):active, .p-splitbutton.p-button-warning > .p-button:not(:disabled):active { + background: #daa710; + color: #212529; + border-color: #daa710; + } + .p-button.p-button-warning.p-button-outlined, .p-buttonset.p-button-warning > .p-button.p-button-outlined, .p-splitbutton.p-button-warning > .p-button.p-button-outlined { + background-color: transparent; + color: #f0c135; + border: 1px solid; + } + .p-button.p-button-warning.p-button-outlined:not(:disabled):hover, .p-buttonset.p-button-warning > .p-button.p-button-outlined:not(:disabled):hover, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:not(:disabled):hover { + background: rgba(240, 193, 53, 0.04); + color: #f0c135; + border: 1px solid; + } + .p-button.p-button-warning.p-button-outlined:not(:disabled):active, .p-buttonset.p-button-warning > .p-button.p-button-outlined:not(:disabled):active, .p-splitbutton.p-button-warning > .p-button.p-button-outlined:not(:disabled):active { + background: rgba(240, 193, 53, 0.16); + color: #f0c135; + border: 1px solid; + } + .p-button.p-button-warning.p-button-text, .p-buttonset.p-button-warning > .p-button.p-button-text, .p-splitbutton.p-button-warning > .p-button.p-button-text { + background-color: transparent; + color: #f0c135; + border-color: transparent; + } + .p-button.p-button-warning.p-button-text:not(:disabled):hover, .p-buttonset.p-button-warning > .p-button.p-button-text:not(:disabled):hover, .p-splitbutton.p-button-warning > .p-button.p-button-text:not(:disabled):hover { + background: rgba(240, 193, 53, 0.04); + border-color: transparent; + color: #f0c135; + } + .p-button.p-button-warning.p-button-text:not(:disabled):active, .p-buttonset.p-button-warning > .p-button.p-button-text:not(:disabled):active, .p-splitbutton.p-button-warning > .p-button.p-button-text:not(:disabled):active { + background: rgba(240, 193, 53, 0.16); + border-color: transparent; + color: #f0c135; + } + + .p-button.p-button-help, .p-buttonset.p-button-help > .p-button, .p-splitbutton.p-button-help > .p-button { + color: #ffffff; + background: #8949f8; + border: 1px solid #8949f8; + } + .p-button.p-button-help:not(:disabled):hover, .p-buttonset.p-button-help > .p-button:not(:disabled):hover, .p-splitbutton.p-button-help > .p-button:not(:disabled):hover { + background: #752af7; + color: #ffffff; + border-color: #752af7; + } + .p-button.p-button-help:not(:disabled):focus, .p-buttonset.p-button-help > .p-button:not(:disabled):focus, .p-splitbutton.p-button-help > .p-button:not(:disabled):focus { + box-shadow: 0 0 0 0.2rem #d0b6fc; + } + .p-button.p-button-help:not(:disabled):active, .p-buttonset.p-button-help > .p-button:not(:disabled):active, .p-splitbutton.p-button-help > .p-button:not(:disabled):active { + background: #610bf6; + color: #ffffff; + border-color: #610bf6; + } + .p-button.p-button-help.p-button-outlined, .p-buttonset.p-button-help > .p-button.p-button-outlined, .p-splitbutton.p-button-help > .p-button.p-button-outlined { + background-color: transparent; + color: #8949f8; + border: 1px solid; + } + .p-button.p-button-help.p-button-outlined:not(:disabled):hover, .p-buttonset.p-button-help > .p-button.p-button-outlined:not(:disabled):hover, .p-splitbutton.p-button-help > .p-button.p-button-outlined:not(:disabled):hover { + background: rgba(137, 73, 248, 0.04); + color: #8949f8; + border: 1px solid; + } + .p-button.p-button-help.p-button-outlined:not(:disabled):active, .p-buttonset.p-button-help > .p-button.p-button-outlined:not(:disabled):active, .p-splitbutton.p-button-help > .p-button.p-button-outlined:not(:disabled):active { + background: rgba(137, 73, 248, 0.16); + color: #8949f8; + border: 1px solid; + } + .p-button.p-button-help.p-button-text, .p-buttonset.p-button-help > .p-button.p-button-text, .p-splitbutton.p-button-help > .p-button.p-button-text { + background-color: transparent; + color: #8949f8; + border-color: transparent; + } + .p-button.p-button-help.p-button-text:not(:disabled):hover, .p-buttonset.p-button-help > .p-button.p-button-text:not(:disabled):hover, .p-splitbutton.p-button-help > .p-button.p-button-text:not(:disabled):hover { + background: rgba(137, 73, 248, 0.04); + border-color: transparent; + color: #8949f8; + } + .p-button.p-button-help.p-button-text:not(:disabled):active, .p-buttonset.p-button-help > .p-button.p-button-text:not(:disabled):active, .p-splitbutton.p-button-help > .p-button.p-button-text:not(:disabled):active { + background: rgba(137, 73, 248, 0.16); + border-color: transparent; + color: #8949f8; + } + + .p-button.p-button-danger, .p-buttonset.p-button-danger > .p-button, .p-splitbutton.p-button-danger > .p-button { + color: #ffffff; + background: #d8222f; + border: 1px solid #d8222f; + } + .p-button.p-button-danger:not(:disabled):hover, .p-buttonset.p-button-danger > .p-button:not(:disabled):hover, .p-splitbutton.p-button-danger > .p-button:not(:disabled):hover { + background: #c21f2a; + color: #ffffff; + border-color: #c21f2a; + } + .p-button.p-button-danger:not(:disabled):focus, .p-buttonset.p-button-danger > .p-button:not(:disabled):focus, .p-splitbutton.p-button-danger > .p-button:not(:disabled):focus { + box-shadow: 0 0 0 0.2rem #f1a5ab; + } + .p-button.p-button-danger:not(:disabled):active, .p-buttonset.p-button-danger > .p-button:not(:disabled):active, .p-splitbutton.p-button-danger > .p-button:not(:disabled):active { + background: #ad1b26; + color: #ffffff; + border-color: #ad1b26; + } + .p-button.p-button-danger.p-button-outlined, .p-buttonset.p-button-danger > .p-button.p-button-outlined, .p-splitbutton.p-button-danger > .p-button.p-button-outlined { + background-color: transparent; + color: #d8222f; + border: 1px solid; + } + .p-button.p-button-danger.p-button-outlined:not(:disabled):hover, .p-buttonset.p-button-danger > .p-button.p-button-outlined:not(:disabled):hover, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:not(:disabled):hover { + background: rgba(216, 34, 47, 0.04); + color: #d8222f; + border: 1px solid; + } + .p-button.p-button-danger.p-button-outlined:not(:disabled):active, .p-buttonset.p-button-danger > .p-button.p-button-outlined:not(:disabled):active, .p-splitbutton.p-button-danger > .p-button.p-button-outlined:not(:disabled):active { + background: rgba(216, 34, 47, 0.16); + color: #d8222f; + border: 1px solid; + } + .p-button.p-button-danger.p-button-text, .p-buttonset.p-button-danger > .p-button.p-button-text, .p-splitbutton.p-button-danger > .p-button.p-button-text { + background-color: transparent; + color: #d8222f; + border-color: transparent; + } + .p-button.p-button-danger.p-button-text:not(:disabled):hover, .p-buttonset.p-button-danger > .p-button.p-button-text:not(:disabled):hover, .p-splitbutton.p-button-danger > .p-button.p-button-text:not(:disabled):hover { + background: rgba(216, 34, 47, 0.04); + border-color: transparent; + color: #d8222f; + } + .p-button.p-button-danger.p-button-text:not(:disabled):active, .p-buttonset.p-button-danger > .p-button.p-button-text:not(:disabled):active, .p-splitbutton.p-button-danger > .p-button.p-button-text:not(:disabled):active { + background: rgba(216, 34, 47, 0.16); + border-color: transparent; + color: #d8222f; + } + + .p-button.p-button-link { + color: #0e5d9a; + background: transparent; + border: transparent; + } + .p-button.p-button-link:not(:disabled):hover { + background: transparent; + color: #0e5d9a; + border-color: transparent; + } + .p-button.p-button-link:not(:disabled):hover .p-button-label { + text-decoration: underline; + } + .p-button.p-button-link:not(:disabled):focus { + background: transparent; + box-shadow: 0 0 0 0.2rem #90c9f5; + border-color: transparent; + } + .p-button.p-button-link:not(:disabled):active { + background: transparent; + color: #0e5d9a; + border-color: transparent; + } + + .p-speeddial-button.p-button.p-button-icon-only { + width: 2.75rem; + height: 2.75rem; + } + .p-speeddial-button.p-button.p-button-icon-only .p-button-icon { + font-size: 1rem; + } + .p-speeddial-button.p-button.p-button-icon-only .p-icon { + width: 1rem; + height: 1rem; + } + + .p-speeddial-list { + outline: 0 none; + } + + .p-speeddial-item.p-focus > .p-speeddial-action { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + + .p-speeddial-action { + width: 2.25rem; + height: 2.25rem; + background: #343a3f; + color: #fff; + } + .p-speeddial-action:hover { + background: #21272a; + color: #fff; + } + + .p-speeddial-direction-up .p-speeddial-item { + margin: 0.25rem 0; + } + .p-speeddial-direction-up .p-speeddial-item:first-child { + margin-bottom: 0.5rem; + } + + .p-speeddial-direction-down .p-speeddial-item { + margin: 0.25rem 0; + } + .p-speeddial-direction-down .p-speeddial-item:first-child { + margin-top: 0.5rem; + } + + .p-speeddial-direction-left .p-speeddial-item { + margin: 0 0.25rem; + } + .p-speeddial-direction-left .p-speeddial-item:first-child { + margin-right: 0.5rem; + } + + .p-speeddial-direction-right .p-speeddial-item { + margin: 0 0.25rem; + } + .p-speeddial-direction-right .p-speeddial-item:first-child { + margin-left: 0.5rem; + } + + .p-speeddial-circle .p-speeddial-item, +.p-speeddial-semi-circle .p-speeddial-item, +.p-speeddial-quarter-circle .p-speeddial-item { + margin: 0; + } + .p-speeddial-circle .p-speeddial-item:first-child, .p-speeddial-circle .p-speeddial-item:last-child, +.p-speeddial-semi-circle .p-speeddial-item:first-child, +.p-speeddial-semi-circle .p-speeddial-item:last-child, +.p-speeddial-quarter-circle .p-speeddial-item:first-child, +.p-speeddial-quarter-circle .p-speeddial-item:last-child { + margin: 0; + } + + .p-speeddial-mask { + background-color: rgba(0, 0, 0, 0.4); + border-radius: 1px; + } + + .p-splitbutton { + border-radius: 1px; + } + .p-splitbutton.p-button-outlined > .p-button { + background-color: transparent; + color: #1174c0; + border: 1px solid; + } + .p-splitbutton.p-button-outlined > .p-button:enabled:hover, .p-splitbutton.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(17, 116, 192, 0.04); + color: #1174c0; + } + .p-splitbutton.p-button-outlined > .p-button:enabled:active, .p-splitbutton.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(17, 116, 192, 0.16); + color: #1174c0; + } + .p-splitbutton.p-button-outlined.p-button-plain > .p-button { + color: #697077; + border-color: #697077; + } + .p-splitbutton.p-button-outlined.p-button-plain > .p-button:enabled:hover, .p-splitbutton.p-button-outlined.p-button-plain > .p-button:not(button):not(a):not(.p-disabled):hover { + background: #dde1e6; + color: #697077; + } + .p-splitbutton.p-button-outlined.p-button-plain > .p-button:enabled:active, .p-splitbutton.p-button-outlined.p-button-plain > .p-button:not(button):not(a):not(.p-disabled):active { + background: #dee2e6; + color: #697077; + } + .p-splitbutton.p-button-text > .p-button { + background-color: transparent; + color: #1174c0; + border-color: transparent; + } + .p-splitbutton.p-button-text > .p-button:enabled:hover, .p-splitbutton.p-button-text > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(17, 116, 192, 0.04); + color: #1174c0; + border-color: transparent; + } + .p-splitbutton.p-button-text > .p-button:enabled:active, .p-splitbutton.p-button-text > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(17, 116, 192, 0.16); + color: #1174c0; + border-color: transparent; + } + .p-splitbutton.p-button-text.p-button-plain > .p-button { + color: #697077; + } + .p-splitbutton.p-button-text.p-button-plain > .p-button:enabled:hover, .p-splitbutton.p-button-text.p-button-plain > .p-button:not(button):not(a):not(.p-disabled):hover { + background: #dde1e6; + color: #697077; + } + .p-splitbutton.p-button-text.p-button-plain > .p-button:enabled:active, .p-splitbutton.p-button-text.p-button-plain > .p-button:not(button):not(a):not(.p-disabled):active { + background: #dee2e6; + color: #697077; + } + .p-splitbutton.p-button-raised { + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + } + .p-splitbutton.p-button-rounded { + border-radius: 2rem; + } + .p-splitbutton.p-button-rounded > .p-button { + border-radius: 2rem; + } + .p-splitbutton.p-button-sm > .p-button { + font-size: 0.875rem; + padding: 0.21875rem 0.4375rem; + } + .p-splitbutton.p-button-sm > .p-button .p-button-icon { + font-size: 0.875rem; + } + .p-splitbutton.p-button-lg > .p-button { + font-size: 1.25rem; + padding: 0.3125rem 0.625rem; + } + .p-splitbutton.p-button-lg > .p-button.p-button-icon-only { + width: auto; + } + .p-splitbutton.p-button-lg > .p-button .p-button-icon { + font-size: 1.25rem; + } + .p-splitbutton.p-button-lg > .p-button .p-icon { + width: 1.25rem; + height: 1.25rem; + } + + .p-splitbutton.p-button-secondary.p-button-outlined > .p-button { + background-color: transparent; + color: #697077; + border: 1px solid; + } + .p-splitbutton.p-button-secondary.p-button-outlined > .p-button:enabled:hover, .p-splitbutton.p-button-secondary.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(105, 112, 119, 0.04); + color: #697077; + } + .p-splitbutton.p-button-secondary.p-button-outlined > .p-button:enabled:active, .p-splitbutton.p-button-secondary.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(105, 112, 119, 0.16); + color: #697077; + } + .p-splitbutton.p-button-secondary.p-button-text > .p-button { + background-color: transparent; + color: #697077; + border-color: transparent; + } + .p-splitbutton.p-button-secondary.p-button-text > .p-button:enabled:hover, .p-splitbutton.p-button-secondary.p-button-text > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(105, 112, 119, 0.04); + border-color: transparent; + color: #697077; + } + .p-splitbutton.p-button-secondary.p-button-text > .p-button:enabled:active, .p-splitbutton.p-button-secondary.p-button-text > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(105, 112, 119, 0.16); + border-color: transparent; + color: #697077; + } + + .p-splitbutton.p-button-info.p-button-outlined > .p-button { + background-color: transparent; + color: #107d79; + border: 1px solid; + } + .p-splitbutton.p-button-info.p-button-outlined > .p-button:enabled:hover, .p-splitbutton.p-button-info.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(16, 125, 121, 0.04); + color: #107d79; + } + .p-splitbutton.p-button-info.p-button-outlined > .p-button:enabled:active, .p-splitbutton.p-button-info.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(16, 125, 121, 0.16); + color: #107d79; + } + .p-splitbutton.p-button-info.p-button-text > .p-button { + background-color: transparent; + color: #107d79; + border-color: transparent; + } + .p-splitbutton.p-button-info.p-button-text > .p-button:enabled:hover, .p-splitbutton.p-button-info.p-button-text > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(16, 125, 121, 0.04); + border-color: transparent; + color: #107d79; + } + .p-splitbutton.p-button-info.p-button-text > .p-button:enabled:active, .p-splitbutton.p-button-info.p-button-text > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(16, 125, 121, 0.16); + border-color: transparent; + color: #107d79; + } + + .p-splitbutton.p-button-success.p-button-outlined > .p-button { + background-color: transparent; + color: #207f3b; + border: 1px solid; + } + .p-splitbutton.p-button-success.p-button-outlined > .p-button:enabled:hover, .p-splitbutton.p-button-success.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(32, 127, 59, 0.04); + color: #207f3b; + } + .p-splitbutton.p-button-success.p-button-outlined > .p-button:enabled:active, .p-splitbutton.p-button-success.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(32, 127, 59, 0.16); + color: #207f3b; + } + .p-splitbutton.p-button-success.p-button-text > .p-button { + background-color: transparent; + color: #207f3b; + border-color: transparent; + } + .p-splitbutton.p-button-success.p-button-text > .p-button:enabled:hover, .p-splitbutton.p-button-success.p-button-text > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(32, 127, 59, 0.04); + border-color: transparent; + color: #207f3b; + } + .p-splitbutton.p-button-success.p-button-text > .p-button:enabled:active, .p-splitbutton.p-button-success.p-button-text > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(32, 127, 59, 0.16); + border-color: transparent; + color: #207f3b; + } + + .p-splitbutton.p-button-warning.p-button-outlined > .p-button { + background-color: transparent; + color: #f0c135; + border: 1px solid; + } + .p-splitbutton.p-button-warning.p-button-outlined > .p-button:enabled:hover, .p-splitbutton.p-button-warning.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(240, 193, 53, 0.04); + color: #f0c135; + } + .p-splitbutton.p-button-warning.p-button-outlined > .p-button:enabled:active, .p-splitbutton.p-button-warning.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(240, 193, 53, 0.16); + color: #f0c135; + } + .p-splitbutton.p-button-warning.p-button-text > .p-button { + background-color: transparent; + color: #f0c135; + border-color: transparent; + } + .p-splitbutton.p-button-warning.p-button-text > .p-button:enabled:hover, .p-splitbutton.p-button-warning.p-button-text > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(240, 193, 53, 0.04); + border-color: transparent; + color: #f0c135; + } + .p-splitbutton.p-button-warning.p-button-text > .p-button:enabled:active, .p-splitbutton.p-button-warning.p-button-text > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(240, 193, 53, 0.16); + border-color: transparent; + color: #f0c135; + } + + .p-splitbutton.p-button-help.p-button-outlined > .p-button { + background-color: transparent; + color: #8949f8; + border: 1px solid; + } + .p-splitbutton.p-button-help.p-button-outlined > .p-button:enabled:hover, .p-splitbutton.p-button-help.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(137, 73, 248, 0.04); + color: #8949f8; + } + .p-splitbutton.p-button-help.p-button-outlined > .p-button:enabled:active, .p-splitbutton.p-button-help.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(137, 73, 248, 0.16); + color: #8949f8; + } + .p-splitbutton.p-button-help.p-button-text > .p-button { + background-color: transparent; + color: #8949f8; + border-color: transparent; + } + .p-splitbutton.p-button-help.p-button-text > .p-button:enabled:hover, .p-splitbutton.p-button-help.p-button-text > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(137, 73, 248, 0.04); + border-color: transparent; + color: #8949f8; + } + .p-splitbutton.p-button-help.p-button-text > .p-button:enabled:active, .p-splitbutton.p-button-help.p-button-text > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(137, 73, 248, 0.16); + border-color: transparent; + color: #8949f8; + } + + .p-splitbutton.p-button-danger.p-button-outlined > .p-button { + background-color: transparent; + color: #d8222f; + border: 1px solid; + } + .p-splitbutton.p-button-danger.p-button-outlined > .p-button:enabled:hover, .p-splitbutton.p-button-danger.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(216, 34, 47, 0.04); + color: #d8222f; + } + .p-splitbutton.p-button-danger.p-button-outlined > .p-button:enabled:active, .p-splitbutton.p-button-danger.p-button-outlined > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(216, 34, 47, 0.16); + color: #d8222f; + } + .p-splitbutton.p-button-danger.p-button-text > .p-button { + background-color: transparent; + color: #d8222f; + border-color: transparent; + } + .p-splitbutton.p-button-danger.p-button-text > .p-button:enabled:hover, .p-splitbutton.p-button-danger.p-button-text > .p-button:not(button):not(a):not(.p-disabled):hover { + background: rgba(216, 34, 47, 0.04); + border-color: transparent; + color: #d8222f; + } + .p-splitbutton.p-button-danger.p-button-text > .p-button:enabled:active, .p-splitbutton.p-button-danger.p-button-text > .p-button:not(button):not(a):not(.p-disabled):active { + background: rgba(216, 34, 47, 0.16); + border-color: transparent; + color: #d8222f; + } + + .p-carousel .p-carousel-content .p-carousel-prev, +.p-carousel .p-carousel-content .p-carousel-next { + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + margin: 0.5rem; + } + .p-carousel .p-carousel-content .p-carousel-prev:enabled:hover, +.p-carousel .p-carousel-content .p-carousel-next:enabled:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-carousel .p-carousel-content .p-carousel-prev:focus-visible, +.p-carousel .p-carousel-content .p-carousel-next:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-carousel .p-carousel-indicators { + padding: 1rem; + } + .p-carousel .p-carousel-indicators .p-carousel-indicator { + margin-right: 0.5rem; + margin-bottom: 0.5rem; + } + .p-carousel .p-carousel-indicators .p-carousel-indicator button { + background-color: #dde1e6; + width: 2rem; + height: 0.5rem; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + border-radius: 0; + } + .p-carousel .p-carousel-indicators .p-carousel-indicator button:hover { + background: #dee2e6; + } + .p-carousel .p-carousel-indicators .p-carousel-indicator.p-highlight button { + background: #44A1D9; + color: #ffffff; + } + + .p-datatable .p-paginator-top { + border-width: 0 0 1px 0; + border-radius: 0; + } + .p-datatable .p-paginator-bottom { + border-width: 0 0 1px 0; + border-radius: 0; + } + .p-datatable .p-datatable-header { + background: #f2f4f8; + color: #343a3f; + border: 1px solid #dde1e6; + border-width: 1px 0 1px 0; + padding: 0.25rem 1rem; + font-weight: 600; + } + .p-datatable .p-datatable-footer { + background: #f2f4f8; + color: #343a3f; + border: 1px solid #dde1e6; + border-width: 0 0 1px 0; + padding: 0.25rem 1rem; + font-weight: 600; + } + .p-datatable .p-datatable-thead > tr > th { + text-align: left; + padding: 0.25rem 1rem; + border: 1px solid #dde1e6; + border-width: 0 0 1px 0; + font-weight: 600; + color: #343a3f; + background: #f2f4f8; + transition: box-shadow 0.2s; + } + .p-datatable .p-datatable-tfoot > tr > td { + text-align: left; + padding: 0.25rem 1rem; + border: 1px solid #dde1e6; + border-width: 0 0 1px 0; + font-weight: 600; + color: #343a3f; + background: #f2f4f8; + } + .p-datatable .p-sortable-column .p-sortable-column-icon { + color: #697077; + margin-left: 0.5rem; + } + .p-datatable .p-sortable-column .p-sortable-column-badge { + border-radius: 50%; + height: 1.143rem; + min-width: 1.143rem; + line-height: 1.143rem; + color: #ffffff; + background: #44A1D9; + margin-left: 0.5rem; + } + .p-datatable .p-sortable-column:not(.p-highlight):hover { + background: #dde1e6; + color: #343a3f; + } + .p-datatable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon { + color: #697077; + } + .p-datatable .p-sortable-column.p-highlight { + background: #f2f4f8; + color: #1174c0; + } + .p-datatable .p-sortable-column.p-highlight .p-sortable-column-icon { + color: #1174c0; + } + .p-datatable .p-sortable-column.p-highlight:hover { + background: #dde1e6; + color: #1174c0; + } + .p-datatable .p-sortable-column.p-highlight:hover .p-sortable-column-icon { + color: #1174c0; + } + .p-datatable .p-sortable-column:focus-visible { + box-shadow: inset 0 0 0 0.15rem #90c9f5; + outline: 0 none; + } + .p-datatable .p-datatable-tbody > tr { + background: #ffffff; + color: #343a3f; + transition: box-shadow 0.2s; + } + .p-datatable .p-datatable-tbody > tr > td { + text-align: left; + border: 1px solid #dde1e6; + border-width: 0 0 1px 0; + padding: 0.25rem 1rem; + } + .p-datatable .p-datatable-tbody > tr > td .p-row-toggler, +.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init, +.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save, +.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel { + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-datatable .p-datatable-tbody > tr > td .p-row-toggler:enabled:hover, +.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:enabled:hover, +.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:enabled:hover, +.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:enabled:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-datatable .p-datatable-tbody > tr > td .p-row-toggler:focus-visible, +.p-datatable .p-datatable-tbody > tr > td .p-row-editor-init:focus-visible, +.p-datatable .p-datatable-tbody > tr > td .p-row-editor-save:focus-visible, +.p-datatable .p-datatable-tbody > tr > td .p-row-editor-cancel:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-datatable .p-datatable-tbody > tr > td .p-row-editor-save { + margin-right: 0.5rem; + } + .p-datatable .p-datatable-tbody > tr > td > .p-column-title { + font-weight: 600; + } + .p-datatable .p-datatable-tbody > tr:focus-visible { + outline: 0.15rem solid #90c9f5; + outline-offset: -0.15rem; + } + .p-datatable .p-datatable-tbody > tr.p-highlight { + background: #44A1D9; + color: #ffffff; + } + .p-datatable .p-datatable-tbody > tr.p-highlight-contextmenu { + outline: 0.15rem solid #90c9f5; + outline-offset: -0.15rem; + } + .p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-top > td { + box-shadow: inset 0 2px 0 0 #44A1D9; + } + .p-datatable .p-datatable-tbody > tr.p-datatable-dragpoint-bottom > td { + box-shadow: inset 0 -2px 0 0 #44A1D9; + } + .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover { + background: #dde1e6; + color: #343a3f; + } + .p-datatable .p-column-resizer-helper { + background: #1174c0; + } + .p-datatable.p-datatable-scrollable > .p-datatable-wrapper > .p-datatable-table > .p-datatable-thead, +.p-datatable.p-datatable-scrollable > .p-datatable-wrapper > .p-datatable-table > .p-datatable-tfoot, .p-datatable.p-datatable-scrollable > .p-datatable-wrapper > .p-virtualscroller > .p-datatable-table > .p-datatable-thead, +.p-datatable.p-datatable-scrollable > .p-datatable-wrapper > .p-virtualscroller > .p-datatable-table > .p-datatable-tfoot { + background-color: #f2f4f8; + } + .p-datatable .p-datatable-loading-icon { + font-size: 2rem; + } + .p-datatable .p-datatable-loading-icon.p-icon { + width: 2rem; + height: 2rem; + } + .p-datatable.p-datatable-gridlines .p-datatable-header { + border-width: 1px 1px 0 1px; + } + .p-datatable.p-datatable-gridlines .p-datatable-footer { + border-width: 0 1px 1px 1px; + } + .p-datatable.p-datatable-gridlines .p-paginator-top { + border-width: 0 1px 0 1px; + } + .p-datatable.p-datatable-gridlines .p-paginator-bottom { + border-width: 0 1px 1px 1px; + } + .p-datatable.p-datatable-gridlines .p-datatable-thead > tr > th { + border-width: 1px 0 1px 1px; + } + .p-datatable.p-datatable-gridlines .p-datatable-thead > tr > th:last-child { + border-width: 1px; + } + .p-datatable.p-datatable-gridlines .p-datatable-tbody > tr > td { + border-width: 1px 0 0 1px; + } + .p-datatable.p-datatable-gridlines .p-datatable-tbody > tr > td:last-child { + border-width: 1px 1px 0 1px; + } + .p-datatable.p-datatable-gridlines .p-datatable-tbody > tr:last-child > td { + border-width: 1px 0 1px 1px; + } + .p-datatable.p-datatable-gridlines .p-datatable-tbody > tr:last-child > td:last-child { + border-width: 1px; + } + .p-datatable.p-datatable-gridlines .p-datatable-tfoot > tr > td { + border-width: 1px 0 1px 1px; + } + .p-datatable.p-datatable-gridlines .p-datatable-tfoot > tr > td:last-child { + border-width: 1px 1px 1px 1px; + } + .p-datatable.p-datatable-gridlines .p-datatable-thead + .p-datatable-tfoot > tr > td { + border-width: 0 0 1px 1px; + } + .p-datatable.p-datatable-gridlines .p-datatable-thead + .p-datatable-tfoot > tr > td:last-child { + border-width: 0 1px 1px 1px; + } + .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody > tr > td { + border-width: 0 0 1px 1px; + } + .p-datatable.p-datatable-gridlines:has(.p-datatable-thead):has(.p-datatable-tbody) .p-datatable-tbody > tr > td:last-child { + border-width: 0 1px 1px 1px; + } + .p-datatable.p-datatable-gridlines:has(.p-datatable-tbody):has(.p-datatable-tfoot) .p-datatable-tbody > tr:last-child > td { + border-width: 0 0 0 1px; + } + .p-datatable.p-datatable-gridlines:has(.p-datatable-tbody):has(.p-datatable-tfoot) .p-datatable-tbody > tr:last-child > td:last-child { + border-width: 0 1px 0 1px; + } + .p-datatable.p-datatable-striped .p-datatable-tbody > tr.p-row-odd { + background: #fcfcfc; + } + .p-datatable.p-datatable-striped .p-datatable-tbody > tr.p-row-odd.p-highlight { + background: #44A1D9; + color: #ffffff; + } + .p-datatable.p-datatable-striped .p-datatable-tbody > tr.p-row-odd.p-highlight .p-row-toggler { + color: #ffffff; + } + .p-datatable.p-datatable-striped .p-datatable-tbody > tr.p-row-odd.p-highlight .p-row-toggler:hover { + color: #ffffff; + } + .p-datatable.p-datatable-sm .p-datatable-header { + padding: 0.125rem 0.5rem; + } + .p-datatable.p-datatable-sm .p-datatable-thead > tr > th { + padding: 0.125rem 0.5rem; + } + .p-datatable.p-datatable-sm .p-datatable-tbody > tr > td { + padding: 0.125rem 0.5rem; + } + .p-datatable.p-datatable-sm .p-datatable-tfoot > tr > td { + padding: 0.125rem 0.5rem; + } + .p-datatable.p-datatable-sm .p-datatable-footer { + padding: 0.125rem 0.5rem; + } + .p-datatable.p-datatable-lg .p-datatable-header { + padding: 0.3125rem 1.25rem; + } + .p-datatable.p-datatable-lg .p-datatable-thead > tr > th { + padding: 0.3125rem 1.25rem; + } + .p-datatable.p-datatable-lg .p-datatable-tbody > tr > td { + padding: 0.3125rem 1.25rem; + } + .p-datatable.p-datatable-lg .p-datatable-tfoot > tr > td { + padding: 0.3125rem 1.25rem; + } + .p-datatable.p-datatable-lg .p-datatable-footer { + padding: 0.3125rem 1.25rem; + } + + .p-dataview .p-paginator-top { + border-width: 0 0 1px 0; + border-radius: 0; + } + .p-dataview .p-paginator-bottom { + border-width: 0 0 1px 0; + border-radius: 0; + } + .p-dataview .p-dataview-header { + background: #f2f4f8; + color: #343a3f; + border: 1px solid #dde1e6; + border-width: 1px 0 1px 0; + padding: 0.25rem 1rem; + font-weight: 600; + } + .p-dataview .p-dataview-content { + background: #ffffff; + color: #343a3f; + border: 0 none; + padding: 0; + } + .p-dataview .p-dataview-footer { + background: #f2f4f8; + color: #343a3f; + border: 1px solid #dde1e6; + border-width: 0 0 1px 0; + padding: 0.25rem 1rem; + font-weight: 600; + border-bottom-left-radius: 1px; + border-bottom-right-radius: 1px; + } + + .p-column-filter-row .p-column-filter-menu-button, +.p-column-filter-row .p-column-filter-clear-button { + margin-left: 0.5rem; + } + + .p-column-filter-menu-button { + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-column-filter-menu-button:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-column-filter-menu-button.p-column-filter-menu-button-open, .p-column-filter-menu-button.p-column-filter-menu-button-open:hover { + background: transparent; + color: #343a3f; + } + .p-column-filter-menu-button.p-column-filter-menu-button-active, .p-column-filter-menu-button.p-column-filter-menu-button-active:hover { + background: #44A1D9; + color: #ffffff; + } + .p-column-filter-menu-button:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + + .p-column-filter-clear-button { + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-column-filter-clear-button:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-column-filter-clear-button:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + + .p-column-filter-overlay { + background: #ffffff; + color: #343a3f; + border: 0 none; + border-radius: 1px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + min-width: 12.5rem; + } + .p-column-filter-overlay .p-column-filter-row-items { + padding: 0.25rem 0; + } + .p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item { + margin: 0; + padding: 0.25rem 0.5rem; + border: 0 none; + color: #343a3f; + background: transparent; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:not(.p-highlight):not(.p-disabled):hover { + color: #343a3f; + background: #dde1e6; + } + .p-column-filter-overlay .p-column-filter-row-items .p-column-filter-row-item:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: inset 0 0 0 0.15rem #90c9f5; + } + .p-column-filter-overlay .p-column-filter-row-items .p-column-filter-separator { + border-top: 1px solid #dee2e6; + margin: 0.25rem 0; + } + + .p-column-filter-overlay-menu .p-column-filter-operator { + padding: 0.25rem 0.5rem; + border-bottom: 0 none; + color: #343a3f; + background: #f2f4f8; + margin: 0; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-column-filter-overlay-menu .p-column-filter-constraint { + padding: 0.5rem; + border-bottom: 1px solid #dee2e6; + } + .p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-matchmode-dropdown { + margin-bottom: 0.5rem; + } + .p-column-filter-overlay-menu .p-column-filter-constraint .p-column-filter-remove-button { + margin-top: 0.5rem; + } + .p-column-filter-overlay-menu .p-column-filter-constraint:last-child { + border-bottom: 0 none; + } + .p-column-filter-overlay-menu .p-column-filter-add-rule { + padding: 0.5rem 1rem; + } + .p-column-filter-overlay-menu .p-column-filter-buttonbar { + padding: 0.5rem; + } + + .p-orderlist .p-orderlist-controls { + padding: 0.5rem; + } + .p-orderlist .p-orderlist-controls .p-button { + margin-bottom: 0.5rem; + } + .p-orderlist .p-orderlist-header { + background: #f2f4f8; + color: #343a3f; + border: 1px solid #dee2e6; + padding: 0.75rem; + font-weight: 600; + border-bottom: 0 none; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-orderlist .p-orderlist-list { + border: 1px solid #dee2e6; + background: #ffffff; + color: #343a3f; + padding: 0.25rem 0; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + outline: 0 none; + } + .p-orderlist .p-orderlist-list .p-orderlist-item { + padding: 0.25rem 0.5rem; + margin: 0; + border: 0 none; + color: #343a3f; + background: transparent; + transition: transform 0.2s, box-shadow 0.2s; + } + .p-orderlist .p-orderlist-list .p-orderlist-item:not(.p-highlight):hover { + background: #dde1e6; + color: #343a3f; + } + .p-orderlist .p-orderlist-list .p-orderlist-item.p-focus { + color: #343a3f; + background: #d2d6db; + } + .p-orderlist .p-orderlist-list .p-orderlist-item.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-orderlist .p-orderlist-list .p-orderlist-item.p-highlight.p-focus { + background: #1174c0; + } + .p-orderlist.p-orderlist-striped .p-orderlist-list .p-orderlist-item:nth-child(even) { + background: #fcfcfc; + } + .p-orderlist.p-orderlist-striped .p-orderlist-list .p-orderlist-item:nth-child(even):hover { + background: #dde1e6; + } + + .p-organizationchart .p-organizationchart-node-content.p-organizationchart-selectable-node:not(.p-highlight):hover { + background: #dde1e6; + color: #343a3f; + } + .p-organizationchart .p-organizationchart-node-content.p-highlight { + background: #44A1D9; + color: #ffffff; + } + .p-organizationchart .p-organizationchart-node-content.p-highlight .p-node-toggler i { + color: #1b5c83; + } + .p-organizationchart .p-organizationchart-line-down { + background: #dee2e6; + } + .p-organizationchart .p-organizationchart-line-left { + border-right: 1px solid #dee2e6; + border-color: #dee2e6; + } + .p-organizationchart .p-organizationchart-line-top { + border-top: 1px solid #dee2e6; + border-color: #dee2e6; + } + .p-organizationchart .p-organizationchart-node-content { + border: 1px solid #dee2e6; + background: #ffffff; + color: #343a3f; + padding: 0.5rem; + } + .p-organizationchart .p-organizationchart-node-content .p-node-toggler { + background: inherit; + color: inherit; + border-radius: 50%; + } + .p-organizationchart .p-organizationchart-node-content .p-node-toggler:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + + .p-paginator { + background: #ffffff; + color: #697077; + border: solid #dde1e6; + border-width: 0; + padding: 0.5rem 1rem; + border-radius: 1px; + } + .p-paginator .p-paginator-first, +.p-paginator .p-paginator-prev, +.p-paginator .p-paginator-next, +.p-paginator .p-paginator-last { + background-color: transparent; + border: 0 none; + color: #697077; + min-width: 2.357rem; + height: 2.357rem; + margin: 0.143rem; + transition: box-shadow 0.2s; + border-radius: 1px; + } + .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover, +.p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover, +.p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover, +.p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover { + background: #dde1e6; + border-color: transparent; + color: #343a3f; + } + .p-paginator .p-paginator-first { + border-top-left-radius: 1px; + border-bottom-left-radius: 1px; + } + .p-paginator .p-paginator-last { + border-top-right-radius: 1px; + border-bottom-right-radius: 1px; + } + .p-paginator .p-dropdown { + margin-left: 0.5rem; + margin-right: 0.5rem; + height: 2.357rem; + } + .p-paginator .p-dropdown .p-dropdown-label { + padding-right: 0; + } + .p-paginator .p-paginator-page-input { + margin-left: 0.5rem; + margin-right: 0.5rem; + } + .p-paginator .p-paginator-page-input .p-inputtext { + max-width: 2.357rem; + } + .p-paginator .p-paginator-current { + background-color: transparent; + border: 0 none; + color: #697077; + min-width: 2.357rem; + height: 2.357rem; + margin: 0.143rem; + padding: 0 0.5rem; + } + .p-paginator .p-paginator-pages .p-paginator-page { + background-color: transparent; + border: 0 none; + color: #697077; + min-width: 2.357rem; + height: 2.357rem; + margin: 0.143rem; + transition: box-shadow 0.2s; + border-radius: 1px; + } + .p-paginator .p-paginator-pages .p-paginator-page.p-highlight { + background: #44A1D9; + border-color: #44A1D9; + color: #ffffff; + } + .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover { + background: #dde1e6; + border-color: transparent; + color: #343a3f; + } + + .p-picklist .p-picklist-buttons { + padding: 0.5rem; + } + .p-picklist .p-picklist-buttons .p-button { + margin-bottom: 0.5rem; + } + .p-picklist .p-picklist-header { + background: #f2f4f8; + color: #343a3f; + border: 1px solid #dee2e6; + padding: 0.75rem; + font-weight: 600; + border-bottom: 0 none; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-picklist .p-picklist-list { + border: 1px solid #dee2e6; + background: #ffffff; + color: #343a3f; + padding: 0.25rem 0; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + outline: 0 none; + } + .p-picklist .p-picklist-list .p-picklist-item { + padding: 0.25rem 0.5rem; + margin: 0; + border: 0 none; + color: #343a3f; + background: transparent; + transition: transform 0.2s, box-shadow 0.2s; + } + .p-picklist .p-picklist-list .p-picklist-item:not(.p-highlight):hover { + background: #dde1e6; + color: #343a3f; + } + .p-picklist .p-picklist-list .p-picklist-item.p-focus { + color: #343a3f; + background: #d2d6db; + } + .p-picklist .p-picklist-list .p-picklist-item.p-highlight { + color: #ffffff; + background: #44A1D9; + } + .p-picklist .p-picklist-list .p-picklist-item.p-highlight.p-focus { + background: #1174c0; + } + .p-picklist.p-picklist-striped .p-picklist-list .p-picklist-item:nth-child(even) { + background: #fcfcfc; + } + .p-picklist.p-picklist-striped .p-picklist-list .p-picklist-item:nth-child(even):hover { + background: #dde1e6; + } + + .p-timeline .p-timeline-event-marker { + border: 0 none; + border-radius: 50%; + width: 1rem; + height: 1rem; + background-color: #1174c0; + } + .p-timeline .p-timeline-event-connector { + background-color: #dee2e6; + } + .p-timeline.p-timeline-vertical .p-timeline-event-opposite, +.p-timeline.p-timeline-vertical .p-timeline-event-content { + padding: 0 1rem; + } + .p-timeline.p-timeline-vertical .p-timeline-event-connector { + width: 2px; + } + .p-timeline.p-timeline-horizontal .p-timeline-event-opposite, +.p-timeline.p-timeline-horizontal .p-timeline-event-content { + padding: 1rem 0; + } + .p-timeline.p-timeline-horizontal .p-timeline-event-connector { + height: 2px; + } + + .p-tree { + border: 1px solid #dee2e6; + background: #ffffff; + color: #343a3f; + padding: 0.5rem; + border-radius: 1px; + } + .p-tree .p-tree-container .p-treenode { + padding: 0.143rem; + outline: 0 none; + } + .p-tree .p-tree-container .p-treenode:focus > .p-treenode-content { + outline: 0 none; + outline-offset: 0; + box-shadow: inset 0 0 0 0.15rem #90c9f5; + } + .p-tree .p-tree-container .p-treenode .p-treenode-content { + border-radius: 1px; + transition: box-shadow 0.2s; + padding: 0.25rem; + } + .p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler { + margin-right: 0.5rem; + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:enabled:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-tree .p-tree-container .p-treenode .p-treenode-content .p-tree-toggler:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-tree .p-tree-container .p-treenode .p-treenode-content .p-treenode-icon { + margin-right: 0.5rem; + color: #697077; + } + .p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox { + margin-right: 0.5rem; + } + .p-tree .p-tree-container .p-treenode .p-treenode-content .p-checkbox .p-indeterminate .p-checkbox-icon { + color: #343a3f; + } + .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight { + background: #44A1D9; + color: #ffffff; + } + .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler, +.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon { + color: #ffffff; + } + .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler:hover, +.p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon:hover { + color: #ffffff; + } + .p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover { + background: #dde1e6; + color: #343a3f; + } + .p-tree .p-tree-filter-container { + margin-bottom: 0.5rem; + } + .p-tree .p-tree-filter-container .p-tree-filter { + width: 100%; + padding-right: 1.25rem; + } + .p-tree .p-tree-filter-container .p-tree-filter-icon { + right: 0.25rem; + color: #697077; + } + .p-tree .p-treenode-children { + padding: 0 0 0 1rem; + } + .p-tree .p-tree-loading-icon { + font-size: 2rem; + } + .p-tree .p-tree-loading-icon.p-icon { + width: 2rem; + height: 2rem; + } + + .p-treetable .p-paginator-top { + border-width: 0 0 1px 0; + border-radius: 0; + } + .p-treetable .p-paginator-bottom { + border-width: 0 0 1px 0; + border-radius: 0; + } + .p-treetable .p-treetable-header { + background: #f2f4f8; + color: #343a3f; + border: 1px solid #dde1e6; + border-width: 1px 0 1px 0; + padding: 0.25rem 1rem; + font-weight: 600; + } + .p-treetable .p-treetable-footer { + background: #f2f4f8; + color: #343a3f; + border: 1px solid #dde1e6; + border-width: 0 0 1px 0; + padding: 0.25rem 1rem; + font-weight: 600; + } + .p-treetable .p-treetable-thead > tr > th { + text-align: left; + padding: 0.25rem 1rem; + border: 1px solid #dde1e6; + border-width: 0 0 1px 0; + font-weight: 600; + color: #343a3f; + background: #f2f4f8; + transition: box-shadow 0.2s; + } + .p-treetable .p-treetable-tfoot > tr > td { + text-align: left; + padding: 0.25rem 1rem; + border: 1px solid #dde1e6; + border-width: 0 0 1px 0; + font-weight: 600; + color: #343a3f; + background: #f2f4f8; + } + .p-treetable .p-sortable-column { + outline-color: #90c9f5; + } + .p-treetable .p-sortable-column .p-sortable-column-icon { + color: #697077; + margin-left: 0.5rem; + } + .p-treetable .p-sortable-column .p-sortable-column-badge { + border-radius: 50%; + height: 1.143rem; + min-width: 1.143rem; + line-height: 1.143rem; + color: #ffffff; + background: #44A1D9; + margin-left: 0.5rem; + } + .p-treetable .p-sortable-column:not(.p-highlight):hover { + background: #dde1e6; + color: #343a3f; + } + .p-treetable .p-sortable-column:not(.p-highlight):hover .p-sortable-column-icon { + color: #697077; + } + .p-treetable .p-sortable-column.p-highlight { + background: #f2f4f8; + color: #1174c0; + } + .p-treetable .p-sortable-column.p-highlight .p-sortable-column-icon { + color: #1174c0; + } + .p-treetable .p-treetable-tbody > tr { + background: #ffffff; + color: #343a3f; + transition: box-shadow 0.2s; + } + .p-treetable .p-treetable-tbody > tr > td { + text-align: left; + border: 1px solid #dde1e6; + border-width: 0 0 1px 0; + padding: 0.25rem 1rem; + } + .p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler { + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + margin-right: 0.5rem; + } + .p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:enabled:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler + .p-checkbox { + margin-right: 0.5rem; + } + .p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler + .p-checkbox .p-indeterminate .p-checkbox-icon { + color: #343a3f; + } + .p-treetable .p-treetable-tbody > tr:focus-visible { + outline: 0.15rem solid #90c9f5; + outline-offset: -0.15rem; + } + .p-treetable .p-treetable-tbody > tr.p-highlight { + background: #44A1D9; + color: #ffffff; + } + .p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler { + color: #ffffff; + } + .p-treetable .p-treetable-tbody > tr.p-highlight .p-treetable-toggler:hover { + color: #ffffff; + } + .p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover { + background: #dde1e6; + color: #343a3f; + } + .p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover .p-treetable-toggler { + color: #343a3f; + } + .p-treetable .p-column-resizer-helper { + background: #1174c0; + } + .p-treetable .p-treetable-scrollable-header, +.p-treetable .p-treetable-scrollable-footer { + background: #f2f4f8; + } + .p-treetable .p-treetable-loading-icon { + font-size: 2rem; + } + .p-treetable .p-treetable-loading-icon.p-icon { + width: 2rem; + height: 2rem; + } + .p-treetable.p-treetable-gridlines .p-datatable-header { + border-width: 1px 1px 0 1px; + } + .p-treetable.p-treetable-gridlines .p-treetable-footer { + border-width: 0 1px 1px 1px; + } + .p-treetable.p-treetable-gridlines .p-treetable-top { + border-width: 0 1px 0 1px; + } + .p-treetable.p-treetable-gridlines .p-treetable-bottom { + border-width: 0 1px 1px 1px; + } + .p-treetable.p-treetable-gridlines .p-treetable-thead > tr > th { + border-width: 1px; + } + .p-treetable.p-treetable-gridlines .p-treetable-tbody > tr > td { + border-width: 1px; + } + .p-treetable.p-treetable-gridlines .p-treetable-tfoot > tr > td { + border-width: 1px; + } + .p-treetable.p-treetable-sm .p-treetable-header { + padding: 0.21875rem 0.875rem; + } + .p-treetable.p-treetable-sm .p-treetable-thead > tr > th { + padding: 0.125rem 0.5rem; + } + .p-treetable.p-treetable-sm .p-treetable-tbody > tr > td { + padding: 0.125rem 0.5rem; + } + .p-treetable.p-treetable-sm .p-treetable-tfoot > tr > td { + padding: 0.125rem 0.5rem; + } + .p-treetable.p-treetable-sm .p-treetable-footer { + padding: 0.125rem 0.5rem; + } + .p-treetable.p-treetable-lg .p-treetable-header { + padding: 0.3125rem 1.25rem; + } + .p-treetable.p-treetable-lg .p-treetable-thead > tr > th { + padding: 0.3125rem 1.25rem; + } + .p-treetable.p-treetable-lg .p-treetable-tbody > tr > td { + padding: 0.3125rem 1.25rem; + } + .p-treetable.p-treetable-lg .p-treetable-tfoot > tr > td { + padding: 0.3125rem 1.25rem; + } + .p-treetable.p-treetable-lg .p-treetable-footer { + padding: 0.3125rem 1.25rem; + } + + .p-accordion .p-accordion-header .p-accordion-header-link { + padding: 0.75rem; + border: 1px solid #dee2e6; + color: #343a3f; + background: #f2f4f8; + font-weight: 600; + border-radius: 1px; + transition: box-shadow 0.2s; + } + .p-accordion .p-accordion-header .p-accordion-header-link .p-accordion-toggle-icon { + margin-right: 0.5rem; + } + .p-accordion .p-accordion-header:not(.p-disabled) .p-accordion-header-link:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: inset 0 0 0 0.2rem #90c9f5; + } + .p-accordion .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link { + background: #dde1e6; + border-color: #dee2e6; + color: #343a3f; + } + .p-accordion .p-accordion-header:not(.p-disabled).p-highlight .p-accordion-header-link { + background: #f2f4f8; + border-color: #dee2e6; + color: #343a3f; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + .p-accordion .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link { + border-color: #dee2e6; + background: #dde1e6; + color: #343a3f; + } + .p-accordion .p-accordion-content { + padding: 0.5rem; + border: 1px solid #dee2e6; + background: #ffffff; + color: #343a3f; + border-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + .p-accordion .p-accordion-tab { + margin-bottom: 0; + } + .p-accordion .p-accordion-tab .p-accordion-header .p-accordion-header-link { + border-radius: 0; + } + .p-accordion .p-accordion-tab .p-accordion-content { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + .p-accordion .p-accordion-tab:not(:first-child) .p-accordion-header .p-accordion-header-link { + border-top: 0 none; + } + .p-accordion .p-accordion-tab:not(:first-child) .p-accordion-header:not(.p-highlight):not(.p-disabled):hover .p-accordion-header-link, .p-accordion .p-accordion-tab:not(:first-child) .p-accordion-header:not(.p-disabled).p-highlight:hover .p-accordion-header-link { + border-top: 0 none; + } + .p-accordion .p-accordion-tab:first-child .p-accordion-header .p-accordion-header-link { + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-accordion .p-accordion-tab:last-child .p-accordion-header:not(.p-highlight) .p-accordion-header-link { + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + .p-accordion .p-accordion-tab:last-child .p-accordion-content { + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + + .p-card { + background: #ffffff; + color: #343a3f; + box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 1px 3px 0 rgba(0, 0, 0, 0.12); + border-radius: 1px; + } + .p-card .p-card-body { + padding: 1rem; + } + .p-card .p-card-title { + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 0.5rem; + } + .p-card .p-card-subtitle { + font-weight: 400; + margin-bottom: 0.5rem; + color: #697077; + } + .p-card .p-card-content { + padding: 1rem 0; + } + .p-card .p-card-footer { + padding: 1rem 0 0 0; + } + + .p-fieldset { + border: 1px solid #dee2e6; + background: #ffffff; + color: #343a3f; + border-radius: 1px; + } + .p-fieldset .p-fieldset-legend { + padding: 0.75rem; + border: 1px solid #dee2e6; + color: #343a3f; + background: #f2f4f8; + font-weight: 600; + border-radius: 1px; + } + .p-fieldset.p-fieldset-toggleable .p-fieldset-legend { + padding: 0; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-fieldset.p-fieldset-toggleable .p-fieldset-legend a { + padding: 0.75rem; + color: #343a3f; + border-radius: 1px; + transition: box-shadow 0.2s; + } + .p-fieldset.p-fieldset-toggleable .p-fieldset-legend a .p-fieldset-toggler { + margin-right: 0.5rem; + } + .p-fieldset.p-fieldset-toggleable .p-fieldset-legend a:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-fieldset.p-fieldset-toggleable .p-fieldset-legend a:hover { + color: #343a3f; + } + .p-fieldset.p-fieldset-toggleable .p-fieldset-legend:hover { + background: #dde1e6; + border-color: #dee2e6; + color: #343a3f; + } + .p-fieldset .p-fieldset-content { + padding: 0.5rem; + } + + .p-divider .p-divider-content { + background-color: #ffffff; + } + .p-divider.p-divider-horizontal { + margin: 0.5rem 0; + padding: 0 0.5rem; + } + .p-divider.p-divider-horizontal:before { + border-top: 1px #dee2e6; + } + .p-divider.p-divider-horizontal .p-divider-content { + padding: 0 0.5rem; + } + .p-divider.p-divider-vertical { + margin: 0 0.5rem; + padding: 0.5rem 0; + } + .p-divider.p-divider-vertical:before { + border-left: 1px #dee2e6; + } + .p-divider.p-divider-vertical .p-divider-content { + padding: 0.5rem 0; + } + + .p-panel .p-panel-header { + border: 1px solid #dee2e6; + padding: 0.75rem; + background: #f2f4f8; + color: #343a3f; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-panel .p-panel-header .p-panel-title { + font-weight: 600; + } + .p-panel .p-panel-header .p-panel-header-icon { + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-panel .p-panel-header .p-panel-header-icon:enabled:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-panel .p-panel-header .p-panel-header-icon:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-panel.p-panel-toggleable .p-panel-header { + padding: 0.5rem 1rem; + } + .p-panel .p-panel-content { + padding: 0.5rem; + border: 1px solid #dee2e6; + background: #ffffff; + color: #343a3f; + border-top: 0 none; + } + .p-panel .p-panel-content:last-child { + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + .p-panel .p-panel-footer { + padding: 0.5rem 1rem; + border: 1px solid #dee2e6; + background: #ffffff; + color: #343a3f; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + border-top: 0 none; + } + + .p-scrollpanel .p-scrollpanel-bar { + background: #f2f4f8; + border: 0 none; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + } + .p-scrollpanel .p-scrollpanel-bar:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + + .p-splitter { + border: 1px solid #dee2e6; + background: #ffffff; + border-radius: 1px; + color: #343a3f; + } + .p-splitter .p-splitter-gutter { + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + background: #f2f4f8; + } + .p-splitter .p-splitter-gutter .p-splitter-gutter-handle { + background: #dee2e6; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + } + .p-splitter .p-splitter-gutter .p-splitter-gutter-handle:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-splitter .p-splitter-gutter-resizing { + background: #dee2e6; + } + + .p-tabview .p-tabview-nav { + background: #ffffff; + border: 1px solid #dee2e6; + border-width: 0 0 2px 0; + } + .p-tabview .p-tabview-nav li { + margin-right: 0; + } + .p-tabview .p-tabview-nav li .p-tabview-nav-link { + border: solid #dee2e6; + border-width: 0 0 2px 0; + border-color: transparent transparent #dee2e6 transparent; + background: #ffffff; + color: #697077; + padding: 0.75rem; + font-weight: 600; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + transition: box-shadow 0.2s; + margin: 0 0 -2px 0; + } + .p-tabview .p-tabview-nav li .p-tabview-nav-link:not(.p-disabled):focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: inset 0 0 0 0.2rem #90c9f5; + } + .p-tabview .p-tabview-nav li:not(.p-highlight):not(.p-disabled):hover .p-tabview-nav-link { + background: #ffffff; + border-color: #697077; + color: #697077; + } + .p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link { + background: #ffffff; + border-color: #1174c0; + color: #1174c0; + } + .p-tabview .p-tabview-nav-btn.p-link { + background: #ffffff; + color: #1174c0; + width: 2.357rem; + box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + border-radius: 0; + } + .p-tabview .p-tabview-nav-btn.p-link:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: inset 0 0 0 0.2rem #90c9f5; + } + .p-tabview .p-tabview-panels { + background: #ffffff; + padding: 0.5rem; + border: 0 none; + color: #343a3f; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + + .p-toolbar { + background: #f2f4f8; + border: 1px solid #dee2e6; + padding: 0.75rem; + border-radius: 1px; + gap: 0.5rem; + } + .p-toolbar .p-toolbar-separator { + margin: 0 0.5rem; + } + + .p-confirm-popup { + background: #ffffff; + color: #343a3f; + border: 0 none; + border-radius: 1px; + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); + } + .p-confirm-popup .p-confirm-popup-content { + padding: 0.5rem; + } + .p-confirm-popup .p-confirm-popup-footer { + text-align: right; + padding: 0 0.5rem 0.5rem 0.5rem; + } + .p-confirm-popup .p-confirm-popup-footer button { + margin: 0 0.5rem 0 0; + width: auto; + } + .p-confirm-popup .p-confirm-popup-footer button:last-child { + margin: 0; + } + .p-confirm-popup:after { + border: solid transparent; + border-color: rgba(255, 255, 255, 0); + border-bottom-color: #ffffff; + } + .p-confirm-popup:before { + border: solid transparent; + border-color: rgba(255, 255, 255, 0); + border-bottom-color: #f2f2f2; + } + .p-confirm-popup.p-confirm-popup-flipped:after { + border-top-color: #ffffff; + } + .p-confirm-popup.p-confirm-popup-flipped:before { + border-top-color: #ffffff; + } + .p-confirm-popup .p-confirm-popup-icon { + font-size: 1.5rem; + } + .p-confirm-popup .p-confirm-popup-icon.p-icon { + width: 1.5rem; + height: 1.5rem; + } + .p-confirm-popup .p-confirm-popup-message { + margin-left: 1rem; + } + + .p-dialog { + border-radius: 1px; + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); + border: 0 none; + } + .p-dialog .p-dialog-header { + border-bottom: 0 none; + background: #ffffff; + color: #343a3f; + padding: 0.75rem; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-dialog .p-dialog-header .p-dialog-title { + font-weight: 600; + font-size: 1.25rem; + } + .p-dialog .p-dialog-header .p-dialog-header-icon { + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + margin-right: 0.5rem; + } + .p-dialog .p-dialog-header .p-dialog-header-icon:enabled:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-dialog .p-dialog-header .p-dialog-header-icon:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-dialog .p-dialog-header .p-dialog-header-icon:last-child { + margin-right: 0; + } + .p-dialog .p-dialog-content { + background: #ffffff; + color: #343a3f; + padding: 0 0.75rem 1rem 0.75rem; + } + .p-dialog .p-dialog-content:last-of-type { + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + .p-dialog .p-dialog-footer { + border-top: 0 none; + background: #ffffff; + color: #343a3f; + padding: 0 0.75rem 0.75rem 0.75rem; + text-align: right; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + .p-dialog .p-dialog-footer button { + margin: 0 0.5rem 0 0; + width: auto; + } + .p-dialog.p-confirm-dialog .p-confirm-dialog-icon { + font-size: 2rem; + } + .p-dialog.p-confirm-dialog .p-confirm-dialog-message:not(:first-child) { + margin-left: 1rem; + } + + .p-overlaypanel { + background: #ffffff; + color: #343a3f; + border: 0 none; + border-radius: 1px; + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); + } + .p-overlaypanel .p-overlaypanel-content { + padding: 0.5rem; + } + .p-overlaypanel .p-overlaypanel-close { + background: #1174c0; + color: #ffffff; + width: 1rem; + height: 1rem; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + border-radius: 50%; + position: absolute; + top: -0.5rem; + right: -0.5rem; + } + .p-overlaypanel .p-overlaypanel-close:enabled:hover { + background: #0f68ad; + color: #ffffff; + } + .p-overlaypanel:after { + border: solid transparent; + border-color: rgba(255, 255, 255, 0); + border-bottom-color: #ffffff; + } + .p-overlaypanel:before { + border: solid transparent; + border-color: rgba(255, 255, 255, 0); + border-bottom-color: #f2f2f2; + } + .p-overlaypanel.p-overlaypanel-flipped:after { + border-top-color: #ffffff; + } + .p-overlaypanel.p-overlaypanel-flipped:before { + border-top-color: #ffffff; + } + + .p-sidebar { + background: #ffffff; + color: #343a3f; + border: 0 none; + box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12); + } + .p-sidebar .p-sidebar-header { + padding: 0.75rem; + } + .p-sidebar .p-sidebar-header .p-sidebar-header-content { + font-weight: 600; + font-size: 1.25rem; + } + .p-sidebar .p-sidebar-header .p-sidebar-close, +.p-sidebar .p-sidebar-header .p-sidebar-icon { + width: 1rem; + height: 1rem; + color: #878d96; + border: 0 none; + background: transparent; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-sidebar .p-sidebar-header .p-sidebar-close:enabled:hover, +.p-sidebar .p-sidebar-header .p-sidebar-icon:enabled:hover { + color: #343a3f; + border-color: #121619; + background: transparent; + } + .p-sidebar .p-sidebar-header .p-sidebar-close:focus-visible, +.p-sidebar .p-sidebar-header .p-sidebar-icon:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-sidebar .p-sidebar-header + .p-sidebar-content { + padding-top: 0; + } + .p-sidebar .p-sidebar-content { + padding: 0.5rem; + } + + .p-tooltip .p-tooltip-text { + background: #343a3f; + color: #ffffff; + padding: 0.25rem 0.25rem; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + border-radius: 1px; + } + .p-tooltip.p-tooltip-right .p-tooltip-arrow { + border-right-color: #343a3f; + } + .p-tooltip.p-tooltip-left .p-tooltip-arrow { + border-left-color: #343a3f; + } + .p-tooltip.p-tooltip-top .p-tooltip-arrow { + border-top-color: #343a3f; + } + .p-tooltip.p-tooltip-bottom .p-tooltip-arrow { + border-bottom-color: #343a3f; + } + + .p-fileupload .p-fileupload-buttonbar { + background: #f2f4f8; + padding: 0.75rem; + border: 1px solid #dee2e6; + color: #343a3f; + border-bottom: 0 none; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + gap: 0.5rem; + } + .p-fileupload .p-fileupload-buttonbar .p-button.p-fileupload-choose.p-focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-fileupload .p-fileupload-content { + background: #ffffff; + padding: 2rem 1rem; + border: 1px solid #dee2e6; + color: #343a3f; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + .p-fileupload .p-fileupload-content.p-fileupload-highlight { + border: 1px dashed #1174c0; + background-color: #44A1D9; + } + .p-fileupload .p-fileupload-file { + padding: 1rem; + border: 1px solid #dee2e6; + border-radius: 1px; + gap: 0.5rem; + margin-bottom: 0.5rem; + } + .p-fileupload .p-fileupload-file:last-child { + margin-bottom: 0; + } + .p-fileupload .p-fileupload-file-name { + margin-bottom: 0.5rem; + } + .p-fileupload .p-fileupload-file-size { + margin-right: 0.5rem; + } + .p-fileupload .p-progressbar { + height: 0.25rem; + } + .p-fileupload .p-fileupload-row > div { + padding: 0.25rem 1rem; + } + .p-fileupload.p-fileupload-advanced .p-message { + margin-top: 0; + } + + .p-fileupload-choose:not(.p-disabled):hover { + background: #0f68ad; + color: #ffffff; + border-color: #0f68ad; + } + .p-fileupload-choose:not(.p-disabled):active { + background: #0e5d9a; + color: #ffffff; + border-color: #0e5d9a; + } + + .p-breadcrumb { + background: #ffffff; + border: 1px solid #dee2e6; + border-radius: 1px; + padding: 0.5rem; + } + .p-breadcrumb .p-breadcrumb-list li .p-menuitem-link { + transition: box-shadow 0.2s; + border-radius: 1px; + } + .p-breadcrumb .p-breadcrumb-list li .p-menuitem-link:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-breadcrumb .p-breadcrumb-list li .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-breadcrumb .p-breadcrumb-list li .p-menuitem-link .p-menuitem-icon { + color: #697077; + } + .p-breadcrumb .p-breadcrumb-list li.p-menuitem-separator { + margin: 0 0.5rem 0 0.5rem; + color: #343a3f; + } + .p-breadcrumb .p-breadcrumb-list li:last-child .p-menuitem-text { + color: #343a3f; + } + .p-breadcrumb .p-breadcrumb-list li:last-child .p-menuitem-icon { + color: #697077; + } + + .p-contextmenu { + padding: 0.25rem 0; + background: #ffffff; + color: #343a3f; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + border-radius: 1px; + min-width: 12.5rem; + } + .p-contextmenu .p-contextmenu-root-list { + outline: 0 none; + } + .p-contextmenu .p-submenu-list { + padding: 0.25rem 0; + background: #ffffff; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + border-radius: 1px; + } + .p-contextmenu .p-menuitem > .p-menuitem-content { + color: #343a3f; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-contextmenu .p-menuitem > .p-menuitem-content .p-menuitem-link { + color: #343a3f; + padding: 0.5rem 0.5rem; + user-select: none; + } + .p-contextmenu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-contextmenu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-icon { + color: #697077; + margin-right: 0.5rem; + } + .p-contextmenu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-contextmenu .p-menuitem.p-highlight > .p-menuitem-content { + color: #343a3f; + background: #dde1e6; + } + .p-contextmenu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-contextmenu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-contextmenu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-contextmenu .p-menuitem.p-highlight.p-focus > .p-menuitem-content { + background: #dde1e6; + } + .p-contextmenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content { + color: #343a3f; + background: #d2d6db; + } + .p-contextmenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-contextmenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-contextmenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #343a3f; + } + .p-contextmenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover { + color: #343a3f; + background: #dde1e6; + } + .p-contextmenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-contextmenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-icon, .p-contextmenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-contextmenu .p-menuitem-separator { + border-top: 1px solid #dee2e6; + margin: 0.25rem 0; + } + .p-contextmenu .p-submenu-icon { + font-size: 0.875rem; + } + .p-contextmenu .p-submenu-icon.p-icon { + width: 0.875rem; + height: 0.875rem; + } + + .p-dock .p-dock-list-container { + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); + padding: 0.5rem 0.5rem; + border-radius: 0.5rem; + } + .p-dock .p-dock-list-container .p-dock-list { + outline: 0 none; + } + .p-dock .p-dock-item { + padding: 0.5rem; + border-radius: 1px; + } + .p-dock .p-dock-item.p-focus { + outline: 0 none; + outline-offset: 0; + box-shadow: inset 0 0 0 0.15rem #90c9f5; + } + .p-dock .p-dock-link { + width: 4rem; + height: 4rem; + } + .p-dock.p-dock-top .p-dock-item-second-prev, +.p-dock.p-dock-top .p-dock-item-second-next, .p-dock.p-dock-bottom .p-dock-item-second-prev, +.p-dock.p-dock-bottom .p-dock-item-second-next { + margin: 0 0.9rem; + } + .p-dock.p-dock-top .p-dock-item-prev, +.p-dock.p-dock-top .p-dock-item-next, .p-dock.p-dock-bottom .p-dock-item-prev, +.p-dock.p-dock-bottom .p-dock-item-next { + margin: 0 1.3rem; + } + .p-dock.p-dock-top .p-dock-item-current, .p-dock.p-dock-bottom .p-dock-item-current { + margin: 0 1.5rem; + } + .p-dock.p-dock-left .p-dock-item-second-prev, +.p-dock.p-dock-left .p-dock-item-second-next, .p-dock.p-dock-right .p-dock-item-second-prev, +.p-dock.p-dock-right .p-dock-item-second-next { + margin: 0.9rem 0; + } + .p-dock.p-dock-left .p-dock-item-prev, +.p-dock.p-dock-left .p-dock-item-next, .p-dock.p-dock-right .p-dock-item-prev, +.p-dock.p-dock-right .p-dock-item-next { + margin: 1.3rem 0; + } + .p-dock.p-dock-left .p-dock-item-current, .p-dock.p-dock-right .p-dock-item-current { + margin: 1.5rem 0; + } + .p-dock.p-dock-mobile.p-dock-top .p-dock-list-container, .p-dock.p-dock-mobile.p-dock-bottom .p-dock-list-container { + overflow-x: auto; + width: 100%; + } + .p-dock.p-dock-mobile.p-dock-top .p-dock-list-container .p-dock-list, .p-dock.p-dock-mobile.p-dock-bottom .p-dock-list-container .p-dock-list { + margin: 0 auto; + } + .p-dock.p-dock-mobile.p-dock-left .p-dock-list-container, .p-dock.p-dock-mobile.p-dock-right .p-dock-list-container { + overflow-y: auto; + height: 100%; + } + .p-dock.p-dock-mobile.p-dock-left .p-dock-list-container .p-dock-list, .p-dock.p-dock-mobile.p-dock-right .p-dock-list-container .p-dock-list { + margin: auto 0; + } + .p-dock.p-dock-mobile .p-dock-list .p-dock-item { + transform: none; + margin: 0; + } + + .p-megamenu { + padding: 0.5rem; + background: #f2f4f8; + color: #343a3f; + border: 1px solid #dee2e6; + border-radius: 1px; + } + .p-megamenu .p-megamenu-root-list { + outline: 0 none; + } + .p-megamenu .p-menuitem > .p-menuitem-content { + color: #343a3f; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-megamenu .p-menuitem > .p-menuitem-content .p-menuitem-link { + color: #343a3f; + padding: 0.5rem 0.5rem; + user-select: none; + } + .p-megamenu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-megamenu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-icon { + color: #697077; + margin-right: 0.5rem; + } + .p-megamenu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-megamenu .p-menuitem.p-highlight > .p-menuitem-content { + color: #343a3f; + background: #dde1e6; + } + .p-megamenu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-megamenu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-megamenu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-megamenu .p-menuitem.p-highlight.p-focus > .p-menuitem-content { + background: #dde1e6; + } + .p-megamenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content { + color: #343a3f; + background: #d2d6db; + } + .p-megamenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-megamenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-megamenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #343a3f; + } + .p-megamenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover { + color: #343a3f; + background: #dde1e6; + } + .p-megamenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-megamenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-icon, .p-megamenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-megamenu .p-megamenu-panel { + background: #ffffff; + color: #343a3f; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-megamenu .p-submenu-header { + margin: 0; + padding: 0.25rem 0.5rem; + color: #343a3f; + background: #ffffff; + font-weight: 600; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-megamenu .p-submenu-list { + padding: 0.25rem 0; + min-width: 12.5rem; + } + .p-megamenu .p-submenu-list .p-menuitem-separator { + border-top: 1px solid #dee2e6; + margin: 0.25rem 0; + } + .p-megamenu.p-megamenu-vertical { + min-width: 12.5rem; + padding: 0.25rem 0; + } + .p-megamenu.p-megamenu-horizontal .p-megamenu-root-list > .p-menuitem > .p-menuitem-content { + color: #343a3f; + transition: box-shadow 0.2s; + border-radius: 1px; + } + .p-megamenu.p-megamenu-horizontal .p-megamenu-root-list > .p-menuitem > .p-menuitem-content .p-menuitem-link { + padding: 0.5rem 0.5rem; + user-select: none; + } + .p-megamenu.p-megamenu-horizontal .p-megamenu-root-list > .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-megamenu.p-megamenu-horizontal .p-megamenu-root-list > .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-icon { + color: #697077; + margin-right: 0.5rem; + } + .p-megamenu.p-megamenu-horizontal .p-megamenu-root-list > .p-menuitem > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + margin-left: 0.5rem; + } + .p-megamenu.p-megamenu-horizontal .p-megamenu-root-list > .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover { + color: #343a3f; + background: #dde1e6; + } + .p-megamenu.p-megamenu-horizontal .p-megamenu-root-list > .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-megamenu.p-megamenu-horizontal .p-megamenu-root-list > .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-icon, .p-megamenu.p-megamenu-horizontal .p-megamenu-root-list > .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-megamenu.p-megamenu-mobile.p-megamenu-vertical { + width: 100%; + padding: 0.5rem; + } + .p-megamenu.p-megamenu-mobile .p-megamenu-button { + width: 1rem; + height: 1rem; + color: #697077; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-megamenu.p-megamenu-mobile .p-megamenu-button:hover { + color: #697077; + background: #dde1e6; + } + .p-megamenu.p-megamenu-mobile .p-megamenu-button:focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-megamenu.p-megamenu-mobile .p-megamenu-root-list { + padding: 0.25rem 0; + background: #ffffff; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-megamenu.p-megamenu-mobile .p-megamenu-root-list .p-menuitem-separator { + border-top: 1px solid #dee2e6; + margin: 0.25rem 0; + } + .p-megamenu.p-megamenu-mobile .p-megamenu-root-list .p-submenu-icon { + font-size: 0.875rem; + } + .p-megamenu.p-megamenu-mobile .p-megamenu-root-list .p-menuitem .p-menuitem-content .p-menuitem-link .p-submenu-icon { + margin-left: auto; + transition: transform 0.2s; + } + .p-megamenu.p-megamenu-mobile .p-megamenu-root-list .p-menuitem.p-menuitem-active > .p-menuitem-content > .p-menuitem-link > .p-submenu-icon { + transform: rotate(-180deg); + } + .p-megamenu.p-megamenu-mobile .p-megamenu-root-list .p-submenu-list .p-submenu-icon { + transition: transform 0.2s; + transform: rotate(90deg); + } + .p-megamenu.p-megamenu-mobile .p-megamenu-root-list .p-submenu-list .p-menuitem-active > .p-menuitem-content > .p-menuitem-link > .p-submenu-icon { + transform: rotate(-90deg); + } + .p-megamenu.p-megamenu-mobile .p-megamenu-root-list .p-submenu-list .p-menuitem .p-menuitem-content .p-menuitem-link { + padding-left: 1.5rem; + } + + .p-menu { + padding: 0.25rem 0; + background: #ffffff; + color: #343a3f; + border: 1px solid #dee2e6; + border-radius: 1px; + min-width: 12.5rem; + } + .p-menu .p-menuitem > .p-menuitem-content { + color: #343a3f; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-menu .p-menuitem > .p-menuitem-content .p-menuitem-link { + color: #343a3f; + padding: 0.5rem 0.5rem; + user-select: none; + } + .p-menu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-menu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-icon { + color: #697077; + margin-right: 0.5rem; + } + .p-menu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-menu .p-menuitem.p-highlight > .p-menuitem-content { + color: #343a3f; + background: #dde1e6; + } + .p-menu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-menu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-menu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-menu .p-menuitem.p-highlight.p-focus > .p-menuitem-content { + background: #dde1e6; + } + .p-menu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content { + color: #343a3f; + background: #d2d6db; + } + .p-menu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-menu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-menu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #343a3f; + } + .p-menu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover { + color: #343a3f; + background: #dde1e6; + } + .p-menu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-menu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-icon, .p-menu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-menu.p-menu-overlay { + background: #ffffff; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-menu .p-submenu-header { + margin: 0; + padding: 0.25rem 0.5rem; + color: #343a3f; + background: #ffffff; + font-weight: 600; + border-top-right-radius: 0; + border-top-left-radius: 0; + } + .p-menu .p-menuitem-separator { + border-top: 1px solid #dee2e6; + margin: 0.25rem 0; + } + + .p-menubar { + padding: 0.5rem; + background: #f2f4f8; + color: #343a3f; + border: 1px solid #dee2e6; + border-radius: 1px; + } + .p-menubar .p-menubar-root-list { + outline: 0 none; + } + .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-content { + color: #343a3f; + transition: box-shadow 0.2s; + border-radius: 1px; + } + .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-content .p-menuitem-link { + padding: 0.5rem 0.5rem; + user-select: none; + } + .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-icon { + color: #697077; + margin-right: 0.5rem; + } + .p-menubar .p-menubar-root-list > .p-menuitem > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + margin-left: 0.5rem; + } + .p-menubar .p-menubar-root-list > .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover { + color: #343a3f; + background: #dde1e6; + } + .p-menubar .p-menubar-root-list > .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-menubar .p-menubar-root-list > .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menubar-root-list > .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-menubar .p-menuitem > .p-menuitem-content { + color: #343a3f; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-menubar .p-menuitem > .p-menuitem-content .p-menuitem-link { + color: #343a3f; + padding: 0.5rem 0.5rem; + user-select: none; + } + .p-menubar .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-menubar .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-icon { + color: #697077; + margin-right: 0.5rem; + } + .p-menubar .p-menuitem > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-menubar .p-menuitem.p-highlight > .p-menuitem-content { + color: #343a3f; + background: #dde1e6; + } + .p-menubar .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-menubar .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-menubar .p-menuitem.p-highlight.p-focus > .p-menuitem-content { + background: #dde1e6; + } + .p-menubar .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content { + color: #343a3f; + background: #d2d6db; + } + .p-menubar .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-menubar .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #343a3f; + } + .p-menubar .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover { + color: #343a3f; + background: #dde1e6; + } + .p-menubar .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-menubar .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-icon, .p-menubar .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-menubar .p-submenu-list { + padding: 0.25rem 0; + background: #ffffff; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + min-width: 12.5rem; + } + .p-menubar .p-submenu-list .p-menuitem-separator { + border-top: 1px solid #dee2e6; + margin: 0.25rem 0; + } + .p-menubar .p-submenu-list .p-submenu-icon { + font-size: 0.875rem; + } + .p-menubar.p-menubar-mobile .p-menubar-button { + width: 1rem; + height: 1rem; + color: #697077; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-menubar.p-menubar-mobile .p-menubar-button:hover { + color: #697077; + background: #dde1e6; + } + .p-menubar.p-menubar-mobile .p-menubar-button:focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-menubar.p-menubar-mobile .p-menubar-root-list { + padding: 0.25rem 0; + background: #ffffff; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-menubar.p-menubar-mobile .p-menubar-root-list .p-menuitem-separator { + border-top: 1px solid #dee2e6; + margin: 0.25rem 0; + } + .p-menubar.p-menubar-mobile .p-menubar-root-list .p-submenu-icon { + font-size: 0.875rem; + } + .p-menubar.p-menubar-mobile .p-menubar-root-list .p-menuitem .p-menuitem-content .p-menuitem-link .p-submenu-icon { + margin-left: auto; + transition: transform 0.2s; + } + .p-menubar.p-menubar-mobile .p-menubar-root-list .p-menuitem.p-menuitem-active > .p-menuitem-content > .p-menuitem-link > .p-submenu-icon { + transform: rotate(-180deg); + } + .p-menubar.p-menubar-mobile .p-menubar-root-list .p-submenu-list .p-submenu-icon { + transition: transform 0.2s; + transform: rotate(90deg); + } + .p-menubar.p-menubar-mobile .p-menubar-root-list .p-submenu-list .p-menuitem-active > .p-menuitem-content > .p-menuitem-link > .p-submenu-icon { + transform: rotate(-90deg); + } + .p-menubar.p-menubar-mobile .p-menubar-root-list .p-submenu-list .p-menuitem .p-menuitem-content .p-menuitem-link { + padding-left: 1.5rem; + } + .p-menubar.p-menubar-mobile .p-menubar-root-list .p-submenu-list .p-menuitem .p-submenu-list .p-menuitem .p-menuitem-content .p-menuitem-link { + padding-left: 2.5rem; + } + .p-menubar.p-menubar-mobile .p-menubar-root-list .p-submenu-list .p-menuitem .p-submenu-list .p-menuitem .p-submenu-list .p-menuitem .p-menuitem-content .p-menuitem-link { + padding-left: 3.5rem; + } + .p-menubar.p-menubar-mobile .p-menubar-root-list .p-submenu-list .p-menuitem .p-submenu-list .p-menuitem .p-submenu-list .p-menuitem .p-submenu-list .p-menuitem .p-menuitem-content .p-menuitem-link { + padding-left: 4.5rem; + } + .p-menubar.p-menubar-mobile .p-menubar-root-list .p-submenu-list .p-menuitem .p-submenu-list .p-menuitem .p-submenu-list .p-menuitem .p-submenu-list .p-menuitem .p-submenu-list .p-menuitem .p-menuitem-content .p-menuitem-link { + padding-left: 5.5rem; + } + + .p-panelmenu .p-panelmenu-header { + outline: 0 none; + } + .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content { + border: 1px solid #dee2e6; + color: #343a3f; + background: #f2f4f8; + border-radius: 1px; + transition: box-shadow 0.2s; + } + .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-panelmenu-header-action { + color: #343a3f; + padding: 0.75rem; + font-weight: 600; + } + .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-panelmenu-header-action .p-submenu-icon { + margin-right: 0.5rem; + } + .p-panelmenu .p-panelmenu-header .p-panelmenu-header-content .p-panelmenu-header-action .p-menuitem-icon { + margin-right: 0.5rem; + } + .p-panelmenu .p-panelmenu-header:not(.p-disabled):focus-visible .p-panelmenu-header-content { + outline: 0 none; + outline-offset: 0; + box-shadow: inset 0 0 0 0.2rem #90c9f5; + } + .p-panelmenu .p-panelmenu-header:not(.p-highlight):not(.p-disabled):hover .p-panelmenu-header-content { + background: #dde1e6; + border-color: #dee2e6; + color: #343a3f; + } + .p-panelmenu .p-panelmenu-header:not(.p-disabled).p-highlight .p-panelmenu-header-content { + background: #f2f4f8; + border-color: #dee2e6; + color: #343a3f; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + margin-bottom: 0; + } + .p-panelmenu .p-panelmenu-header:not(.p-disabled).p-highlight:hover .p-panelmenu-header-content { + border-color: #dee2e6; + background: #dde1e6; + color: #343a3f; + } + .p-panelmenu .p-panelmenu-content { + padding: 0.25rem 0; + border: 1px solid #dee2e6; + background: #ffffff; + color: #343a3f; + border-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + .p-panelmenu .p-panelmenu-content .p-panelmenu-root-list { + outline: 0 none; + } + .p-panelmenu .p-panelmenu-content .p-menuitem > .p-menuitem-content { + color: #343a3f; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-panelmenu .p-panelmenu-content .p-menuitem > .p-menuitem-content .p-menuitem-link { + color: #343a3f; + padding: 0.5rem 0.5rem; + user-select: none; + } + .p-panelmenu .p-panelmenu-content .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-panelmenu .p-panelmenu-content .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-icon { + color: #697077; + margin-right: 0.5rem; + } + .p-panelmenu .p-panelmenu-content .p-menuitem > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-panelmenu .p-panelmenu-content .p-menuitem.p-highlight > .p-menuitem-content { + color: #343a3f; + background: #dde1e6; + } + .p-panelmenu .p-panelmenu-content .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-panelmenu .p-panelmenu-content .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-panelmenu .p-panelmenu-content .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-panelmenu .p-panelmenu-content .p-menuitem.p-highlight.p-focus > .p-menuitem-content { + background: #dde1e6; + } + .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content { + color: #343a3f; + background: #d2d6db; + } + .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #343a3f; + } + .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover { + color: #343a3f; + background: #dde1e6; + } + .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-icon, .p-panelmenu .p-panelmenu-content .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-panelmenu .p-panelmenu-content .p-menuitem .p-menuitem-content .p-menuitem-link .p-submenu-icon { + margin-right: 0.5rem; + } + .p-panelmenu .p-panelmenu-content .p-menuitem-separator { + border-top: 1px solid #dee2e6; + margin: 0.25rem 0; + } + .p-panelmenu .p-panelmenu-content .p-submenu-list:not(.p-panelmenu-root-list) { + padding: 0 0 0 1rem; + } + .p-panelmenu .p-panelmenu-panel { + margin-bottom: 0; + } + .p-panelmenu .p-panelmenu-panel .p-panelmenu-header .p-panelmenu-header-content { + border-radius: 0; + } + .p-panelmenu .p-panelmenu-panel .p-panelmenu-content { + border-radius: 0; + } + .p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header .p-panelmenu-header-content { + border-top: 0 none; + } + .p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-highlight):not(.p-disabled):hover .p-panelmenu-header-content, .p-panelmenu .p-panelmenu-panel:not(:first-child) .p-panelmenu-header:not(.p-disabled).p-highlight:hover .p-panelmenu-header-content { + border-top: 0 none; + } + .p-panelmenu .p-panelmenu-panel:first-child .p-panelmenu-header .p-panelmenu-header-content { + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-header:not(.p-highlight) .p-panelmenu-header-content { + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + .p-panelmenu .p-panelmenu-panel:last-child .p-panelmenu-content { + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + + .p-steps .p-steps-item .p-menuitem-link { + background: transparent; + transition: box-shadow 0.2s; + border-radius: 1px; + background: #ffffff; + } + .p-steps .p-steps-item .p-menuitem-link .p-steps-number { + color: #343a3f; + border: 1px solid #dde1e6; + background: #ffffff; + min-width: 2rem; + height: 2rem; + line-height: 2rem; + font-size: 1.143rem; + z-index: 1; + border-radius: 50%; + } + .p-steps .p-steps-item .p-menuitem-link .p-steps-title { + margin-top: 0.5rem; + color: #697077; + } + .p-steps .p-steps-item .p-menuitem-link:not(.p-disabled):focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-steps .p-steps-item.p-highlight .p-steps-number { + background: #44A1D9; + color: #ffffff; + } + .p-steps .p-steps-item.p-highlight .p-steps-title { + font-weight: 600; + color: #343a3f; + } + .p-steps .p-steps-item:before { + content: " "; + border-top: 1px solid #dee2e6; + width: 100%; + top: 50%; + left: 0; + display: block; + position: absolute; + margin-top: -1rem; + } + + .p-tabmenu .p-tabmenu-nav { + background: #ffffff; + border: 1px solid #dee2e6; + border-width: 0 0 2px 0; + } + .p-tabmenu .p-tabmenu-nav .p-tabmenuitem { + margin-right: 0; + } + .p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link { + border: solid #dee2e6; + border-width: 0 0 2px 0; + border-color: transparent transparent #dee2e6 transparent; + background: #ffffff; + color: #697077; + padding: 0.75rem; + font-weight: 600; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + transition: box-shadow 0.2s; + margin: 0 0 -2px 0; + } + .p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link .p-menuitem-icon { + margin-right: 0.5rem; + } + .p-tabmenu .p-tabmenu-nav .p-tabmenuitem .p-menuitem-link:not(.p-disabled):focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: inset 0 0 0 0.2rem #90c9f5; + } + .p-tabmenu .p-tabmenu-nav .p-tabmenuitem:not(.p-highlight):not(.p-disabled):hover .p-menuitem-link { + background: #ffffff; + border-color: #697077; + color: #697077; + } + .p-tabmenu .p-tabmenu-nav .p-tabmenuitem.p-highlight .p-menuitem-link { + background: #ffffff; + border-color: #1174c0; + color: #1174c0; + } + + .p-tieredmenu { + padding: 0.25rem 0; + background: #ffffff; + color: #343a3f; + border: 1px solid #dee2e6; + border-radius: 1px; + min-width: 12.5rem; + } + .p-tieredmenu.p-tieredmenu-overlay { + background: #ffffff; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-tieredmenu .p-tieredmenu-root-list { + outline: 0 none; + } + .p-tieredmenu .p-submenu-list { + padding: 0.25rem 0; + background: #ffffff; + border: 0 none; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + } + .p-tieredmenu .p-menuitem > .p-menuitem-content { + color: #343a3f; + transition: box-shadow 0.2s; + border-radius: 0; + } + .p-tieredmenu .p-menuitem > .p-menuitem-content .p-menuitem-link { + color: #343a3f; + padding: 0.5rem 0.5rem; + user-select: none; + } + .p-tieredmenu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-tieredmenu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-menuitem-icon { + color: #697077; + margin-right: 0.5rem; + } + .p-tieredmenu .p-menuitem > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-tieredmenu .p-menuitem.p-highlight > .p-menuitem-content { + color: #343a3f; + background: #dde1e6; + } + .p-tieredmenu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-tieredmenu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-tieredmenu .p-menuitem.p-highlight > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-tieredmenu .p-menuitem.p-highlight.p-focus > .p-menuitem-content { + background: #dde1e6; + } + .p-tieredmenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content { + color: #343a3f; + background: #d2d6db; + } + .p-tieredmenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-tieredmenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-menuitem-icon, .p-tieredmenu .p-menuitem:not(.p-highlight):not(.p-disabled).p-focus > .p-menuitem-content .p-menuitem-link .p-submenu-icon { + color: #343a3f; + } + .p-tieredmenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover { + color: #343a3f; + background: #dde1e6; + } + .p-tieredmenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-text { + color: #343a3f; + } + .p-tieredmenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-menuitem-icon, .p-tieredmenu .p-menuitem:not(.p-highlight):not(.p-disabled) > .p-menuitem-content:hover .p-menuitem-link .p-submenu-icon { + color: #697077; + } + .p-tieredmenu .p-menuitem-separator { + border-top: 1px solid #dee2e6; + margin: 0.25rem 0; + } + .p-tieredmenu .p-submenu-icon { + font-size: 0.875rem; + } + .p-tieredmenu .p-submenu-icon.p-icon { + width: 0.875rem; + height: 0.875rem; + } + + .p-inline-message { + padding: 0.25rem 0.25rem; + margin: 0; + border-radius: 1px; + } + .p-inline-message.p-inline-message-info { + background: #CDF2FB; + border: solid #11add3; + border-width: 0px; + color: #08576a; + } + .p-inline-message.p-inline-message-info .p-inline-message-icon { + color: #08576a; + } + .p-inline-message.p-inline-message-success { + background: #D7F8D3; + border: solid #32c620; + border-width: 0px; + color: #196310; + } + .p-inline-message.p-inline-message-success .p-inline-message-icon { + color: #196310; + } + .p-inline-message.p-inline-message-warn { + background: #FEF8D6; + border: solid #e4c306; + border-width: 0px; + color: #726203; + } + .p-inline-message.p-inline-message-warn .p-inline-message-icon { + color: #726203; + } + .p-inline-message.p-inline-message-error { + background: #FDDED2; + border: solid #de450a; + border-width: 0px; + color: #6f2205; + } + .p-inline-message.p-inline-message-error .p-inline-message-icon { + color: #6f2205; + } + .p-inline-message .p-inline-message-icon { + font-size: 1rem; + margin-right: 0.5rem; + } + .p-inline-message .p-inline-message-text { + font-size: 1rem; + } + .p-inline-message.p-inline-message-icon-only .p-inline-message-icon { + margin-right: 0; + } + + .p-message { + margin: 1rem 0; + border-radius: 1px; + } + .p-message .p-message-wrapper { + padding: 1rem 1.5rem; + } + .p-message .p-message-close { + width: 1rem; + height: 1rem; + border-radius: 50%; + background: transparent; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-message .p-message-close:hover { + background: rgba(255, 255, 255, 0.5); + } + .p-message .p-message-close:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-message.p-message-info { + background: #CDF2FB; + border: solid #11add3; + border-width: 0 0 0 6px; + color: #08576a; + } + .p-message.p-message-info .p-message-icon { + color: #08576a; + } + .p-message.p-message-info .p-message-close { + color: #08576a; + } + .p-message.p-message-success { + background: #D7F8D3; + border: solid #32c620; + border-width: 0 0 0 6px; + color: #196310; + } + .p-message.p-message-success .p-message-icon { + color: #196310; + } + .p-message.p-message-success .p-message-close { + color: #196310; + } + .p-message.p-message-warn { + background: #FEF8D6; + border: solid #e4c306; + border-width: 0 0 0 6px; + color: #726203; + } + .p-message.p-message-warn .p-message-icon { + color: #726203; + } + .p-message.p-message-warn .p-message-close { + color: #726203; + } + .p-message.p-message-error { + background: #FDDED2; + border: solid #de450a; + border-width: 0 0 0 6px; + color: #6f2205; + } + .p-message.p-message-error .p-message-icon { + color: #6f2205; + } + .p-message.p-message-error .p-message-close { + color: #6f2205; + } + .p-message .p-message-text { + font-size: 1rem; + font-weight: 500; + } + .p-message .p-message-icon { + font-size: 1.5rem; + margin-right: 0.5rem; + } + .p-message .p-icon:not(.p-message-close-icon) { + width: 1.5rem; + height: 1.5rem; + } + + .p-toast { + opacity: 0.9; + } + .p-toast .p-toast-message { + margin: 0 0 1rem 0; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + border-radius: 1px; + } + .p-toast .p-toast-message .p-toast-message-content { + padding: 1rem; + border-width: 0 0 0 6px; + } + .p-toast .p-toast-message .p-toast-message-content .p-toast-message-text { + margin: 0 0 0 1rem; + } + .p-toast .p-toast-message .p-toast-message-content .p-toast-message-icon { + font-size: 2rem; + } + .p-toast .p-toast-message .p-toast-message-content .p-toast-message-icon.p-icon { + width: 2rem; + height: 2rem; + } + .p-toast .p-toast-message .p-toast-message-content .p-toast-summary { + font-weight: 700; + } + .p-toast .p-toast-message .p-toast-message-content .p-toast-detail { + margin: 0.5rem 0 0 0; + } + .p-toast .p-toast-message .p-toast-icon-close { + width: 2rem; + height: 2rem; + border-radius: 50%; + background: transparent; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-toast .p-toast-message .p-toast-icon-close:hover { + background: rgba(255, 255, 255, 0.5); + } + .p-toast .p-toast-message .p-toast-icon-close:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-toast .p-toast-message.p-toast-message-info { + background: #CDF2FB; + border: solid #11add3; + border-width: 0 0 0 6px; + color: #08576a; + } + .p-toast .p-toast-message.p-toast-message-info .p-toast-message-icon, +.p-toast .p-toast-message.p-toast-message-info .p-toast-icon-close { + color: #08576a; + } + .p-toast .p-toast-message.p-toast-message-success { + background: #D7F8D3; + border: solid #32c620; + border-width: 0 0 0 6px; + color: #196310; + } + .p-toast .p-toast-message.p-toast-message-success .p-toast-message-icon, +.p-toast .p-toast-message.p-toast-message-success .p-toast-icon-close { + color: #196310; + } + .p-toast .p-toast-message.p-toast-message-warn { + background: #FEF8D6; + border: solid #e4c306; + border-width: 0 0 0 6px; + color: #726203; + } + .p-toast .p-toast-message.p-toast-message-warn .p-toast-message-icon, +.p-toast .p-toast-message.p-toast-message-warn .p-toast-icon-close { + color: #726203; + } + .p-toast .p-toast-message.p-toast-message-error { + background: #FDDED2; + border: solid #de450a; + border-width: 0 0 0 6px; + color: #6f2205; + } + .p-toast .p-toast-message.p-toast-message-error .p-toast-message-icon, +.p-toast .p-toast-message.p-toast-message-error .p-toast-icon-close { + color: #6f2205; + } + + .p-galleria .p-galleria-close { + margin: 0.5rem; + background: transparent; + color: #f2f4f8; + width: 4rem; + height: 4rem; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + border-radius: 50%; + } + .p-galleria .p-galleria-close .p-galleria-close-icon { + font-size: 2rem; + } + .p-galleria .p-galleria-close .p-icon { + width: 2rem; + height: 2rem; + } + .p-galleria .p-galleria-close:hover { + background: rgba(255, 255, 255, 0.1); + color: #f2f4f8; + } + .p-galleria .p-galleria-item-nav { + background: transparent; + color: #f2f4f8; + width: 4rem; + height: 4rem; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + border-radius: 1px; + margin: 0 0.5rem; + } + .p-galleria .p-galleria-item-nav .p-galleria-item-prev-icon, +.p-galleria .p-galleria-item-nav .p-galleria-item-next-icon { + font-size: 2rem; + } + .p-galleria .p-galleria-item-nav .p-icon { + width: 2rem; + height: 2rem; + } + .p-galleria .p-galleria-item-nav:not(.p-disabled):hover { + background: rgba(255, 255, 255, 0.1); + color: #f2f4f8; + } + .p-galleria .p-galleria-caption { + background: rgba(0, 0, 0, 0.5); + color: #f2f4f8; + padding: 1rem; + } + .p-galleria .p-galleria-indicators { + padding: 1rem; + } + .p-galleria .p-galleria-indicators .p-galleria-indicator button { + background-color: #dde1e6; + width: 1rem; + height: 1rem; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + border-radius: 50%; + } + .p-galleria .p-galleria-indicators .p-galleria-indicator button:hover { + background: #dee2e6; + } + .p-galleria .p-galleria-indicators .p-galleria-indicator.p-highlight button { + background: #44A1D9; + color: #ffffff; + } + .p-galleria.p-galleria-indicators-bottom .p-galleria-indicator, .p-galleria.p-galleria-indicators-top .p-galleria-indicator { + margin-right: 0.5rem; + } + .p-galleria.p-galleria-indicators-left .p-galleria-indicator, .p-galleria.p-galleria-indicators-right .p-galleria-indicator { + margin-bottom: 0.5rem; + } + .p-galleria.p-galleria-indicator-onitem .p-galleria-indicators { + background: rgba(0, 0, 0, 0.5); + } + .p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button { + background: rgba(255, 255, 255, 0.4); + } + .p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator button:hover { + background: rgba(255, 255, 255, 0.6); + } + .p-galleria.p-galleria-indicator-onitem .p-galleria-indicators .p-galleria-indicator.p-highlight button { + background: #44A1D9; + color: #ffffff; + } + .p-galleria .p-galleria-thumbnail-container { + background: rgba(0, 0, 0, 0.9); + padding: 1rem 0.25rem; + } + .p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev, +.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next { + margin: 0.5rem; + background-color: transparent; + color: #f2f4f8; + width: 2rem; + height: 2rem; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + border-radius: 50%; + } + .p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-prev:hover, +.p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-next:hover { + background: rgba(255, 255, 255, 0.1); + color: #f2f4f8; + } + .p-galleria .p-galleria-thumbnail-container .p-galleria-thumbnail-item-content:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + + .p-galleria-mask { + --maskbg: rgba(0, 0, 0, 0.9); + } + + .p-image-mask { + --maskbg: rgba(0, 0, 0, 0.9); + } + + .p-image-preview-indicator { + background-color: transparent; + color: #f8f9fa; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-image-preview-indicator .p-icon { + width: 1.5rem; + height: 1.5rem; + } + + .p-image-preview-container:hover > .p-image-preview-indicator { + background-color: rgba(0, 0, 0, 0.5); + } + + .p-image-toolbar { + padding: 1rem; + } + + .p-image-action.p-link { + color: #f8f9fa; + background-color: transparent; + width: 3rem; + height: 3rem; + border-radius: 50%; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + margin-right: 0.5rem; + } + .p-image-action.p-link:last-child { + margin-right: 0; + } + .p-image-action.p-link:hover { + color: #f8f9fa; + background-color: rgba(255, 255, 255, 0.1); + } + .p-image-action.p-link i { + font-size: 1.5rem; + } + .p-image-action.p-link .p-icon { + width: 1.5rem; + height: 1.5rem; + } + + .p-avatar { + background-color: #dee2e6; + border-radius: 1px; + } + .p-avatar.p-avatar-lg { + width: 3rem; + height: 3rem; + font-size: 1.5rem; + } + .p-avatar.p-avatar-lg .p-avatar-icon { + font-size: 1.5rem; + } + .p-avatar.p-avatar-xl { + width: 4rem; + height: 4rem; + font-size: 2rem; + } + .p-avatar.p-avatar-xl .p-avatar-icon { + font-size: 2rem; + } + + .p-avatar-group .p-avatar { + border: 2px solid #ffffff; + } + + .p-badge { + background: #1174c0; + color: #ffffff; + font-size: 0.75rem; + font-weight: 700; + min-width: 1.5rem; + height: 1.5rem; + line-height: 1.5rem; + } + .p-badge.p-badge-secondary { + background-color: #697077; + color: #ffffff; + } + .p-badge.p-badge-success { + background-color: #207f3b; + color: #ffffff; + } + .p-badge.p-badge-info { + background-color: #107d79; + color: #ffffff; + } + .p-badge.p-badge-warning { + background-color: #f0c135; + color: #212529; + } + .p-badge.p-badge-danger { + background-color: #d8222f; + color: #ffffff; + } + .p-badge.p-badge-lg { + font-size: 1.125rem; + min-width: 2.25rem; + height: 2.25rem; + line-height: 2.25rem; + } + .p-badge.p-badge-xl { + font-size: 1.5rem; + min-width: 3rem; + height: 3rem; + line-height: 3rem; + } + + .p-chip { + background-color: #dee2e6; + color: #343a3f; + border-radius: 16px; + padding: 0 0.25rem; + } + .p-chip .p-chip-text { + line-height: 1.5; + margin-top: 0.125rem; + margin-bottom: 0.125rem; + } + .p-chip .p-chip-icon { + margin-right: 0.5rem; + } + .p-chip img { + width: 1.75rem; + height: 1.75rem; + margin-left: -0.25rem; + margin-right: 0.5rem; + } + .p-chip .p-chip-remove-icon { + margin-left: 0.5rem; + border-radius: 1px; + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-chip .p-chip-remove-icon:focus-visible { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + .p-chip .p-chip-remove-icon:focus { + outline: 0 none; + } + + .p-inplace .p-inplace-display { + padding: 0.25rem 0.25rem; + border-radius: 1px; + transition: background-color 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s; + } + .p-inplace .p-inplace-display:not(.p-disabled):hover { + background: #dde1e6; + color: #343a3f; + } + .p-inplace .p-inplace-display:focus { + outline: 0 none; + outline-offset: 0; + box-shadow: 0 0 0 0.2rem #90c9f5; + } + + .p-progressbar { + border: 0 none; + height: 1.5rem; + background: #dee2e6; + border-radius: 1px; + } + .p-progressbar .p-progressbar-value { + border: 0 none; + margin: 0; + background: #1174c0; + } + .p-progressbar .p-progressbar-label { + color: #ffffff; + line-height: 1.5rem; + } + + .p-progress-spinner-svg { + animation: p-progress-spinner-rotate 2s linear infinite; + } + + .p-progress-spinner-circle { + stroke-dasharray: 89, 200; + stroke-dashoffset: 0; + stroke: #6f2205; + animation: p-progress-spinner-dash 1.5s ease-in-out infinite, p-progress-spinner-color 6s ease-in-out infinite; + stroke-linecap: round; + } + + @keyframes p-progress-spinner-rotate { + 100% { + transform: rotate(360deg); + } + } + @keyframes p-progress-spinner-dash { + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + } + 100% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -124px; + } + } + @keyframes p-progress-spinner-color { + 100%, 0% { + stroke: #6f2205; + } + 40% { + stroke: #08576a; + } + 66% { + stroke: #196310; + } + 80%, 90% { + stroke: #726203; + } + } + .p-scrolltop { + width: 2rem; + height: 2rem; + border-radius: 1px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + transition: background-color 0.2s, color 0.2s, box-shadow 0.2s; + } + .p-scrolltop.p-link { + background: rgba(0, 0, 0, 0.7); + } + .p-scrolltop.p-link:hover { + background: rgba(0, 0, 0, 0.8); + } + .p-scrolltop .p-scrolltop-icon { + font-size: 1rem; + color: #f2f4f8; + } + .p-scrolltop .p-scrolltop-icon.p-icon { + width: 1rem; + height: 1rem; + } + + .p-skeleton { + background-color: #dde1e6; + border-radius: 1px; + } + .p-skeleton:after { + background: linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0)); + } + + .p-tag { + background: #1174c0; + color: #ffffff; + font-size: 0.75rem; + font-weight: 700; + padding: 0.25rem 0.4rem; + border-radius: 1px; + } + .p-tag.p-tag-success { + background-color: #207f3b; + color: #ffffff; + } + .p-tag.p-tag-info { + background-color: #107d79; + color: #ffffff; + } + .p-tag.p-tag-warning { + background-color: #f0c135; + color: #212529; + } + .p-tag.p-tag-danger { + background-color: #d8222f; + color: #ffffff; + } + .p-tag .p-tag-icon { + margin-right: 0.25rem; + font-size: 0.75rem; + } + .p-tag .p-tag-icon.p-icon { + width: 0.75rem; + height: 0.75rem; + } + + .p-terminal { + background: #ffffff; + color: #343a3f; + border: 1px solid #dee2e6; + padding: 0.5rem; + } + .p-terminal .p-terminal-input { + font-family: var(--font-family); + font-feature-settings: var(--font-feature-settings, normal); + font-size: 1rem; + } +} +@layer primevue { + .p-selectbutton > .p-button, +.p-togglebutton.p-button { + transition: background-color 0.2s, border-color 0.2s, box-shadow 0.2s; + } +} diff --git a/frontends/member_module/src/App.vue b/frontends/member_module/src/App.vue index 05d6925..4488908 100644 --- a/frontends/member_module/src/App.vue +++ b/frontends/member_module/src/App.vue @@ -15,7 +15,7 @@ - +
@@ -26,9 +26,11 @@
-
-


- +
+
+


+ +
@@ -44,12 +46,14 @@ import {useToast} from "primevue/usetoast"; import {useRouter} from "vue-router"; import Navigation from "@/components/Navigation.vue"; import {useAppStore} from "@/store/app"; +import {useTwoFactorStore} from "@/store/twoFactor"; const toaster = useToast(); const app = getCurrentInstance(); const progress = app?.appContext.config.globalProperties.$Progress ?? ''; const router = useRouter(); const appStore = useAppStore(); +const twoFactorStore = useTwoFactorStore(); /* eslint-disable no-unused-vars */ router.beforeEach((to, from, next) => { @@ -95,3 +99,16 @@ async function loadConfiguration() { } + + diff --git a/frontends/member_module/src/api/command/subscription/markSubscriptionAsFinished.ts b/frontends/member_module/src/api/command/subscription/markSubscriptionAsFinished.ts new file mode 100644 index 0000000..6ff4888 --- /dev/null +++ b/frontends/member_module/src/api/command/subscription/markSubscriptionAsFinished.ts @@ -0,0 +1,21 @@ +/* + * This file is part of the Yoshi-Kan software. + * + * (c) Koen Caerels + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import axios from "axios"; + +export interface MarkSubscriptionAsFinishedCommand { + id: number; +} + +export async function markSubscriptionAsFinished(command: MarkSubscriptionAsFinishedCommand) { + const formData = new FormData(); + formData.append('command', JSON.stringify(command)); + const response = await axios.post(`/subscription/${command.id}/mark-as-finished`, formData); + return response.data; +} diff --git a/frontends/member_module/src/api/command/subscription/newMemberWebSubscription.ts b/frontends/member_module/src/api/command/subscription/newMemberWebSubscription.ts new file mode 100644 index 0000000..67dca8c --- /dev/null +++ b/frontends/member_module/src/api/command/subscription/newMemberWebSubscription.ts @@ -0,0 +1,75 @@ +/* + * This file is part of the Yoshi-Kan software. + * + * (c) Koen Caerels + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import axios from "axios"; + +export interface NewMemberWebSubscriptionCommand { + + subscriptionId: number; + memberId: number; + + type: string; + federationId: number; + locationId: number; + + contactFirstname: string; + contactLastname: string; + contactEmail: string; + contactPhone: string; + + addressStreet: string; + addressNumber: string; + addressBox: string; + addressZip: string; + addressCity: string; + + firstname: string; + lastname: string; + email: string; + nationalRegisterNumber: string; + dateOfBirthDD: '', + dateOfBirthMM: '', + dateOfBirthYYYY: '', + dateOfBirth: Date; + gender: string; + + memberSubscriptionStart: Date; + memberSubscriptionStartMM: string; + memberSubscriptionStartYY: string; + memberSubscriptionEnd: Date; + memberSubscriptionTotal: number; + memberSubscriptionIsPartSubscription: boolean; + memberSubscriptionIsHalfYear: boolean; + memberSubscriptionIsPayed: boolean; + + licenseStart: Date; + licenseStartMM: string; + licenseStartYY: string; + licenseEnd: Date; + licenseTotal: number; + licenseIsPartSubscription: boolean; + licenseIsPayed: boolean; + + numberOfTraining: number; + isExtraTraining: boolean; + isNewMember: boolean; + isReductionFamily: boolean; + + total: number; + remarks: string; + + isJudogiBelt: boolean; +} + +export async function newMemberWebSubscription(command: NewMemberWebSubscriptionCommand) { + const formData = new FormData(); + formData.append('command', JSON.stringify(command)); + const response = await axios.post(`/member/confirm-web-subscription`, formData); + return response.data; +} diff --git a/frontends/member_module/src/api/query/enum.ts b/frontends/member_module/src/api/query/enum.ts index 1dfab50..6bbd151 100644 --- a/frontends/member_module/src/api/query/enum.ts +++ b/frontends/member_module/src/api/query/enum.ts @@ -12,6 +12,7 @@ export const SubscriptionStatusEnum: SubscriptionStatus = { PAYED: 'betaald', COMPLETE: 'afgewerkt', CANCELED: 'canceled', + ARCHIVED: 'archived', }; type SubscriptionItemType = { diff --git a/frontends/member_module/src/api/query/model.ts b/frontends/member_module/src/api/query/model.ts index e328729..5b6da98 100644 --- a/frontends/member_module/src/api/query/model.ts +++ b/frontends/member_module/src/api/query/model.ts @@ -119,6 +119,7 @@ export interface Subscription { memberSubscriptionEnd: Date; memberSubscriptionTotal: number; memberSubscriptionIsPartSubscription: boolean; + memberSubscriptionIsHalfYear: boolean; licenseStart: Date; licenseEnd: Date; licenseTotal: number; diff --git a/frontends/member_module/src/assets/active.png b/frontends/member_module/src/assets/active.png new file mode 100644 index 0000000..a24206a Binary files /dev/null and b/frontends/member_module/src/assets/active.png differ diff --git a/frontends/member_module/src/assets/euro.png b/frontends/member_module/src/assets/euro.png new file mode 100644 index 0000000..d43fac2 Binary files /dev/null and b/frontends/member_module/src/assets/euro.png differ diff --git a/frontends/member_module/src/assets/lock.png b/frontends/member_module/src/assets/lock.png new file mode 100644 index 0000000..38f27f0 Binary files /dev/null and b/frontends/member_module/src/assets/lock.png differ diff --git a/frontends/member_module/src/assets/tailwind.css b/frontends/member_module/src/assets/tailwind.css index a60c3a2..e88014c 100644 --- a/frontends/member_module/src/assets/tailwind.css +++ b/frontends/member_module/src/assets/tailwind.css @@ -7,6 +7,10 @@ * file that was distributed with this source code. */ +@tailwind base; +@tailwind components; +@tailwind utilities; + /*@layer tailwind-base, primevue, tailwind-utilities;*/ /*@layer tailwind-base {*/ @@ -14,10 +18,6 @@ /*}*/ /*@layer tailwind-utilities {*/ +/* @tailwind components;*/ /* @tailwind utilities;*/ -/* @tailwind variants;*/ /*}*/ - -@tailwind base; -@tailwind utilities; -@tailwind variants; diff --git a/frontends/member_module/src/components/Navigation.vue b/frontends/member_module/src/components/Navigation.vue index cb3c178..6ca41b7 100644 --- a/frontends/member_module/src/components/Navigation.vue +++ b/frontends/member_module/src/components/Navigation.vue @@ -23,7 +23,7 @@ const items = computed(() => { { label: 'Dashboard', icon: 'pi pi-chart-bar', - to: '/' + to: '/dashboard' }, { label: 'Actieve leden', diff --git a/frontends/member_module/src/components/NavigationSubscription.vue b/frontends/member_module/src/components/NavigationSubscription.vue index 06b7b73..2dae5d9 100644 --- a/frontends/member_module/src/components/NavigationSubscription.vue +++ b/frontends/member_module/src/components/NavigationSubscription.vue @@ -31,7 +31,7 @@ const items = computed(() => { to: '/inschrijvingen/te-betalen' }, { - label: 'Archief', + label: 'Betaald & Afgewerkt', icon: 'pi pi-bars', to: '/inschrijvingen/archief' }, diff --git a/frontends/member_module/src/components/member/dialogChangeDetails.vue b/frontends/member_module/src/components/member/dialogChangeDetails.vue index 5c55e38..4d6c50f 100644 --- a/frontends/member_module/src/components/member/dialogChangeDetails.vue +++ b/frontends/member_module/src/components/member/dialogChangeDetails.vue @@ -1,17 +1,9 @@