From 7d86a997b30990564e3a6bb570d5e8dee648037a Mon Sep 17 00:00:00 2001 From: David Mellen Date: Thu, 8 Aug 2024 11:30:06 +0200 Subject: [PATCH] build: add phpstan and phpcs remind standard and adapt code style --- .build/phpcs.xml | 46 - .github/workflows/ci.yaml | 4 +- .gitignore | 20 +- .vscode/settings.json | 8 +- .../AbstractBreadcrumbTitleProvider.php | 2 +- .../BreadcrumbTitleProviderManager.php | 22 +- Classes/DataProcessing/FlexFormProcessor.php | 47 +- ...cheableContentIsGeneratedEventListener.php | 2 +- ...tureIdentifierInitializedEventListener.php | 8 +- .../Listener/EnrichFileDataEventListener.php | 2 +- Classes/Form/AbstractModelDecorator.php | 18 +- Classes/Form/FormDefinitionDecorator.php | 28 +- Classes/Middleware/AssetMiddleware.php | 32 +- .../ContentWithItemsPreviewRenderer.php | 5 +- Classes/Service/JsonService.php | 35 +- Classes/TCA/DisplayCond.php | 3 + Classes/Utility/ConfigUtility.php | 3 + Classes/Utility/TcaUtility.php | 26 +- Configuration/RequestMiddlewares.php | 4 +- Configuration/TCA/Overrides/pages.php | 20 +- .../TCA/Overrides/sys_file_reference.php | 20 +- Configuration/TCA/Overrides/sys_template.php | 2 + Configuration/TCA/Overrides/tt_content.php | 88 +- .../TCA/Overrides/tt_content_accordion.php | 42 +- .../Overrides/tt_content_footer_content.php | 6 +- .../tt_content_form_formframework.php | 2 + .../Overrides/tt_content_image_gallery.php | 6 +- .../TCA/Overrides/tt_content_tabs.php | 42 +- Configuration/TCA/tx_headless_item.php | 360 ++--- Tests/Unit/.gitkeep | 1 - composer.json | 21 +- composer.lock | 1316 +++++++++++------ ext_localconf.php | 44 +- phpcs.xml | 6 + phpstan.neon | 7 + 35 files changed, 1327 insertions(+), 971 deletions(-) delete mode 100644 .build/phpcs.xml delete mode 100644 Tests/Unit/.gitkeep create mode 100644 phpcs.xml create mode 100644 phpstan.neon diff --git a/.build/phpcs.xml b/.build/phpcs.xml deleted file mode 100644 index 9a21299..0000000 --- a/.build/phpcs.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - error - - - error - - - warning - - - error - - - error - - - error - - - warning - - - error - - - error - - - error - - - error - - - error - - - - - - error - - \ No newline at end of file diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 264c4e9..3a51f4a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: remindgmbh/commitlint-action@v1.0.0 - phpcs: + static-analysis: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -18,4 +18,4 @@ jobs: extensions: intl tools: composer:v2 - run: composer install - - run: composer run-script phpcs + - run: composer run-script static-analysis diff --git a/.gitignore b/.gitignore index 886cc03..8f49cf2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,18 +1,2 @@ -### IDE ### -nbproject/ -.idea/ - -### Composer ### -composer.phar - -### General ### -*.log -cache.properties - -### CI ### -.build/bin/ -.build/logs/ -.build/var/ -.build/vendor/ -.build/web/ -coverage.xml +/vendor +/public diff --git a/.vscode/settings.json b/.vscode/settings.json index 2326d1c..6c03ad3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,6 @@ { - "phpCodeSniffer.exec.linux": "./.build/bin/phpcs", + "phpCodeSniffer.exec.linux": "./vendor/bin/phpcs", "phpCodeSniffer.standard": "Custom", - "phpCodeSniffer.standardCustom": "./.build/phpcs.xml", - "phpCodeSniffer.exclude": [ - "**/.build/vendor/**" - ] + "phpCodeSniffer.standardCustom": "./phpcs.xml", + "phpCodeSniffer.exclude": [] } diff --git a/Classes/BreadcrumbTitle/AbstractBreadcrumbTitleProvider.php b/Classes/BreadcrumbTitle/AbstractBreadcrumbTitleProvider.php index d20ee70..4cbb58c 100644 --- a/Classes/BreadcrumbTitle/AbstractBreadcrumbTitleProvider.php +++ b/Classes/BreadcrumbTitle/AbstractBreadcrumbTitleProvider.php @@ -8,7 +8,7 @@ class AbstractBreadcrumbTitleProvider implements BreadcrumbTitleProviderInterface, SingletonInterface { - protected $title = ''; + protected string $title = ''; public function getTitle(): string { diff --git a/Classes/BreadcrumbTitle/BreadcrumbTitleProviderManager.php b/Classes/BreadcrumbTitle/BreadcrumbTitleProviderManager.php index 2fc6c5d..b700f23 100644 --- a/Classes/BreadcrumbTitle/BreadcrumbTitleProviderManager.php +++ b/Classes/BreadcrumbTitle/BreadcrumbTitleProviderManager.php @@ -16,7 +16,10 @@ class BreadcrumbTitleProviderManager implements SingletonInterface, LoggerAwareI { use LoggerAwareTrait; - private $breadcrumbTitleCache = []; + /** + * @var string[] + */ + private array $breadcrumbTitleCache = []; public function getTitle(): string { @@ -28,7 +31,7 @@ public function getTitle(): string $orderedTitleProviders = GeneralUtility::makeInstance(DependencyOrderingService::class) ->orderByDependencies($titleProviders); - $this->logger->debug('Breadcrumb title providers ordered', [ + $this->logger?->debug('Breadcrumb title providers ordered', [ 'orderedTitleProviders' => $orderedTitleProviders, ]); @@ -43,17 +46,17 @@ class_exists($configuration['provider']) && ($breadcrumbTitle = $titleProviderObject->getTitle()) || ($breadcrumbTitle = $this->breadcrumbTitleCache[$configuration['provider']] ?? '') !== '' ) { - $this->logger->debug('Breadcrumb title provider {provider} used on page {title}', [ - 'title' => $breadcrumbTitle, + $this->logger?->debug('Breadcrumb title provider {provider} used on page {title}', [ 'provider' => $configuration['provider'], + 'title' => $breadcrumbTitle, ]); $this->breadcrumbTitleCache[$configuration['provider']] = $breadcrumbTitle; break; } - $this->logger->debug('Breadcrumb title provider {provider} skipped on page {title}', [ - 'title' => $breadcrumbTitle, + $this->logger?->debug('Breadcrumb title provider {provider} skipped on page {title}', [ 'provider' => $configuration['provider'], 'providerUsed' => $configuration['provider'], + 'title' => $breadcrumbTitle, ]); } } @@ -61,6 +64,10 @@ class_exists($configuration['provider']) && return $breadcrumbTitle; } + /** + * @param mixed[] $orderInformation + * @return mixed[] + */ protected function setProviderOrder(array $orderInformation): array { foreach ($orderInformation as $provider => &$configuration) { @@ -88,6 +95,9 @@ protected function setProviderOrder(array $orderInformation): array return $orderInformation; } + /** + * @return mixed[] + */ private function getBreadcrumbTitleProviderConfiguration(): array { $typoscriptService = GeneralUtility::makeInstance(TypoScriptService::class); diff --git a/Classes/DataProcessing/FlexFormProcessor.php b/Classes/DataProcessing/FlexFormProcessor.php index d68e349..19bea8c 100644 --- a/Classes/DataProcessing/FlexFormProcessor.php +++ b/Classes/DataProcessing/FlexFormProcessor.php @@ -17,29 +17,32 @@ class FlexFormProcessor implements DataProcessorInterface { protected ContentObjectRenderer $cObj; + + /** + * @var mixed[] + */ protected array $processorConf; /** - * @param ContentObjectRenderer $cObj The data of the content element or page - * @param array $contentObjectConf The configuration of Content Object - * @param array $processorConf The configuration of this processor - * @param array $processedData Key/value store of processed data (e.g. to be passed to a Fluid View) - * @return array the processed data as key/value store + * @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter + * @param mixed[] $contentObjectConf + * @param mixed[] $processorConf + * @param mixed[] $processedData + * @return mixed[] */ public function process( ContentObjectRenderer $cObj, array $contentObjectConf, array $processorConf, array $processedData - ): array { - $this->cObj = $cObj; + ): array { $this->cObj = $cObj; $this->processorConf = $processorConf; $flexFormTools = GeneralUtility::makeInstance(FlexFormTools::class); $flexFormTools->reNumberIndexesOfSectionData = true; $flexFormService = GeneralUtility::makeInstance(FlexFormService::class); - $fieldName = $cObj->stdWrapValue('fieldName', $processorConf); + $fieldName = (string) $cObj->stdWrapValue('fieldName', $processorConf); // default flexform field name if (empty($fieldName)) { @@ -93,20 +96,20 @@ public function process( if (!empty($targetVariableName)) { $processedData[$targetVariableName] = $flexformData; } else { - if ($processedData['data'][$fieldName]) { - $processedData['data'][$fieldName] = $flexformData; - } else { - $processedData[$fieldName] = $flexformData; - } + $processedData['data'][$fieldName] = $flexformData; } return $processedData; } + /** + * @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter + * @param mixed[] $element + */ public function parseElement( array $element, string $value, - $additionalParameters, + mixed $additionalParameters, string $path, FlexFormTools $flexFormTools ): void { @@ -127,7 +130,7 @@ public function parseElement( } if ($type === 'text') { - $newValue = $this->cObj->parseFunc($value, [], '< lib.parseFunc_links'); + $newValue = $this->cObj->parseFunc($value, null, '< lib.parseFunc_links'); } if ($type === 'file') { @@ -140,9 +143,13 @@ public function parseElement( $fieldName = $element['config']['foreign_match_fields']['fieldname']; try { - $overrule = ArrayUtility::getValueByPath($this->processorConf, ['filesConfiguration.', ...array_map(function ($value) { - return $value . '.'; - }, explode('.', $fieldName))]); + $overrule = ArrayUtility::getValueByPath( + $this->processorConf, + ['filesConfiguration.', ...array_map(function ($value) { + return $value . '.'; + }, + explode('.', $fieldName))] + ); ArrayUtility::mergeRecursiveWithOverrule($assetProcessingConfiguration, $overrule); } catch (MissingArrayPathException $e) { } @@ -151,14 +158,14 @@ public function parseElement( $as = 'file'; $processorConfiguration = [ 'as' => $as, + 'processingConfiguration.' => $assetProcessingConfiguration, 'references.' => [ 'fieldName' => $fieldName, ], - 'processingConfiguration.' => $assetProcessingConfiguration, ]; $processedData = [ - 'data' => $this->cObj->data, 'current' => null, + 'data' => $this->cObj->data, ]; $processedData = $filesProcessor->process( $this->cObj, diff --git a/Classes/Event/Listener/AfterCacheableContentIsGeneratedEventListener.php b/Classes/Event/Listener/AfterCacheableContentIsGeneratedEventListener.php index eda3e66..a4d1b3c 100644 --- a/Classes/Event/Listener/AfterCacheableContentIsGeneratedEventListener.php +++ b/Classes/Event/Listener/AfterCacheableContentIsGeneratedEventListener.php @@ -17,7 +17,7 @@ public function __construct( ) { } - public function __invoke(AfterCacheableContentIsGeneratedEvent $event) + public function __invoke(AfterCacheableContentIsGeneratedEvent $event): void { try { $content = json_decode($event->getController()->content, true, 512, JSON_THROW_ON_ERROR); diff --git a/Classes/Event/Listener/AfterFlexFormDataStructureIdentifierInitializedEventListener.php b/Classes/Event/Listener/AfterFlexFormDataStructureIdentifierInitializedEventListener.php index 8e1d020..b06929e 100644 --- a/Classes/Event/Listener/AfterFlexFormDataStructureIdentifierInitializedEventListener.php +++ b/Classes/Event/Listener/AfterFlexFormDataStructureIdentifierInitializedEventListener.php @@ -1,5 +1,7 @@ getParsedBody(); + $body = (array) $request->getParsedBody(); $context = json_decode($body['ajax']['context'] ?? null, true); $config = json_decode($context['config'] ?? null, true); $queryParams = parse_url($config['originalReturnUrl'], PHP_URL_QUERY); - parse_str($queryParams, $queryParams); + parse_str($queryParams ?: '', $queryParams); $type = $queryParams['defVals'][$foreignTable][$foreignField] ?? null; } else { $connectionPool = GeneralUtility::makeInstance(ConnectionPool::class); @@ -54,7 +56,7 @@ public function __invoke(AfterFlexFormDataStructureIdentifierInitializedEvent $e $type = $queryBuilder->executeQuery()->fetchOne(); } } else { - $body = $request->getParsedBody(); + $body = (array) $request->getParsedBody(); $foreignRow = current($body['data'][$foreignTable]); $type = $foreignRow[$foreignField]; } diff --git a/Classes/Event/Listener/EnrichFileDataEventListener.php b/Classes/Event/Listener/EnrichFileDataEventListener.php index 593d68b..f3f773f 100644 --- a/Classes/Event/Listener/EnrichFileDataEventListener.php +++ b/Classes/Event/Listener/EnrichFileDataEventListener.php @@ -12,7 +12,7 @@ public function __invoke(EnrichFileDataEvent $event): void { $originalFile = $event->getOriginal(); $properties = $event->getProperties(); - $properties['lazyLoading'] = (bool) $originalFile->getProperty('tx_headless_lazy_loading') ?? true; + $properties['lazyLoading'] = (bool) $originalFile->getProperty('tx_headless_lazy_loading'); $event->setProperties($properties); } } diff --git a/Classes/Form/AbstractModelDecorator.php b/Classes/Form/AbstractModelDecorator.php index a7178c1..8492f79 100644 --- a/Classes/Form/AbstractModelDecorator.php +++ b/Classes/Form/AbstractModelDecorator.php @@ -9,9 +9,16 @@ abstract class AbstractModelDecorator extends FormDefinitionDecorator { protected string $actionName = ''; + protected string $controllerName = ''; + protected string $valueName = ''; + /** + * @param mixed[] $decorated + * @param mixed[] $definition + * @return mixed[] + */ protected function overrideDefinition(array $decorated, array $definition, int $currentPage): array { $decorated = parent::overrideDefinition($decorated, $definition, $currentPage); @@ -25,15 +32,18 @@ protected function overrideDefinition(array $decorated, array $definition, int $ $controllerArguments = $arguments[$this->controllerName] ?? null; - if ($controllerArguments) { - $uid = (int) $controllerArguments[$this->valueName] ?? null; + if (is_array($controllerArguments)) { + $uid = (int) $controllerArguments[$this->valueName]; $action = $controllerArguments['action'] ?? null; - if ($action === $this->actionName && $uid) { + if ( + $action === $this->actionName && + $uid + ) { $decorated['elements'][] = [ - 'type' => 'Hidden', 'defaultValue' => $uid, 'name' => $this->controllerName . '[' . $this->valueName . ']', + 'type' => 'Hidden', ]; } } diff --git a/Classes/Form/FormDefinitionDecorator.php b/Classes/Form/FormDefinitionDecorator.php index ff4d315..4f4f7d9 100644 --- a/Classes/Form/FormDefinitionDecorator.php +++ b/Classes/Form/FormDefinitionDecorator.php @@ -7,6 +7,7 @@ use FriendsOfTYPO3\Headless\Form\Decorator\AbstractFormDefinitionDecorator; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer; +use TYPO3\CMS\Frontend\Typolink\LinkResult; class FormDefinitionDecorator extends AbstractFormDefinitionDecorator { @@ -18,12 +19,22 @@ class FormDefinitionDecorator extends AbstractFormDefinitionDecorator ]; private ContentObjectRenderer $cObj; + + /** + * @param mixed[] $formStatus + */ public function __construct(array $formStatus = []) { parent::__construct($formStatus); $this->cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class); } + /** + * @phpcsSuppress SlevomatCodingStandard.Functions.UnusedParameter + * @param mixed[] $decorated + * @param mixed[] $definition + * @return mixed[] + */ protected function overrideDefinition(array $decorated, array $definition, int $currentPage): array { foreach ($decorated['elements'] as &$element) { @@ -33,6 +44,9 @@ protected function overrideDefinition(array $decorated, array $definition, int $ return $decorated; } + /** + * @param mixed[] $element + */ private function setNotEmptyValidationErrorMessages(array &$element): void { $notEmptyValidators = array_filter($element['validators'] ?? [], function (array $validator) { @@ -54,12 +68,20 @@ private function setNotEmptyValidationErrorMessages(array &$element): void unset($element['properties']['fluidAdditionalAttributes']); } + /** + * @param mixed[] $element + */ private function setCheckboxLinks(array &$element): void { - if ($element['type'] === 'Checkbox' && isset($element['properties']['links'])) { + if ( + $element['type'] === 'Checkbox' && + isset($element['properties']['links']) + ) { foreach ($element['properties']['links'] as $pageUid => $label) { - $link = $this->cObj->createLink($label, ['parameter' => $pageUid])->getHtml(); - $element['label'] = sprintf($element['label'], $link); + $link = $this->cObj->createLink($label, ['parameter' => $pageUid]); + if ($link instanceof LinkResult) { + $element['label'] = sprintf($element['label'], $link->getHtml()); + } } unset($element['properties']['links']); } diff --git a/Classes/Middleware/AssetMiddleware.php b/Classes/Middleware/AssetMiddleware.php index 6bf2303..71b35ed 100644 --- a/Classes/Middleware/AssetMiddleware.php +++ b/Classes/Middleware/AssetMiddleware.php @@ -9,7 +9,6 @@ use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; -use TYPO3\CMS\Core\Imaging\ImageManipulation\Area; use TYPO3\CMS\Core\Imaging\ImageManipulation\CropVariantCollection; use TYPO3\CMS\Core\Resource\AbstractFile; use TYPO3\CMS\Core\Resource\ResourceFactory; @@ -18,20 +17,22 @@ class AssetMiddleware implements MiddlewareInterface { private ResponseFactoryInterface $responseFactory; + private ImageService $imageService; + private ResourceFactory $resourceFactory; - public function injectImageService(ImageService $imageService) + public function injectImageService(ImageService $imageService): void { $this->imageService = $imageService; } - public function injectResponseFactory(ResponseFactoryInterface $responseFactory) + public function injectResponseFactory(ResponseFactoryInterface $responseFactory): void { $this->responseFactory = $responseFactory; } - public function injectResourceFactory(ResourceFactory $resourceFactory) + public function injectResourceFactory(ResourceFactory $resourceFactory): void { $this->resourceFactory = $resourceFactory; } @@ -43,7 +44,10 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface $path = $routing->getUri()->getPath(); $queryParams = $request->getQueryParams(); $uid = $queryParams['uid'] ?? null; - if ($path === '/asset' && $uid) { + if ( + $path === '/asset' && + $uid + ) { $resource = $this->resourceFactory->getFileReferenceObject($uid); $tstamp = intval($resource->getProperty('tstamp')); @@ -62,7 +66,13 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface $targetFileExtension = $queryParams['fileExtension'] ?? null; // Skip processing for SVGs without changing image type - if ($resource->getExtension() !== 'svg' || (!$targetFileExtension || $targetFileExtension === 'svg')) { + if ( + $resource->getExtension() !== 'svg' || + ( + !$targetFileExtension || + $targetFileExtension === 'svg' + ) + ) { $cropVariant = $queryParams['breakpoint'] ?? 'default'; $crop = $resource->getProperty('crop'); @@ -70,17 +80,17 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface $cropArea = $cropVariantCollection->getCropArea($cropVariant); // Use default cropVariant if breakpoint cropVariant does not exist - if ($cropArea == Area::createEmpty()) { + if ($cropArea->isEmpty()) { $cropArea = $cropVariantCollection->getCropArea(); } $processingInstructions = [ - 'width' => $queryParams['width'] ?? null, + 'crop' => $cropArea->makeAbsoluteBasedOnFile($resource), + 'fileExtension' => $queryParams['fileExtension'] ?? null, 'height' => $queryParams['height'] ?? null, - 'maxWidth' => $queryParams['maxWidth'] ?? null, 'maxHeight' => $queryParams['maxHeight'] ?? null, - 'fileExtension' => $queryParams['fileExtension'] ?? null, - 'crop' => $cropArea->makeAbsoluteBasedOnFile($resource), + 'maxWidth' => $queryParams['maxWidth'] ?? null, + 'width' => $queryParams['width'] ?? null, ]; $processedResource = $this->imageService->applyProcessingInstructions($resource, $processingInstructions); diff --git a/Classes/Preview/ContentWithItemsPreviewRenderer.php b/Classes/Preview/ContentWithItemsPreviewRenderer.php index fac2cb6..94d45b3 100644 --- a/Classes/Preview/ContentWithItemsPreviewRenderer.php +++ b/Classes/Preview/ContentWithItemsPreviewRenderer.php @@ -58,6 +58,9 @@ public function renderPageModulePreviewContent(GridColumnItem $item): string return $out; } + /** + * @param mixed[] $item + */ private function renderItemHeader(array $item): string { $outHeader = ''; @@ -67,7 +70,7 @@ private function renderItemHeader(array $item): string $hiddenHeaderNote = ''; // If header layout is set to 'hidden', display an accordant note: - if ($item['header_layout'] == 100) { + if (((int) $item['header_layout']) === 100) { $hiddenHeaderNote = ' [' . htmlspecialchars($this->getLanguageService()->sL( 'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.hidden' )) . ']'; diff --git a/Classes/Service/JsonService.php b/Classes/Service/JsonService.php index 515f038..75ad6ba 100644 --- a/Classes/Service/JsonService.php +++ b/Classes/Service/JsonService.php @@ -6,32 +6,26 @@ use FriendsOfTYPO3\Headless\Utility\FileUtility; use Psr\Http\Message\ServerRequestInterface; -use Psr\Log\LoggerInterface; use TYPO3\CMS\Core\Pagination\PaginationInterface; -use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; use TYPO3\CMS\Extbase\Mvc\Web\RequestBuilder; use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder; use TYPO3\CMS\Extbase\Service\ImageService; class JsonService { - private array $settings = []; - public function __construct( private readonly UriBuilder $uriBuilder, - private readonly LoggerInterface $logger, private readonly ImageService $imageService, private readonly FileUtility $fileUtility, RequestBuilder $requestBuilder, - ConfigurationManagerInterface $configurationManager ) { $extbaseRequest = $requestBuilder->build($this->getRequest()); $this->uriBuilder->setRequest($extbaseRequest); - $this->settings = $configurationManager->getConfiguration( - ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS - ); } + /** + * @return mixed[] + */ public function serializePagination(PaginationInterface $pagination, string $queryParam, int $currentPage): array { $firstPageNumber = $pagination->getFirstPageNumber(); @@ -49,14 +43,20 @@ public function serializePagination(PaginationInterface $pagination, string $que ->setAddQueryString('untrusted') ->uriFor(null, [$queryParam => $lastPageNumber]); - if ($previousPageNumber && $previousPageNumber >= $firstPageNumber) { + if ( + $previousPageNumber && + $previousPageNumber >= $firstPageNumber + ) { $prev = $this->uriBuilder ->reset() ->setAddQueryString('untrusted') ->uriFor(null, [$queryParam => $previousPageNumber]); } - if ($nextPageNumber && $nextPageNumber <= $lastPageNumber) { + if ( + $nextPageNumber && + $nextPageNumber <= $lastPageNumber + ) { $next = $this->uriBuilder ->reset() ->setAddQueryString('untrusted') @@ -72,26 +72,29 @@ public function serializePagination(PaginationInterface $pagination, string $que ->uriFor(null, [$queryParam => $page]); $pages[] = [ - 'pageNumber' => $page, - 'link' => $link, 'active' => $page === $currentPage, + 'link' => $link, + 'pageNumber' => $page, ]; } $result = [ - 'startRecordNumber' => $pagination->getStartRecordNumber(), 'endRecordNumber' => $pagination->getEndRecordNumber(), 'first' => $first, 'last' => $last, - 'prev' => $prev ?? null, 'next' => $next ?? null, 'pages' => $pages, + 'prev' => $prev ?? null, + 'startRecordNumber' => $pagination->getStartRecordNumber(), ]; return $result; } - public function processImage(int $uid): ?array + /** + * @return mixed[] + */ + public function processImage(int $uid): array { $imageObj = $this->imageService->getImage(strval($uid), null, true); return $this->fileUtility->processFile($imageObj); diff --git a/Classes/TCA/DisplayCond.php b/Classes/TCA/DisplayCond.php index 25c6108..d9ec961 100644 --- a/Classes/TCA/DisplayCond.php +++ b/Classes/TCA/DisplayCond.php @@ -10,6 +10,9 @@ class DisplayCond { + /** + * @param mixed[] $args + */ public function parentIsRoot(array $args): bool { ['record' => $record] = $args; diff --git a/Classes/Utility/ConfigUtility.php b/Classes/Utility/ConfigUtility.php index fc5f7e1..bf25ff3 100644 --- a/Classes/Utility/ConfigUtility.php +++ b/Classes/Utility/ConfigUtility.php @@ -12,6 +12,9 @@ class ConfigUtility { + /** + * @return mixed[] + */ public static function getRootPageConfig(): array { $request = self::getRequest(); diff --git a/Classes/Utility/TcaUtility.php b/Classes/Utility/TcaUtility.php index dafa24e..232fc7e 100644 --- a/Classes/Utility/TcaUtility.php +++ b/Classes/Utility/TcaUtility.php @@ -12,7 +12,7 @@ class TcaUtility { /** - * @param array $variants array with breakpoint names as key and aspect-ratios as value + * @param mixed[] $variants array with breakpoint names as key and aspect-ratios as value * the value can contain multple aspect ratios consisting of value and title * e.g. [ * 'lg' => [ @@ -23,16 +23,16 @@ class TcaUtility * ['value' => 16 / 9, 'title' => '16:9'] * ] * ] + * @return mixed[] */ public static function getCropVariants(array $variants): array { return array_reduce(array_keys($variants), function (array $result, string $breakpoint) use ($variants) { $aspectRatios = $variants[$breakpoint]; $result[$breakpoint] = [ - 'title' => $breakpoint, 'allowedAspectRatios' => array_reduce(array_keys($aspectRatios), function ( array $result, - string $key + string|int $key ) use ( $aspectRatios, $breakpoint, @@ -41,11 +41,16 @@ public static function getCropVariants(array $variants): array $result[$breakpoint . '_' . $aspectRatio['value']] = $aspectRatio; return $result; }, []), + 'title' => $breakpoint, ]; return $result; }, []); } + /** + * @param mixed[] $breakpoints + * @return mixed[] + */ public static function getCropVariantsFree(array $breakpoints): array { return self::getCropVariants( @@ -54,8 +59,8 @@ public static function getCropVariantsFree(array $breakpoints): array function (array $result, string $breakpoint) { $result[$breakpoint] = [ [ - 'value' => 0.0, 'title' => 'LLL:EXT:core/Resources/Private/Language/locallang_wizards.xlf:imwizard.ratio.free', + 'value' => 0.0, ], ]; return $result; @@ -65,8 +70,8 @@ function (array $result, string $breakpoint) { ); } - /** - * @param array|string $dataStructure either a xml flexform file path, a xml flexform string or a flexform array + /** + * @param mixed[]|string $dataStructure either a xml flexform file path, a xml flexform string or a flexform array */ public static function addPageConfigFlexForm(array|string $dataStructure): void { @@ -86,6 +91,10 @@ public static function addPageConfigFlexForm(array|string $dataStructure): void $GLOBALS['TCA']['pages']['columns']['tx_headless_config']['config']['ds']['default'] = $newFlexFormString; } + /** + * @param mixed[]|string $dataStructure either a xml flexform file path, a xml flexform string or a flexform array + * @return mixed[] + */ private static function getFlexFormArray(array|string $dataStructure): array { if (is_array($dataStructure)) { @@ -94,7 +103,10 @@ private static function getFlexFormArray(array|string $dataStructure): array // Taken from TYPO3\CMS\Core\Configuration\FlexForm\FlexFormTools if (strpos(trim($dataStructure), 'FILE:') === 0) { $file = GeneralUtility::getFileAbsFileName(substr(trim($dataStructure), 5)); - if (empty($file) || !@is_file($file)) { + if ( + empty($file) || + !@is_file($file) + ) { throw new RuntimeException( 'Data structure file ' . $file . ' could not be resolved to an existing file', 1478105826 diff --git a/Configuration/RequestMiddlewares.php b/Configuration/RequestMiddlewares.php index 5a4eb04..dcd398e 100644 --- a/Configuration/RequestMiddlewares.php +++ b/Configuration/RequestMiddlewares.php @@ -1,17 +1,19 @@ [ 'rmnd_headless/asset' => [ - 'target' => AssetMiddleware::class, 'after' => [ 'typo3/cms-frontend/site', ], 'before' => [ 'typo3/cms-frontend/backend-user-authentication', ], + 'target' => AssetMiddleware::class, ], ], ]; diff --git a/Configuration/TCA/Overrides/pages.php b/Configuration/TCA/Overrides/pages.php index 302a220..d085bb0 100644 --- a/Configuration/TCA/Overrides/pages.php +++ b/Configuration/TCA/Overrides/pages.php @@ -1,5 +1,7 @@ [ - 'exclude' => 0, - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_pages.xlf:breadcrumbs_background_color', 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', + 'default' => null, 'items' => [ [ 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_pages.xlf:breadcrumbs_background_color.none', 'value' => null, ], ], - 'default' => null, + 'renderType' => 'selectSingle', + 'type' => 'select', ], + 'exclude' => 0, + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_pages.xlf:breadcrumbs_background_color', ], 'tx_headless_config' => [ - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_pages.xlf:page_config', 'config' => [ - 'type' => 'flex', 'behaviour' => [ 'allowLanguageSynchronization' => true, ], 'ds' => [ 'default' => 'FILE:EXT:rmnd_headless/Configuration/FlexForms/Empty.xml', ], + 'type' => 'flex', ], 'displayCond' => 'FIELD:is_siteroot:REQ:true', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_pages.xlf:page_config', ], 'tx_headless_overview_label' => [ - 'exclude' => 0, - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_pages.xlf:overview_label', 'config' => [ 'type' => 'input', ], + 'exclude' => 0, + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_pages.xlf:overview_label', ], ] ); diff --git a/Configuration/TCA/Overrides/sys_file_reference.php b/Configuration/TCA/Overrides/sys_file_reference.php index 687c355..a992ab9 100644 --- a/Configuration/TCA/Overrides/sys_file_reference.php +++ b/Configuration/TCA/Overrides/sys_file_reference.php @@ -1,5 +1,7 @@ [ - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_file.xlf:lazy_loading', - 'description' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_file.xlf:lazy_loading.description', 'config' => [ - 'type' => 'check', - 'renderType' => 'checkboxToggle', 'default' => 0, + 'renderType' => 'checkboxToggle', + 'type' => 'check', ], + 'description' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_file.xlf:lazy_loading.description', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_file.xlf:lazy_loading', ], ]); -$GLOBALS - ['TCA'] - ['sys_file_reference'] - ['types'] - [AbstractFile::FILETYPE_IMAGE] - ['columnsOverrides'] - ['tx_headless_lazy_loading'] - ['config'] - ['default'] = 1; +$GLOBALS['TCA']['sys_file_reference']['types'][AbstractFile::FILETYPE_IMAGE]['columnsOverrides']['tx_headless_lazy_loading']['config']['default'] = 1; ExtensionManagementUtility::addFieldsToPalette( 'sys_file_reference', diff --git a/Configuration/TCA/Overrides/sys_template.php b/Configuration/TCA/Overrides/sys_template.php index e2e554d..59014ac 100644 --- a/Configuration/TCA/Overrides/sys_template.php +++ b/Configuration/TCA/Overrides/sys_template.php @@ -1,5 +1,7 @@ [ - 'exclude' => 0, - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:background_color', 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', + 'default' => null, 'items' => [ [ 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:background_color.none', 'value' => null, ], ], - 'default' => null, + 'renderType' => 'selectSingle', + 'type' => 'select', ], + 'exclude' => 0, + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:background_color', 'onChange' => 'reload', ], 'tx_headless_background_full_width' => [ - 'exclude' => 0, - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:background_full_width', 'config' => [ - 'type' => 'check', - 'renderType' => 'checkboxToggle', 'items' => [ [ 'label' => '', 'value' => 0, ], ], + 'renderType' => 'checkboxToggle', + 'type' => 'check', ], 'displayCond' => 'FIELD:tx_headless_background_color:REQ:true', + 'exclude' => 0, + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:background_full_width', ], 'tx_headless_cookie_category' => [ - 'exclude' => 0, - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.category', 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', + 'default' => null, 'items' => [ [ 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.category.none', @@ -67,36 +66,36 @@ 'value' => 3, ], ], - 'default' => null, + 'renderType' => 'selectSingle', + 'type' => 'select', ], + 'exclude' => 0, + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.category', ], 'tx_headless_cookie_message' => [ - 'l10n_mode' => 'prefixLangTitle', - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.message', 'config' => [ - 'type' => 'text', 'cols' => 80, + 'enableRichtext' => true, 'rows' => 10, 'softref' => 'typolink_tag,email[subst],url', - 'enableRichtext' => true, + 'type' => 'text', ], + 'l10n_mode' => 'prefixLangTitle', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:cookie.message', ], 'tx_headless_item' => [ - 'exclude' => 0, - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:tx_headless_item', 'config' => [ - 'type' => 'inline', - 'foreign_table' => 'tx_headless_item', 'foreign_field' => 'foreign_uid', + 'foreign_table' => 'tx_headless_item', 'foreign_table_field' => 'foreign_table', + 'type' => 'inline', ], - ], - 'tx_headless_space_before_inside' => [ 'exclude' => 0, - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_before_inside', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:tx_headless_item', + ], + 'tx_headless_space_after_inside' => [ 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', + 'default' => '', 'items' => [ [ 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_none', @@ -123,16 +122,16 @@ 'value' => 'extra-large', ], ], - 'default' => '', + 'renderType' => 'selectSingle', + 'type' => 'select', ], 'displayCond' => 'FIELD:tx_headless_background_color:REQ:true', - ], - 'tx_headless_space_after_inside' => [ 'exclude' => 0, 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_after_inside', + ], + 'tx_headless_space_before_inside' => [ 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', + 'default' => '', 'items' => [ [ 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_none', @@ -159,9 +158,12 @@ 'value' => 'extra-large', ], ], - 'default' => '', + 'renderType' => 'selectSingle', + 'type' => 'select', ], 'displayCond' => 'FIELD:tx_headless_background_color:REQ:true', + 'exclude' => 0, + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_before_inside', ], ] ); @@ -228,21 +230,5 @@ ]; // Workaround for TCEFORM (https://forge.typo3.org/issues/100775) - $GLOBALS - ['TCA'] - ['tt_content'] - ['columns'] - ['space_after_class'] - ['config'] - ['items'] - [0] - ['label'] = 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_none'; - $GLOBALS - ['TCA'] - ['tt_content'] - ['columns'] - ['space_before_class'] - ['config'] - ['items'] - [0] - ['label'] = 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_none'; + $GLOBALS['TCA']['tt_content']['columns']['space_after_class']['config']['items'][0]['label'] = 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_none'; + $GLOBALS['TCA']['tt_content']['columns']['space_before_class']['config']['items'][0]['label'] = 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:space_none'; diff --git a/Configuration/TCA/Overrides/tt_content_accordion.php b/Configuration/TCA/Overrides/tt_content_accordion.php index 08177b6..17dcb32 100644 --- a/Configuration/TCA/Overrides/tt_content_accordion.php +++ b/Configuration/TCA/Overrides/tt_content_accordion.php @@ -1,5 +1,7 @@ 'default', + 'icon' => 'content-accordion', 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ce.xlf:accordion.title', 'value' => 'accordion', - 'icon' => 'content-accordion', - 'group' => 'default', ], ); $GLOBALS['TCA']['tt_content']['types']['accordion'] = [ - 'showitem' => ' - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, - --palette--;;general, - --palette--;;headers, - tx_headless_item, - --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance, - --palette--;;frames, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, - --palette--;;language, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, - --palette--;;hidden, - --palette--;;access, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, - categories, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes, - rowDescription, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended, - ', 'columnsOverrides' => [ 'tx_headless_item' => [ 'config' => [ @@ -58,4 +42,22 @@ ], ], ], + 'showitem' => ' + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, + --palette--;;general, + --palette--;;headers, + tx_headless_item, + --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance, + --palette--;;frames, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, + --palette--;;language, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, + --palette--;;hidden, + --palette--;;access, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, + categories, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes, + rowDescription, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended, + ', ]; diff --git a/Configuration/TCA/Overrides/tt_content_footer_content.php b/Configuration/TCA/Overrides/tt_content_footer_content.php index 1497f84..f14eca1 100644 --- a/Configuration/TCA/Overrides/tt_content_footer_content.php +++ b/Configuration/TCA/Overrides/tt_content_footer_content.php @@ -1,5 +1,7 @@ 'default', + 'icon' => 'content-footer', 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ce.xlf:footer_content.title', 'value' => 'footer_content', - 'icon' => 'content-footer', - 'group' => 'default', ], ); diff --git a/Configuration/TCA/Overrides/tt_content_form_formframework.php b/Configuration/TCA/Overrides/tt_content_form_formframework.php index 892aa98..ba5b603 100644 --- a/Configuration/TCA/Overrides/tt_content_form_formframework.php +++ b/Configuration/TCA/Overrides/tt_content_form_formframework.php @@ -1,5 +1,7 @@ 'default', + 'icon' => 'content-gallery', 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ce.xlf:image_gallery.title', 'value' => 'image_gallery', - 'icon' => 'content-gallery', - 'group' => 'default', ], ); diff --git a/Configuration/TCA/Overrides/tt_content_tabs.php b/Configuration/TCA/Overrides/tt_content_tabs.php index c9368d2..a254a5d 100644 --- a/Configuration/TCA/Overrides/tt_content_tabs.php +++ b/Configuration/TCA/Overrides/tt_content_tabs.php @@ -1,5 +1,7 @@ 'default', + 'icon' => 'content-tab', 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ce.xlf:tabs.title', 'value' => 'tabs', - 'icon' => 'content-tab', - 'group' => 'default', ], ); $GLOBALS['TCA']['tt_content']['types']['tabs'] = [ - 'showitem' => ' - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, - --palette--;;general, - --palette--;;headers, - tx_headless_item, - --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance, - --palette--;;frames, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, - --palette--;;language, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, - --palette--;;hidden, - --palette--;;access, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, - categories, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes, - rowDescription, - --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended, - ', 'columnsOverrides' => [ 'tx_headless_item' => [ 'config' => [ @@ -58,4 +42,22 @@ ], ], ], + 'showitem' => ' + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, + --palette--;;general, + --palette--;;headers, + tx_headless_item, + --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance, + --palette--;;frames, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language, + --palette--;;language, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, + --palette--;;hidden, + --palette--;;access, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories, + categories, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes, + rowDescription, + --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended, + ', ]; diff --git a/Configuration/TCA/tx_headless_item.php b/Configuration/TCA/tx_headless_item.php index 19134dd..25b996c 100644 --- a/Configuration/TCA/tx_headless_item.php +++ b/Configuration/TCA/tx_headless_item.php @@ -1,40 +1,37 @@ [ - 'title' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_item.xlf:title', - 'label' => 'header', - 'label_alt' => 'subheader,bodytext', - 'tstamp' => 'tstamp', - 'crdate' => 'crdate', - 'hideTable' => true, - 'sortby' => 'sorting', - 'delete' => 'deleted', - 'versioningWS' => true, - 'languageField' => 'sys_language_uid', - 'transOrigPointerField' => 'l10n_parent', - 'transOrigDiffSourceField' => 'l10n_diffsource', - 'translationSource' => 'l10n_source', - 'enablecolumns' => [ - 'disabled' => 'hidden', - 'starttime' => 'starttime', - 'endtime' => 'endtime', + 'columns' => [ + 'bodytext' => [ + 'config' => [ + 'cols' => 80, + 'enableRichtext' => true, + 'rows' => 10, + 'softref' => 'typolink_tag,email[subst],url', + 'type' => 'text', + ], + 'l10n_mode' => 'prefixLangTitle', + 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.text', ], - 'searchFields' => 'header,subheader,bodytext', - 'iconfile' => 'EXT:core/Resources/Public/Icons/T3Icons/svgs/actions/actions-folder.svg', - 'security' => [ - 'ignorePageTypeRestriction' => true, + 'endtime' => [ + 'config' => [ + 'default' => 0, + 'range' => [ + 'upper' => mktime(0, 0, 0, 1, 1, 2038), + ], + 'type' => 'datetime', + ], + 'exclude' => true, + 'l10n_display' => 'defaultAsReadonly', + 'l10n_mode' => 'exclude', + 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', ], - ], - 'columns' => [ 'flexform' => [ - 'l10n_display' => 'hideDiff', - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_item.xlf:columns.flexform', 'config' => [ - // FlexForm according to tt_content:CType is selected in Remind\Headless\Event\Listener\AfterFlexFormDataStructureIdentifierInitializedEventListener - 'type' => 'flex', 'ds' => [ 'default' => ' @@ -54,117 +51,43 @@ ', ], + // FlexForm according to tt_content:CType is selected in Remind\Headless\Event\Listener\AfterFlexFormDataStructureIdentifierInitializedEventListener + 'type' => 'flex', ], + 'l10n_display' => 'hideDiff', + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_item.xlf:columns.flexform', ], - 'sys_language_uid' => [ - 'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.language', - 'config' => [ - 'type' => 'language', - 'renderType' => 'selectSingle', - ], - ], - 'l10n_parent' => [ - 'displayCond' => 'FIELD:sys_language_uid:>:0', - 'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent', - 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', - 'items' => [ - [ - 'label' => '', - 'value' => 0, - ], - ], - 'foreign_table' => 'tx_headless_item', - 'foreign_table_where' => 'AND tx_headless_item.uid=###REC_FIELD_l10n_parent### AND tx_headless_item.sys_language_uid IN (-1,0)', - 'default' => 0, - ], - ], - 'l10n_diffsource' => [ - 'config' => [ - 'type' => 'passthrough', - 'default' => '', - ], - ], - 'l10n_source' => [ - 'config' => [ - 'type' => 'passthrough', - ], - ], - 'hidden' => [ - 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden', - 'config' => [ - 'type' => 'check', - 'default' => 0, - ], - ], - 'starttime' => [ - 'exclude' => true, - 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', - 'config' => [ - 'type' => 'datetime', - 'default' => 0, - ], - 'l10n_mode' => 'exclude', - 'l10n_display' => 'defaultAsReadonly', - ], - 'endtime' => [ - 'exclude' => true, - 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.endtime', + 'foreign_table' => [ 'config' => [ - 'type' => 'datetime', - 'default' => 0, - 'range' => [ - 'upper' => mktime(0, 0, 0, 1, 1, 2038), - ], + 'eval' => 'trim', + 'size' => 30, + 'type' => 'input', ], 'l10n_mode' => 'exclude', - 'l10n_display' => 'defaultAsReadonly', ], 'foreign_uid' => [ - 'exclude' => true, 'config' => [ 'allowed' => '', - 'type' => 'group', - 'size' => 1, 'maxitems' => 1, 'minitems' => 0, + 'size' => 1, + 'type' => 'group', ], + 'exclude' => true, ], - 'foreign_table' => [ - 'l10n_mode' => 'exclude', + 'header' => [ 'config' => [ + 'max' => 256, + 'size' => 50, 'type' => 'input', - 'size' => 30, - 'eval' => 'trim', - ], - ], - 'tx_headless_item' => [ - 'exclude' => 0, - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:tx_headless_item', - 'config' => [ - 'type' => 'inline', - 'foreign_table' => 'tx_headless_item', - 'foreign_field' => 'foreign_uid', - 'foreign_table_field' => 'foreign_table', ], - ], - 'header' => [ - 'l10n_mode' => 'prefixLangTitle', 'l10n_cat' => 'text', + 'l10n_mode' => 'prefixLangTitle', 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header', - 'config' => [ - 'type' => 'input', - 'size' => 50, - 'max' => 256, - ], ], 'header_layout' => [ - 'exclude' => true, - 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.type', 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', + 'default' => 0, 'items' => [ [ 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_item.xlf:columns.header_layout.text', @@ -199,15 +122,23 @@ 'value' => '100', ], ], - 'default' => 0, + 'renderType' => 'selectSingle', + 'type' => 'select', ], + 'exclude' => true, + 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.type', ], - 'header_position' => [ - 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position', + 'header_link' => [ + 'config' => [ + 'size' => 50, + 'type' => 'link', + ], 'exclude' => true, + 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_link', + ], + 'header_position' => [ 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', + 'default' => '', 'items' => [ [ 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', @@ -226,51 +157,57 @@ 'value' => 'left', ], ], - 'default' => '', + 'renderType' => 'selectSingle', + 'type' => 'select', ], - ], - 'header_link' => [ 'exclude' => true, - 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_link', + 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:header_position', + ], + 'hidden' => [ 'config' => [ - 'type' => 'link', - 'size' => 50, + 'default' => 0, + 'type' => 'check', ], + 'label' => 'LLL:EXT:lang/locallang_general.xlf:LGL.hidden', ], - 'subheader' => [ - 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.subheader', + 'image' => [ 'config' => [ - 'type' => 'input', - 'size' => 50, - 'max' => 256, - 'softref' => 'email[subst]', + 'allowed' => 'common-image-types', + 'type' => 'file', ], + 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.images', ], - 'title' => [ - 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_item.xlf:columns.title', + 'l10n_diffsource' => [ 'config' => [ - 'type' => 'input', - 'size' => 50, - 'max' => 256, + 'default' => '', + 'type' => 'passthrough', ], ], - 'bodytext' => [ - 'l10n_mode' => 'prefixLangTitle', - 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.text', + 'l10n_parent' => [ 'config' => [ - 'type' => 'text', - 'cols' => 80, - 'rows' => 10, - 'softref' => 'typolink_tag,email[subst],url', - 'enableRichtext' => true, + 'default' => 0, + 'foreign_table' => 'tx_headless_item', + 'foreign_table_where' => 'AND tx_headless_item.uid=###REC_FIELD_l10n_parent### AND tx_headless_item.sys_language_uid IN (-1,0)', + 'items' => [ + [ + 'label' => '', + 'value' => 0, + ], + ], + 'renderType' => 'selectSingle', + 'type' => 'select', ], + 'displayCond' => 'FIELD:sys_language_uid:>:0', + 'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.l18n_parent', ], - 'space_before_class' => [ - 'exclude' => true, - 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_before_class', + 'l10n_source' => [ 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', + 'type' => 'passthrough', + ], + ], + 'space_after_class' => [ + 'config' => [ + 'default' => '', 'items' => [ [ 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', @@ -297,15 +234,15 @@ 'value' => 'extra-large', ], ], - 'default' => '', + 'renderType' => 'selectSingle', + 'type' => 'select', ], - ], - 'space_after_class' => [ 'exclude' => true, 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_after_class', + ], + 'space_before_class' => [ 'config' => [ - 'type' => 'select', - 'renderType' => 'selectSingle', + 'default' => '', 'items' => [ [ 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', @@ -332,18 +269,98 @@ 'value' => 'extra-large', ], ], - 'default' => '', + 'renderType' => 'selectSingle', + 'type' => 'select', ], + 'exclude' => true, + 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_before_class', ], - 'image' => [ - 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.images', + 'starttime' => [ 'config' => [ - 'type' => 'file', - 'allowed' => 'common-image-types', + 'default' => 0, + 'type' => 'datetime', ], + 'exclude' => true, + 'l10n_display' => 'defaultAsReadonly', + 'l10n_mode' => 'exclude', + 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.starttime', + ], + 'subheader' => [ + 'config' => [ + 'max' => 256, + 'size' => 50, + 'softref' => 'email[subst]', + 'type' => 'input', + ], + 'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.subheader', + ], + 'sys_language_uid' => [ + 'config' => [ + 'renderType' => 'selectSingle', + 'type' => 'language', + ], + 'label' => 'LLL:EXT:lang/Resources/Private/Language/locallang_general.xlf:LGL.language', + ], + 'title' => [ + 'config' => [ + 'max' => 256, + 'size' => 50, + 'type' => 'input', + ], + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_item.xlf:columns.title', + ], + 'tx_headless_item' => [ + 'config' => [ + 'foreign_field' => 'foreign_uid', + 'foreign_table' => 'tx_headless_item', + 'foreign_table_field' => 'foreign_table', + 'type' => 'inline', + ], + 'exclude' => 0, + 'label' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_ttc.xlf:tx_headless_item', ], ], + 'ctrl' => [ + 'crdate' => 'crdate', + 'delete' => 'deleted', + 'enablecolumns' => [ + 'disabled' => 'hidden', + 'endtime' => 'endtime', + 'starttime' => 'starttime', + ], + 'hideTable' => true, + 'iconfile' => 'EXT:core/Resources/Public/Icons/T3Icons/svgs/actions/actions-folder.svg', + 'label' => 'header', + 'label_alt' => 'subheader,bodytext', + 'languageField' => 'sys_language_uid', + 'searchFields' => 'header,subheader,bodytext', + 'security' => [ + 'ignorePageTypeRestriction' => true, + ], + 'sortby' => 'sorting', + 'title' => 'LLL:EXT:rmnd_headless/Resources/Private/Language/locallang_item.xlf:title', + 'translationSource' => 'l10n_source', + 'transOrigDiffSourceField' => 'l10n_diffsource', + 'transOrigPointerField' => 'l10n_parent', + 'tstamp' => 'tstamp', + 'versioningWS' => true, + ], 'palettes' => [ + + 'access' => [ + 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access', + 'showitem' => ' + starttime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:starttime_formlabel, + endtime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:endtime_formlabel, + ', + ], + 'frames' => [ + 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames', + 'showitem' => ' + space_before_class;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_before_class_formlabel, + space_after_class;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_after_class_formlabel, + ', + ], 'header' => [ 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers', 'showitem' => ' @@ -376,25 +393,10 @@ ', ], - 'access' => [ - 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access', - 'showitem' => ' - starttime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:starttime_formlabel, - endtime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:endtime_formlabel, - ', - ], - 'frames' => [ - 'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames', - 'showitem' => ' - space_before_class;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_before_class_formlabel, - space_after_class;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:space_after_class_formlabel, - ', - ], - // hidden but needs to be included all the time, so sys_language_uid is set correctly 'hiddenLanguagePalette' => [ - 'showitem' => 'sys_language_uid, l10n_parent', 'isHiddenPalette' => true, + 'showitem' => 'sys_language_uid, l10n_parent', ], ], 'types' => [ diff --git a/Tests/Unit/.gitkeep b/Tests/Unit/.gitkeep deleted file mode 100644 index 8b13789..0000000 --- a/Tests/Unit/.gitkeep +++ /dev/null @@ -1 +0,0 @@ - diff --git a/composer.json b/composer.json index 5514823..af532f6 100644 --- a/composer.json +++ b/composer.json @@ -26,13 +26,12 @@ "config": { "optimize-autoloader": true, "apcu-autoloader": true, - "vendor-dir": ".build/vendor", - "bin-dir": ".build/bin", "sort-packages": true, "allow-plugins": { "typo3/cms-composer-installers": true, "typo3/class-alias-loader": true, - "dealerdirect/phpcodesniffer-composer-installer": true + "dealerdirect/phpcodesniffer-composer-installer": true, + "phpstan/extension-installer": true } }, "require": { @@ -43,6 +42,11 @@ }, "require-dev": { "apache-solr-for-typo3/solr": "^12.0", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^1.11", + "remind/coding-standard": "^1.0", + "saschaegerer/phpstan-typo3": "^1.10", "slevomat/coding-standard": "^8.14", "squizlabs/php_codesniffer": "^3.7" }, @@ -50,13 +54,16 @@ "prefer-stable": true, "extra": { "typo3/cms": { - "cms-package-dir": "{$vendor-dir}/typo3/cms", - "web-dir": ".build/web", "extension-key": "rmnd_headless" } }, "scripts": { - "phpcs": "@php ./.build/vendor/squizlabs/php_codesniffer/bin/phpcs --standard=.build/phpcs.xml --extensions=php --ignore=.build --report=full -n .", - "phpcbf": "@php ./.build/vendor/squizlabs/php_codesniffer/bin/phpcbf --standard=.build/phpcs.xml --extensions=php --ignore=.build ." + "phpcs": "@php ./vendor/bin/phpcs --standard=phpcs.xml --extensions=php --report=full -n .", + "phpcbf": "@php ./vendor/bin/phpcbf --standard=phpcs.xml --extensions=php .", + "phpstan": "@php ./vendor/bin/phpstan analyse -c phpstan.neon", + "static-analysis": [ + "@composer phpcs", + "@composer phpstan" + ] } } diff --git a/composer.lock b/composer.lock index 30af25f..2ff7245 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5fe64aed85b3d93aaf2e0df6101a177d", + "content-hash": "7c10fcf1f36dcd0e5eb93a19fc72faf1", "packages": [ { "name": "bacon/bacon-qr-code", @@ -340,16 +340,16 @@ }, { "name": "doctrine/dbal", - "version": "3.8.4", + "version": "3.8.6", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "b05e48a745f722801f55408d0dbd8003b403dbbd" + "reference": "b7411825cf7efb7e51f9791dea19d86e43b399a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/b05e48a745f722801f55408d0dbd8003b403dbbd", - "reference": "b05e48a745f722801f55408d0dbd8003b403dbbd", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/b7411825cf7efb7e51f9791dea19d86e43b399a1", + "reference": "b7411825cf7efb7e51f9791dea19d86e43b399a1", "shasum": "" }, "require": { @@ -365,12 +365,12 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.58", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.16", + "phpstan/phpstan": "1.11.5", + "phpstan/phpstan-strict-rules": "^1.6", + "phpunit/phpunit": "9.6.19", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.9.0", + "squizlabs/php_codesniffer": "3.10.1", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" @@ -433,7 +433,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.4" + "source": "https://github.com/doctrine/dbal/tree/3.8.6" }, "funding": [ { @@ -449,7 +449,7 @@ "type": "tidelift" } ], - "time": "2024-04-25T07:04:44+00:00" + "time": "2024-06-19T10:38:17+00:00" }, { "name": "doctrine/deprecations", @@ -913,16 +913,16 @@ }, { "name": "friendsoftypo3/headless", - "version": "v4.3.1", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/TYPO3-Headless/headless.git", - "reference": "c133e52db4ed55fadc125a5a0b78fa11276afb5f" + "reference": "bad58345df134fdd65c663bb9ef43eda955736c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-Headless/headless/zipball/c133e52db4ed55fadc125a5a0b78fa11276afb5f", - "reference": "c133e52db4ed55fadc125a5a0b78fa11276afb5f", + "url": "https://api.github.com/repos/TYPO3-Headless/headless/zipball/bad58345df134fdd65c663bb9ef43eda955736c0", + "reference": "bad58345df134fdd65c663bb9ef43eda955736c0", "shasum": "" }, "require": { @@ -991,7 +991,7 @@ ], "support": { "issues": "https://github.com/TYPO3-Headless/headless/issues", - "source": "https://github.com/TYPO3-Headless/headless/tree/v4.3.1" + "source": "https://github.com/TYPO3-Headless/headless/tree/v4.3.2" }, "funding": [ { @@ -999,26 +999,26 @@ "type": "custom" } ], - "time": "2024-05-27T09:56:19+00:00" + "time": "2024-07-04T10:34:45+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.8.1", + "version": "7.9.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + "reference": "d281ed313b989f213357e3be1a179f02196ac99b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1029,9 +1029,9 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "guzzle/client-integration-tests": "3.0.2", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1109,7 +1109,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + "source": "https://github.com/guzzle/guzzle/tree/7.9.2" }, "funding": [ { @@ -1125,20 +1125,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:35:24+00:00" + "time": "2024-07-24T11:22:20+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", "shasum": "" }, "require": { @@ -1146,7 +1146,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "type": "library", "extra": { @@ -1192,7 +1192,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.2" + "source": "https://github.com/guzzle/promises/tree/2.0.3" }, "funding": [ { @@ -1208,20 +1208,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:19:20+00:00" + "time": "2024-07-18T10:29:17+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.6.2", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", "shasum": "" }, "require": { @@ -1236,8 +1236,8 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -1308,7 +1308,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.2" + "source": "https://github.com/guzzle/psr7/tree/2.7.0" }, "funding": [ { @@ -1324,7 +1324,7 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:05:35+00:00" + "time": "2024-07-18T11:15:46+00:00" }, { "name": "ichhabrecht/content-defender", @@ -1405,16 +1405,16 @@ }, { "name": "lolli42/finediff", - "version": "1.1.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/lolli42/FineDiff.git", - "reference": "784ade1515ba9f56d943a6a551c96073f9858b85" + "reference": "015a2f50782d2639c0fb21325dcf747c4136ad2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lolli42/FineDiff/zipball/784ade1515ba9f56d943a6a551c96073f9858b85", - "reference": "784ade1515ba9f56d943a6a551c96073f9858b85", + "url": "https://api.github.com/repos/lolli42/FineDiff/zipball/015a2f50782d2639c0fb21325dcf747c4136ad2b", + "reference": "015a2f50782d2639c0fb21325dcf747c4136ad2b", "shasum": "" }, "require": { @@ -1425,9 +1425,9 @@ "cogpowered/finediff": "*" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.49.0", + "friendsofphp/php-cs-fixer": "^3.50.0", "phpstan/phpstan": "^1.10.57", - "phpunit/phpunit": "^10.5.10 || ^11.0.2" + "phpunit/phpunit": "^11.2.6" }, "type": "library", "autoload": { @@ -1464,9 +1464,9 @@ ], "support": { "issues": "https://github.com/lolli42/FineDiff/issues", - "source": "https://github.com/lolli42/FineDiff/tree/1.1.0" + "source": "https://github.com/lolli42/FineDiff/tree/1.1.1" }, - "time": "2024-02-06T15:34:02+00:00" + "time": "2024-07-09T14:25:40+00:00" }, { "name": "masterminds/html5", @@ -1768,16 +1768,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.29.0", + "version": "1.29.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc" + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", "shasum": "" }, "require": { @@ -1809,9 +1809,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" }, - "time": "2024-05-06T12:04:23+00:00" + "time": "2024-05-31T08:52:43+00:00" }, { "name": "psr/cache", @@ -2382,16 +2382,16 @@ }, { "name": "symfony/cache", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "48e3508338987d63b0114a00c208c4cbb76e5303" + "reference": "8ac37acee794372f9732fe8a61a8221f6762148e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/48e3508338987d63b0114a00c208c4cbb76e5303", - "reference": "48e3508338987d63b0114a00c208c4cbb76e5303", + "url": "https://api.github.com/repos/symfony/cache/zipball/8ac37acee794372f9732fe8a61a8221f6762148e", + "reference": "8ac37acee794372f9732fe8a61a8221f6762148e", "shasum": "" }, "require": { @@ -2399,6 +2399,7 @@ "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^2.5|^3", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/service-contracts": "^2.5|^3", "symfony/var-exporter": "^6.4|^7.0" }, @@ -2458,7 +2459,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.0.7" + "source": "https://github.com/symfony/cache/tree/v7.1.3" }, "funding": [ { @@ -2474,7 +2475,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-07-17T06:10:24+00:00" }, { "name": "symfony/cache-contracts", @@ -2554,16 +2555,16 @@ }, { "name": "symfony/clock", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "2008671acb4a30b01c453de193cf9c80549ebda6" + "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/2008671acb4a30b01c453de193cf9c80549ebda6", - "reference": "2008671acb4a30b01c453de193cf9c80549ebda6", + "url": "https://api.github.com/repos/symfony/clock/zipball/3dfc8b084853586de51dd1441c6242c76a28cbe7", + "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7", "shasum": "" }, "require": { @@ -2608,7 +2609,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.0.7" + "source": "https://github.com/symfony/clock/tree/v7.1.1" }, "funding": [ { @@ -2624,26 +2625,26 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/config", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "f66f908a975500aa4594258bf454dc66e3939eac" + "reference": "2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/f66f908a975500aa4594258bf454dc66e3939eac", - "reference": "f66f908a975500aa4594258bf454dc66e3939eac", + "url": "https://api.github.com/repos/symfony/config/zipball/2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2", + "reference": "2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^6.4|^7.0", + "symfony/filesystem": "^7.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -2683,7 +2684,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.0.7" + "source": "https://github.com/symfony/config/tree/v7.1.1" }, "funding": [ { @@ -2699,20 +2700,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/console", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c981e0e9380ce9f146416bde3150c79197ce9986" + "reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c981e0e9380ce9f146416bde3150c79197ce9986", - "reference": "c981e0e9380ce9f146416bde3150c79197ce9986", + "url": "https://api.github.com/repos/symfony/console/zipball/cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9", + "reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9", "shasum": "" }, "require": { @@ -2776,7 +2777,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.0.7" + "source": "https://github.com/symfony/console/tree/v7.1.3" }, "funding": [ { @@ -2792,27 +2793,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-07-26T12:41:01+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "4db1314337f4dd864113f88e08c9a7f98b1c1324" + "reference": "8126f0be4ff984e4db0140e60917900a53facb49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/4db1314337f4dd864113f88e08c9a7f98b1c1324", - "reference": "4db1314337f4dd864113f88e08c9a7f98b1c1324", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8126f0be4ff984e4db0140e60917900a53facb49", + "reference": "8126f0be4ff984e4db0140e60917900a53facb49", "shasum": "" }, "require": { "php": ">=8.2", "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^3.3", + "symfony/service-contracts": "^3.5", "symfony/var-exporter": "^6.4|^7.0" }, "conflict": { @@ -2856,7 +2857,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.0.7" + "source": "https://github.com/symfony/dependency-injection/tree/v7.1.3" }, "funding": [ { @@ -2872,7 +2873,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-07-26T07:35:39+00:00" }, { "name": "symfony/deprecation-contracts", @@ -2943,16 +2944,16 @@ }, { "name": "symfony/doctrine-messenger", - "version": "v7.0.7", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "78ec63bf2437187ac70ca13a2db3f2a8e41b3493" + "reference": "64e2195442df86a7a0c85a77162d0247601e9da9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/78ec63bf2437187ac70ca13a2db3f2a8e41b3493", - "reference": "78ec63bf2437187ac70ca13a2db3f2a8e41b3493", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/64e2195442df86a7a0c85a77162d0247601e9da9", + "reference": "64e2195442df86a7a0c85a77162d0247601e9da9", "shasum": "" }, "require": { @@ -2995,7 +2996,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v7.0.7" + "source": "https://github.com/symfony/doctrine-messenger/tree/v7.1.2" }, "funding": [ { @@ -3011,20 +3012,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-06-20T15:47:37+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9" + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/db2a7fab994d67d92356bb39c367db115d9d30f9", - "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", "shasum": "" }, "require": { @@ -3075,7 +3076,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.7" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1" }, "funding": [ { @@ -3091,7 +3092,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -3171,21 +3172,22 @@ }, { "name": "symfony/expression-language", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "b8ec919a6d3d47fc4e7845c256d164413207bf73" + "reference": "463cb95f80c14136175f4e03f7f6199b01c6b8b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/b8ec919a6d3d47fc4e7845c256d164413207bf73", - "reference": "b8ec919a6d3d47fc4e7845c256d164413207bf73", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/463cb95f80c14136175f4e03f7f6199b01c6b8b4", + "reference": "463cb95f80c14136175f4e03f7f6199b01c6b8b4", "shasum": "" }, "require": { "php": ">=8.2", "symfony/cache": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -3214,7 +3216,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.0.7" + "source": "https://github.com/symfony/expression-language/tree/v7.1.1" }, "funding": [ { @@ -3230,26 +3232,28 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/filesystem", - "version": "v7.0.7", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "cc168be6fbdcdf3401f50ae863ee3818ed4338f5" + "reference": "92a91985250c251de9b947a14bb2c9390b1a562c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/cc168be6fbdcdf3401f50ae863ee3818ed4338f5", - "reference": "cc168be6fbdcdf3401f50ae863ee3818ed4338f5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/92a91985250c251de9b947a14bb2c9390b1a562c", + "reference": "92a91985250c251de9b947a14bb2c9390b1a562c", "shasum": "" }, "require": { "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { "symfony/process": "^6.4|^7.0" }, "type": "library", @@ -3278,7 +3282,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.7" + "source": "https://github.com/symfony/filesystem/tree/v7.1.2" }, "funding": [ { @@ -3294,20 +3298,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-06-28T10:03:55+00:00" }, { "name": "symfony/finder", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c" + "reference": "717c6329886f32dc65e27461f80f2a465412fdca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/4d58f0f4fe95a30d7b538d71197135483560b97c", - "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c", + "url": "https://api.github.com/repos/symfony/finder/zipball/717c6329886f32dc65e27461f80f2a465412fdca", + "reference": "717c6329886f32dc65e27461f80f2a465412fdca", "shasum": "" }, "require": { @@ -3342,7 +3346,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.0.7" + "source": "https://github.com/symfony/finder/tree/v7.1.3" }, "funding": [ { @@ -3358,20 +3362,20 @@ "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2024-07-24T07:08:44+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8" + "reference": "f602d5c17d1fa02f8019ace2687d9d136b7f4a1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0194e064b8bdc29381462f790bab04e1cac8fdc8", - "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f602d5c17d1fa02f8019ace2687d9d136b7f4a1a", + "reference": "f602d5c17d1fa02f8019ace2687d9d136b7f4a1a", "shasum": "" }, "require": { @@ -3419,7 +3423,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.0.7" + "source": "https://github.com/symfony/http-foundation/tree/v7.1.3" }, "funding": [ { @@ -3435,20 +3439,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-07-26T12:41:01+00:00" }, { "name": "symfony/mailer", - "version": "v7.0.7", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a" + "reference": "8fcff0af9043c8f8a8e229437cea363e282f9aee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", - "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", + "url": "https://api.github.com/repos/symfony/mailer/zipball/8fcff0af9043c8f8a8e229437cea363e282f9aee", + "reference": "8fcff0af9043c8f8a8e229437cea363e282f9aee", "shasum": "" }, "require": { @@ -3499,7 +3503,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.0.7" + "source": "https://github.com/symfony/mailer/tree/v7.1.2" }, "funding": [ { @@ -3515,20 +3519,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-06-28T08:00:31+00:00" }, { "name": "symfony/messenger", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "90c217478f85d5289aae597551e2a4251e4d08c3" + "reference": "604e182a7758ceea35921a8ad5dd492a6e13bae4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/90c217478f85d5289aae597551e2a4251e4d08c3", - "reference": "90c217478f85d5289aae597551e2a4251e4d08c3", + "url": "https://api.github.com/repos/symfony/messenger/zipball/604e182a7758ceea35921a8ad5dd492a6e13bae4", + "reference": "604e182a7758ceea35921a8ad5dd492a6e13bae4", "shasum": "" }, "require": { @@ -3585,7 +3589,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v7.0.7" + "source": "https://github.com/symfony/messenger/tree/v7.1.3" }, "funding": [ { @@ -3601,20 +3605,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-07-09T19:36:07+00:00" }, { "name": "symfony/mime", - "version": "v7.0.7", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0" + "reference": "26a00b85477e69a4bab63b66c5dce64f18b0cbfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/3adbf110c306546f6f00337f421d2edca0e8d3c0", - "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0", + "url": "https://api.github.com/repos/symfony/mime/zipball/26a00b85477e69a4bab63b66c5dce64f18b0cbfc", + "reference": "26a00b85477e69a4bab63b66c5dce64f18b0cbfc", "shasum": "" }, "require": { @@ -3627,7 +3631,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<6.4", - "symfony/serializer": "<6.4" + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", @@ -3637,7 +3641,7 @@ "symfony/process": "^6.4|^7.0", "symfony/property-access": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", "autoload": { @@ -3669,7 +3673,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.0.7" + "source": "https://github.com/symfony/mime/tree/v7.1.2" }, "funding": [ { @@ -3685,20 +3689,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-06-28T10:03:55+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "23cc173858776ad451e31f053b1c9f47840b2cfa" + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/23cc173858776ad451e31f053b1c9f47840b2cfa", - "reference": "23cc173858776ad451e31f053b1c9f47840b2cfa", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/47aa818121ed3950acd2b58d1d37d08a94f9bf55", + "reference": "47aa818121ed3950acd2b58d1d37d08a94f9bf55", "shasum": "" }, "require": { @@ -3736,7 +3740,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.0.7" + "source": "https://github.com/symfony/options-resolver/tree/v7.1.1" }, "funding": [ { @@ -3752,20 +3756,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + "reference": "0424dff1c58f028c451efff2045f5d92410bd540" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540", "shasum": "" }, "require": { @@ -3815,7 +3819,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" }, "funding": [ { @@ -3831,20 +3835,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", + "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", "shasum": "" }, "require": { @@ -3893,7 +3897,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" }, "funding": [ { @@ -3909,20 +3913,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" + "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", + "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", "shasum": "" }, "require": { @@ -3977,7 +3981,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.30.0" }, "funding": [ { @@ -3993,20 +3997,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", "shasum": "" }, "require": { @@ -4058,7 +4062,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" }, "funding": [ { @@ -4074,20 +4078,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", "shasum": "" }, "require": { @@ -4138,7 +4142,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" }, "funding": [ { @@ -4154,20 +4158,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" + "reference": "10112722600777e02d2745716b70c5db4ca70442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", - "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/10112722600777e02d2745716b70c5db4ca70442", + "reference": "10112722600777e02d2745716b70c5db4ca70442", "shasum": "" }, "require": { @@ -4211,7 +4215,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.30.0" }, "funding": [ { @@ -4227,105 +4231,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.29.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "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" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" + "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", + "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" + "php": ">=7.1" }, "type": "library", "extra": { @@ -4368,7 +4291,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.30.0" }, "funding": [ { @@ -4384,20 +4307,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-06-19T12:35:24+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.29.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" + "reference": "2ba1f33797470debcda07fe9dce20a0003df18e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", - "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/2ba1f33797470debcda07fe9dce20a0003df18e9", + "reference": "2ba1f33797470debcda07fe9dce20a0003df18e9", "shasum": "" }, "require": { @@ -4447,68 +4370,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-01-29T20:11:03+00:00" - }, - { - "name": "symfony/process", - "version": "v7.0.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3839e56b94dd1dbd13235d27504e66baf23faba0", - "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "type": "library", - "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": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v7.0.7" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.30.0" }, "funding": [ { @@ -4524,20 +4386,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/property-access", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "8661b861480d2807eb2789ff99d034c0c71ab955" + "reference": "74e39e6a6276b8e384f34c6ddbc10a6c9a60193a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/8661b861480d2807eb2789ff99d034c0c71ab955", - "reference": "8661b861480d2807eb2789ff99d034c0c71ab955", + "url": "https://api.github.com/repos/symfony/property-access/zipball/74e39e6a6276b8e384f34c6ddbc10a6c9a60193a", + "reference": "74e39e6a6276b8e384f34c6ddbc10a6c9a60193a", "shasum": "" }, "require": { @@ -4584,7 +4446,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.0.7" + "source": "https://github.com/symfony/property-access/tree/v7.1.1" }, "funding": [ { @@ -4600,25 +4462,26 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/property-info", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "f0bdb46e19ab308527b324b7ec36161f6880a532" + "reference": "88a279df2db5b7919cac6f35d6a5d1d7147e6a9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/f0bdb46e19ab308527b324b7ec36161f6880a532", - "reference": "f0bdb46e19ab308527b324b7ec36161f6880a532", + "url": "https://api.github.com/repos/symfony/property-info/zipball/88a279df2db5b7919cac6f35d6a5d1d7147e6a9b", + "reference": "88a279df2db5b7919cac6f35d6a5d1d7147e6a9b", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/string": "^6.4|^7.0" + "symfony/string": "^6.4|^7.0", + "symfony/type-info": "^7.1" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -4667,7 +4530,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.0.7" + "source": "https://github.com/symfony/property-info/tree/v7.1.3" }, "funding": [ { @@ -4683,20 +4546,20 @@ "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2024-07-26T07:36:36+00:00" }, { "name": "symfony/rate-limiter", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/rate-limiter.git", - "reference": "7ba48d83a622ebcd0a804776c505c05898a6f0e9" + "reference": "f1fbc60e7fed63f1c77bbf8601170cc80fddd95a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/7ba48d83a622ebcd0a804776c505c05898a6f0e9", - "reference": "7ba48d83a622ebcd0a804776c505c05898a6f0e9", + "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/f1fbc60e7fed63f1c77bbf8601170cc80fddd95a", + "reference": "f1fbc60e7fed63f1c77bbf8601170cc80fddd95a", "shasum": "" }, "require": { @@ -4737,7 +4600,7 @@ "rate-limiter" ], "support": { - "source": "https://github.com/symfony/rate-limiter/tree/v7.0.7" + "source": "https://github.com/symfony/rate-limiter/tree/v7.1.1" }, "funding": [ { @@ -4753,20 +4616,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/routing", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b" + "reference": "8a908a3f22d5a1b5d297578c2ceb41b02fa916d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", - "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", + "url": "https://api.github.com/repos/symfony/routing/zipball/8a908a3f22d5a1b5d297578c2ceb41b02fa916d0", + "reference": "8a908a3f22d5a1b5d297578c2ceb41b02fa916d0", "shasum": "" }, "require": { @@ -4818,7 +4681,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.0.7" + "source": "https://github.com/symfony/routing/tree/v7.1.3" }, "funding": [ { @@ -4834,7 +4697,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-07-17T06:10:24+00:00" }, { "name": "symfony/service-contracts", @@ -4921,16 +4784,16 @@ }, { "name": "symfony/string", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63" + "reference": "ea272a882be7f20cad58d5d78c215001617b7f07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63", - "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63", + "url": "https://api.github.com/repos/symfony/string/zipball/ea272a882be7f20cad58d5d78c215001617b7f07", + "reference": "ea272a882be7f20cad58d5d78c215001617b7f07", "shasum": "" }, "require": { @@ -4944,6 +4807,7 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { + "symfony/emoji": "^7.1", "symfony/error-handler": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", @@ -4987,7 +4851,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.7" + "source": "https://github.com/symfony/string/tree/v7.1.3" }, "funding": [ { @@ -5003,20 +4867,102 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-07-22T10:25:37+00:00" + }, + { + "name": "symfony/type-info", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/type-info.git", + "reference": "60b28eb733f1453287f1263ed305b96091e0d1dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/type-info/zipball/60b28eb733f1453287f1263ed305b96091e0d1dc", + "reference": "60b28eb733f1453287f1263ed305b96091e0d1dc", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/container": "^1.1|^2.0" + }, + "conflict": { + "phpstan/phpdoc-parser": "<1.0", + "symfony/dependency-injection": "<6.4", + "symfony/property-info": "<6.4" + }, + "require-dev": { + "phpstan/phpdoc-parser": "^1.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\TypeInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts PHP types information.", + "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], + "support": { + "source": "https://github.com/symfony/type-info/tree/v7.1.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:59:31+00:00" }, { "name": "symfony/uid", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "4f3a5d181999e25918586c8369de09e7814e7be2" + "reference": "bb59febeecc81528ff672fad5dab7f06db8c8277" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/4f3a5d181999e25918586c8369de09e7814e7be2", - "reference": "4f3a5d181999e25918586c8369de09e7814e7be2", + "url": "https://api.github.com/repos/symfony/uid/zipball/bb59febeecc81528ff672fad5dab7f06db8c8277", + "reference": "bb59febeecc81528ff672fad5dab7f06db8c8277", "shasum": "" }, "require": { @@ -5061,7 +5007,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.0.7" + "source": "https://github.com/symfony/uid/tree/v7.1.1" }, "funding": [ { @@ -5077,20 +5023,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.0.7", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078" + "reference": "b80a669a2264609f07f1667f891dbfca25eba44c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/cdecc0022e40e90340ba1a59a3d5ccf069777078", - "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b80a669a2264609f07f1667f891dbfca25eba44c", + "reference": "b80a669a2264609f07f1667f891dbfca25eba44c", "shasum": "" }, "require": { @@ -5137,7 +5083,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.7" + "source": "https://github.com/symfony/var-exporter/tree/v7.1.2" }, "funding": [ { @@ -5153,20 +5099,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-06-28T08:00:31+00:00" }, { "name": "symfony/yaml", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c" + "reference": "fa34c77015aa6720469db7003567b9f772492bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", - "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", + "url": "https://api.github.com/repos/symfony/yaml/zipball/fa34c77015aa6720469db7003567b9f772492bf2", + "reference": "fa34c77015aa6720469db7003567b9f772492bf2", "shasum": "" }, "require": { @@ -5208,7 +5154,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.7" + "source": "https://github.com/symfony/yaml/tree/v7.1.1" }, "funding": [ { @@ -5224,7 +5170,7 @@ "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "typo3/class-alias-loader", @@ -5290,21 +5236,21 @@ }, { "name": "typo3/cms-backend", - "version": "v12.4.15", + "version": "v12.4.17", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/backend.git", - "reference": "892ad58bfd47f39f11ea637eb9518c349a85cfa3" + "reference": "558def27d2f47ad496fb0e01d4c688eccac673ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/backend/zipball/892ad58bfd47f39f11ea637eb9518c349a85cfa3", - "reference": "892ad58bfd47f39f11ea637eb9518c349a85cfa3", + "url": "https://api.github.com/repos/TYPO3-CMS/backend/zipball/558def27d2f47ad496fb0e01d4c688eccac673ab", + "reference": "558def27d2f47ad496fb0e01d4c688eccac673ab", "shasum": "" }, "require": { "psr/event-dispatcher": "^1.0", - "typo3/cms-core": "12.4.15" + "typo3/cms-core": "12.4.17" }, "conflict": { "typo3/cms": "*" @@ -5365,7 +5311,7 @@ "issues": "https://forge.typo3.org", "source": "https://github.com/typo3/typo3" }, - "time": "2024-05-14T08:24:50+00:00" + "time": "2024-07-09T07:19:07+00:00" }, { "name": "typo3/cms-cli", @@ -5474,16 +5420,16 @@ }, { "name": "typo3/cms-core", - "version": "v12.4.15", + "version": "v12.4.17", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/core.git", - "reference": "715ef27bc73ae13662147ba77ee6c7f2db38c75b" + "reference": "39ef6e944a616bf092e788fc814ad63b66875170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/core/zipball/715ef27bc73ae13662147ba77ee6c7f2db38c75b", - "reference": "715ef27bc73ae13662147ba77ee6c7f2db38c75b", + "url": "https://api.github.com/repos/TYPO3-CMS/core/zipball/39ef6e944a616bf092e788fc814ad63b66875170", + "reference": "39ef6e944a616bf092e788fc814ad63b66875170", "shasum": "" }, "require": { @@ -5610,20 +5556,20 @@ "issues": "https://forge.typo3.org", "source": "https://github.com/typo3/typo3" }, - "time": "2024-05-14T08:24:50+00:00" + "time": "2024-07-09T07:19:07+00:00" }, { "name": "typo3/cms-extbase", - "version": "v12.4.15", + "version": "v12.4.17", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/extbase.git", - "reference": "cb5ae91c3e3cc6f1a93cb4358277aa665a785169" + "reference": "a9a6a661cf95c57a49fe28ba97d534f97b00d618" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/extbase/zipball/cb5ae91c3e3cc6f1a93cb4358277aa665a785169", - "reference": "cb5ae91c3e3cc6f1a93cb4358277aa665a785169", + "url": "https://api.github.com/repos/TYPO3-CMS/extbase/zipball/a9a6a661cf95c57a49fe28ba97d534f97b00d618", + "reference": "a9a6a661cf95c57a49fe28ba97d534f97b00d618", "shasum": "" }, "require": { @@ -5633,7 +5579,7 @@ "symfony/dependency-injection": "^6.4 || ^7.0", "symfony/property-access": "^6.4 || ^7.0", "symfony/property-info": "^6.4 || ^7.0", - "typo3/cms-core": "12.4.15" + "typo3/cms-core": "12.4.17" }, "conflict": { "typo3/cms": "*" @@ -5680,26 +5626,26 @@ "issues": "https://forge.typo3.org", "source": "https://github.com/typo3/typo3" }, - "time": "2024-05-14T08:24:50+00:00" + "time": "2024-07-09T07:19:07+00:00" }, { "name": "typo3/cms-fluid", - "version": "v12.4.15", + "version": "v12.4.17", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/fluid.git", - "reference": "bd23042b77ecb794056aa7fa9b0bc2c312bc219f" + "reference": "ade86574d46b411a50040b91154cfbd5b08cefd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/fluid/zipball/bd23042b77ecb794056aa7fa9b0bc2c312bc219f", - "reference": "bd23042b77ecb794056aa7fa9b0bc2c312bc219f", + "url": "https://api.github.com/repos/TYPO3-CMS/fluid/zipball/ade86574d46b411a50040b91154cfbd5b08cefd7", + "reference": "ade86574d46b411a50040b91154cfbd5b08cefd7", "shasum": "" }, "require": { "symfony/dependency-injection": "^6.4 || ^7.0", - "typo3/cms-core": "12.4.15", - "typo3/cms-extbase": "12.4.15", + "typo3/cms-core": "12.4.17", + "typo3/cms-extbase": "12.4.17", "typo3fluid/fluid": "^2.9.2" }, "conflict": { @@ -5744,20 +5690,20 @@ "issues": "https://forge.typo3.org", "source": "https://github.com/typo3/typo3" }, - "time": "2024-05-14T08:24:50+00:00" + "time": "2024-07-09T07:19:07+00:00" }, { "name": "typo3/cms-install", - "version": "v12.4.15", + "version": "v12.4.17", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/install.git", - "reference": "951cfb0e00d6d8d7d2cf28ae99da3ace0b94a708" + "reference": "fb8bca33a5697f48ecad173ef39970c5cf334e12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/install/zipball/951cfb0e00d6d8d7d2cf28ae99da3ace0b94a708", - "reference": "951cfb0e00d6d8d7d2cf28ae99da3ace0b94a708", + "url": "https://api.github.com/repos/TYPO3-CMS/install/zipball/fb8bca33a5697f48ecad173ef39970c5cf334e12", + "reference": "fb8bca33a5697f48ecad173ef39970c5cf334e12", "shasum": "" }, "require": { @@ -5766,9 +5712,9 @@ "nikic/php-parser": "^4.15.4", "symfony/finder": "^6.4 || ^7.0", "symfony/http-foundation": "^6.4 || ^7.0", - "typo3/cms-core": "12.4.15", - "typo3/cms-extbase": "12.4.15", - "typo3/cms-fluid": "12.4.15" + "typo3/cms-core": "12.4.17", + "typo3/cms-extbase": "12.4.17", + "typo3/cms-fluid": "12.4.17" }, "conflict": { "typo3/cms": "*" @@ -5812,20 +5758,20 @@ "issues": "https://forge.typo3.org", "source": "https://github.com/typo3/typo3" }, - "time": "2024-05-14T08:24:50+00:00" + "time": "2024-07-09T07:19:07+00:00" }, { "name": "typo3/html-sanitizer", - "version": "v2.1.4", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/TYPO3/html-sanitizer.git", - "reference": "b8f90717251d968c49dc77f8c1e5912e2fbe0dff" + "reference": "c672a2e02925de8eed0dcaeb3a3c90d3642049a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3/html-sanitizer/zipball/b8f90717251d968c49dc77f8c1e5912e2fbe0dff", - "reference": "b8f90717251d968c49dc77f8c1e5912e2fbe0dff", + "url": "https://api.github.com/repos/TYPO3/html-sanitizer/zipball/c672a2e02925de8eed0dcaeb3a3c90d3642049a0", + "reference": "c672a2e02925de8eed0dcaeb3a3c90d3642049a0", "shasum": "" }, "require": { @@ -5861,22 +5807,22 @@ "description": "HTML sanitizer aiming to provide XSS-safe markup based on explicitly allowed tags, attributes and values.", "support": { "issues": "https://github.com/TYPO3/html-sanitizer/issues", - "source": "https://github.com/TYPO3/html-sanitizer/tree/v2.1.4" + "source": "https://github.com/TYPO3/html-sanitizer/tree/v2.2.0" }, - "time": "2023-11-14T07:41:08+00:00" + "time": "2024-07-12T15:52:25+00:00" }, { "name": "typo3fluid/fluid", - "version": "2.11.0", + "version": "2.14.1", "source": { "type": "git", "url": "https://github.com/TYPO3/Fluid.git", - "reference": "392c7d5e494a02131843ec8b2a5ef1d3ca4dcdf5" + "reference": "ad0deb5ee02b6149efcd635892563d20c0663274" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3/Fluid/zipball/392c7d5e494a02131843ec8b2a5ef1d3ca4dcdf5", - "reference": "392c7d5e494a02131843ec8b2a5ef1d3ca4dcdf5", + "url": "https://api.github.com/repos/TYPO3/Fluid/zipball/ad0deb5ee02b6149efcd635892563d20c0663274", + "reference": "ad0deb5ee02b6149efcd635892563d20c0663274", "shasum": "" }, "require": { @@ -5885,13 +5831,15 @@ }, "require-dev": { "ext-json": "*", - "friendsofphp/php-cs-fixer": "^3.52.1", + "ext-simplexml": "*", + "friendsofphp/php-cs-fixer": "^3.59.3", "phpstan/phpstan": "^1.10.14", "phpstan/phpstan-phpunit": "^1.3.11", "phpunit/phpunit": "^10.2.6" }, "suggest": { - "ext-json": "PHP JSON is needed when using JSONVariableProvider: A relatively rare use case" + "ext-json": "PHP JSON is needed when using JSONVariableProvider: A relatively rare use case", + "ext-simplexml": "SimpleXML is required for the XSD schema generator" }, "bin": [ "bin/fluid" @@ -5913,7 +5861,7 @@ "issues": "https://github.com/TYPO3/Fluid/issues", "source": "https://github.com/TYPO3/Fluid" }, - "time": "2024-04-05T13:06:34+00:00" + "time": "2024-07-31T09:09:50+00:00" }, { "name": "webmozart/assert", @@ -5977,16 +5925,16 @@ "packages-dev": [ { "name": "apache-solr-for-typo3/solr", - "version": "12.0.3", + "version": "12.0.5", "source": { "type": "git", "url": "https://github.com/TYPO3-Solr/ext-solr.git", - "reference": "9f5ed12031e868bbd00f0c0a8c9decd0b893fa99" + "reference": "7e800fb764377eedfba6b03dc0dcbf397c706a9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-Solr/ext-solr/zipball/9f5ed12031e868bbd00f0c0a8c9decd0b893fa99", - "reference": "9f5ed12031e868bbd00f0c0a8c9decd0b893fa99", + "url": "https://api.github.com/repos/TYPO3-Solr/ext-solr/zipball/7e800fb764377eedfba6b03dc0dcbf397c706a9c", + "reference": "7e800fb764377eedfba6b03dc0dcbf397c706a9c", "shasum": "" }, "require": { @@ -5996,7 +5944,7 @@ "ext-pdo": "*", "ext-simplexml": "*", "php": "^8.1", - "solarium/solarium": "6.3.2", + "solarium/solarium": "6.3.5", "typo3/cms-backend": "*", "typo3/cms-core": "^v12.4.3", "typo3/cms-extbase": "*", @@ -6015,9 +5963,9 @@ }, "require-dev": { "dg/bypass-finals": "^1.6", - "phpstan/phpstan": "^1.10", + "phpstan/phpstan": "^1.11", "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^10.1", + "phpunit/phpunit": "^10.5", "typo3/cms-fluid-styled-content": "*", "typo3/coding-standards": "~0.7.1", "typo3/testing-framework": "^8.0" @@ -6025,7 +5973,7 @@ "type": "typo3-cms-extension", "extra": { "branch-alias": { - "dev-main": "12.0.x-dev" + "dev-release-12.0.x": "12.0.x-dev" }, "typo3/cms": { "extension-key": "solr", @@ -6039,6 +5987,8 @@ "ext-solrdebugtools": "^12.0", "ext-solrmlt": "^12.0", "Apache-Solr": [ + "9.6.1", + "9.6.0", "9.5.0", "9.4.1", "9.4.0", @@ -6064,9 +6014,9 @@ ], "authors": [ { - "name": "Ingo Renner", - "email": "ingo@typo3.org", - "role": "Lead Developer" + "name": "dkd Internet Service GmbH", + "email": "info@dkd.de", + "homepage": "https://www.dkd.de" } ], "description": "Apache Solr for TYPO3", @@ -6079,7 +6029,7 @@ ], "support": { "docs": "https://docs.typo3.org/p/apache-solr-for-typo3/solr/main/en-us/", - "email": "solr-eb-support@dkd.de", + "email": "info@dkd.de", "forum": "https://talk.typo3.org", "issues": "https://github.com/TYPO3-Solr/ext-solr/issues", "slack": "https://typo3.slack.com/archives/C02FF05Q4", @@ -6091,7 +6041,145 @@ "type": "custom" } ], - "time": "2024-05-13T08:07:34+00:00" + "time": "2024-07-30T12:24:53+00:00" + }, + { + "name": "bnf/phpstan-psr-container", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/bnf/phpstan-psr-container.git", + "reference": "38242e71616aa677a0fdd08af8edc4a730a24f67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bnf/phpstan-psr-container/zipball/38242e71616aa677a0fdd08af8edc4a730a24f67", + "reference": "38242e71616aa677a0fdd08af8edc4a730a24f67", + "shasum": "" + }, + "require": { + "php": "^7.0|^8.0", + "phpstan/phpstan": "^1.0", + "psr/container": "^1.0|^2.0" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Bnf\\PhpstanPsrContainer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Benjamin Franzke", + "email": "benjaminfranzke@gmail.com", + "homepage": "https://bnfr.net", + "role": "Developer" + } + ], + "description": "PHPStan dynamic return type extension for PSR-11 ContainerInterface", + "keywords": [ + "PHPStan", + "PSR-11", + "service-provider", + "static" + ], + "support": { + "issues": "https://github.com/bnf/phpstan-psr-container/issues", + "source": "https://github.com/bnf/phpstan-psr-container/tree/1.0.1" + }, + "time": "2022-04-26T04:03:19+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.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" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-07-12T11:35:52+00:00" }, { "name": "dealerdirect/phpcodesniffer-composer-installer", @@ -6230,6 +6318,207 @@ ], "time": "2023-11-28T21:12:40+00:00" }, + { + "name": "phpstan/extension-installer", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/extension-installer.git", + "reference": "f6b87faf9fc7978eab2f7919a8760bc9f58f9203" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f6b87faf9fc7978eab2f7919a8760bc9f58f9203", + "reference": "f6b87faf9fc7978eab2f7919a8760bc9f58f9203", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.9.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.2.0", + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPStan\\ExtensionInstaller\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPStan\\ExtensionInstaller\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Composer plugin for automatic installation of PHPStan extensions", + "support": { + "issues": "https://github.com/phpstan/extension-installer/issues", + "source": "https://github.com/phpstan/extension-installer/tree/1.4.1" + }, + "time": "2024-06-10T08:20:49+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "1.11.9", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "e370bcddadaede0c1716338b262346f40d296f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e370bcddadaede0c1716338b262346f40d296f82", + "reference": "e370bcddadaede0c1716338b262346f40d296f82", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2024-08-01T16:25:18+00:00" + }, + { + "name": "remind/coding-standard", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/remindgmbh/coding-standard.git", + "reference": "770053583364238e035ada832c7db9b06c737c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/remindgmbh/coding-standard/zipball/770053583364238e035ada832c7db9b06c737c28", + "reference": "770053583364238e035ada832c7db9b06c737c28", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "slevomat/coding-standard": "^8.15", + "squizlabs/php_codesniffer": "^3.10" + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "support": { + "issues": "https://github.com/remindgmbh/coding-standard/issues", + "source": "https://github.com/remindgmbh/coding-standard/tree/v1.0.1" + }, + "time": "2024-08-08T11:48:58+00:00" + }, + { + "name": "saschaegerer/phpstan-typo3", + "version": "1.10.1", + "source": { + "type": "git", + "url": "https://github.com/sascha-egerer/phpstan-typo3.git", + "reference": "a7549f5d5d6b75ec9dc51122086054604007943c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sascha-egerer/phpstan-typo3/zipball/a7549f5d5d6b75ec9dc51122086054604007943c", + "reference": "a7549f5d5d6b75ec9dc51122086054604007943c", + "shasum": "" + }, + "require": { + "bnf/phpstan-psr-container": "^1.0", + "composer/semver": "^3.3", + "ext-simplexml": "*", + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^1.10.9", + "ssch/typo3-debug-dump-pass": "^0.0.2", + "typo3/cms-core": "^11.5 || ^12.4 || ^13.0", + "typo3/cms-extbase": "^11.5 || ^12.4 || ^13.0" + }, + "require-dev": { + "consistence-community/coding-standard": "^3.10", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "nikic/php-parser": "^v4.19.1", + "phing/phing": "^2.17", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "^9.6", + "symfony/polyfill-php80": "^1.29" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "SaschaEgerer\\PhpstanTypo3\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "TYPO3 CMS class reflection extension for PHPStan", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/sascha-egerer/phpstan-typo3/issues", + "source": "https://github.com/sascha-egerer/phpstan-typo3/tree/1.10.1" + }, + "funding": [ + { + "url": "https://github.com/sascha-egerer", + "type": "github" + }, + { + "url": "https://liberapay.com/sascha.egerer", + "type": "liberapay" + } + ], + "time": "2024-05-06T07:37:36+00:00" + }, { "name": "slevomat/coding-standard", "version": "8.15.0", @@ -6297,16 +6586,16 @@ }, { "name": "solarium/solarium", - "version": "6.3.2", + "version": "6.3.5", "source": { "type": "git", "url": "https://github.com/solariumphp/solarium.git", - "reference": "52e5623102bd8b056d159eea8cce991d21cb8593" + "reference": "ae4ea592dc92d2be4dfd0a329f1ffbe3cbd01cf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/solariumphp/solarium/zipball/52e5623102bd8b056d159eea8cce991d21cb8593", - "reference": "52e5623102bd8b056d159eea8cce991d21cb8593", + "url": "https://api.github.com/repos/solariumphp/solarium/zipball/ae4ea592dc92d2be4dfd0a329f1ffbe3cbd01cf3", + "reference": "ae4ea592dc92d2be4dfd0a329f1ffbe3cbd01cf3", "shasum": "" }, "require": { @@ -6330,6 +6619,7 @@ "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", "phpunit/phpunit": "^9.6", + "rawr/phpunit-data-provider": "^3.3", "roave/security-advisories": "dev-master", "symfony/event-dispatcher": "^5.0 || ^6.0" }, @@ -6358,22 +6648,22 @@ ], "support": { "issues": "https://github.com/solariumphp/solarium/issues", - "source": "https://github.com/solariumphp/solarium/tree/6.3.2" + "source": "https://github.com/solariumphp/solarium/tree/6.3.5" }, - "time": "2023-09-19T06:59:53+00:00" + "time": "2024-01-10T08:36:53+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.10.1", + "version": "3.10.2", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877" + "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/8f90f7a53ce271935282967f53d0894f8f1ff877", - "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/86e5f5dd9a840c46810ebe5ff1885581c42a3017", + "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017", "shasum": "" }, "require": { @@ -6440,25 +6730,83 @@ "type": "open_collective" } ], - "time": "2024-05-22T21:24:41+00:00" + "time": "2024-07-21T23:26:44+00:00" + }, + { + "name": "ssch/typo3-debug-dump-pass", + "version": "v0.0.2", + "source": { + "type": "git", + "url": "https://github.com/sabbelasichon/typo3-debug-dump-pass.git", + "reference": "44776b48e78e50db999370dc65f85872420b4e79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sabbelasichon/typo3-debug-dump-pass/zipball/44776b48e78e50db999370dc65f85872420b4e79", + "reference": "44776b48e78e50db999370dc65f85872420b4e79", + "shasum": "" + }, + "require": { + "symfony/config": "^5.0 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.0 || ^6.0 || ^7.0", + "typo3/cms-core": "^10.4 || ^11.5 || ^12.4 || ^13.0" + }, + "require-dev": { + "symplify/easy-coding-standard": "^12.1" + }, + "type": "typo3-cms-extension", + "extra": { + "branch-alias": { + "dev-main": "1.0.x-dev" + }, + "typo3/cms": { + "extension-key": "typo3_debug_dump_pass", + "web-dir": ".Build/Web" + } + }, + "autoload": { + "psr-4": { + "Ssch\\Typo3DebugDumpPass\\": "Classes/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sebastian Schreiber", + "email": "me@schreibersebastian.de" + } + ], + "description": "Add debug dump compiler pass for better static analysis", + "keywords": [ + "dev", + "refactoring" + ], + "support": { + "issues": "https://github.com/sabbelasichon/typo3-debug-dump-pass/issues", + "source": "https://github.com/sabbelasichon/typo3-debug-dump-pass/tree/v0.0.2" + }, + "time": "2024-02-05T19:24:11+00:00" }, { "name": "typo3/cms-frontend", - "version": "v12.4.15", + "version": "v12.4.17", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/frontend.git", - "reference": "4e6aea59e4dfbaba31f039e36d2db9537b3f7fb1" + "reference": "844e38e4b8f74bb17da91cb93fc867328517fc84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/frontend/zipball/4e6aea59e4dfbaba31f039e36d2db9537b3f7fb1", - "reference": "4e6aea59e4dfbaba31f039e36d2db9537b3f7fb1", + "url": "https://api.github.com/repos/TYPO3-CMS/frontend/zipball/844e38e4b8f74bb17da91cb93fc867328517fc84", + "reference": "844e38e4b8f74bb17da91cb93fc867328517fc84", "shasum": "" }, "require": { "ext-libxml": "*", - "typo3/cms-core": "12.4.15" + "typo3/cms-core": "12.4.17" }, "conflict": { "typo3/cms": "*" @@ -6510,24 +6858,24 @@ "issues": "https://forge.typo3.org", "source": "https://github.com/typo3/typo3" }, - "time": "2024-05-14T08:24:50+00:00" + "time": "2024-07-09T07:19:07+00:00" }, { "name": "typo3/cms-reports", - "version": "v12.4.15", + "version": "v12.4.17", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/reports.git", - "reference": "c00b2095a7a6eea37ccab7c621cf90076f20d356" + "reference": "613a1d87790ff6917fa624bf70c10b9f4789435c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/reports/zipball/c00b2095a7a6eea37ccab7c621cf90076f20d356", - "reference": "c00b2095a7a6eea37ccab7c621cf90076f20d356", + "url": "https://api.github.com/repos/TYPO3-CMS/reports/zipball/613a1d87790ff6917fa624bf70c10b9f4789435c", + "reference": "613a1d87790ff6917fa624bf70c10b9f4789435c", "shasum": "" }, "require": { - "typo3/cms-core": "12.4.15" + "typo3/cms-core": "12.4.17" }, "conflict": { "typo3/cms": "*" @@ -6571,24 +6919,24 @@ "issues": "https://forge.typo3.org", "source": "https://github.com/typo3/typo3" }, - "time": "2024-05-14T08:24:50+00:00" + "time": "2024-07-09T07:19:07+00:00" }, { "name": "typo3/cms-scheduler", - "version": "v12.4.15", + "version": "v12.4.17", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/scheduler.git", - "reference": "eef314234bfe29c1e188b751d3a4fab58fe30250" + "reference": "fc9efc238169b5e339b7ea98eee425ba4ae38688" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/scheduler/zipball/eef314234bfe29c1e188b751d3a4fab58fe30250", - "reference": "eef314234bfe29c1e188b751d3a4fab58fe30250", + "url": "https://api.github.com/repos/TYPO3-CMS/scheduler/zipball/fc9efc238169b5e339b7ea98eee425ba4ae38688", + "reference": "fc9efc238169b5e339b7ea98eee425ba4ae38688", "shasum": "" }, "require": { - "typo3/cms-core": "12.4.15" + "typo3/cms-core": "12.4.17" }, "conflict": { "typo3/cms": "*" @@ -6626,24 +6974,24 @@ "issues": "https://forge.typo3.org", "source": "https://github.com/typo3/typo3" }, - "time": "2024-05-14T08:24:50+00:00" + "time": "2024-07-09T07:19:07+00:00" }, { "name": "typo3/cms-tstemplate", - "version": "v12.4.15", + "version": "v12.4.17", "source": { "type": "git", "url": "https://github.com/TYPO3-CMS/tstemplate.git", - "reference": "eedf181377af2e2660634477d2749591b82a3ed2" + "reference": "c59da4082ba495ecf9ca04758e1af4dcc8d7d438" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TYPO3-CMS/tstemplate/zipball/eedf181377af2e2660634477d2749591b82a3ed2", - "reference": "eedf181377af2e2660634477d2749591b82a3ed2", + "url": "https://api.github.com/repos/TYPO3-CMS/tstemplate/zipball/c59da4082ba495ecf9ca04758e1af4dcc8d7d438", + "reference": "c59da4082ba495ecf9ca04758e1af4dcc8d7d438", "shasum": "" }, "require": { - "typo3/cms-core": "12.4.15" + "typo3/cms-core": "12.4.17" }, "conflict": { "typo3/cms": "*" @@ -6684,7 +7032,7 @@ "issues": "https://forge.typo3.org", "source": "https://github.com/typo3/typo3" }, - "time": "2024-05-14T08:24:50+00:00" + "time": "2024-07-09T07:19:07+00:00" } ], "aliases": [], diff --git a/ext_localconf.php b/ext_localconf.php index 5152133..22ecab0 100644 --- a/ext_localconf.php +++ b/ext_localconf.php @@ -8,7 +8,7 @@ defined('TYPO3') or die; -(function () { +(function (): void { /* @var $iconRegistry \TYPO3\CMS\Core\Imaging\IconRegistry */ $iconRegistry = GeneralUtility::makeInstance(IconRegistry::class); @@ -18,47 +18,17 @@ ['source' => 'EXT:rmnd_headless/Resources/Public/Icons/content-footer.svg'] ); - $GLOBALS - ['TYPO3_CONF_VARS'] - ['SYS'] - ['features'] - ['headless.elementBodyResponse'] = true; + $GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['headless.elementBodyResponse'] = true; - $GLOBALS - ['TYPO3_CONF_VARS'] - ['SYS'] - ['features'] - ['headless.frontendUrls'] = true; + $GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['headless.frontendUrls'] = true; - $GLOBALS - ['TYPO3_CONF_VARS'] - ['SYS'] - ['locallangXMLOverride'] - ['EXT:headless/Resources/Private/Language/locallang.xlf'] - [] = 'EXT:rmnd_headless/Resources/Private/Language/Overrides/locallang_headless.xlf'; + $GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride']['EXT:headless/Resources/Private/Language/locallang.xlf'][] = 'EXT:rmnd_headless/Resources/Private/Language/Overrides/locallang_headless.xlf'; - $GLOBALS - ['TYPO3_CONF_VARS'] - ['SYS'] - ['locallangXMLOverride'] - ['de'] - ['EXT:headless/Resources/Private/Language/de.locallang.xlf'] - [] = 'EXT:rmnd_headless/Resources/Private/Language/Overrides/de.locallang_headless.xlf'; + $GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride']['de']['EXT:headless/Resources/Private/Language/de.locallang.xlf'][] = 'EXT:rmnd_headless/Resources/Private/Language/Overrides/de.locallang_headless.xlf'; - $GLOBALS - ['TYPO3_CONF_VARS'] - ['SYS'] - ['locallangXMLOverride'] - ['EXT:felogin/Resources/Private/Language/locallang.xlf'] - [] = 'EXT:rmnd_headless/Resources/Private/Language/Overrides/locallang_felogin.xlf'; + $GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride']['EXT:felogin/Resources/Private/Language/locallang.xlf'][] = 'EXT:rmnd_headless/Resources/Private/Language/Overrides/locallang_felogin.xlf'; - $GLOBALS - ['TYPO3_CONF_VARS'] - ['SYS'] - ['locallangXMLOverride'] - ['de'] - ['EXT:felogin/Resources/Private/Language/de.locallang.xlf'] - [] = 'EXT:rmnd_headless/Resources/Private/Language/Overrides/de.locallang_felogin.xlf'; + $GLOBALS['TYPO3_CONF_VARS']['SYS']['locallangXMLOverride']['de']['EXT:felogin/Resources/Private/Language/de.locallang.xlf'][] = 'EXT:rmnd_headless/Resources/Private/Language/Overrides/de.locallang_felogin.xlf'; $GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['default'] = 'EXT:rmnd_headless/Configuration/RTE/Default.yaml'; })(); diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..805ea01 --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,6 @@ + + + public/* + vendor/* + + \ No newline at end of file diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..24295ba --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,7 @@ +parameters: + level: 8 + paths: + - . + excludePaths: + - public + - vendor