diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache
deleted file mode 100644
index c755981..0000000
--- a/.php-cs-fixer.cache
+++ /dev/null
@@ -1 +0,0 @@
-{"php":"8.0.26","version":"3.4.0:v3.4.0#47177af1cfb9dab5d1cc4daf91b7179c2efe7fad","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_import_per_statement":true,"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"Form\/ConfigType.php":19058774,"Form\/NewCardType.php":3793831916,"Config\/config.php":368098779,"Integration\/TrelloIntegration.php":1158009855,"MauticTrelloBundle.php":2713656222,"Tests\/Mock\/DefaultApiMock.php":2439438375,"Tests\/Service\/TrelloApiServiceMockTest.php":874734016,"Tests\/Service\/TrelloApiServicePrismTest.php":1075978767,"Openapi\/lib\/HeaderSelector.php":3654682874,"Openapi\/lib\/Configuration.php":3586641627,"Openapi\/lib\/ObjectSerializer.php":656892106,"Openapi\/lib\/ApiException.php":2269337582,"Openapi\/lib\/Model\/Card.php":3489467565,"Openapi\/lib\/Model\/TrelloList.php":4270783466,"Openapi\/lib\/Model\/CardAllOf.php":2247444146,"Openapi\/lib\/Model\/TrelloBoard.php":1994243106,"Openapi\/lib\/Model\/NewCard.php":1584944330,"Openapi\/lib\/Model\/ModelInterface.php":1459528307,"Openapi\/lib\/Model\/CardErrorData.php":2326102164,"Openapi\/lib\/Model\/CardError.php":1361456616,"Openapi\/lib\/Api\/DefaultApi.php":1708441157,"Controller\/CardController.php":3513245451,"Service\/TrelloApiService.php":2863013212,"Views\/Card\/new.html.php":1942058078,"Views\/FormTheme\/Config\/_config_trello_config_widget.html.php":676640478,"Event\/ConfigSubscriber.php":584458027,"Event\/ButtonSubscriber.php":850402659}}
\ No newline at end of file
diff --git a/Config/config.php b/Config/config.php
index 78e39c2..2997b48 100644
--- a/Config/config.php
+++ b/Config/config.php
@@ -1,27 +1,24 @@
'Mautic Trello',
'description' => 'Create Trello cards from Mautic contacts',
- 'version' => '1.0.0',
+ 'version' => '2.0.0',
'author' => 'Aivie',
'routes' => [
'main' => [
'plugin_create_cards_show_new' => [
'path' => '/trello/card/show-new/{contactId}',
- 'controller' => 'MauticTrelloBundle:Card:showNewCard',
+ 'controller' => 'MauticPlugin\MauticTrelloBundle\Controller\CardController::showNewCardAction',
],
'plugin_trello_card_add' => [
'path' => '/trello/card',
'method' => 'POST',
- 'controller' => 'MauticTrelloBundle:Card:add',
+ 'controller' => 'MauticPlugin\MauticTrelloBundle\Controller\CardController::addAction',
'returnRoute' => '',
],
],
@@ -30,71 +27,20 @@
'favorite_board' => '',
],
'services' => [
- 'forms' => [
- 'mautic.trello.form.card' => [
- 'class' => 'MauticPlugin\MauticTrelloBundle\Form\NewCardType',
- 'arguments' => [
- 'mautic.trello.service.trello_api',
- 'monolog.logger.mautic',
- ],
- ],
- 'mautic.trello.form.config' => [
- 'class' => 'MauticPlugin\MauticTrelloBundle\Form\ConfigType',
- 'arguments' => [
- 'mautic.lead.model.field',
- 'mautic.trello.service.trello_api',
- 'monolog.logger.mautic',
- ],
- ],
- ],
- 'events' => [
- 'mautic.channel.button.subscriber.trello' => [
- 'class' => \MauticPlugin\MauticTrelloBundle\Event\ButtonSubscriber::class,
- 'arguments' => [
- 'router',
- 'translator',
- 'request_stack',
- 'mautic.helper.integration',
- ],
- ],
- 'mautic.trello.event.config' => [
- 'class' => \MauticPlugin\MauticTrelloBundle\Event\ConfigSubscriber::class,
- 'arguments' => [
- 'mautic.helper.integration',
- 'monolog.logger.mautic',
- ],
- ],
- ],
- 'others' => [
- 'mautic.trello.service.trello_api' => [
- 'class' => \MauticPlugin\MauticTrelloBundle\Service\TrelloApiService::class,
- 'arguments' => [
- 'mautic.helper.integration',
- 'mautic.helper.core_parameters',
- 'monolog.logger.mautic',
+ 'integrations' => [
+ // Basic definitions with name, display name and icon
+ 'mautic.integration.trello' => [
+ 'class' => TrelloIntegration::class,
+ 'tags' => [
+ 'mautic.integration',
+ 'mautic.basic_integration',
],
],
- ],
- 'integrations' => [
- 'mautic.integration.trello' => [
- 'class' => \MauticPlugin\MauticTrelloBundle\Integration\TrelloIntegration::class,
- 'arguments' => [
- 'event_dispatcher',
- 'mautic.helper.cache_storage',
- 'doctrine.orm.entity_manager',
- 'session',
- 'request_stack',
- 'router',
- 'translator',
- 'logger',
- 'mautic.helper.encryption',
- 'mautic.lead.model.lead',
- 'mautic.lead.model.company',
- 'mautic.helper.paths',
- 'mautic.core.model.notification',
- 'mautic.lead.model.field',
- 'mautic.plugin.model.integration_entity',
- 'mautic.lead.model.dnc',
+ // Provides the form types to use for the configuration UI
+ 'trello.integration.configuration' => [
+ 'class' => ConfigSupport::class,
+ 'tags' => [
+ 'mautic.config_integration',
],
],
],
diff --git a/Config/services.php b/Config/services.php
new file mode 100644
index 0000000..2d78f3a
--- /dev/null
+++ b/Config/services.php
@@ -0,0 +1,18 @@
+services()
+ ->defaults()
+ ->autowire()
+ ->autoconfigure()
+ ->public();
+
+ $excludes = [];
+ $services->load('MauticPlugin\\MauticTrelloBundle\\', '../')
+ ->exclude('../{'.implode(',', array_merge(MauticCoreExtension::DEFAULT_EXCLUDES, $excludes)).'}');
+};
diff --git a/Controller/CardController.php b/Controller/CardController.php
index a66baab..9bd2223 100644
--- a/Controller/CardController.php
+++ b/Controller/CardController.php
@@ -2,56 +2,64 @@
declare(strict_types=1);
-/**
- * @author Aivie
- * @copyright 2022 Aivie. All rights reserved
- *
- * @see https://aivie.ch
- *
- * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
- */
-
namespace MauticPlugin\MauticTrelloBundle\Controller;
+use Doctrine\Persistence\ManagerRegistry;
use Mautic\CoreBundle\Controller\AbstractFormController;
+use Mautic\CoreBundle\Factory\MauticFactory;
+use Mautic\CoreBundle\Factory\ModelFactory;
+use Mautic\CoreBundle\Helper\CoreParametersHelper;
+use Mautic\CoreBundle\Helper\UserHelper;
+use Mautic\CoreBundle\Security\Permissions\CorePermissions;
+use Mautic\CoreBundle\Service\FlashBag;
+use Mautic\CoreBundle\Translation\Translator;
use Mautic\LeadBundle\Controller\LeadAccessTrait;
use Mautic\LeadBundle\Entity\Lead;
use MauticPlugin\MauticTrelloBundle\Form\NewCardType;
use MauticPlugin\MauticTrelloBundle\Openapi\lib\Model\Card;
use MauticPlugin\MauticTrelloBundle\Openapi\lib\Model\NewCard;
-use Symfony\Component\Form\Form;
+use MauticPlugin\MauticTrelloBundle\Service\TrelloApiService;
+use Psr\Log\LoggerInterface;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
/**
- * Setup a a form and send it to Trello to create a new card.
+ * Set up a form and send it to Trello to create a new card.
*/
class CardController extends AbstractFormController
{
use LeadAccessTrait;
/**
- * Logger.
- *
- * @var \Monolog\Logger
- */
- protected $logger;
-
- /**
- * @var \MauticPlugin\MauticTrelloBundle\Service\TrelloApiService
+ * @phpstan-ignore-next-line
*/
- private $apiService;
+ public function __construct(
+ private LoggerInterface $logger,
+ private TrelloApiService $apiService,
+ ManagerRegistry $doctrine,
+ MauticFactory $factory,
+ ModelFactory $modelFactory,
+ UserHelper $userHelper,
+ CoreParametersHelper $coreParametersHelper,
+ EventDispatcherInterface $dispatcher,
+ Translator $translator,
+ FlashBag $flashBag,
+ RequestStack $requestStack,
+ CorePermissions $security
+ ) {
+ parent::__construct($doctrine, $factory, $modelFactory, $userHelper, $coreParametersHelper, $dispatcher, $translator, $flashBag, $requestStack, $security);
+ }
/**
* Show a new Trello card form with prefilled information from the Contact.
*/
- public function showNewCardAction(int $contactId): Response
+ public function showNewCardAction(Request $request, int $contactId): Response
{
- $this->logger = $this->get('monolog.logger.mautic');
- $this->apiService = $this->get('mautic.trello.service.trello_api');
-
// returns the Contact or an error Response to show to the user
$contact = $this->checkLeadAccess($contactId, 'view');
if ($contact instanceof Response) {
@@ -59,7 +67,7 @@ public function showNewCardAction(int $contactId): Response
}
// build the form
- $form = $this->getForm($contactId);
+ $form = $this->getForm($request, $contactId);
// display empty form
return $this->delegateView(
@@ -67,25 +75,20 @@ public function showNewCardAction(int $contactId): Response
'viewParameters' => [
'form' => $form->createView(),
],
- 'contentTemplate' => 'MauticTrelloBundle:Card:new.html.php',
+ 'contentTemplate' => '@MauticTrello/Card/new.html.twig',
]
);
}
/**
* Add a new card by POST or handle the cancelation of the form.
- *
- * @return JsonResponse|RedirectResponse
*/
- public function addAction()
+ public function addAction(Request $request): JsonResponse|Response
{
- $this->logger = $this->get('monolog.logger.mautic');
- $this->apiService = $this->get('mautic.trello.service.trello_api');
-
- $returnRoute = $this->request->get('returnRoute', '');
+ $returnRoute = $request->get('returnRoute', '');
$contactId = 0;
- $data = $this->request->request->get('new_card', false);
+ $data = $request->request->get('new_card', false);
if (is_array($data) && isset($data['contactId'])) {
$contactId = (int) $data['contactId'];
}
@@ -97,14 +100,14 @@ public function addAction()
}
// Check for a submitted form and process it
- $form = $this->getForm();
+ $form = $this->getForm($request);
if ($this->isFormCancelled($form)) {
return $this->closeModal();
}
// process form data from HTTP variables
- $form->handleRequest($this->request);
+ $form->handleRequest($request);
// MauticPlugin\MauticTrelloBundle\Openapi\lib\Model\NewCard;
$newCard = $form->getData();
@@ -112,7 +115,7 @@ public function addAction()
if (!$newCard->valid()) {
$invalid = current($newCard->listInvalidProperties());
$message = sprintf($this->translator->trans('mautic.trello.card_data_not_valid'), $invalid);
- $this->addFlash($message, [], 'error');
+ $this->addFlash(FlashBag::LEVEL_ERROR, $message);
return new JsonResponse(['error' => $message]);
}
@@ -127,14 +130,14 @@ public function addAction()
if ($card instanceof Card) {
// successfully added
$this->addFlash(
- 'plugin.trello.card_added',
- ['%url%' => $card->getUrl(), '%title%' => $card->getName()]
+ FlashBag::LEVEL_NOTICE,
+ $this->translator->trans('plugin.trello.card_added', ['%url%' => $card->getUrl(), '%title%' => $card->getName()], 'flashes'),
);
} else {
// not successfully added
$this->addFlash(
- 'plugin.trello.card_not_added',
- ['not-added']
+ FlashBag::LEVEL_ERROR,
+ $this->translator->trans('plugin.trello.card_not_added', [], 'flashes')
);
}
@@ -143,10 +146,8 @@ public function addAction()
/**
* Close the modal after adding a card in Trello.
- *
- * @return JsonResponse|RedirectResponse
*/
- protected function closeAndRedirect(string $returnRoute, int $contactId)
+ protected function closeAndRedirect(string $returnRoute, int $contactId): Response
{
if (empty($returnRoute) || empty($contactId)) {
$this->logger->warning('Trello: No return url or contact for add to Trello specified', ['contactId' => $contactId, 'returnRoute' => $returnRoute]);
@@ -156,7 +157,7 @@ protected function closeAndRedirect(string $returnRoute, int $contactId)
if ('mautic_contact_index' === $returnRoute) {
$func = 'index';
$viewParameters = [
- 'page' => $this->get('session')->get('mautic.lead.page', 1),
+ 'page' => $this->container->get('session')->get('mautic.lead.page', 1),
'objectId' => $contactId,
];
} else {
@@ -172,7 +173,7 @@ protected function closeAndRedirect(string $returnRoute, int $contactId)
[
'returnUrl' => $this->generateUrl($returnRoute, $viewParameters),
'viewParameters' => $viewParameters,
- 'contentTemplate' => 'MauticLeadBundle:Lead:'.$func,
+ 'contentTemplate' => 'Mautic\LeadBundle\Controller\LeadController::'.$func.'Action',
'passthroughVars' => [
'mauticContent' => 'lead',
'closeModal' => 1,
@@ -196,15 +197,13 @@ protected function closeModal(): JsonResponse
/**
* Build the form.
- *
- * @param int $contactId
*/
- protected function getForm(int $contactId = null): ?FormInterface
+ protected function getForm(Request $request, int $contactId = null): ?FormInterface
{
- $returnRoute = $this->request->get('returnRoute');
+ $returnRoute = $request->get('returnRoute');
if (empty($returnRoute)) {
$this->logger->warning('Trello: No return route for add to Trello specified', ['contactId' => $contactId]);
- $returnRoute = "mautic_contact_action"; //somehow the returnRoute can be empty, so set it to the contact detail by default
+ $returnRoute = 'mautic_contact_action'; // somehow the returnRoute can be empty, so set it to the contact detail by default
}
$card = new NewCard();
diff --git a/DependencyInjection/MauticTrelloExtension.php b/DependencyInjection/MauticTrelloExtension.php
new file mode 100644
index 0000000..51c4a7a
--- /dev/null
+++ b/DependencyInjection/MauticTrelloExtension.php
@@ -0,0 +1,19 @@
+load('services.php');
+ }
+}
diff --git a/Event/ButtonSubscriber.php b/EventListener/ButtonSubscriber.php
similarity index 70%
rename from Event/ButtonSubscriber.php
rename to EventListener/ButtonSubscriber.php
index 5f16338..7535a6e 100644
--- a/Event/ButtonSubscriber.php
+++ b/EventListener/ButtonSubscriber.php
@@ -1,19 +1,15 @@
router = $router;
- $this->translator = $translator;
- $this->requestStack = $requestStack;
- $this->integration = $integrationHelper->getIntegrationObject('Trello');
+ public function __construct(
+ private RouterInterface $router,
+ private TranslatorInterface $translator,
+ private Config $config
+ ) {
}
- /**
- * Get Events.
- */
- public static function getSubscribedEvents()
+ public static function getSubscribedEvents(): array
{
return [
CoreEvents::VIEW_INJECT_CUSTOM_BUTTONS => ['injectViewButtons', 0],
];
}
- public function injectViewButtons(CustomButtonEvent $event)
+ public function injectViewButtons(CustomButtonEvent $event): void
{
- if (empty($this->integration) || !$this->integration->isPublished()) {
- return false;
+ if (!str_starts_with($event->getRoute(), 'mautic_contact_')) {
+ return;
+ }
+
+ if (!$this->config->isPublished() && !$this->config->isConfigured()) {
+ return;
}
- $request = $this->requestStack->getCurrentRequest();
- $returnRoute = $request->attributes->get('_route');
+ $returnRoute = $event->getRoute();
$lead = $event->getItem();
-
if ($lead instanceof Lead) {
$addToTrelloBtn = [
'attr' => [
diff --git a/Event/ConfigSubscriber.php b/EventListener/ConfigSubscriber.php
similarity index 52%
rename from Event/ConfigSubscriber.php
rename to EventListener/ConfigSubscriber.php
index 4ff62a2..aba362b 100644
--- a/Event/ConfigSubscriber.php
+++ b/EventListener/ConfigSubscriber.php
@@ -1,43 +1,26 @@
logger = $logger;
- $this->integration = $integrationHelper->getIntegrationObject('Trello');
}
- /**
- * @return array
- */
- public static function getSubscribedEvents()
+ public static function getSubscribedEvents(): array
{
return [
ConfigEvents::CONFIG_ON_GENERATE => ['onConfigGenerate', 0],
@@ -46,18 +29,18 @@ public static function getSubscribedEvents()
}
/**
- * setup the configuration for Trello.
+ * Set up the configuration for Trello.
*/
public function onConfigGenerate(ConfigBuilderEvent $event): bool
{
- if (empty($this->integration) || !$this->integration->isPublished()) {
+ if (!$this->config->isPublished() && !$this->config->isConfigured()) {
return false;
}
$event->addForm(
[
'formAlias' => 'trello_config', // same as in the View filename
- 'formTheme' => 'MauticTrelloBundle:FormTheme\Config',
+ 'formTheme' => '@MauticTrello/FormTheme/Config/_config_trello_config_widget.html.twig',
'formType' => ConfigType::class,
'parameters' => $event->getParametersFromConfig('MauticTrelloBundle'),
]
@@ -67,15 +50,10 @@ public function onConfigGenerate(ConfigBuilderEvent $event): bool
}
/**
- * Prepare values before conig is saved to file.
- *
- * @return void
+ * Prepare values before config is saved to file.
*/
- public function onConfigSave(ConfigEvent $event)
+ public function onConfigSave(ConfigEvent $event): void
{
- /**
- * @var array $values
- */
$config = $event->getConfig('trello_config');
// Set updated values
diff --git a/Form/ConfigAuthType.php b/Form/ConfigAuthType.php
new file mode 100644
index 0000000..86e1706
--- /dev/null
+++ b/Form/ConfigAuthType.php
@@ -0,0 +1,64 @@
+ $builder
+ * @param mixed[] $options
+ */
+ public function buildForm(FormBuilderInterface $builder, array $options): void
+ {
+ $apiToken = null;
+ $configProvider = $options['integration'];
+ if ($configProvider->getIntegrationConfiguration() && $configProvider->getIntegrationConfiguration()->getApiKeys()) {
+ $data = $configProvider->getIntegrationConfiguration()->getApiKeys();
+ $apiToken = $data['apitoken'] ?? null;
+ }
+
+ $builder->add(
+ 'appkey',
+ TextType::class,
+ [
+ 'label' => 'mautic.trello.integration.appkey',
+ 'label_attr' => ['class' => 'control-label'],
+ 'required' => true,
+ 'attr' => [
+ 'class' => 'form-control',
+ ],
+ ]
+ );
+
+ $builder->add(
+ 'apitoken',
+ PasswordType::class,
+ [
+ 'label' => 'mautic.trello.integration.apitoken',
+ 'label_attr' => ['class' => 'control-label'],
+ 'required' => true,
+ 'attr' => [
+ 'class' => 'form-control',
+ ],
+ 'empty_data' => $apiToken,
+ ]
+ );
+ }
+
+ public function configureOptions(OptionsResolver $resolver): void
+ {
+ $resolver->setDefaults(
+ [
+ 'integration' => null,
+ ]
+ );
+ }
+}
diff --git a/Form/ConfigType.php b/Form/ConfigType.php
index 26d8b18..140bad3 100644
--- a/Form/ConfigType.php
+++ b/Form/ConfigType.php
@@ -1,49 +1,21 @@
fieldModel = $fieldModel;
- $this->apiService = $trelloApiService;
- $this->logger = $logger;
}
/**
@@ -51,8 +23,6 @@ public function __construct(FieldModel $fieldModel, TrelloApiService $trelloApiS
*/
public function buildForm(FormBuilderInterface $builder, array $options): void
{
- $this->fieldModel->getFieldList(false, false);
-
$builder->add(
'favorite_board',
ChoiceType::class,
@@ -65,10 +35,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
);
}
- /**
- * @return string
- */
- public function getBlockPrefix()
+ public function getBlockPrefix(): string
{
return 'trello_config';
}
@@ -78,8 +45,6 @@ public function getBlockPrefix()
*/
protected function getBoards(): array
{
- $boards = array_flip($this->apiService->getBoardsArray());
-
- return null !== $boards ? $boards : [];
+ return array_flip($this->apiService->getBoardsArray());
}
}
diff --git a/Form/NewCardType.php b/Form/NewCardType.php
index 397d763..47328fd 100644
--- a/Form/NewCardType.php
+++ b/Form/NewCardType.php
@@ -1,21 +1,13 @@
apiService = $trelloApiService;
$this->logger = $logger;
@@ -101,7 +93,6 @@ public function buildForm(FormBuilderInterface $builder, array $options)
'preaddon' => 'fa fa-calendar',
'help' => 'The moment this card becomes due',
],
- 'format' => 'yyyy-MM-dd HH:mm',
// 'data' => $data,
]
)
@@ -118,7 +109,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
}
}
- public function configureOptions(OptionsResolver $resolver)
+ public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => NewCard::class,
diff --git a/Integration/Config.php b/Integration/Config.php
new file mode 100644
index 0000000..a0a6cca
--- /dev/null
+++ b/Integration/Config.php
@@ -0,0 +1,58 @@
+getIntegrationEntity();
+
+ return $integration->getIsPublished() ?: false;
+ } catch (IntegrationNotFoundException $e) {
+ return false;
+ }
+ }
+
+ public function isConfigured(): bool
+ {
+ $apiKeys = $this->getApiKeys();
+
+ return !empty($apiKeys['appkey']) && !empty($apiKeys['apitoken']);
+ }
+
+ /**
+ * @return string[]
+ */
+ public function getApiKeys(): array
+ {
+ try {
+ $integration = $this->getIntegrationEntity();
+
+ return $integration->getApiKeys() ?: [];
+ } catch (IntegrationNotFoundException $e) {
+ return [];
+ }
+ }
+
+ /**
+ * @throws IntegrationNotFoundException
+ */
+ public function getIntegrationEntity(): Integration
+ {
+ $integrationObject = $this->integrationsHelper->getIntegration(TrelloIntegration::NAME);
+
+ return $integrationObject->getIntegrationConfiguration();
+ }
+}
diff --git a/Integration/Support/ConfigSupport.php b/Integration/Support/ConfigSupport.php
new file mode 100644
index 0000000..29a9447
--- /dev/null
+++ b/Integration/Support/ConfigSupport.php
@@ -0,0 +1,30 @@
+getIntegrationSettings()->getIsPublished();
- }
-
- /**
- * Return's authentication method such as oauth2, oauth1a, key, etc.
- *
- * @return string
- */
- public function getAuthenticationType()
- {
- return 'none';
- }
-
- /**
- * Returns the name of the social integration that must match the name of the file.
- *
- * @return string
- */
- public function getName()
- {
- return 'Trello';
- }
+ use ConfigurationTrait;
- /**
- * @return array
- */
- public function getFormSettings()
- {
- return [
- 'requires_callback' => false,
- 'requires_authorization' => false,
- ];
- }
+ public const NAME = 'Trello';
+ public const DISPLAY_NAME = 'Trello';
- /**
- * {@inheritdoc}
- *
- * @return array
- */
- public function getRequiredKeyFields()
+ public function getName(): string
{
- return [
- 'appkey' => 'mautic.trello.integration.appkey',
- 'apitoken' => 'mautic.trello.integration.apitoken',
- ];
+ return self::NAME;
}
- /**
- * Configure the name of the secret key.
- */
- public function getSecretKeys(): array
+ public function getDisplayName(): string
{
- return [
- 'apitoken',
- ];
+ return self::DISPLAY_NAME;
}
- /**
- * {@inheritdoc}
- *
- * @param $section
- *
- * @todo parent::getFormNotes should have the documented return type array
- *
- * @return array|string
- */
- public function getFormNotes($section): array
+ public function getIcon(): string
{
- $translator = $this->getTranslator();
-
- if ('authorization' === $section) {
- return [
- $translator->trans('mautic.trello.integration.info'),
- 'info',
- ];
- }
-
- return parent::getFormNotes($section);
+ return 'plugins/MauticTrelloBundle/Assets/img/trello.png';
}
}
diff --git a/MauticTrelloBundle.php b/MauticTrelloBundle.php
index 3ab39b6..63aae5c 100644
--- a/MauticTrelloBundle.php
+++ b/MauticTrelloBundle.php
@@ -1,9 +1,11 @@
+
+ {{ form_row(form.name) }}
+
+
+
+
+ {{ form_row(form.desc) }}
+
+
+
+
+
+ {{ form_row(form.idList) }}
+
+
+ {{ form_row(form.due) }}
+
+
+{{ form_row(form.buttons) }}
+{{ form_end(form) }}
\ No newline at end of file
diff --git a/Resources/views/FormTheme/Config/_config_trello_config_widget.html.twig b/Resources/views/FormTheme/Config/_config_trello_config_widget.html.twig
new file mode 100644
index 0000000..905926e
--- /dev/null
+++ b/Resources/views/FormTheme/Config/_config_trello_config_widget.html.twig
@@ -0,0 +1,20 @@
+{% block _config_apiconfig_widget %}
+
+
+
{{ 'mautic.config.tab.apiconfig'|trans }}
+
+
+
+
+
+
+ {% for f in form.children %}
+
+
+ {{ form_row(f) }}
+
+
+ {% endfor %}
+
+
+{% endblock %}
diff --git a/Service/TrelloApiService.php b/Service/TrelloApiService.php
index 17576cf..9fae3bf 100644
--- a/Service/TrelloApiService.php
+++ b/Service/TrelloApiService.php
@@ -1,71 +1,36 @@
integration = $integrationHelper->getIntegrationObject('Trello');
- $this->coreParametersHelper = $coreParametersHelper;
- $this->logger = $logger;
}
/**
* Return the Api to Trello. Which is autogenerated from an OpenAPI specificaton.
- *
- * @return DefaultApi|bool
*/
- public function getApi()
+ public function getApi(): DefaultApi|bool
{
// setup auth
$auth = $this->getAuthParams();
- if (empty($this->integration) || !$this->integration->isPublished() || empty($auth['key'])) {
+ if (!$this->config->isPublished() && !$this->config->isConfigured()) {
return false;
}
@@ -80,10 +45,8 @@ public function getApi()
/**
* Get all Trello boards as an array (id => name).
- *
- * @param string $filter
*/
- public function getBoardsArray($filter = 'open'): array
+ public function getBoardsArray(string $filter = 'open'): array
{
try {
$api = $this->getApi();
@@ -108,10 +71,8 @@ public function getBoardsArray($filter = 'open'): array
/**
* Get the users favourite board from Settings.
- *
- * @return string
*/
- public function getFavouriteBoard()
+ public function getFavouriteBoard(): string
{
return $this->coreParametersHelper->get('favorite_board', '');
}
@@ -119,7 +80,7 @@ public function getFavouriteBoard()
/**
* Get all the lists on the Trello board.
*
- * @param int $boardId Trello Board id
+ * @param int|null $boardId Trello Board id
*/
public function getListsOnBoard(int $boardId = null): array
{
@@ -143,7 +104,7 @@ public function getListsOnBoard(int $boardId = null): array
$this->logger->warning('API Exception when calling DefaultApi->getLists(): ', [$e->getMessage()]);
return [];
- } catch (Exception $e) {
+ } catch (\Exception $e) {
$this->logger->warning('Exception when calling DefaultApi->getLists(): ', [$e->getMessage()]);
return [];
@@ -155,10 +116,11 @@ public function getListsOnBoard(int $boardId = null): array
*/
public function getAuthParams(): array
{
- if (!$this->integration || !$this->integration->isPublished()) {
+ if (!$this->config->isPublished() && !$this->config->isConfigured()) {
return [];
}
- $keys = $this->integration->getIntegrationSettings()->getApiKeys();
+
+ $keys = $this->config->getApiKeys();
if (empty($keys['appkey']) || empty($keys['apitoken'])) {
$this->logger->info('No valid Trello api keys');
@@ -166,20 +128,16 @@ public function getAuthParams(): array
return [];
}
- $encryptedKeys = [
+ return [
'key' => isset($keys['appkey']) ? $keys['appkey'] : '',
'token' => isset($keys['apitoken']) ? $keys['apitoken'] : '',
];
-
- return $this->integration->decryptApiKeys($encryptedKeys);
}
/**
- * * All the business logic for a submitted form.
- *
- * @return Card|Exception|CardError
+ * All the business logic for a submitted form.
*/
- public function addNewCard(array $card)
+ public function addNewCard(array $card): Card|\Exception|CardError
{
$api = $this->getApi();
if (!$api) {
@@ -193,14 +151,14 @@ public function addNewCard(array $card)
}
return $card;
- } catch (InvalidArgumentException $e) {
+ } catch (\InvalidArgumentException $e) {
$this->logger->warning($e->getMessage(), $e->getTrace());
- return new Exception('InvalidArgument: '.$e->getMessage());
- } catch (Exception $e) {
+ return new \Exception('InvalidArgument: '.$e->getMessage());
+ } catch (\Exception $e) {
$this->logger->error($e->getMessage(), $e->getTrace());
- return new Exception($e->getMessage());
+ return new \Exception($e->getMessage());
}
// return $this->redirectToRoute('task_success');
diff --git a/Tests/Mock/DefaultApiMock.php b/Tests/Mock/DefaultApiMock.php
index d128dd7..91d2d3c 100644
--- a/Tests/Mock/DefaultApiMock.php
+++ b/Tests/Mock/DefaultApiMock.php
@@ -1,14 +1,6 @@
apiService = $this->getMockBuilder(TrelloApiService::class)
->setMethods(['getApi', 'getFavouriteBoard', 'getListsOnBoard'])
->setConstructorArgs(
[
- $this->createMock(IntegrationHelper::class),
- $this->createMock(CoreParametersHelper::class),
- $this->createMock(Logger::class),
+ $this->createMock(IntegrationHelper::class),
+ $this->createMock(CoreParametersHelper::class),
+ $this->createMock(Logger::class),
]
)
->getMock();
@@ -77,7 +68,7 @@ protected function setUp(): void
public function testGetListsOnBoard(): void
{
$lists = $this->apiService->getListsOnBoard();
-// $this->assertGreaterThan(0, count($lists));
+ // $this->assertGreaterThan(0, count($lists));
$this->assertCount(0, $lists);
foreach ($lists as $list) {
$this->assertInstanceOf(TrelloList::class, $list);
diff --git a/Tests/Service/TrelloApiServicePrismTest.php b/Tests/Unit/Service/TrelloApiServicePrismTest.php
similarity index 85%
rename from Tests/Service/TrelloApiServicePrismTest.php
rename to Tests/Unit/Service/TrelloApiServicePrismTest.php
index 18793e2..2175eb6 100644
--- a/Tests/Service/TrelloApiServicePrismTest.php
+++ b/Tests/Unit/Service/TrelloApiServicePrismTest.php
@@ -1,26 +1,9 @@
-start($form); ?>
-
-
- row($form['name']); ?>
-
-
-
-
- row($form['desc']); ?>
-
-
-
-
- row($form['idList']); ?>
-
-
- row($form['due']); ?>
-
-
-
-row($form['buttons']); ?>
-end($form);
diff --git a/Views/FormTheme/Config/_config_trello_config_widget.html.php b/Views/FormTheme/Config/_config_trello_config_widget.html.php
deleted file mode 100644
index 741f3f6..0000000
--- a/Views/FormTheme/Config/_config_trello_config_widget.html.php
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
trans('mautic.trello.config.tab.trello'); ?>
-
-
- children as $f): ?>
-
-
-
-
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 00ae0c7..f9ece75 100755
--- a/composer.json
+++ b/composer.json
@@ -7,16 +7,30 @@
"email": "adrian@idea2.ch"
}
],
- "autoload": {
- "psr-4": {
- "MauticPlugin\\": "plugins/"
- }
+ "keywords": ["mautic", "plugin", "integration", "aivie"],
+ "extra": {
+ "install-directory-name": "MauticTrelloBundle"
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true,
+ "require": {
+ "mautic/core-lib": "^5.0"
},
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.15",
- "phpstan/phpstan": "^0.12.3",
- "symfony/var-dumper": "~3.4.0",
- "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.1",
- "escapestudios/symfony2-coding-standard": "3.x-dev"
+ "scripts": {
+ "test": [
+ "@phpunit",
+ "@csfixer"
+ ],
+ "quicktest": [
+ "@unit",
+ "@csfixer"
+ ],
+ "phpunit": "../../bin/phpunit -d memory_limit=1G --bootstrap ../../vendor/autoload.php --configuration phpunit.xml --fail-on-warning --testsuite=all",
+ "unit": "../../bin/phpunit -d memory_limit=1G --bootstrap ../../vendor/autoload.php --configuration phpunit.xml --fail-on-warning --testsuite=unit",
+ "functional": "../../bin/phpunit -d memory_limit=1G --bootstrap ../../vendor/autoload.php --configuration phpunit.xml --fail-on-warning --testsuite=functional",
+ "coverage": "../../bin/phpunit -d memory_limit=1G --bootstrap ../../vendor/autoload.php --configuration phpunit.xml --fail-on-warning --testsuite=all --coverage-text --coverage-html=Tests/Coverage",
+ "csfixer": "../../bin/php-cs-fixer fix . -v --dry-run --diff --using-cache=no --config=../../.php-cs-fixer.php",
+ "fixcs": "../../bin/php-cs-fixer fix . -v --using-cache=no --config=../../.php-cs-fixer.php",
+ "phpstan": "[ ! -f ../../var/cache/test/AppKernelTestDebugContainer.xml ] && (echo 'Building test cache ...'; APP_ENV=test APP_DEBUG=1 ../../bin/console > /dev/null 2>&1); php -d memory_limit=4G ../../bin/phpstan analyse ."
}
}
diff --git a/composer.lock b/composer.lock
deleted file mode 100644
index e461ace..0000000
--- a/composer.lock
+++ /dev/null
@@ -1,3507 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
- "This file is @generated automatically"
- ],
- "content-hash": "9bbf6c7b79bf244d76a0224092cfdd81",
- "packages": [],
- "packages-dev": [
- {
- "name": "composer/semver",
- "version": "1.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/semver.git",
- "reference": "114f819054a2ea7db03287f5efb757e2af6e4079"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/114f819054a2ea7db03287f5efb757e2af6e4079",
- "reference": "114f819054a2ea7db03287f5efb757e2af6e4079",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.2 || ^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.5 || ^5.0.5"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\Semver\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nils Adermann",
- "email": "naderman@naderman.de",
- "homepage": "http://www.naderman.de"
- },
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- },
- {
- "name": "Rob Bast",
- "email": "rob.bast@gmail.com",
- "homepage": "http://robbast.nl"
- }
- ],
- "description": "Semver library that offers utilities, version constraint parsing and validation.",
- "keywords": [
- "semantic",
- "semver",
- "validation",
- "versioning"
- ],
- "time": "2020-09-09T09:34:06+00:00"
- },
- {
- "name": "composer/xdebug-handler",
- "version": "1.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/xdebug-handler.git",
- "reference": "ebd27a9866ae8254e873866f795491f02418c5a5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ebd27a9866ae8254e873866f795491f02418c5a5",
- "reference": "ebd27a9866ae8254e873866f795491f02418c5a5",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.2 || ^7.0 || ^8.0",
- "psr/log": "^1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Composer\\XdebugHandler\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "John Stevenson",
- "email": "john-stevenson@blueyonder.co.uk"
- }
- ],
- "description": "Restarts a process without Xdebug.",
- "keywords": [
- "Xdebug",
- "performance"
- ],
- "time": "2020-08-19T10:27:58+00:00"
- },
- {
- "name": "doctrine/annotations",
- "version": "1.10.4",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/annotations.git",
- "reference": "bfe91e31984e2ba76df1c1339681770401ec262f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/bfe91e31984e2ba76df1c1339681770401ec262f",
- "reference": "bfe91e31984e2ba76df1c1339681770401ec262f",
- "shasum": ""
- },
- "require": {
- "doctrine/lexer": "1.*",
- "ext-tokenizer": "*",
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "doctrine/cache": "1.*",
- "phpstan/phpstan": "^0.12.20",
- "phpunit/phpunit": "^7.5 || ^9.1.5"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Docblock Annotations Parser",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "annotations",
- "docblock",
- "parser"
- ],
- "time": "2020-08-10T19:35:50+00:00"
- },
- {
- "name": "doctrine/instantiator",
- "version": "1.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
- "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpbench/phpbench": "^0.13",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpstan/phpstan-shim": "^0.11",
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
- }
- ],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
- "keywords": [
- "constructor",
- "instantiate"
- ],
- "time": "2020-05-29T17:27:14+00:00"
- },
- {
- "name": "doctrine/lexer",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/lexer.git",
- "reference": "e864bbf5904cb8f5bb334f99209b48018522f042"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042",
- "reference": "e864bbf5904cb8f5bb334f99209b48018522f042",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpstan/phpstan": "^0.11.8",
- "phpunit/phpunit": "^8.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
- "homepage": "https://www.doctrine-project.org/projects/lexer.html",
- "keywords": [
- "annotations",
- "docblock",
- "lexer",
- "parser",
- "php"
- ],
- "time": "2020-05-25T17:44:05+00:00"
- },
- {
- "name": "escapestudios/symfony2-coding-standard",
- "version": "dev-master",
- "source": {
- "type": "git",
- "url": "https://github.com/djoos/Symfony-coding-standard.git",
- "reference": "78e3b0b6832c88cf7c0240b4abcd61430030d8c3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/djoos/Symfony-coding-standard/zipball/78e3b0b6832c88cf7c0240b4abcd61430030d8c3",
- "reference": "78e3b0b6832c88cf7c0240b4abcd61430030d8c3",
- "shasum": ""
- },
- "require": {
- "squizlabs/php_codesniffer": "^3.3.1"
- },
- "conflict": {
- "squizlabs/php_codesniffer": "<3 || >=4"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.0 || ^6.0 || ^7.0"
- },
- "type": "phpcodesniffer-standard",
- "extra": {
- "branch-alias": {
- "dev-master": "3.x-dev"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "David Joos",
- "email": "iam@davidjoos.com"
- },
- {
- "name": "Community contributors",
- "homepage": "https://github.com/djoos/Symfony-coding-standard/graphs/contributors"
- }
- ],
- "description": "CodeSniffer ruleset for the Symfony 2+ coding standard",
- "homepage": "https://github.com/djoos/Symfony-coding-standard",
- "keywords": [
- "Coding Standard",
- "Symfony2",
- "phpcs",
- "symfony"
- ],
- "time": "2020-01-22T10:27:47+00:00"
- },
- {
- "name": "friendsofphp/php-cs-fixer",
- "version": "v2.16.4",
- "source": {
- "type": "git",
- "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
- "reference": "1023c3458137ab052f6ff1e09621a721bfdeca13"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/1023c3458137ab052f6ff1e09621a721bfdeca13",
- "reference": "1023c3458137ab052f6ff1e09621a721bfdeca13",
- "shasum": ""
- },
- "require": {
- "composer/semver": "^1.4",
- "composer/xdebug-handler": "^1.2",
- "doctrine/annotations": "^1.2",
- "ext-json": "*",
- "ext-tokenizer": "*",
- "php": "^5.6 || ^7.0",
- "php-cs-fixer/diff": "^1.3",
- "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0",
- "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0",
- "symfony/filesystem": "^3.0 || ^4.0 || ^5.0",
- "symfony/finder": "^3.0 || ^4.0 || ^5.0",
- "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0",
- "symfony/polyfill-php70": "^1.0",
- "symfony/polyfill-php72": "^1.4",
- "symfony/process": "^3.0 || ^4.0 || ^5.0",
- "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0"
- },
- "require-dev": {
- "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0",
- "justinrainbow/json-schema": "^5.0",
- "keradus/cli-executor": "^1.2",
- "mikey179/vfsstream": "^1.6",
- "php-coveralls/php-coveralls": "^2.1",
- "php-cs-fixer/accessible-object": "^1.0",
- "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.1",
- "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.1",
- "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.1",
- "phpunitgoodpractices/traits": "^1.8",
- "symfony/phpunit-bridge": "^5.1",
- "symfony/yaml": "^3.0 || ^4.0 || ^5.0"
- },
- "suggest": {
- "ext-dom": "For handling output formats in XML",
- "ext-mbstring": "For handling non-UTF8 characters.",
- "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.",
- "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.",
- "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible."
- },
- "bin": [
- "php-cs-fixer"
- ],
- "type": "application",
- "autoload": {
- "psr-4": {
- "PhpCsFixer\\": "src/"
- },
- "classmap": [
- "tests/Test/AbstractFixerTestCase.php",
- "tests/Test/AbstractIntegrationCaseFactory.php",
- "tests/Test/AbstractIntegrationTestCase.php",
- "tests/Test/Assert/AssertTokensTrait.php",
- "tests/Test/IntegrationCase.php",
- "tests/Test/IntegrationCaseFactory.php",
- "tests/Test/IntegrationCaseFactoryInterface.php",
- "tests/Test/InternalIntegrationCaseFactory.php",
- "tests/Test/IsIdenticalConstraint.php",
- "tests/TestCase.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Dariusz Rumiński",
- "email": "dariusz.ruminski@gmail.com"
- }
- ],
- "description": "A tool to automatically fix PHP code style",
- "time": "2020-06-27T23:57:46+00:00"
- },
- {
- "name": "myclabs/deep-copy",
- "version": "1.10.1",
- "source": {
- "type": "git",
- "url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
- "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "replace": {
- "myclabs/deep-copy": "self.version"
- },
- "require-dev": {
- "doctrine/collections": "^1.0",
- "doctrine/common": "^2.6",
- "phpunit/phpunit": "^7.1"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- },
- "files": [
- "src/DeepCopy/deep_copy.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Create deep copies (clones) of your objects",
- "keywords": [
- "clone",
- "copy",
- "duplicate",
- "object",
- "object graph"
- ],
- "time": "2020-06-29T13:22:24+00:00"
- },
- {
- "name": "paragonie/random_compat",
- "version": "v9.99.99",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "shasum": ""
- },
- "require": {
- "php": "^7"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*|5.*",
- "vimeo/psalm": "^1"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- },
- "type": "library",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ],
- "time": "2018-07-02T15:55:56+00:00"
- },
- {
- "name": "phar-io/manifest",
- "version": "1.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/manifest.git",
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-phar": "*",
- "phar-io/version": "^2.0",
- "php": "^5.6 || ^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
- "time": "2018-07-08T19:23:20+00:00"
- },
- {
- "name": "phar-io/version",
- "version": "2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/version.git",
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Library for handling version information and constraints",
- "time": "2018-07-08T19:19:57+00:00"
- },
- {
- "name": "php-cs-fixer/diff",
- "version": "v1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-CS-Fixer/diff.git",
- "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756",
- "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.7.23 || ^6.4.3",
- "symfony/process": "^3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "SpacePossum"
- }
- ],
- "description": "sebastian/diff v2 backport support for PHP5.6",
- "homepage": "https://github.com/PHP-CS-Fixer",
- "keywords": [
- "diff"
- ],
- "time": "2018-02-15T16:58:55+00:00"
- },
- {
- "name": "php-cs-fixer/phpunit-constraint-isidenticalstring",
- "version": "v1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-CS-Fixer/phpunit-constraint-isidenticalstring.git",
- "reference": "94e6d1032557253892b4797bc8b6262aac72d5f9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/phpunit-constraint-isidenticalstring/zipball/94e6d1032557253892b4797bc8b6262aac72d5f9",
- "reference": "94e6d1032557253892b4797bc8b6262aac72d5f9",
- "shasum": ""
- },
- "require": {
- "php": "^5.5 || ^7.0",
- "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0 || ^8.0",
- "phpunitgoodpractices/polyfill": "^1.1"
- },
- "conflict": {
- "hhvm": "*"
- },
- "require-dev": {
- "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0",
- "symfony/phpunit-bridge": "^3.2.2 || ^4.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "PhpCsFixer\\PhpunitConstraintIsIdenticalString\\": "src/"
- },
- "files": [
- "src/Constraint/IsIdenticalString.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Dariusz Rumiński",
- "email": "dariusz.ruminski@gmail.com"
- }
- ],
- "description": "Constraint for testing strings considering not-same line endings.",
- "time": "2019-03-25T08:22:50+00:00"
- },
- {
- "name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-2.x": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
- }
- ],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
- "keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
- "static analysis"
- ],
- "time": "2020-06-27T09:03:43+00:00"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "d870572532cd70bc3fab58f2e23ad423c8404c44"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d870572532cd70bc3fab58f2e23ad423c8404c44",
- "reference": "d870572532cd70bc3fab58f2e23ad423c8404c44",
- "shasum": ""
- },
- "require": {
- "ext-filter": "*",
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
- "webmozart/assert": "^1.9.1"
- },
- "require-dev": {
- "mockery/mockery": "~1.3.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- },
- {
- "name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
- }
- ],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2020-08-15T11:14:08+00:00"
- },
- {
- "name": "phpdocumentor/type-resolver",
- "version": "1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "e878a14a65245fbe78f8080eba03b47c3b705651"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651",
- "reference": "e878a14a65245fbe78f8080eba03b47c3b705651",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0"
- },
- "require-dev": {
- "ext-tokenizer": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-1.x": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "time": "2020-06-27T10:12:23+00:00"
- },
- {
- "name": "phpspec/prophecy",
- "version": "1.11.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b20034be5efcdab4fb60ca3a29cba2949aead160",
- "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.2",
- "php": "^7.2",
- "phpdocumentor/reflection-docblock": "^5.0",
- "sebastian/comparator": "^3.0 || ^4.0",
- "sebastian/recursion-context": "^3.0 || ^4.0"
- },
- "require-dev": {
- "phpspec/phpspec": "^6.0",
- "phpunit/phpunit": "^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.11.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Prophecy\\": "src/Prophecy"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
- },
- {
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
- }
- ],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2020-07-08T12:44:21+00:00"
- },
- {
- "name": "phpstan/phpstan",
- "version": "0.12.42",
- "source": {
- "type": "git",
- "url": "https://github.com/phpstan/phpstan.git",
- "reference": "7c43b7c2d5ca6554f6231e82e342a710163ac5f4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7c43b7c2d5ca6554f6231e82e342a710163ac5f4",
- "reference": "7c43b7c2d5ca6554f6231e82e342a710163ac5f4",
- "shasum": ""
- },
- "require": {
- "php": "^7.1|^8.0"
- },
- "conflict": {
- "phpstan/phpstan-shim": "*"
- },
- "bin": [
- "phpstan",
- "phpstan.phar"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.12-dev"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "PHPStan - PHP Static Analysis Tool",
- "time": "2020-09-02T13:14:53+00:00"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "7.0.10",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf",
- "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-xmlwriter": "*",
- "php": "^7.2",
- "phpunit/php-file-iterator": "^2.0.2",
- "phpunit/php-text-template": "^1.2.1",
- "phpunit/php-token-stream": "^3.1.1",
- "sebastian/code-unit-reverse-lookup": "^1.0.1",
- "sebastian/environment": "^4.2.2",
- "sebastian/version": "^2.0.1",
- "theseer/tokenizer": "^1.1.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.2.2"
- },
- "suggest": {
- "ext-xdebug": "^2.7.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "7.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "time": "2019-11-20T13:55:58+00:00"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "2.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "050bedf145a257b1ff02746c31894800e5122946"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946",
- "reference": "050bedf145a257b1ff02746c31894800e5122946",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "time": "2018-09-13T20:33:42+00:00"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "time": "2015-06-21T13:50:34+00:00"
- },
- {
- "name": "phpunit/php-timer",
- "version": "2.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "1038454804406b0b5f5f520358e78c1c2f71501e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e",
- "reference": "1038454804406b0b5f5f520358e78c1c2f71501e",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "time": "2019-06-07T04:22:29+00:00"
- },
- {
- "name": "phpunit/php-token-stream",
- "version": "3.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff",
- "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
- "keywords": [
- "tokenizer"
- ],
- "abandoned": true,
- "time": "2019-09-17T06:23:10+00:00"
- },
- {
- "name": "phpunit/phpunit",
- "version": "8.5.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "34c18baa6a44f1d1fbf0338907139e9dce95b997"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/34c18baa6a44f1d1fbf0338907139e9dce95b997",
- "reference": "34c18baa6a44f1d1fbf0338907139e9dce95b997",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.2.0",
- "ext-dom": "*",
- "ext-json": "*",
- "ext-libxml": "*",
- "ext-mbstring": "*",
- "ext-xml": "*",
- "ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.9.1",
- "phar-io/manifest": "^1.0.3",
- "phar-io/version": "^2.0.1",
- "php": "^7.2",
- "phpspec/prophecy": "^1.8.1",
- "phpunit/php-code-coverage": "^7.0.7",
- "phpunit/php-file-iterator": "^2.0.2",
- "phpunit/php-text-template": "^1.2.1",
- "phpunit/php-timer": "^2.1.2",
- "sebastian/comparator": "^3.0.2",
- "sebastian/diff": "^3.0.2",
- "sebastian/environment": "^4.2.2",
- "sebastian/exporter": "^3.1.1",
- "sebastian/global-state": "^3.0.0",
- "sebastian/object-enumerator": "^3.0.3",
- "sebastian/resource-operations": "^2.0.1",
- "sebastian/type": "^1.1.3",
- "sebastian/version": "^2.0.1"
- },
- "require-dev": {
- "ext-pdo": "*"
- },
- "suggest": {
- "ext-soap": "*",
- "ext-xdebug": "*",
- "phpunit/php-invoker": "^2.0.0"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "8.5-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "time": "2020-06-22T07:06:58+00:00"
- },
- {
- "name": "phpunitgoodpractices/polyfill",
- "version": "v1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHPUnitGoodPractices/polyfill.git",
- "reference": "1613c59be473c6b238c119607de820b9274c81fd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHPUnitGoodPractices/polyfill/zipball/1613c59be473c6b238c119607de820b9274c81fd",
- "reference": "1613c59be473c6b238c119607de820b9274c81fd",
- "shasum": ""
- },
- "require": {
- "php": "^5.5 || ^7.0",
- "phpunit/phpunit": "^4.0 || ^5.3 || ^6.0 || ^7.0 || ^8.0"
- },
- "conflict": {
- "hhvm": "*"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.12"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/aliases.php"
- ],
- "psr-4": {
- "PHPUnitGoodPractices\\Polyfill\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Dariusz Rumiński",
- "email": "dariusz.ruminski@gmail.com"
- }
- ],
- "description": "Lacking future-compat polyfills for PHPUnit.",
- "time": "2019-02-11T22:28:06+00:00"
- },
- {
- "name": "psr/container",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
- "keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
- ],
- "time": "2017-02-14T16:28:37+00:00"
- },
- {
- "name": "psr/event-dispatcher",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/event-dispatcher.git",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\EventDispatcher\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Standard interfaces for event handling.",
- "keywords": [
- "events",
- "psr",
- "psr-14"
- ],
- "time": "2019-01-08T18:20:26+00:00"
- },
- {
- "name": "psr/log",
- "version": "1.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Log\\": "Psr/Log/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for logging libraries",
- "homepage": "https://github.com/php-fig/log",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2020-03-23T09:12:05+00:00"
- },
- {
- "name": "sebastian/code-unit-reverse-lookup",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.7 || ^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Looks up which function or method a line of code belongs to",
- "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
- "time": "2017-03-04T06:30:41+00:00"
- },
- {
- "name": "sebastian/comparator",
- "version": "3.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
- "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
- "shasum": ""
- },
- "require": {
- "php": "^7.1",
- "sebastian/diff": "^3.0",
- "sebastian/exporter": "^3.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "https://github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "time": "2018-07-12T15:12:46+00:00"
- },
- {
- "name": "sebastian/diff",
- "version": "3.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
- "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.5 || ^8.0",
- "symfony/process": "^2 || ^3.3 || ^4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Diff implementation",
- "homepage": "https://github.com/sebastianbergmann/diff",
- "keywords": [
- "diff",
- "udiff",
- "unidiff",
- "unified diff"
- ],
- "time": "2019-02-04T06:01:07+00:00"
- },
- {
- "name": "sebastian/environment",
- "version": "4.2.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
- "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.5"
- },
- "suggest": {
- "ext-posix": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.2-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
- "keywords": [
- "Xdebug",
- "environment",
- "hhvm"
- ],
- "time": "2019-11-20T08:46:58+00:00"
- },
- {
- "name": "sebastian/exporter",
- "version": "3.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
- "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
- "shasum": ""
- },
- "require": {
- "php": "^7.0",
- "sebastian/recursion-context": "^3.0"
- },
- "require-dev": {
- "ext-mbstring": "*",
- "phpunit/phpunit": "^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "time": "2019-09-14T09:02:43+00:00"
- },
- {
- "name": "sebastian/global-state",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4",
- "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4",
- "shasum": ""
- },
- "require": {
- "php": "^7.2",
- "sebastian/object-reflector": "^1.1.1",
- "sebastian/recursion-context": "^3.0"
- },
- "require-dev": {
- "ext-dom": "*",
- "phpunit/phpunit": "^8.0"
- },
- "suggest": {
- "ext-uopz": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
- "keywords": [
- "global state"
- ],
- "time": "2019-02-01T05:30:01+00:00"
- },
- {
- "name": "sebastian/object-enumerator",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
- "shasum": ""
- },
- "require": {
- "php": "^7.0",
- "sebastian/object-reflector": "^1.1.1",
- "sebastian/recursion-context": "^3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Traverses array structures and object graphs to enumerate all referenced objects",
- "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
- "time": "2017-08-03T12:35:26+00:00"
- },
- {
- "name": "sebastian/object-reflector",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "773f97c67f28de00d397be301821b06708fca0be"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
- "reference": "773f97c67f28de00d397be301821b06708fca0be",
- "shasum": ""
- },
- "require": {
- "php": "^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Allows reflection of object attributes, including inherited and non-public ones",
- "homepage": "https://github.com/sebastianbergmann/object-reflector/",
- "time": "2017-03-29T09:07:27+00:00"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
- "shasum": ""
- },
- "require": {
- "php": "^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2017-03-03T06:23:57+00:00"
- },
- {
- "name": "sebastian/resource-operations",
- "version": "2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
- "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides a list of PHP built-in functions that operate on resources",
- "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
- "time": "2018-10-04T04:07:39+00:00"
- },
- {
- "name": "sebastian/type",
- "version": "1.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/type.git",
- "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3",
- "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3",
- "shasum": ""
- },
- "require": {
- "php": "^7.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Collection of value objects that represent the types of the PHP type system",
- "homepage": "https://github.com/sebastianbergmann/type",
- "time": "2019-07-02T08:10:15+00:00"
- },
- {
- "name": "sebastian/version",
- "version": "2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2016-10-03T07:35:21+00:00"
- },
- {
- "name": "squizlabs/php_codesniffer",
- "version": "3.5.6",
- "source": {
- "type": "git",
- "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
- "reference": "e97627871a7eab2f70e59166072a6b767d5834e0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e97627871a7eab2f70e59166072a6b767d5834e0",
- "reference": "e97627871a7eab2f70e59166072a6b767d5834e0",
- "shasum": ""
- },
- "require": {
- "ext-simplexml": "*",
- "ext-tokenizer": "*",
- "ext-xmlwriter": "*",
- "php": ">=5.4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
- },
- "bin": [
- "bin/phpcs",
- "bin/phpcbf"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.x-dev"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Greg Sherwood",
- "role": "lead"
- }
- ],
- "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
- "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
- "keywords": [
- "phpcs",
- "standards"
- ],
- "time": "2020-08-10T04:50:15+00:00"
- },
- {
- "name": "symfony/console",
- "version": "v5.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "186f395b256065ba9b890c0a4e48a91d598fa2cf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/186f395b256065ba9b890c0a4e48a91d598fa2cf",
- "reference": "186f395b256065ba9b890c0a4e48a91d598fa2cf",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "^1.8",
- "symfony/polyfill-php80": "^1.15",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/string": "^5.1"
- },
- "conflict": {
- "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"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/event-dispatcher": "^4.4|^5.0",
- "symfony/lock": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/var-dumper": "^4.4|^5.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/lock": "",
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Console Component",
- "homepage": "https://symfony.com",
- "time": "2020-09-02T07:07:40+00:00"
- },
- {
- "name": "symfony/deprecation-contracts",
- "version": "v2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665",
- "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "autoload": {
- "files": [
- "function.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "A generic function and convention to trigger deprecation notices",
- "homepage": "https://symfony.com",
- "time": "2020-09-07T11:33:47+00:00"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v5.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "94871fc0a69c3c5da57764187724cdce0755899c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/94871fc0a69c3c5da57764187724cdce0755899c",
- "reference": "94871fc0a69c3c5da57764187724cdce0755899c",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/event-dispatcher-contracts": "^2",
- "symfony/polyfill-php80": "^1.15"
- },
- "conflict": {
- "symfony/dependency-injection": "<4.4"
- },
- "provide": {
- "psr/event-dispatcher-implementation": "1.0",
- "symfony/event-dispatcher-implementation": "2.0"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/stopwatch": "^4.4|^5.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony EventDispatcher Component",
- "homepage": "https://symfony.com",
- "time": "2020-08-13T14:19:42+00:00"
- },
- {
- "name": "symfony/event-dispatcher-contracts",
- "version": "v2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2",
- "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "psr/event-dispatcher": "^1"
- },
- "suggest": {
- "symfony/event-dispatcher-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\EventDispatcher\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to dispatching event",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "time": "2020-09-07T11:33:47+00:00"
- },
- {
- "name": "symfony/filesystem",
- "version": "v5.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/filesystem.git",
- "reference": "f7b9ed6142a34252d219801d9767dedbd711da1a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/f7b9ed6142a34252d219801d9767dedbd711da1a",
- "reference": "f7b9ed6142a34252d219801d9767dedbd711da1a",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/polyfill-ctype": "~1.8"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Filesystem\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Filesystem Component",
- "homepage": "https://symfony.com",
- "time": "2020-08-21T17:19:47+00:00"
- },
- {
- "name": "symfony/finder",
- "version": "v5.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "2b765f0cf6612b3636e738c0689b29aa63088d5d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/2b765f0cf6612b3636e738c0689b29aa63088d5d",
- "reference": "2b765f0cf6612b3636e738c0689b29aa63088d5d",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Finder\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Finder Component",
- "homepage": "https://symfony.com",
- "time": "2020-08-17T10:01:29+00:00"
- },
- {
- "name": "symfony/options-resolver",
- "version": "v5.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/options-resolver.git",
- "reference": "9ff59517938f88d90b6e65311fef08faa640f681"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/9ff59517938f88d90b6e65311fef08faa640f681",
- "reference": "9ff59517938f88d90b6e65311fef08faa640f681",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-php80": "^1.15"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\OptionsResolver\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony OptionsResolver Component",
- "homepage": "https://symfony.com",
- "keywords": [
- "config",
- "configuration",
- "options"
- ],
- "time": "2020-07-12T12:58:00+00:00"
- },
- {
- "name": "symfony/polyfill-ctype",
- "version": "v1.18.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
- "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for ctype functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
- "time": "2020-07-14T12:35:20+00:00"
- },
- {
- "name": "symfony/polyfill-intl-grapheme",
- "version": "v1.18.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5",
- "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's grapheme_* functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "grapheme",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2020-07-14T12:35:20+00:00"
- },
- {
- "name": "symfony/polyfill-intl-normalizer",
- "version": "v1.18.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
- "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's Normalizer class and related functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "intl",
- "normalizer",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2020-07-14T12:35:20+00:00"
- },
- {
- "name": "symfony/polyfill-mbstring",
- "version": "v1.18.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
- "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-mbstring": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Mbstring extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2020-07-14T12:35:20+00:00"
- },
- {
- "name": "symfony/polyfill-php70",
- "version": "v1.18.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php70.git",
- "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3",
- "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3",
- "shasum": ""
- },
- "require": {
- "paragonie/random_compat": "~1.0|~2.0|~9.99",
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php70\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2020-07-14T12:35:20+00:00"
- },
- {
- "name": "symfony/polyfill-php72",
- "version": "v1.18.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "639447d008615574653fb3bc60d1986d7172eaae"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae",
- "reference": "639447d008615574653fb3bc60d1986d7172eaae",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2020-07-14T12:35:20+00:00"
- },
- {
- "name": "symfony/polyfill-php73",
- "version": "v1.18.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
- "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2020-07-14T12:35:20+00:00"
- },
- {
- "name": "symfony/polyfill-php80",
- "version": "v1.18.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
- "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
- "shasum": ""
- },
- "require": {
- "php": ">=7.0.8"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2020-07-14T12:35:20+00:00"
- },
- {
- "name": "symfony/process",
- "version": "v5.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "1864216226af21eb76d9477f691e7cbf198e0402"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/1864216226af21eb76d9477f691e7cbf198e0402",
- "reference": "1864216226af21eb76d9477f691e7cbf198e0402",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.15"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Process Component",
- "homepage": "https://symfony.com",
- "time": "2020-07-23T08:36:24+00:00"
- },
- {
- "name": "symfony/service-contracts",
- "version": "v2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/service-contracts.git",
- "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
- "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "psr/container": "^1.0"
- },
- "suggest": {
- "symfony/service-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Service\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to writing services",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "time": "2020-09-07T11:33:47+00:00"
- },
- {
- "name": "symfony/stopwatch",
- "version": "v5.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/stopwatch.git",
- "reference": "0f7c58cf81dbb5dd67d423a89d577524a2ec0323"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0f7c58cf81dbb5dd67d423a89d577524a2ec0323",
- "reference": "0f7c58cf81dbb5dd67d423a89d577524a2ec0323",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/service-contracts": "^1.0|^2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Stopwatch\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Stopwatch Component",
- "homepage": "https://symfony.com",
- "time": "2020-05-20T17:43:50+00:00"
- },
- {
- "name": "symfony/string",
- "version": "v5.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/string.git",
- "reference": "0de4cc1e18bb596226c06a82e2e7e9bc6001a63a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/0de4cc1e18bb596226c06a82e2e7e9bc6001a63a",
- "reference": "0de4cc1e18bb596226c06a82e2e7e9bc6001a63a",
- "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"
- },
- "require-dev": {
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/http-client": "^4.4|^5.0",
- "symfony/translation-contracts": "^1.1|^2",
- "symfony/var-exporter": "^4.4|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\String\\": ""
- },
- "files": [
- "Resources/functions.php"
- ],
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony String component",
- "homepage": "https://symfony.com",
- "keywords": [
- "grapheme",
- "i18n",
- "string",
- "unicode",
- "utf-8",
- "utf8"
- ],
- "time": "2020-08-17T07:48:54+00:00"
- },
- {
- "name": "symfony/var-dumper",
- "version": "v3.4.44",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/var-dumper.git",
- "reference": "3e31b82077039b1ea3b5a203ec1e3016606f4484"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3e31b82077039b1ea3b5a203ec1e3016606f4484",
- "reference": "3e31b82077039b1ea3b5a203ec1e3016606f4484",
- "shasum": ""
- },
- "require": {
- "php": "^5.5.9|>=7.0.8",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "conflict": {
- "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0"
- },
- "require-dev": {
- "ext-iconv": "*",
- "twig/twig": "~1.34|~2.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",
- "ext-symfony_debug": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.4-dev"
- }
- },
- "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": "Symfony mechanism for exploring and dumping PHP variables",
- "homepage": "https://symfony.com",
- "keywords": [
- "debug",
- "dump"
- ],
- "time": "2020-08-17T07:27:37+00:00"
- },
- {
- "name": "theseer/tokenizer",
- "version": "1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/theseer/tokenizer.git",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-tokenizer": "*",
- "ext-xmlwriter": "*",
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- }
- ],
- "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
- "time": "2020-07-12T23:59:07+00:00"
- },
- {
- "name": "webmozart/assert",
- "version": "1.9.1",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.3 || ^7.0 || ^8.0",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<3.9.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
- },
- "type": "library",
- "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"
- ],
- "time": "2020-07-08T17:02:28+00:00"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": {
- "escapestudios/symfony2-coding-standard": 20
- },
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": [],
- "platform-dev": []
-}
diff --git a/phpunit.xml b/phpunit.xml
new file mode 100644
index 0000000..3a2bf1a
--- /dev/null
+++ b/phpunit.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+ *
+
+
+ Assets
+ Config
+ Migrations
+ Tests
+ Translations
+ Views
+ vendor
+
+
+
+
+ Tests/Unit
+
+
+ Tests/Functional
+
+
+ Tests
+
+
+
+
+
+
+
+
+
+
+
+