diff --git a/.github/ci/files/config/bundles.php b/.github/ci/files/config/bundles.php index a2e0070be..a4a38f688 100644 --- a/.github/ci/files/config/bundles.php +++ b/.github/ci/files/config/bundles.php @@ -1,5 +1,5 @@ ['all' => true], + 'Pimcore\\Bundle\\StudioBackendBundle\\PimcoreStudioBackendBundle' => ['all' => true], ]; diff --git a/.github/ci/files/config/services.yaml b/.github/ci/files/config/services.yaml index 6645972f9..db4abcca7 100644 --- a/.github/ci/files/config/services.yaml +++ b/.github/ci/files/config/services.yaml @@ -10,14 +10,14 @@ services: # # INSTALLER # - Pimcore\Bundle\StudioApiBundle\Installer: + Pimcore\Bundle\StudioBackendBundle\Installer: public: true arguments: - $bundle: "@=service('kernel').getBundle('PimcoreStudioApiBundle')" + $bundle: "@=service('kernel').getBundle('PimcoreStudioBackendBundle')" # controllers are imported separately to make sure they're public # and have a tag that allows actions to type-hint services - Pimcore\Bundle\StudioApiBundle\Controller\: + Pimcore\Bundle\StudioBackendBundle\Controller\: resource: '../src/Controller' public: true tags: [ 'controller.service_arguments' ] \ No newline at end of file diff --git a/.github/workflows/qodana.yml b/.github/workflows/qodana.yml index 60ebe65c8..7beb68718 100644 --- a/.github/workflows/qodana.yml +++ b/.github/workflows/qodana.yml @@ -56,6 +56,7 @@ jobs: - name: 'Qodana Scan' uses: JetBrains/qodana-action@latest with: + use-caches: false args: --baseline,qodana.sarif.json env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} diff --git a/codeception.dist.yml b/codeception.dist.yml index e0a17def9..4c02def7b 100644 --- a/codeception.dist.yml +++ b/codeception.dist.yml @@ -1,4 +1,4 @@ -namespace: Pimcore\Bundle\StudioApiBundle\Tests +namespace: Pimcore\Bundle\StudioBackendBundle\Tests bootstrap: _bootstrap.php settings: @@ -21,4 +21,4 @@ coverage: - src/DependencyInjection/* - src/Repository/* - src/Installer.php - - src/PimcoreStudioApiBundle.php \ No newline at end of file + - src/PimcoreStudioBackendBundle.php \ No newline at end of file diff --git a/composer.json b/composer.json index 99a299de9..f6543c9b9 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "pimcore/studio-api-bundle", "license": "proprietary", "type": "pimcore-bundle", - "description": "Pimcore Studio Api Bundle", + "description": "Pimcore Studio Backend Bundle", "config": { "discard-changes": true, "sort-packages": true, @@ -39,19 +39,19 @@ }, "autoload": { "psr-4": { - "Pimcore\\Bundle\\StudioApiBundle\\": "src/", + "Pimcore\\Bundle\\StudioBackendBundle\\": "src/", "Pimcore\\": "core-extension/Pimcore/" } }, "autoload-dev": { "psr-4": { - "Pimcore\\Bundle\\StudioApiBundle\\Tests\\": "tests" + "Pimcore\\Bundle\\StudioBackendBundle\\Tests\\": "tests" } }, "extra": { "pimcore": { "bundles": [ - "Pimcore\\Bundle\\StudioApiBundle\\PimcoreStudioApiBundle" + "PimcoreStudioBackendBundle" ] } } diff --git a/config/assets.yaml b/config/assets.yaml new file mode 100644 index 000000000..f7b0b248f --- /dev/null +++ b/config/assets.yaml @@ -0,0 +1,12 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: false + + # controllers are imported separately to make sure they're public + # and have a tag that allows actions to type-hint services + Pimcore\Bundle\StudioBackendBundle\Asset\Controller\: + resource: '../src/Asset/Controller' + public: true + tags: [ 'controller.service_arguments' ] \ No newline at end of file diff --git a/config/authorization.yaml b/config/authorization.yaml new file mode 100644 index 000000000..d346910cf --- /dev/null +++ b/config/authorization.yaml @@ -0,0 +1,17 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: false + + + # controllers are imported separately to make sure they're public + # and have a tag that allows actions to type-hint services + Pimcore\Bundle\StudioBackendBundle\Authorization\Controller\: + resource: '../src/Authorization/Controller' + public: true + tags: [ 'controller.service_arguments' ] + + + Pimcore\Bundle\StudioBackendBundle\Authorization\Service\TokenServiceInterface: + class: Pimcore\Bundle\StudioBackendBundle\Authorization\Service\TokenService \ No newline at end of file diff --git a/config/data_index.yaml b/config/data_index.yaml new file mode 100644 index 000000000..140ea00c7 --- /dev/null +++ b/config/data_index.yaml @@ -0,0 +1,73 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: false + + # Hydrators + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\ArchiveHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\ArchiveHydrator + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\AudioHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\AudioHydrator + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\DocumentHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\DocumentHydrator + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\FolderHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\FolderHydrator + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\ImageHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\ImageHydrator + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\TextHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\TextHydrator + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\UnknownHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\UnknownHydrator + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\VideoHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\VideoHydrator + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\MetaDataHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\MetaDataHydrator + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\AssetHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\AssetHydrator + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\PermissionsHydratorInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\PermissionsHydrator + + # Services + Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\AssetHydratorServiceInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\AssetHydratorService + arguments: + $assetHydratorLocator: '@open_search.asset_hydrator.service_locator' + + + # Assets + Pimcore\Bundle\StudioBackendBundle\DataIndex\AssetSearchServiceInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\AssetSearchService + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Adapter\AssetSearchAdapterInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Adapter\AssetSearchAdapter + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider\AssetQueryProviderInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider\AssetQueryProvider + + #Data Objects + Pimcore\Bundle\StudioBackendBundle\DataIndex\DataObjectSearchServiceInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\DataObjectSearchService + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Adapter\DataObjectSearchAdapterInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Adapter\DataObjectSearchAdapter + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider\DataObjectQueryProviderInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider\DataObjectQueryProvider + + + #Service Locator + open_search.asset_hydrator.service_locator: + class: Symfony\Component\DependencyInjection\ServiceLocator + tags: [ 'container.service_locator' ] + arguments: + - Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Archive: '@Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\ArchiveHydratorInterface' + Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Audio: '@Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\AudioHydratorInterface' + Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Document: '@Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\DocumentHydratorInterface' + Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Folder: '@Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\FolderHydratorInterface' + Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Image: '@Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\ImageHydratorInterface' + Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Text: '@Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\TextHydratorInterface' + Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Unknown: '@Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\UnknownHydratorInterface' + Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Video: '@Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\Asset\VideoHydratorInterface' \ No newline at end of file diff --git a/config/data_index_filters.yaml b/config/data_index_filters.yaml new file mode 100644 index 000000000..4a6f5f552 --- /dev/null +++ b/config/data_index_filters.yaml @@ -0,0 +1,37 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: false + + #Filter + + #Common + Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\FilterLoaderInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\Loader\TaggedIteratorAdapter + + Pimcore\Bundle\StudioBackendBundle\DataIndex\OpenSearchFilterInterface: + class: Pimcore\Bundle\StudioBackendBundle\DataIndex\OpenSearchFilter + tags: [ 'pimcore.studio_api.filter_service' ] + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\PageFilter: + tags: [ 'pimcore.studio_api.open_search.filter' ] + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\PageSizeFilter: + tags: [ 'pimcore.studio_api.open_search.filter' ] + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\ExcludeFolderFilter: + tags: [ 'pimcore.studio_api.open_search.filter' ] + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\IdSearchFilter: + tags: [ 'pimcore.studio_api.open_search.filter' ] + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\ParentIdFilter: + tags: [ 'pimcore.studio_api.open_search.filter' ] + + Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\PathFilter: + tags: [ 'pimcore.studio_api.open_search.filter' ] + + # DataObject + Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\DataObject\ClassNameFilter: + tags: [ 'pimcore.studio_api.open_search.data_object.filter' ] \ No newline at end of file diff --git a/config/data_objects.yaml b/config/data_objects.yaml new file mode 100644 index 000000000..4cc019292 --- /dev/null +++ b/config/data_objects.yaml @@ -0,0 +1,12 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: false + + # controllers are imported separately to make sure they're public + # and have a tag that allows actions to type-hint services + Pimcore\Bundle\StudioBackendBundle\DataObject\Controller\: + resource: '../src/DataObject/Controller' + public: true + tags: [ 'controller.service_arguments' ] \ No newline at end of file diff --git a/config/event_subscribers.yaml b/config/event_subscribers.yaml index 76beeb7f8..b7dd5c11b 100644 --- a/config/event_subscribers.yaml +++ b/config/event_subscribers.yaml @@ -5,9 +5,9 @@ services: public: false #Subscriber - Pimcore\Bundle\StudioApiBundle\EventSubscriber\CorsSubscriber: + Pimcore\Bundle\StudioBackendBundle\EventSubscriber\CorsSubscriber: tags: [ 'kernel.event_subscriber' ] - Pimcore\Bundle\StudioApiBundle\EventSubscriber\ApiExceptionSubscriber: + Pimcore\Bundle\StudioBackendBundle\EventSubscriber\ApiExceptionSubscriber: tags: [ 'kernel.event_subscriber' ] arguments: ["%kernel.environment%"] \ No newline at end of file diff --git a/config/factories.yaml b/config/factories.yaml new file mode 100644 index 000000000..0ae440626 --- /dev/null +++ b/config/factories.yaml @@ -0,0 +1,9 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: false + + #Factory + Pimcore\Bundle\StudioBackendBundle\Factory\QueryFactoryInterface: + class: Pimcore\Bundle\StudioBackendBundle\Factory\QueryFactory diff --git a/config/filters.yaml b/config/filters.yaml index f925a6b3d..0fb27ba49 100644 --- a/config/filters.yaml +++ b/config/filters.yaml @@ -4,33 +4,10 @@ services: autoconfigure: true public: false - #Filter + #Factory - #Common - Pimcore\Bundle\StudioApiBundle\Service\Filter\FilterLoaderInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\Filter\Loader\TaggedIteratorAdapter + Pimcore\Bundle\StudioBackendBundle\Filter\Service\FilterServiceProviderInterface: + class: Pimcore\Bundle\StudioBackendBundle\Filter\Service\FilterServiceProvider - Pimcore\Bundle\StudioApiBundle\Service\Filter\FilterServiceInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\Filter\FilterService - - Pimcore\Bundle\StudioApiBundle\Filter\PageFilter: - tags: [ 'pimcore.studio_api.filter' ] - - Pimcore\Bundle\StudioApiBundle\Filter\PageSizeFilter: - tags: [ 'pimcore.studio_api.filter' ] - - Pimcore\Bundle\StudioApiBundle\Filter\ExcludeFolderFilter: - tags: [ 'pimcore.studio_api.filter' ] - - Pimcore\Bundle\StudioApiBundle\Filter\IdSearchFilter: - tags: [ 'pimcore.studio_api.filter' ] - - Pimcore\Bundle\StudioApiBundle\Filter\ParentIdFilter: - tags: [ 'pimcore.studio_api.filter' ] - - Pimcore\Bundle\StudioApiBundle\Filter\PathFilter: - tags: [ 'pimcore.studio_api.filter' ] - - # DataObject - Pimcore\Bundle\StudioApiBundle\Filter\DataObject\ClassNameFilter: - tags: [ 'pimcore.studio_api.data_object.filter' ] \ No newline at end of file + Pimcore\Bundle\StudioBackendBundle\Filter\Service\FilterServiceLoaderInterface: + class: Pimcore\Bundle\StudioBackendBundle\Filter\Service\Loader\TaggedIteratorAdapter diff --git a/config/icon.yaml b/config/icon.yaml new file mode 100644 index 000000000..108a1bdab --- /dev/null +++ b/config/icon.yaml @@ -0,0 +1,8 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: false + + Pimcore\Bundle\StudioBackendBundle\Icon\Service\IconServiceInterface: + class: Pimcore\Bundle\StudioBackendBundle\Icon\Service\IconService \ No newline at end of file diff --git a/config/open_api.yaml b/config/open_api.yaml new file mode 100644 index 000000000..80dd9cab6 --- /dev/null +++ b/config/open_api.yaml @@ -0,0 +1,17 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: false + + + # controllers are imported separately to make sure they're public + # and have a tag that allows actions to type-hint services + Pimcore\Bundle\StudioBackendBundle\OpenApi\Controller\: + resource: '../src/OpenApi/Controller' + public: true + tags: [ 'controller.service_arguments' ] + + + Pimcore\Bundle\StudioBackendBundle\OpenApi\Service\OpenApiServiceInterface: + class: Pimcore\Bundle\StudioBackendBundle\OpenApi\Service\OpenApiService \ No newline at end of file diff --git a/config/pimcore/config.yaml b/config/pimcore/config.yaml index 2eb253bf2..cc4f1d6eb 100644 --- a/config/pimcore/config.yaml +++ b/config/pimcore/config.yaml @@ -1,4 +1,8 @@ pimcore: translations: domains: - - studio \ No newline at end of file + - studio + +pimcore_studio_backend: + open_api_scan_paths: + - "%kernel.project_dir%/vendor/pimcore/studio-api-bundle/src" \ No newline at end of file diff --git a/config/pimcore/routing.yaml b/config/pimcore/routing.yaml index 3e32ab892..d00029434 100644 --- a/config/pimcore/routing.yaml +++ b/config/pimcore/routing.yaml @@ -1,5 +1,5 @@ studio_api: - resource: "../../src/Controller/Api" + resource: "../../src/" type: annotation prefix: /studio/api options: diff --git a/config/security.yaml b/config/security.yaml new file mode 100644 index 000000000..bcf232fcb --- /dev/null +++ b/config/security.yaml @@ -0,0 +1,19 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: false + + #Voters + Pimcore\Bundle\StudioBackendBundle\Security\Voter\AuthorizationVoter: + arguments: ['@request_stack'] + tags: + - { name: security.voter } + + Pimcore\Bundle\StudioBackendBundle\Security\Voter\PublicAuthorizationVoter: + arguments: [ '@request_stack' ] + tags: + - { name: security.voter } + + Pimcore\Bundle\StudioBackendBundle\Security\Service\SecurityServiceInterface: + class: Pimcore\Bundle\StudioBackendBundle\Security\Service\SecurityService \ No newline at end of file diff --git a/config/services.yaml b/config/services.yaml index 42b43f10f..e83f0cd6d 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -7,117 +7,14 @@ services: # # INSTALLER # - Pimcore\Bundle\StudioApiBundle\Installer: + Pimcore\Bundle\StudioBackendBundle\Installer: public: true arguments: - $bundle: "@=service('kernel').getBundle('PimcoreStudioApiBundle')" + $bundle: "@=service('kernel').getBundle('PimcoreStudioBackendBundle')" - # controllers are imported separately to make sure they're public - # and have a tag that allows actions to type-hint services - Pimcore\Bundle\StudioApiBundle\Controller\: - resource: '../src/Controller' - public: true - tags: [ 'controller.service_arguments' ] - - # Hydrators - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\ArchiveHydratorInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\ArchiveHydrator - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\AudioHydratorInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\AudioHydrator - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\DocumentHydratorInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\DocumentHydrator - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\FolderHydratorInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\FolderHydrator - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\ImageHydratorInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\ImageHydrator - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\TextHydratorInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\TextHydrator - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\UnknownHydratorInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\UnknownHydrator - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\VideoHydratorInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\VideoHydrator - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\MetaDataHydratorInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\MetaDataHydrator - - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\AssetHydratorInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\AssetHydrator - - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\PermissionsHydratorInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\PermissionsHydrator - - # Services - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\AssetHydratorServiceInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\AssetHydratorService - arguments: - $assetHydratorLocator: '@generic_data_index.asset_hydrator.service_locator' - - - # Assets - Pimcore\Bundle\StudioApiBundle\Service\AssetSearchServiceInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\AssetSearchService - - Pimcore\Bundle\StudioApiBundle\Service\GenericData\AssetSearchAdapterInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\AssetSearchAdapter - - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\AssetQueryProviderInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\AssetQueryProvider - #Data Objects - Pimcore\Bundle\StudioApiBundle\Service\DataObjectSearchServiceInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\DataObjectSearchService - Pimcore\Bundle\StudioApiBundle\Service\GenericData\DataObjectSearchAdapterInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\DataObjectSearchAdapter - Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\DataObjectQueryProviderInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\DataObjectQueryProvider - Pimcore\Bundle\StudioApiBundle\Service\IconServiceInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\IconService - - Pimcore\Bundle\StudioApiBundle\Service\TranslatorServiceInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\TranslatorService - - Pimcore\Bundle\StudioApiBundle\Service\TokenServiceInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\TokenService - - Pimcore\Bundle\StudioApiBundle\Service\SecurityServiceInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\SecurityService - - Pimcore\Bundle\StudioApiBundle\Service\OpenApiServiceInterface: - class: Pimcore\Bundle\StudioApiBundle\Service\OpenApiService - - #Voters - Pimcore\Bundle\StudioApiBundle\Security\Voter\AuthorizationVoter: - arguments: ['@request_stack'] - tags: - - { name: security.voter } - - Pimcore\Bundle\StudioApiBundle\Security\Voter\PublicAuthorizationVoter: - arguments: [ '@request_stack' ] - tags: - - { name: security.voter } - - #Decorators - #Pimcore\Bundle\StudioApiBundle\ApiPlatform\OpenApiFactoryDecorator: - #decorates: 'api_platform.openapi.factory' - - #Service Locator - generic_data_index.asset_hydrator.service_locator: - class: Symfony\Component\DependencyInjection\ServiceLocator - tags: ['container.service_locator'] - arguments: - - - Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Archive: '@Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\ArchiveHydratorInterface' - Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Audio: '@Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\AudioHydratorInterface' - Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Document: '@Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\DocumentHydratorInterface' - Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Folder: '@Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\FolderHydratorInterface' - Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Image: '@Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\ImageHydratorInterface' - Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Text: '@Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\TextHydratorInterface' - Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Unknown: '@Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\UnknownHydratorInterface' - Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Asset\SearchResult\SearchResultItem\Video: '@Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\Asset\VideoHydratorInterface' - #Factory - Pimcore\Bundle\StudioApiBundle\Factory\QueryFactoryInterface: - class: Pimcore\Bundle\StudioApiBundle\Factory\QueryFactory diff --git a/config/translation.yaml b/config/translation.yaml new file mode 100644 index 000000000..290ab48b8 --- /dev/null +++ b/config/translation.yaml @@ -0,0 +1,15 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: false + + # controllers are imported separately to make sure they're public + # and have a tag that allows actions to type-hint services + Pimcore\Bundle\StudioBackendBundle\Translation\Controller\: + resource: '../src/Translation/Controller' + public: true + tags: [ 'controller.service_arguments' ] + + Pimcore\Bundle\StudioBackendBundle\Translation\Service\TranslatorServiceInterface: + class: Pimcore\Bundle\StudioBackendBundle\Translation\Service\TranslatorService \ No newline at end of file diff --git a/doc/01_Installation.md b/doc/01_Installation.md index 27dcbcb9f..9e1b939b0 100644 --- a/doc/01_Installation.md +++ b/doc/01_Installation.md @@ -13,16 +13,17 @@ To install the Studio Api Bundle, follow the three steps below: 1) Install the required dependencies: ```bash -composer require pimcore/studio-api-bundle +composer require pimcore/studio-backend-bundle ``` 2) Make sure the bundle is enabled in the `config/bundles.php` file. The following lines should be added: + ```php -use Pimcore\Bundle\StudioApiBundle\PimcoreStudioApiBundle; +use Pimcore\Bundle\StudioBackendBundle\PimcoreStudioBackendBundle; // ... return [ // ... - PimcoreStudioApiBundle::class => ['all' => true], + PimcoreStudioBackendBundle::class => ['all' => true], // ... ]; ``` @@ -30,5 +31,5 @@ return [ 3) Install the bundle: ```bash -bin/console pimcore:bundle:install PimcoreStudioApiBundle +bin/console pimcore:bundle:install PimcoreStudioBackendBundle ``` diff --git a/docker-compose.yml b/docker-compose.yml index 506ff2443..210020e65 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ version: '3.0' services: - php-studio-api-bundle: + php-studio-backend-bundle: image: pimcore/pimcore:php8.2-debug-latest environment: PHP_IDE_CONFIG: serverName=localhost diff --git a/public/css/swagger-ui/index.css b/public/css/swagger-ui/index.css index 56e3e46cf..20c601275 100644 --- a/public/css/swagger-ui/index.css +++ b/public/css/swagger-ui/index.css @@ -34,6 +34,6 @@ body { position: fixed; bottom: 2px; right: 2px; - background: url(/bundles/pimcorestudioapi/img/api-icon.png) center center no-repeat; + background: url(/bundles/pimcorestudiobackend/img/api-icon.png) center center no-repeat; background-size: 24px 24px; } diff --git a/qodana.sarif.json b/qodana.sarif.json index 873d3cdef..18a598288 100644 --- a/qodana.sarif.json +++ b/qodana.sarif.json @@ -7,7 +7,7 @@ "driver": { "name": "QDPHP", "fullName": "Qodana for PHP", - "version": "233.14717.218", + "version": "241.16512.90", "rules": [], "taxa": [ { @@ -247,13 +247,13 @@ ] }, { - "id": "PHP/Control flow", - "name": "Control flow", + "id": "PHP/PHPDoc/Code style", + "name": "Code style", "relationships": [ { "target": { - "id": "PHP", - "index": 0, + "id": "PHP/PHPDoc", + "index": 4, "toolComponent": { "name": "QDPHP" } @@ -265,13 +265,13 @@ ] }, { - "id": "PHP/PHPDoc/Code style", - "name": "Code style", + "id": "PHP/Control flow", + "name": "Control flow", "relationships": [ { "target": { - "id": "PHP/PHPDoc", - "index": 4, + "id": "PHP", + "index": 0, "toolComponent": { "name": "QDPHP" } @@ -290,10 +290,6 @@ "id": "HTML", "name": "HTML" }, - { - "id": "Cucumber", - "name": "Cucumber" - }, { "id": "JavaScript and TypeScript/Unused symbols", "name": "Unused symbols", @@ -312,6 +308,10 @@ } ] }, + { + "id": "Cucumber", + "name": "Cucumber" + }, { "id": "JavaScript and TypeScript/Flow type checker", "name": "Flow type checker", @@ -331,13 +331,13 @@ ] }, { - "id": "PHP/Php Inspections (EA Extended)/Code Style", - "name": "Code Style", + "id": "JavaScript and TypeScript/Data flow", + "name": "Data flow", "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)", - "index": 1, + "id": "JavaScript and TypeScript", + "index": 10, "toolComponent": { "name": "QDPHP" } @@ -349,13 +349,13 @@ ] }, { - "id": "JavaScript and TypeScript/Data flow", - "name": "Data flow", + "id": "PHP/Php Inspections (EA Extended)/Code Style", + "name": "Code Style", "relationships": [ { "target": { - "id": "JavaScript and TypeScript", - "index": 10, + "id": "PHP/Php Inspections (EA Extended)", + "index": 1, "toolComponent": { "name": "QDPHP" } @@ -464,6 +464,24 @@ } ] }, + { + "id": "PHP/Undefined symbols", + "name": "Undefined symbols", + "relationships": [ + { + "target": { + "id": "PHP", + "index": 0, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "JavaScript and TypeScript/ES2015 migration aids", "name": "ES2015 migration aids", @@ -483,8 +501,8 @@ ] }, { - "id": "PHP/Undefined symbols", - "name": "Undefined symbols", + "id": "PHP/Symfony", + "name": "Symfony", "relationships": [ { "target": { @@ -605,7 +623,7 @@ { "target": { "id": "CSS", - "index": 41, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -678,6 +696,10 @@ } ] }, + { + "id": "HTTP Client", + "name": "HTTP Client" + }, { "id": "PHP/Composer", "name": "Composer", @@ -696,6 +718,10 @@ } ] }, + { + "id": "XML", + "name": "XML" + }, { "id": "JavaScript and TypeScript/Control flow issues", "name": "Control flow issues", @@ -714,10 +740,6 @@ } ] }, - { - "id": "XML", - "name": "XML" - }, { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", "name": "Potentially undesirable code constructs", @@ -743,7 +765,7 @@ { "target": { "id": "CSS", - "index": 41, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -848,6 +870,10 @@ } ] }, + { + "id": "XSLT", + "name": "XSLT" + }, { "id": "PHP/Annotation", "name": "Annotation", @@ -989,7 +1015,7 @@ { "target": { "id": "CSS", - "index": 41, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -1037,13 +1063,13 @@ ] }, { - "id": "PHP/Php Inspections (EA Extended)/Architecture", - "name": "Architecture", + "id": "JavaScript and TypeScript/DOM issues", + "name": "DOM issues", "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)", - "index": 1, + "id": "JavaScript and TypeScript", + "index": 10, "toolComponent": { "name": "QDPHP" } @@ -1055,13 +1081,13 @@ ] }, { - "id": "JavaScript and TypeScript/DOM issues", - "name": "DOM issues", + "id": "PHP/Php Inspections (EA Extended)/Architecture", + "name": "Architecture", "relationships": [ { "target": { - "id": "JavaScript and TypeScript", - "index": 10, + "id": "PHP/Php Inspections (EA Extended)", + "index": 1, "toolComponent": { "name": "QDPHP" } @@ -1340,6 +1366,10 @@ } ] }, + { + "id": "Security", + "name": "Security" + }, { "id": "JSON and JSON5", "name": "JSON and JSON5" @@ -1362,6 +1392,10 @@ } ] }, + { + "id": "XPath", + "name": "XPath" + }, { "id": "Oracle", "name": "Oracle" @@ -1466,24 +1500,6 @@ } ] }, - { - "id": "CSS/Code quality tools", - "name": "Code quality tools", - "relationships": [ - { - "target": { - "id": "CSS", - "index": 41, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, { "id": "PostgreSQL", "name": "PostgreSQL" @@ -1648,7 +1664,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -1681,7 +1697,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -1747,7 +1763,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -1780,7 +1796,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -1879,7 +1895,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -1945,7 +1961,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -2044,7 +2060,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -2110,7 +2126,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Confusing constructs", - "index": 54, + "index": 56, "toolComponent": { "name": "QDPHP" } @@ -2176,7 +2192,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -2209,7 +2225,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -2242,7 +2258,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -2275,7 +2291,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -2308,7 +2324,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -2341,7 +2357,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -2353,19 +2369,19 @@ ] }, { - "id": "SecurityAdvisoriesInspection", + "id": "RedundantElseClauseInspection", "shortDescription": { - "text": "Security advisories for Composer packages" + "text": "Redundant 'else' keyword" }, "fullDescription": { "text": "Documentation can be found here", - "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/security.md#security-advisories)" + "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/control-flow.md#redundant-else-keyword)" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "SecurityAdvisoriesInspection", + "suppressToolId": "RedundantElseClauseInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -2373,8 +2389,8 @@ "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)/Security", - "index": 9, + "id": "PHP/Php Inspections (EA Extended)/Control Flow", + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -2386,19 +2402,19 @@ ] }, { - "id": "RedundantElseClauseInspection", + "id": "SecurityAdvisoriesInspection", "shortDescription": { - "text": "Redundant 'else' keyword" + "text": "Security advisories for Composer packages" }, "fullDescription": { "text": "Documentation can be found here", - "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/control-flow.md#redundant-else-keyword)" + "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/security.md#security-advisories)" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "RedundantElseClauseInspection", + "suppressToolId": "SecurityAdvisoriesInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -2406,8 +2422,8 @@ "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "id": "PHP/Php Inspections (EA Extended)/Security", + "index": 9, "toolComponent": { "name": "QDPHP" } @@ -2440,7 +2456,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -2506,7 +2522,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -2539,7 +2555,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -2572,7 +2588,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -2605,7 +2621,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -2704,7 +2720,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -2737,7 +2753,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -2770,7 +2786,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/PHPUnit", - "index": 69, + "index": 72, "toolComponent": { "name": "QDPHP" } @@ -2803,7 +2819,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Architecture", - "index": 71, + "index": 75, "toolComponent": { "name": "QDPHP" } @@ -2869,7 +2885,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -2902,7 +2918,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -2968,7 +2984,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -3001,7 +3017,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -3034,7 +3050,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -3067,7 +3083,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Architecture", - "index": 71, + "index": 75, "toolComponent": { "name": "QDPHP" } @@ -3100,7 +3116,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -3133,7 +3149,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -3199,7 +3215,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -3232,7 +3248,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Type compatibility", - "index": 80, + "index": 83, "toolComponent": { "name": "QDPHP" } @@ -3298,7 +3314,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -3331,7 +3347,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -3397,7 +3413,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -3430,7 +3446,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -3463,7 +3479,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -3628,7 +3644,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -3661,7 +3677,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Architecture", - "index": 71, + "index": 75, "toolComponent": { "name": "QDPHP" } @@ -3760,7 +3776,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/PHPUnit", - "index": 69, + "index": 72, "toolComponent": { "name": "QDPHP" } @@ -3892,7 +3908,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -3958,7 +3974,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -4024,7 +4040,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -4057,7 +4073,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -4090,7 +4106,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -4123,7 +4139,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Architecture", - "index": 71, + "index": 75, "toolComponent": { "name": "QDPHP" } @@ -4156,7 +4172,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -4189,7 +4205,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -4222,7 +4238,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -4354,7 +4370,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Confusing constructs", - "index": 54, + "index": 56, "toolComponent": { "name": "QDPHP" } @@ -4387,7 +4403,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -4420,7 +4436,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -4453,7 +4469,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -4486,7 +4502,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -4552,7 +4568,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -4618,7 +4634,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -4717,7 +4733,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -4750,7 +4766,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -4783,7 +4799,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Unused", - "index": 58, + "index": 60, "toolComponent": { "name": "QDPHP" } @@ -4816,7 +4832,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -4849,7 +4865,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -4948,7 +4964,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -5014,7 +5030,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -5047,7 +5063,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -5080,7 +5096,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -5179,7 +5195,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Architecture", - "index": 71, + "index": 75, "toolComponent": { "name": "QDPHP" } @@ -5212,7 +5228,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -5245,7 +5261,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -5278,7 +5294,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -5377,7 +5393,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -5422,19 +5438,19 @@ ] }, { - "id": "NullPointerExceptionInspection", + "id": "ObGetCleanCanBeUsedInspection", "shortDescription": { - "text": "Null reference" + "text": "'ob_get_clean()' can be used" }, "fullDescription": { "text": "Documentation can be found here", - "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/probable-bugs.md#null-pointer-exceptions-prevention)" + "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/control-flow.md#ob_get_clean-can-be-used)" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "NullPointerExceptionInspection", + "suppressToolId": "ObGetCleanCanBeUsedInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -5442,8 +5458,8 @@ "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)/Probable bugs", - "index": 2, + "id": "PHP/Php Inspections (EA Extended)/Control Flow", + "index": 16, "toolComponent": { "name": "QDPHP" } @@ -5455,19 +5471,19 @@ ] }, { - "id": "ObGetCleanCanBeUsedInspection", + "id": "NullPointerExceptionInspection", "shortDescription": { - "text": "'ob_get_clean()' can be used" + "text": "Null reference" }, "fullDescription": { "text": "Documentation can be found here", - "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/control-flow.md#ob_get_clean-can-be-used)" + "markdown": "Documentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/probable-bugs.md#null-pointer-exceptions-prevention)" }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "ObGetCleanCanBeUsedInspection", + "suppressToolId": "NullPointerExceptionInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -5475,8 +5491,8 @@ "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)/Control Flow", - "index": 16, + "id": "PHP/Php Inspections (EA Extended)/Probable bugs", + "index": 2, "toolComponent": { "name": "QDPHP" } @@ -5542,7 +5558,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Confusing constructs", - "index": 54, + "index": 56, "toolComponent": { "name": "QDPHP" } @@ -5575,7 +5591,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -5773,7 +5789,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -5806,7 +5822,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -5872,7 +5888,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -6136,7 +6152,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -6169,7 +6185,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -6235,7 +6251,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -6301,7 +6317,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/PHPUnit", - "index": 69, + "index": 72, "toolComponent": { "name": "QDPHP" } @@ -6400,7 +6416,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/PHPUnit", - "index": 69, + "index": 72, "toolComponent": { "name": "QDPHP" } @@ -6466,7 +6482,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -6499,7 +6515,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Architecture", - "index": 71, + "index": 75, "toolComponent": { "name": "QDPHP" } @@ -6532,7 +6548,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -6565,7 +6581,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -6631,7 +6647,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -6664,7 +6680,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Confusing constructs", - "index": 54, + "index": 56, "toolComponent": { "name": "QDPHP" } @@ -6697,7 +6713,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -6763,7 +6779,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Confusing constructs", - "index": 54, + "index": 56, "toolComponent": { "name": "QDPHP" } @@ -6829,7 +6845,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -6841,28 +6857,28 @@ ] }, { - "id": "StaticLambdaBindingInspection", + "id": "TypeUnsafeArraySearchInspection", "shortDescription": { - "text": "Static lambdas binding" + "text": "'in_array(...)', 'array_search(...)' type unsafe usage" }, "fullDescription": { - "text": "Reports static closures, referencing '$this' (provokes a fatal error).", - "markdown": "Reports static closures, referencing '$this' (provokes a fatal error)." + "text": "Analyzes usages of 'array_search(..)' and 'in_array(...)'. If the 'strict' (third) parameter is missing, refactoring will be proposed for security's sake. Refactoring this might present a significant cost in terms of additional development and legacy code reverse engineering, so the cost-benefit should be weighed carefully. Documentation can be found here", + "markdown": "Analyzes usages of 'array_search(..)' and 'in_array(...)'. If the 'strict' (third) parameter is missing, refactoring will be proposed for security's sake. \n\nRefactoring this might present a significant cost in terms of additional development and legacy code reverse engineering, so the cost-benefit should be weighed carefully. \nDocumentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/types-compatibility.md#strict-type-search-in-arrays)" }, "defaultConfiguration": { "enabled": true, - "level": "error", + "level": "note", "parameters": { - "suppressToolId": "StaticLambdaBindingInspection", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "TypeUnsafeArraySearchInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)/Probable bugs", - "index": 2, + "id": "PHP/Php Inspections (EA Extended)/Type compatibility", + "index": 83, "toolComponent": { "name": "QDPHP" } @@ -6874,28 +6890,28 @@ ] }, { - "id": "TypeUnsafeArraySearchInspection", + "id": "StaticLambdaBindingInspection", "shortDescription": { - "text": "'in_array(...)', 'array_search(...)' type unsafe usage" + "text": "Static lambdas binding" }, "fullDescription": { - "text": "Analyzes usages of 'array_search(..)' and 'in_array(...)'. If the 'strict' (third) parameter is missing, refactoring will be proposed for security's sake. Refactoring this might present a significant cost in terms of additional development and legacy code reverse engineering, so the cost-benefit should be weighed carefully. Documentation can be found here", - "markdown": "Analyzes usages of 'array_search(..)' and 'in_array(...)'. If the 'strict' (third) parameter is missing, refactoring will be proposed for security's sake. \n\nRefactoring this might present a significant cost in terms of additional development and legacy code reverse engineering, so the cost-benefit should be weighed carefully. \nDocumentation can be found [here](https://github.com/kalessil/phpinspectionsea/blob/master/docs/types-compatibility.md#strict-type-search-in-arrays)" + "text": "Reports static closures, referencing '$this' (provokes a fatal error).", + "markdown": "Reports static closures, referencing '$this' (provokes a fatal error)." }, "defaultConfiguration": { "enabled": true, - "level": "note", + "level": "error", "parameters": { - "suppressToolId": "TypeUnsafeArraySearchInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "StaticLambdaBindingInspection", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ { "target": { - "id": "PHP/Php Inspections (EA Extended)/Type compatibility", - "index": 80, + "id": "PHP/Php Inspections (EA Extended)/Probable bugs", + "index": 2, "toolComponent": { "name": "QDPHP" } @@ -6961,7 +6977,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -6994,7 +7010,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Performance", - "index": 39, + "index": 40, "toolComponent": { "name": "QDPHP" } @@ -7027,7 +7043,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -7060,7 +7076,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Architecture", - "index": 71, + "index": 75, "toolComponent": { "name": "QDPHP" } @@ -7093,7 +7109,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Architecture", - "index": 71, + "index": 75, "toolComponent": { "name": "QDPHP" } @@ -7126,7 +7142,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Architecture", - "index": 71, + "index": 75, "toolComponent": { "name": "QDPHP" } @@ -7159,7 +7175,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Type compatibility", - "index": 80, + "index": 83, "toolComponent": { "name": "QDPHP" } @@ -7192,7 +7208,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Code Style", - "index": 24, + "index": 25, "toolComponent": { "name": "QDPHP" } @@ -7291,7 +7307,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -7324,7 +7340,7 @@ { "target": { "id": "PHP/Php Inspections (EA Extended)/Language level migration", - "index": 44, + "index": 45, "toolComponent": { "name": "QDPHP" } @@ -7411,7 +7427,7 @@ }, { "name": "com.jetbrains.php", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "PhpLoopCanBeReplacedWithStrRepeatInspection", @@ -7810,27 +7826,27 @@ ] }, { - "id": "PhpWriteAccessToReferencedArrayValueWithoutUnsetInspection", + "id": "PhpMissingDocCommentInspection", "shortDescription": { - "text": "Write access to referenced array value without 'unset'" + "text": "Missing PHPDoc comment" }, "fullDescription": { - "text": "Reports the write access expressions on variables that are still referencing the array value previously used in a 'foreach' statement. It is recommended to destroy such references by using 'unset'. See foreach (php.net) and unset (php.net) for details.", - "markdown": "Reports the write access expressions on variables that are still referencing the array value previously used in a `foreach` statement.\n\n\nIt is recommended to destroy such references by using `unset`.\n\n\nSee [foreach (php.net)](https://www.php.net/manual/en/control-structures.foreach.php) and [unset (php.net)](https://www.php.net/manual/en/function.unset.php) for details." + "text": "Reports non-fully typed elements without a PHPDoc comment or with a PHPDoc comment only containing the '@noinspection' tag. You can use the Enforce PHPDoc Comment inspection to report fully typed elements.", + "markdown": "Reports non-fully typed elements without a PHPDoc comment or with a PHPDoc comment only containing the `@noinspection` tag.\n\nYou can use the *Enforce PHPDoc Comment* inspection to report fully typed elements." }, "defaultConfiguration": { - "enabled": true, - "level": "warning", + "enabled": false, + "level": "note", "parameters": { - "suppressToolId": "PhpWriteAccessToReferencedArrayValueWithoutUnsetInspection", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "PhpMissingDocCommentInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Control flow", + "id": "PHP/PHPDoc/Code style", "index": 17, "toolComponent": { "name": "QDPHP" @@ -7843,27 +7859,27 @@ ] }, { - "id": "PhpMissingDocCommentInspection", + "id": "PhpWriteAccessToReferencedArrayValueWithoutUnsetInspection", "shortDescription": { - "text": "Missing PHPDoc comment" + "text": "Write access to referenced array value without 'unset'" }, "fullDescription": { - "text": "Reports non-fully typed elements without a PHPDoc comment or with a PHPDoc comment only containing the '@noinspection' tag. You can use the Enforce PHPDoc Comment inspection to report fully typed elements.", - "markdown": "Reports non-fully typed elements without a PHPDoc comment or with a PHPDoc comment only containing the `@noinspection` tag.\n\nYou can use the *Enforce PHPDoc Comment* inspection to report fully typed elements." + "text": "Reports the write access expressions on variables that are still referencing the array value previously used in a 'foreach' statement. It is recommended to destroy such references by using 'unset'. See foreach (php.net) and unset (php.net) for details.", + "markdown": "Reports the write access expressions on variables that are still referencing the array value previously used in a `foreach` statement.\n\n\nIt is recommended to destroy such references by using `unset`.\n\n\nSee [foreach (php.net)](https://www.php.net/manual/en/control-structures.foreach.php) and [unset (php.net)](https://www.php.net/manual/en/function.unset.php) for details." }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "warning", "parameters": { - "suppressToolId": "PhpMissingDocCommentInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "PhpWriteAccessToReferencedArrayValueWithoutUnsetInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "PHP/PHPDoc/Code style", + "id": "PHP/Control flow", "index": 18, "toolComponent": { "name": "QDPHP" @@ -7996,7 +8012,40 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "SymfonyLibraryIsNotDownloaded", + "shortDescription": { + "text": "Missed locally stored library for HTTP link" + }, + "fullDescription": { + "text": "Reports missed locally stored library", + "markdown": "Reports missed locally stored library" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "SymfonyLibraryIsNotDownloaded", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "PHP/Symfony", + "index": 35, "toolComponent": { "name": "QDPHP" } @@ -8013,8 +8062,8 @@ "text": "Class constant type is missing" }, "fullDescription": { - "text": "Reports a class constant to which type can be appended", - "markdown": "Reports a class constant to which type can be appended" + "text": "In PHP 8.3 and later, reports a class constant that is missing a type declaration. Suggests inserting the correct class constant type.", + "markdown": "In PHP 8.3 and later, reports a class constant that is missing a type declaration. Suggests inserting the correct class constant type." }, "defaultConfiguration": { "enabled": true, @@ -8194,7 +8243,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -8227,7 +8276,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -8491,7 +8540,7 @@ { "target": { "id": "PHP/PHPDoc/Code style", - "index": 18, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -8524,7 +8573,7 @@ { "target": { "id": "PHP/Unused symbols", - "index": 47, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -8557,7 +8606,7 @@ { "target": { "id": "PHP/Composer", - "index": 48, + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -8920,7 +8969,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -8986,7 +9035,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -9019,7 +9068,7 @@ { "target": { "id": "PHP/Composer", - "index": 48, + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -9052,7 +9101,7 @@ { "target": { "id": "PHP/Unused symbols", - "index": 47, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -9228,39 +9277,6 @@ } ] }, - { - "id": "PhpClosureCanBeConvertedToFirstClassCallableInspection", - "shortDescription": { - "text": "'Closure::fromCallable()' can be converted to the first-class callable syntax" - }, - "fullDescription": { - "text": "Reports the 'callable' creation expressions that use 'Closure::fromCallable' but can be replaced with first-class callable syntax 'f(...)' available since PHP 8.1. See First-class callable syntax (php.net) for details.", - "markdown": "Reports the `callable` creation expressions that use `Closure::fromCallable` but can be replaced with first-class callable syntax `f(...)` available since PHP 8.1.\n\n\nSee [First-class callable syntax (php.net)](https://wiki.php.net/rfc/first_class_callable_syntax) for details." - }, - "defaultConfiguration": { - "enabled": true, - "level": "note", - "parameters": { - "suppressToolId": "PhpClosureCanBeConvertedToFirstClassCallableInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" - } - }, - "relationships": [ - { - "target": { - "id": "PHP/Code style", - "index": 5, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, { "id": "PhpRedundantArrayCallInForeachIteratedValueInspection", "shortDescription": { @@ -9295,19 +9311,19 @@ ] }, { - "id": "PhpExpressionAlwaysNullInspection", + "id": "PhpClosureCanBeConvertedToFirstClassCallableInspection", "shortDescription": { - "text": "Expression is always 'null'" + "text": "'Closure::fromCallable()' can be converted to the first-class callable syntax" }, "fullDescription": { - "text": "Reports the variables in 'return' statements that are always 'null'.", - "markdown": "Reports the variables in `return` statements that are always `null`." + "text": "Reports the 'callable' creation expressions that use 'Closure::fromCallable' but can be replaced with first-class callable syntax 'f(...)' available since PHP 8.1. See First-class callable syntax (php.net) for details.", + "markdown": "Reports the `callable` creation expressions that use `Closure::fromCallable` but can be replaced with first-class callable syntax `f(...)` available since PHP 8.1.\n\n\nSee [First-class callable syntax (php.net)](https://wiki.php.net/rfc/first_class_callable_syntax) for details." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpExpressionAlwaysNullInspection", + "suppressToolId": "PhpClosureCanBeConvertedToFirstClassCallableInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -9315,8 +9331,8 @@ "relationships": [ { "target": { - "id": "PHP/Control flow", - "index": 17, + "id": "PHP/Code style", + "index": 5, "toolComponent": { "name": "QDPHP" } @@ -9328,19 +9344,19 @@ ] }, { - "id": "PhpUnitAssertCountInspection", + "id": "PhpExpressionAlwaysNullInspection", "shortDescription": { - "text": "Usage 'assertCount/assertSameSize' methods instead of assertEquals" + "text": "Expression is always 'null'" }, "fullDescription": { - "text": "Reports alternative usage of the 'assertEquals' and 'assertNotEquals' methods with 'count' function as a parameter See Usage of the assertCount for details. See Usage of the assertSameSize for details.", - "markdown": "Reports alternative usage of the `assertEquals` and `assertNotEquals` methods with `count` function as a parameter\n\n\nSee [Usage of the assertCount](https://phpunit.readthedocs.io/en/stable/assertions.html#assertcount) for details.\n\n\nSee [Usage of the assertSameSize](https://hotexamples.com/examples/-/PHPUnit_Framework_Assert/assertSameSize/php-phpunit_framework_assert-assertsamesize-method-examples.html) for details." + "text": "Reports the variables in 'return' statements that are always 'null'.", + "markdown": "Reports the variables in `return` statements that are always `null`." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpUnitAssertCountInspection", + "suppressToolId": "PhpExpressionAlwaysNullInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -9348,8 +9364,8 @@ "relationships": [ { "target": { - "id": "PHP/PHPUnit", - "index": 27, + "id": "PHP/Control flow", + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -9393,6 +9409,39 @@ } ] }, + { + "id": "PhpUnitAssertCountInspection", + "shortDescription": { + "text": "Usage 'assertCount/assertSameSize' methods instead of assertEquals" + }, + "fullDescription": { + "text": "Reports alternative usage of the 'assertEquals' and 'assertNotEquals' methods with 'count' function as a parameter See Usage of the assertCount for details. See Usage of the assertSameSize for details.", + "markdown": "Reports alternative usage of the `assertEquals` and `assertNotEquals` methods with `count` function as a parameter\n\n\nSee [Usage of the assertCount](https://phpunit.readthedocs.io/en/stable/assertions.html#assertcount) for details.\n\n\nSee [Usage of the assertSameSize](https://hotexamples.com/examples/-/PHPUnit_Framework_Assert/assertSameSize/php-phpunit_framework_assert-assertsamesize-method-examples.html) for details." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PhpUnitAssertCountInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "PHP/PHPUnit", + "index": 27, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "PhpUnnecessaryParenthesesInspection", "shortDescription": { @@ -9559,28 +9608,28 @@ ] }, { - "id": "PhpUsageOfSilenceOperatorInspection", + "id": "PhpUndefinedVariableInspection", "shortDescription": { - "text": "Usage of a silence operator" + "text": "Undefined variable" }, "fullDescription": { - "text": "Reports the usages of the silence operator ('@'), which is highly discouraged. See Error Control Operators (php.net) for details.", - "markdown": "Reports the usages of the silence operator (`@`), which is highly discouraged.\n\nSee [Error Control Operators (php.net)](https://www.php.net/manual/en/language.operators.errorcontrol.php) for details." + "text": "Produces two types of warnings: Undefined variable: the variable's definition is not found in the project files, configured include paths, or among the PHP predefined variables. Variable might have not been defined: there are one or more paths to reach the line with the variable usage without defining it. Use the options below to customize the inspection: Report that variable is probably undefined: clear the checkbox to disable the Variable might have not been defined warnings. Enable inspection in global space: by default, the inspection is enabled for global space. Clear the checkbox to only report undefined variables from functions' local scope. Search for variable's definition outside the current file: if selected, the IDE reports a global variable as undefined only in case there are no 'include' or 'require' statements in the current file and the variable's definition cannot be found in the project. Note that the IDE does not examine the actual content of included files but only checks the presence of 'include' or 'require' statements. Otherwise, if not selected, the IDE searches for the variable's definition only in the current file and ignores the 'include' or 'require' statements if any.", + "markdown": "Produces two types of warnings:\n\n* *Undefined variable*: the variable's definition is not found in the project files, configured include paths, or among the PHP predefined variables.\n* *Variable might have not been defined*: there are one or more paths to reach the line with the variable usage without defining it.\n\n\nUse the options below to customize the inspection:\n\n* **Report that variable is probably undefined** : clear the checkbox to disable the *Variable might have not been defined* warnings.\n* **Enable inspection in global space**: by default, the inspection is enabled for global space. Clear the checkbox to only report undefined variables from functions' local scope.\n*\n **Search for variable's definition outside the current file** : if selected, the IDE reports a global variable as undefined only in case there are no `include` or `require` statements in the current file and the variable's definition cannot be found in the project. Note that the IDE does not examine the actual content of included files but only checks the presence of `include` or `require` statements.\n\n\n Otherwise, if not selected, the IDE searches for the variable's definition only in the current file and ignores the `include` or `require` statements if any." }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "error", "parameters": { - "suppressToolId": "PhpUsageOfSilenceOperatorInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "PhpUndefinedVariableInspection", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ { "target": { - "id": "PHP/Code smell", - "index": 3, + "id": "PHP/Undefined symbols", + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -9592,28 +9641,28 @@ ] }, { - "id": "PhpUndefinedVariableInspection", + "id": "PhpUsageOfSilenceOperatorInspection", "shortDescription": { - "text": "Undefined variable" + "text": "Usage of a silence operator" }, "fullDescription": { - "text": "Produces two types of warnings: Undefined variable: the variable's definition is not found in the project files, configured include paths, or among the PHP predefined variables. Variable might have not been defined: there are one or more paths to reach the line with the variable usage without defining it. Use the options below to customize the inspection: Report that variable is probably undefined: clear the checkbox to disable the Variable might have not been defined warnings. Enable inspection in global space: by default, the inspection is enabled for global space. Clear the checkbox to only report undefined variables from functions' local scope. Search for variable's definition outside the current file: if selected, the IDE reports a global variable as undefined only in case there are no 'include' or 'require' statements in the current file and the variable's definition cannot be found in the project. Note that the IDE does not examine the actual content of included files but only checks the presence of 'include' or 'require' statements. Otherwise, if not selected, the IDE searches for the variable's definition only in the current file and ignores the 'include' or 'require' statements if any.", - "markdown": "Produces two types of warnings:\n\n* *Undefined variable*: the variable's definition is not found in the project files, configured include paths, or among the PHP predefined variables.\n* *Variable might have not been defined*: there are one or more paths to reach the line with the variable usage without defining it.\n\n\nUse the options below to customize the inspection:\n\n* **Report that variable is probably undefined** : clear the checkbox to disable the *Variable might have not been defined* warnings.\n* **Enable inspection in global space**: by default, the inspection is enabled for global space. Clear the checkbox to only report undefined variables from functions' local scope.\n*\n **Search for variable's definition outside the current file** : if selected, the IDE reports a global variable as undefined only in case there are no `include` or `require` statements in the current file and the variable's definition cannot be found in the project. Note that the IDE does not examine the actual content of included files but only checks the presence of `include` or `require` statements.\n\n\n Otherwise, if not selected, the IDE searches for the variable's definition only in the current file and ignores the `include` or `require` statements if any." + "text": "Reports the usages of the silence operator ('@'), which is highly discouraged. See Error Control Operators (php.net) for details.", + "markdown": "Reports the usages of the silence operator (`@`), which is highly discouraged.\n\nSee [Error Control Operators (php.net)](https://www.php.net/manual/en/language.operators.errorcontrol.php) for details." }, "defaultConfiguration": { - "enabled": true, - "level": "error", + "enabled": false, + "level": "note", "parameters": { - "suppressToolId": "PhpUndefinedVariableInspection", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "PhpUsageOfSilenceOperatorInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Undefined symbols", - "index": 34, + "id": "PHP/Code smell", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -9844,7 +9893,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -10042,7 +10091,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -10108,7 +10157,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -10174,7 +10223,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -10384,19 +10433,19 @@ ] }, { - "id": "PhpToStringMayProduceExceptionInspection", + "id": "PhpForeachArrayIsUsedAsValueInspection", "shortDescription": { - "text": "'__toString' may throw an exception" + "text": "Foreach array is used as value" }, "fullDescription": { - "text": "Reports the usages of '__toString' that may throw an exception, which is not allowed for PHP language level lower than 7.4.", - "markdown": "Reports the usages of `__toString` that may throw an exception, which is not allowed for PHP language level lower than 7.4." + "text": "Reports the variables that are used in a 'foreach' loop as both an array expression and an array's key or value (for example, 'foreach ($items as $items) {}'). Commonly, this is the result of a typing error.", + "markdown": "Reports the variables that are used in a `foreach` loop as both an array expression and an array's key or value (for example, `foreach ($items as $items) {}`).\n\n\nCommonly, this is the result of a typing error." }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "PhpToStringMayProduceExceptionInspection", + "suppressToolId": "PhpForeachArrayIsUsedAsValueInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -10404,8 +10453,8 @@ "relationships": [ { "target": { - "id": "PHP/Code smell", - "index": 3, + "id": "PHP/Probable bugs", + "index": 12, "toolComponent": { "name": "QDPHP" } @@ -10417,19 +10466,19 @@ ] }, { - "id": "PhpForeachArrayIsUsedAsValueInspection", + "id": "PhpToStringMayProduceExceptionInspection", "shortDescription": { - "text": "Foreach array is used as value" + "text": "'__toString' may throw an exception" }, "fullDescription": { - "text": "Reports the variables that are used in a 'foreach' loop as both an array expression and an array's key or value (for example, 'foreach ($items as $items) {}'). Commonly, this is the result of a typing error.", - "markdown": "Reports the variables that are used in a `foreach` loop as both an array expression and an array's key or value (for example, `foreach ($items as $items) {}`).\n\n\nCommonly, this is the result of a typing error." + "text": "Reports the usages of '__toString' that may throw an exception, which is not allowed for PHP language level lower than 7.4.", + "markdown": "Reports the usages of `__toString` that may throw an exception, which is not allowed for PHP language level lower than 7.4." }, "defaultConfiguration": { "enabled": true, "level": "warning", "parameters": { - "suppressToolId": "PhpForeachArrayIsUsedAsValueInspection", + "suppressToolId": "PhpToStringMayProduceExceptionInspection", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -10437,8 +10486,8 @@ "relationships": [ { "target": { - "id": "PHP/Probable bugs", - "index": 12, + "id": "PHP/Code smell", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -10504,7 +10553,7 @@ { "target": { "id": "PHP/Code style/PSR-12", - "index": 81, + "index": 84, "toolComponent": { "name": "QDPHP" } @@ -10537,7 +10586,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -10735,7 +10784,7 @@ { "target": { "id": "PHP/PHPDoc/Code style", - "index": 18, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -10801,7 +10850,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -10867,7 +10916,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -10933,7 +10982,7 @@ { "target": { "id": "PHP/PHPDoc/Code style", - "index": 18, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -10999,7 +11048,7 @@ { "target": { "id": "PHP/PHP strict standards", - "index": 87, + "index": 90, "toolComponent": { "name": "QDPHP" } @@ -11131,7 +11180,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -11164,7 +11213,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -11209,28 +11258,28 @@ ] }, { - "id": "PhpDangerousArrayInitializationInspection", + "id": "PhpDeprecatedImplodeUsageInspection", "shortDescription": { - "text": "Dangerous array initialization" + "text": "Deprecated 'implode/join' usage" }, "fullDescription": { - "text": "Reports dangerous array initializations (such as '$arr[] = value'). This practice is discouraged because if '$arr' already contains some value (for example, a string from a request variable), then this value will stay in place and '[]' may actually stand for string access operator. It is always preferable to initialize a variable by direct assignment. See Creating/modifying with square bracket syntax (php.net) for details.", - "markdown": "Reports dangerous array initializations (such as `$arr[] = value`).\n\n\nThis practice is discouraged because if `$arr` already contains some value (for example, a string from a request variable), then this value will stay in place and `[]` may actually stand for string access operator. It is always preferable to initialize a variable by direct assignment.\n\nSee [Creating/modifying with square bracket syntax (php.net)](https://www.php.net/manual/en/language.types.array.php#language.types.array.syntax.modifying) for details." + "text": "Reports deprecated usage of the 'implode' and 'join' functions. Starting from PHP 7.4, using 'implode' and 'join' with an array as the first argument and a string as the second argument is deprecated. See Deprecations for PHP 7.4 (php.net) for details.", + "markdown": "Reports deprecated usage of the `implode` and `join` functions.\n\nStarting from PHP 7.4, using `implode` and `join` with an array as the first argument and a string as the second argument is deprecated.\n\n\nSee [Deprecations for PHP 7.4 (php.net)](https://wiki.php.net/rfc/deprecations_php_7_4#implode_parameter_order_mix) for details." }, "defaultConfiguration": { "enabled": true, - "level": "note", + "level": "warning", "parameters": { - "suppressToolId": "PhpDangerousArrayInitializationInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" + "suppressToolId": "PhpDeprecatedImplodeUsageInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "PHP/Code style", - "index": 5, + "id": "PHP/General", + "index": 8, "toolComponent": { "name": "QDPHP" } @@ -11242,28 +11291,28 @@ ] }, { - "id": "PhpDeprecatedImplodeUsageInspection", + "id": "PhpDangerousArrayInitializationInspection", "shortDescription": { - "text": "Deprecated 'implode/join' usage" + "text": "Dangerous array initialization" }, "fullDescription": { - "text": "Reports deprecated usage of the 'implode' and 'join' functions. Starting from PHP 7.4, using 'implode' and 'join' with an array as the first argument and a string as the second argument is deprecated. See Deprecations for PHP 7.4 (php.net) for details.", - "markdown": "Reports deprecated usage of the `implode` and `join` functions.\n\nStarting from PHP 7.4, using `implode` and `join` with an array as the first argument and a string as the second argument is deprecated.\n\n\nSee [Deprecations for PHP 7.4 (php.net)](https://wiki.php.net/rfc/deprecations_php_7_4#implode_parameter_order_mix) for details." + "text": "Reports dangerous array initializations (such as '$arr[] = value'). This practice is discouraged because if '$arr' already contains some value (for example, a string from a request variable), then this value will stay in place and '[]' may actually stand for string access operator. It is always preferable to initialize a variable by direct assignment. See Creating/modifying with square bracket syntax (php.net) for details.", + "markdown": "Reports dangerous array initializations (such as `$arr[] = value`).\n\n\nThis practice is discouraged because if `$arr` already contains some value (for example, a string from a request variable), then this value will stay in place and `[]` may actually stand for string access operator. It is always preferable to initialize a variable by direct assignment.\n\nSee [Creating/modifying with square bracket syntax (php.net)](https://www.php.net/manual/en/language.types.array.php#language.types.array.syntax.modifying) for details." }, "defaultConfiguration": { "enabled": true, - "level": "warning", + "level": "note", "parameters": { - "suppressToolId": "PhpDeprecatedImplodeUsageInspection", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "PhpDangerousArrayInitializationInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" } }, "relationships": [ { "target": { - "id": "PHP/General", - "index": 8, + "id": "PHP/Code style", + "index": 5, "toolComponent": { "name": "QDPHP" } @@ -11428,7 +11477,7 @@ { "target": { "id": "PHP/Regular expressions", - "index": 88, + "index": 91, "toolComponent": { "name": "QDPHP" } @@ -11494,7 +11543,7 @@ { "target": { "id": "PHP/Code style/PSR-12", - "index": 81, + "index": 84, "toolComponent": { "name": "QDPHP" } @@ -11527,7 +11576,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -11539,28 +11588,28 @@ ] }, { - "id": "PhpCSFixerValidationInspection", + "id": "PhpClosureCanBeConvertedToShortArrowFunctionInspection", "shortDescription": { - "text": "PHP CS Fixer validation" + "text": "Closure can be converted to arrow function" }, "fullDescription": { - "text": "Reports coding style problems detected by PHP CS Fixer. The inspection requires PHP CS Fixer to be properly installed and set up in the IDE under Settings | PHP | Quality Tools | PHP CS Fixer. To learn more about installing PHP CS Fixer, see PHP-CS-Fixer installation (GitHub).", - "markdown": "Reports coding style problems detected by PHP CS Fixer.\n\n\nThe inspection requires PHP CS Fixer to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| PHP CS Fixer](settings://settings.php.quality.tools?CS%20Fixer).\n\n\nTo learn more about installing PHP CS Fixer, see [PHP-CS-Fixer installation (GitHub)](https://github.com/FriendsOfPHP/PHP-CS-Fixer#installation)." + "text": "Reports the anonymous functions that can be transformed to short arrow functions. Support for short arrow functions is available since PHP 7.4. See PHP RFC: Arrow Functions 2.0 (php.net) for details.", + "markdown": "Reports the anonymous functions that can be transformed to short arrow functions. Support for short arrow functions is available since PHP 7.4.\n\n\nSee [PHP RFC: Arrow Functions 2.0 (php.net)](https://wiki.php.net/rfc/arrow_functions_v2) for details." }, "defaultConfiguration": { - "enabled": false, + "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpCSFixerValidationInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "PhpClosureCanBeConvertedToShortArrowFunctionInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" } }, "relationships": [ { "target": { - "id": "PHP/Quality tools", - "index": 89, + "id": "PHP/Code style", + "index": 5, "toolComponent": { "name": "QDPHP" } @@ -11572,28 +11621,28 @@ ] }, { - "id": "PhpClosureCanBeConvertedToShortArrowFunctionInspection", + "id": "PhpCSFixerValidationInspection", "shortDescription": { - "text": "Closure can be converted to arrow function" + "text": "PHP CS Fixer validation" }, "fullDescription": { - "text": "Reports the anonymous functions that can be transformed to short arrow functions. Support for short arrow functions is available since PHP 7.4. See PHP RFC: Arrow Functions 2.0 (php.net) for details.", - "markdown": "Reports the anonymous functions that can be transformed to short arrow functions. Support for short arrow functions is available since PHP 7.4.\n\n\nSee [PHP RFC: Arrow Functions 2.0 (php.net)](https://wiki.php.net/rfc/arrow_functions_v2) for details." + "text": "Reports coding style problems detected by PHP CS Fixer. The inspection requires PHP CS Fixer to be properly installed and set up in the IDE under Settings | PHP | Quality Tools | PHP CS Fixer. To learn more about installing PHP CS Fixer, see PHP-CS-Fixer installation (GitHub).", + "markdown": "Reports coding style problems detected by PHP CS Fixer.\n\n\nThe inspection requires PHP CS Fixer to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| PHP CS Fixer](settings://settings.php.quality.tools.php.cs.fixer).\n\n\nTo learn more about installing PHP CS Fixer, see [PHP-CS-Fixer installation (GitHub)](https://github.com/FriendsOfPHP/PHP-CS-Fixer#installation)." }, "defaultConfiguration": { - "enabled": true, + "enabled": false, "level": "note", "parameters": { - "suppressToolId": "PhpClosureCanBeConvertedToShortArrowFunctionInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" + "suppressToolId": "PhpCSFixerValidationInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Code style", - "index": 5, + "id": "PHP/Quality tools", + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -11659,7 +11708,7 @@ { "target": { "id": "PHP/Error handling", - "index": 92, + "index": 96, "toolComponent": { "name": "QDPHP" } @@ -11934,39 +11983,6 @@ } ] }, - { - "id": "PhpArrayIsAlwaysEmptyInspection", - "shortDescription": { - "text": "Array is always empty at the point of access" - }, - "fullDescription": { - "text": "Reports the iterated/accessed arrays that are known to be empty at the point of access.", - "markdown": "Reports the iterated/accessed arrays that are known to be empty at the point of access." - }, - "defaultConfiguration": { - "enabled": true, - "level": "note", - "parameters": { - "suppressToolId": "PhpArrayIsAlwaysEmptyInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" - } - }, - "relationships": [ - { - "target": { - "id": "PHP/Code smell", - "index": 3, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, { "id": "PhpIllegalArrayKeyTypeInspection", "shortDescription": { @@ -12000,6 +12016,39 @@ } ] }, + { + "id": "PhpArrayIsAlwaysEmptyInspection", + "shortDescription": { + "text": "Array is always empty at the point of access" + }, + "fullDescription": { + "text": "Reports the iterated/accessed arrays that are known to be empty at the point of access.", + "markdown": "Reports the iterated/accessed arrays that are known to be empty at the point of access." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PhpArrayIsAlwaysEmptyInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "PHP/Code smell", + "index": 3, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "PhpLoopNeverIteratesInspection", "shortDescription": { @@ -12022,7 +12071,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -12055,7 +12104,7 @@ { "target": { "id": "PHP/Regular expressions", - "index": 88, + "index": 91, "toolComponent": { "name": "QDPHP" } @@ -12187,7 +12236,7 @@ { "target": { "id": "PHP/PHPDoc/Code style", - "index": 18, + "index": 17, "toolComponent": { "name": "QDPHP" } @@ -12253,7 +12302,7 @@ { "target": { "id": "PHP/PHP strict standards", - "index": 87, + "index": 90, "toolComponent": { "name": "QDPHP" } @@ -12715,7 +12764,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -12832,7 +12881,7 @@ }, "fullDescription": { "text": "Reports coding style problems detected by PHP Mess Detector. The inspection requires PHP Mess Detector to be properly installed and set up in the IDE under Settings | PHP | Quality Tools | Mess Detector. To learn more about installing PHP Mess Detector, see PHP Mess Detector installation (phpmd.org) for details. You can use a predefined set of rules or add your own by specifying valid ruleset.xml files. See the rules index (phpmd.org) and How to create a custom rule set (phpmd.org) for details.", - "markdown": "Reports coding style problems detected by PHP Mess Detector.\n\n\nThe inspection requires PHP Mess Detector to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| Mess Detector](settings://settings.php.quality.tools?Mess%20Detector).\n\n\nTo learn more about installing PHP Mess Detector, see [PHP Mess Detector installation (phpmd.org)](https://phpmd.org/download/index.html) for details.\n\n\nYou can use a predefined set of rules or add your own by specifying valid *ruleset.xml* files. See the [rules index (phpmd.org)](https://phpmd.org/rules/index.html) and [How to create a custom rule set (phpmd.org)](https://phpmd.org/documentation/creating-a-ruleset.html) for details." + "markdown": "Reports coding style problems detected by PHP Mess Detector.\n\n\nThe inspection requires PHP Mess Detector to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| Mess Detector](settings://settings.php.quality.tools.mess.detector).\n\n\nTo learn more about installing PHP Mess Detector, see [PHP Mess Detector installation (phpmd.org)](https://phpmd.org/download/index.html) for details.\n\n\nYou can use a predefined set of rules or add your own by specifying valid *ruleset.xml* files. See the [rules index (phpmd.org)](https://phpmd.org/rules/index.html) and [How to create a custom rule set (phpmd.org)](https://phpmd.org/documentation/creating-a-ruleset.html) for details." }, "defaultConfiguration": { "enabled": false, @@ -12847,7 +12896,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 89, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -12960,7 +13009,7 @@ { "id": "PhpUnitAnnotationToAttributeInspection", "shortDescription": { - "text": "PHPUnit annotation can be replaced with attribute" + "text": "PHPUnit annotation is deprecated in PHPUnit 11 and can be replaced with attribute" }, "fullDescription": { "text": "Suggests replacing PHPUnit annotations with attributes.", @@ -12968,11 +13017,11 @@ }, "defaultConfiguration": { "enabled": true, - "level": "note", + "level": "warning", "parameters": { "suppressToolId": "PhpUnitAnnotationToAttributeInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ @@ -13078,7 +13127,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -13144,7 +13193,7 @@ { "target": { "id": "PHP/Code style/PSR-12", - "index": 81, + "index": 84, "toolComponent": { "name": "QDPHP" } @@ -13156,19 +13205,19 @@ ] }, { - "id": "PhpConcatenationWithEmptyStringCanBeInlinedInspection", + "id": "PhpDisabledQualityToolComposerInspection", "shortDescription": { - "text": "Concatenation to empty string can be merged with assignment" + "text": "Quality tool inspection is disabled" }, "fullDescription": { - "text": "Reports the '.=' concatenation assignments performed right after assignment to an empty string literal. Such assignments can be merged together.", - "markdown": "Reports the `.=` concatenation assignments performed right after assignment to an empty string literal. Such assignments can be merged together." + "text": "Highlights the quality tools' entries in composer.json in case the corresponding code inspections are disabled.", + "markdown": "Highlights the quality tools' entries in *composer.json* in case the corresponding code inspections are disabled." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpConcatenationWithEmptyStringCanBeInlinedInspection", + "suppressToolId": "PhpDisabledQualityToolComposerInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -13176,8 +13225,8 @@ "relationships": [ { "target": { - "id": "PHP/Code smell", - "index": 3, + "id": "PHP/Composer", + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -13189,19 +13238,19 @@ ] }, { - "id": "PhpDisabledQualityToolComposerInspection", + "id": "PhpConcatenationWithEmptyStringCanBeInlinedInspection", "shortDescription": { - "text": "Quality tool inspection is disabled" + "text": "Concatenation to empty string can be merged with assignment" }, "fullDescription": { - "text": "Highlights the quality tools' entries in composer.json in case the corresponding code inspections are disabled.", - "markdown": "Highlights the quality tools' entries in *composer.json* in case the corresponding code inspections are disabled." + "text": "Reports the '.=' concatenation assignments performed right after assignment to an empty string literal. Such assignments can be merged together.", + "markdown": "Reports the `.=` concatenation assignments performed right after assignment to an empty string literal. Such assignments can be merged together." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpDisabledQualityToolComposerInspection", + "suppressToolId": "PhpConcatenationWithEmptyStringCanBeInlinedInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -13209,8 +13258,8 @@ "relationships": [ { "target": { - "id": "PHP/Composer", - "index": 48, + "id": "PHP/Code smell", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -13222,19 +13271,19 @@ ] }, { - "id": "PhpUnusedFieldDefaultValueInspection", + "id": "PhpArrayIndexResetIsUnnecessaryInspection", "shortDescription": { - "text": "Redundant property initializer" + "text": "Array internal pointer reset is unnecessary" }, "fullDescription": { - "text": "Reports the fields with default initializers that are always overwritten in the class constructor.", - "markdown": "Reports the fields with default initializers that are always overwritten in the class constructor." + "text": "Reports the 'reset($array)' calls on arrays whose internal pointer is already set on the first element. Such calls are redundant and can be safely removed. See reset (php.net) for details.", + "markdown": "Reports the `reset($array)` calls on arrays whose internal pointer is already set on the first element. Such calls are redundant and can be safely removed.\n\n\nSee [reset (php.net)](https://www.php.net/manual/en/function.reset.php) for details." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpUnusedFieldDefaultValueInspection", + "suppressToolId": "PhpArrayIndexResetIsUnnecessaryInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -13242,8 +13291,8 @@ "relationships": [ { "target": { - "id": "PHP/Unused symbols", - "index": 47, + "id": "PHP/Code smell", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -13288,19 +13337,19 @@ ] }, { - "id": "PhpArrayIndexResetIsUnnecessaryInspection", + "id": "PhpUnusedFieldDefaultValueInspection", "shortDescription": { - "text": "Array internal pointer reset is unnecessary" + "text": "Redundant property initializer" }, "fullDescription": { - "text": "Reports the 'reset($array)' calls on arrays whose internal pointer is already set on the first element. Such calls are redundant and can be safely removed. See reset (php.net) for details.", - "markdown": "Reports the `reset($array)` calls on arrays whose internal pointer is already set on the first element. Such calls are redundant and can be safely removed.\n\n\nSee [reset (php.net)](https://www.php.net/manual/en/function.reset.php) for details." + "text": "Reports the fields with default initializers that are always overwritten in the class constructor.", + "markdown": "Reports the fields with default initializers that are always overwritten in the class constructor." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpArrayIndexResetIsUnnecessaryInspection", + "suppressToolId": "PhpUnusedFieldDefaultValueInspection", "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate" } @@ -13308,8 +13357,8 @@ "relationships": [ { "target": { - "id": "PHP/Code smell", - "index": 3, + "id": "PHP/Unused symbols", + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -13507,7 +13556,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -13606,7 +13655,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -13672,7 +13721,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -13804,7 +13853,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -13947,6 +13996,39 @@ } ] }, + { + "id": "PhpSymfonyAnnotationToAttributeInspection", + "shortDescription": { + "text": "Symfony annotation can be replaced with attribute" + }, + "fullDescription": { + "text": "Suggests replacing Symfony annotations with attributes.", + "markdown": "Suggests replacing Symfony annotations with attributes." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PhpSymfonyAnnotationToAttributeInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" + } + }, + "relationships": [ + { + "target": { + "id": "PHP/General", + "index": 8, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "PhpUnnecessarySemicolonInspection", "shortDescription": { @@ -14020,7 +14102,7 @@ }, "fullDescription": { "text": "Reports coding style problems detected by PHP_CodeSniffer. The inspection requires PHP_CodeSniffer to be properly installed and set up in the IDE under Settings | PHP | Quality Tools | PHP_CodeSniffer. To learn more about installing PHP_CodeSniffer, see PHP_CodeSniffer installation (GitHub).", - "markdown": "Reports coding style problems detected by PHP_CodeSniffer.\n\n\nThe inspection requires PHP_CodeSniffer to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| PHP_CodeSniffer](settings://settings.php.quality.tools?PHP_CodeSniffer).\n\n\nTo learn more about installing PHP_CodeSniffer, see [PHP_CodeSniffer installation (GitHub)](https://github.com/squizlabs/PHP_CodeSniffer#installation)." + "markdown": "Reports coding style problems detected by PHP_CodeSniffer.\n\n\nThe inspection requires PHP_CodeSniffer to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| PHP_CodeSniffer](settings://settings.php.quality.tools.php.code.sniffer).\n\n\nTo learn more about installing PHP_CodeSniffer, see [PHP_CodeSniffer installation (GitHub)](https://github.com/squizlabs/PHP_CodeSniffer#installation)." }, "defaultConfiguration": { "enabled": false, @@ -14035,7 +14117,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 89, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -14332,7 +14414,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -14530,7 +14612,7 @@ { "target": { "id": "PHP/Unused symbols", - "index": 47, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -14542,28 +14624,28 @@ ] }, { - "id": "PhpAssignmentReplaceableWithPrefixExpressionInspection", + "id": "PhpRandArgumentsInReverseOrderInspection", "shortDescription": { - "text": "Assignment can be replaced with increment or decrement" + "text": "Misordered 'rand' function arguments" }, "fullDescription": { - "text": "Reports the assignments that can be replaced with incrementing ('++') or decrementing ('--') operations.", - "markdown": "Reports the assignments that can be replaced with incrementing (`++`) or decrementing (`--`) operations." + "text": "Reports the 'rand($min, $max)' family function calls in which the 'max' argument is less than 'min'. For such functions as 'mt_rand' and 'random_int', this will result in a fatal error.", + "markdown": "Reports the `rand($min, $max)` family function calls in which the `max` argument is less than `min`. For such functions as `mt_rand` and `random_int`, this will result in a fatal error." }, "defaultConfiguration": { "enabled": true, - "level": "note", + "level": "error", "parameters": { - "suppressToolId": "PhpAssignmentReplaceableWithPrefixExpressionInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" + "suppressToolId": "PhpRandArgumentsInReverseOrderInspection", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ { "target": { - "id": "PHP/Replaceable assignments", - "index": 102, + "id": "PHP/Probable bugs", + "index": 12, "toolComponent": { "name": "QDPHP" } @@ -14575,28 +14657,28 @@ ] }, { - "id": "PhpRandArgumentsInReverseOrderInspection", + "id": "PhpAssignmentReplaceableWithPrefixExpressionInspection", "shortDescription": { - "text": "Misordered 'rand' function arguments" + "text": "Assignment can be replaced with increment or decrement" }, "fullDescription": { - "text": "Reports the 'rand($min, $max)' family function calls in which the 'max' argument is less than 'min'. For such functions as 'mt_rand' and 'random_int', this will result in a fatal error.", - "markdown": "Reports the `rand($min, $max)` family function calls in which the `max` argument is less than `min`. For such functions as `mt_rand` and `random_int`, this will result in a fatal error." + "text": "Reports the assignments that can be replaced with incrementing ('++') or decrementing ('--') operations.", + "markdown": "Reports the assignments that can be replaced with incrementing (`++`) or decrementing (`--`) operations." }, "defaultConfiguration": { "enabled": true, - "level": "error", + "level": "note", "parameters": { - "suppressToolId": "PhpRandArgumentsInReverseOrderInspection", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "PhpAssignmentReplaceableWithPrefixExpressionInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" } }, "relationships": [ { "target": { - "id": "PHP/Probable bugs", - "index": 12, + "id": "PHP/Replaceable assignments", + "index": 107, "toolComponent": { "name": "QDPHP" } @@ -14629,7 +14711,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -14728,7 +14810,7 @@ { "target": { "id": "PHP/Error handling", - "index": 92, + "index": 96, "toolComponent": { "name": "QDPHP" } @@ -14761,7 +14843,7 @@ { "target": { "id": "PHP/Code style/PSR-12", - "index": 81, + "index": 84, "toolComponent": { "name": "QDPHP" } @@ -14959,7 +15041,7 @@ { "target": { "id": "PHP/Regular expressions", - "index": 88, + "index": 91, "toolComponent": { "name": "QDPHP" } @@ -14992,7 +15074,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -15070,28 +15152,28 @@ ] }, { - "id": "PhpStatementWithoutBracesInspection", + "id": "PhpPregMatchRedundantClosureInspection", "shortDescription": { - "text": "Control statement body without braces" + "text": "Redundant closure '.*'" }, "fullDescription": { - "text": "Reports the control structures (such as loops or conditionals) whose bodies are not enclosed in braces. See Control structures (php.net) for details.", - "markdown": "Reports the control structures (such as loops or conditionals) whose bodies are not enclosed in braces.\n\n\nSee [Control structures (php.net)](https://www.php.net/manual/en/language.control-structures.php) for details." + "text": "Reports redundant leading and trailing '.*' in pattern for `preg_match` function.", + "markdown": "Reports redundant leading and trailing '.\\*' in pattern for \\`preg_match\\` function." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpStatementWithoutBracesInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" + "suppressToolId": "PhpPregMatchRedundantClosureInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Code style", - "index": 5, + "id": "PHP/Code smell", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -15103,28 +15185,28 @@ ] }, { - "id": "PhpPregMatchRedundantClosureInspection", + "id": "PhpStatementWithoutBracesInspection", "shortDescription": { - "text": "Redundant closure '.*'" + "text": "Control statement body without braces" }, "fullDescription": { - "text": "Reports redundant leading and trailing '.*' in pattern for `preg_match` function.", - "markdown": "Reports redundant leading and trailing '.\\*' in pattern for \\`preg_match\\` function." + "text": "Reports the control structures (such as loops or conditionals) whose bodies are not enclosed in braces. See Control structures (php.net) for details.", + "markdown": "Reports the control structures (such as loops or conditionals) whose bodies are not enclosed in braces.\n\n\nSee [Control structures (php.net)](https://www.php.net/manual/en/language.control-structures.php) for details." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpPregMatchRedundantClosureInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "PhpStatementWithoutBracesInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" } }, "relationships": [ { "target": { - "id": "PHP/Code smell", - "index": 3, + "id": "PHP/Code style", + "index": 5, "toolComponent": { "name": "QDPHP" } @@ -15168,6 +15250,39 @@ } ] }, + { + "id": "PhpUnitDeprecatedCallsIn11VersionInspection", + "shortDescription": { + "text": "Method is deprecated in PHPUnit 11" + }, + "fullDescription": { + "text": "Reports calls to the PHPUnit test case methods that are removed in PHPUnit 11.", + "markdown": "Reports calls to the PHPUnit test case methods that are removed in PHPUnit 11." + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "PhpUnitDeprecatedCallsIn11VersionInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "PHP/PHPUnit", + "index": 27, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "PhpNewClassMissingParameterListInspection", "shortDescription": { @@ -15190,7 +15305,7 @@ { "target": { "id": "PHP/Code style/PSR-12", - "index": 81, + "index": 84, "toolComponent": { "name": "QDPHP" } @@ -15388,7 +15503,7 @@ { "target": { "id": "PHP/Unused symbols", - "index": 47, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -15487,7 +15602,7 @@ { "target": { "id": "PHP/Code style/PSR-12", - "index": 81, + "index": 84, "toolComponent": { "name": "QDPHP" } @@ -15553,7 +15668,7 @@ { "target": { "id": "PHP/Composer", - "index": 48, + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -15586,7 +15701,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -15652,7 +15767,7 @@ { "target": { "id": "PHP/Code style/PSR-12", - "index": 81, + "index": 84, "toolComponent": { "name": "QDPHP" } @@ -15718,7 +15833,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -15994,28 +16109,28 @@ ] }, { - "id": "PhpGetClassCanBeReplacedWithClassNameLiteralInspection", + "id": "PhpContinueTargetingSwitchInspection", "shortDescription": { - "text": "'get_class()' call can be replaced with '::class'" + "text": "'continue' is targeting 'switch' statement" }, "fullDescription": { - "text": "Reports the 'get_class()' calls and suggests replacing them with '::class' when PHP Language level is set to 8.0 or later. See Allow ::class on objects (php.net) for details.", - "markdown": "Reports the `get_class()` calls and suggests replacing them with `::class` when PHP Language level is set to 8.0 or later.\n\n\nSee [Allow ::class on objects (php.net)](https://wiki.php.net/rfc/class_name_literal_on_object) for details." + "text": "Reports the 'continue' statements that are targeting 'switch' statements. In PHP 7.3 and later, such usages are deprecated and will emit an 'E_WARNING', since they are most likely the result of a programming mistake. In PHP, such 'continue' statements are equivalent to 'break', that is, they end the execution of the current 'switch' structure. In other languages, such 'continue' statements behave as 'continue 2' in PHP, that is, they take the execution to a higher level control structure (for example, the next iteration of an outer loop). See continue (php.net), break (php.net), and switch (php.net) for details.", + "markdown": "Reports the `continue` statements that are targeting `switch` statements. In PHP 7.3 and later, such usages are deprecated and will emit an `E_WARNING`, since they are most likely the result of a programming mistake.\n\n* In PHP, such `continue` statements are equivalent to `break`, that is, they end the execution of the current `switch` structure.\n* In other languages, such `continue` statements behave as `continue 2` in PHP, that is, they take the execution to a higher level control structure (for example, the next iteration of an outer loop).\n\n\nSee [continue (php.net)](https://www.php.net/manual/en/control-structures.continue.php), [break (php.net)](https://www.php.net/manual/en/control-structures.break.php), and [switch (php.net)](https://www.php.net/manual/en/control-structures.switch.php) for details." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpGetClassCanBeReplacedWithClassNameLiteralInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" + "suppressToolId": "PhpContinueTargetingSwitchInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Code style", - "index": 5, + "id": "PHP/Code smell", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -16027,28 +16142,28 @@ ] }, { - "id": "PhpContinueTargetingSwitchInspection", + "id": "PhpGetClassCanBeReplacedWithClassNameLiteralInspection", "shortDescription": { - "text": "'continue' is targeting 'switch' statement" + "text": "'get_class()' call can be replaced with '::class'" }, "fullDescription": { - "text": "Reports the 'continue' statements that are targeting 'switch' statements. In PHP 7.3 and later, such usages are deprecated and will emit an 'E_WARNING', since they are most likely the result of a programming mistake. In PHP, such 'continue' statements are equivalent to 'break', that is, they end the execution of the current 'switch' structure. In other languages, such 'continue' statements behave as 'continue 2' in PHP, that is, they take the execution to a higher level control structure (for example, the next iteration of an outer loop). See continue (php.net), break (php.net), and switch (php.net) for details.", - "markdown": "Reports the `continue` statements that are targeting `switch` statements. In PHP 7.3 and later, such usages are deprecated and will emit an `E_WARNING`, since they are most likely the result of a programming mistake.\n\n* In PHP, such `continue` statements are equivalent to `break`, that is, they end the execution of the current `switch` structure.\n* In other languages, such `continue` statements behave as `continue 2` in PHP, that is, they take the execution to a higher level control structure (for example, the next iteration of an outer loop).\n\n\nSee [continue (php.net)](https://www.php.net/manual/en/control-structures.continue.php), [break (php.net)](https://www.php.net/manual/en/control-structures.break.php), and [switch (php.net)](https://www.php.net/manual/en/control-structures.switch.php) for details." + "text": "Reports the 'get_class()' calls and suggests replacing them with '::class' when PHP Language level is set to 8.0 or later. See Allow ::class on objects (php.net) for details.", + "markdown": "Reports the `get_class()` calls and suggests replacing them with `::class` when PHP Language level is set to 8.0 or later.\n\n\nSee [Allow ::class on objects (php.net)](https://wiki.php.net/rfc/class_name_literal_on_object) for details." }, "defaultConfiguration": { "enabled": true, "level": "note", "parameters": { - "suppressToolId": "PhpContinueTargetingSwitchInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "PhpGetClassCanBeReplacedWithClassNameLiteralInspection", + "ideaSeverity": "INFORMATION", + "qodanaSeverity": "Info" } }, "relationships": [ { "target": { - "id": "PHP/Code smell", - "index": 3, + "id": "PHP/Code style", + "index": 5, "toolComponent": { "name": "QDPHP" } @@ -16147,7 +16262,7 @@ { "target": { "id": "PHP/Regular expressions", - "index": 88, + "index": 91, "toolComponent": { "name": "QDPHP" } @@ -16213,7 +16328,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -16246,7 +16361,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -16329,8 +16444,8 @@ "text": "'json_decode()' and 'json_last_error()' can be converted to 'json_validate()'" }, "fullDescription": { - "text": "Convert `json_decode()` and `json_last_error() === JSON_ERROR_NONE` to `json_validate()` See PHP RFC: json_validate for details.", - "markdown": "Convert \\`json_decode()\\` and \\`json_last_error() === JSON_ERROR_NONE\\` to \\`json_validate()\\`\n\n\nSee [PHP RFC: json_validate](https://wiki.php.net/rfc/json_validate) for details." + "text": "In PHP 8.3 and later, suggests converting `json_decode()` and `json_last_error() === JSON_ERROR_NONE` to `json_validate()`. See PHP RFC: json_validate for details.", + "markdown": "In PHP 8.3 and later, suggests converting \\`json_decode()\\` and \\`json_last_error() === JSON_ERROR_NONE\\` to \\`json_validate()\\`.\n\n\nSee [PHP RFC: json_validate](https://wiki.php.net/rfc/json_validate) for details." }, "defaultConfiguration": { "enabled": true, @@ -16774,7 +16889,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -16807,7 +16922,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -16840,7 +16955,7 @@ { "target": { "id": "PHP/Error handling", - "index": 92, + "index": 96, "toolComponent": { "name": "QDPHP" } @@ -17005,7 +17120,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -17104,7 +17219,7 @@ { "target": { "id": "PHP/Code style/PSR-12", - "index": 81, + "index": 84, "toolComponent": { "name": "QDPHP" } @@ -17203,7 +17318,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -17335,7 +17450,7 @@ { "target": { "id": "PHP/Regular expressions", - "index": 88, + "index": 91, "toolComponent": { "name": "QDPHP" } @@ -17368,7 +17483,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -17434,7 +17549,7 @@ { "target": { "id": "PHP/Unused symbols", - "index": 47, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -17500,7 +17615,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -17566,7 +17681,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -17632,7 +17747,7 @@ { "target": { "id": "PHP/Composer", - "index": 48, + "index": 50, "toolComponent": { "name": "QDPHP" } @@ -17709,6 +17824,39 @@ } ] }, + { + "id": "SymfonyImportMapModuleIsNotInstalled", + "shortDescription": { + "text": "Module is not installed in importmap" + }, + "fullDescription": { + "text": "Reports not installed module and suggests to run \"importmap:require\" or \"importmap:install\" command", + "markdown": "Reports not installed module and suggests to run \"importmap:require\" or \"importmap:install\" command" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "SymfonyImportMapModuleIsNotInstalled", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "PHP/Symfony", + "index": 35, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "PhpPointlessBooleanExpressionInConditionInspection", "shortDescription": { @@ -18127,7 +18275,7 @@ { "target": { "id": "PHP/Unused symbols", - "index": 47, + "index": 48, "toolComponent": { "name": "QDPHP" } @@ -18160,7 +18308,7 @@ { "target": { "id": "PHP/Replaceable assignments", - "index": 102, + "index": 107, "toolComponent": { "name": "QDPHP" } @@ -18259,7 +18407,7 @@ { "target": { "id": "PHP/Attributes", - "index": 57, + "index": 59, "toolComponent": { "name": "QDPHP" } @@ -18358,7 +18506,7 @@ { "target": { "id": "PHP/Control flow", - "index": 17, + "index": 18, "toolComponent": { "name": "QDPHP" } @@ -18541,7 +18689,7 @@ }, "fullDescription": { "text": "Reports the coding style problems detected by Laravel Pint. The inspection requires Laravel Pint to be properly installed and set up in the IDE under Settings | PHP | Quality Tools | Laravel Pint. To learn more about Laravel Pint installation, see Laravel Pint.", - "markdown": "Reports the coding style problems detected by Laravel Pint.\n\n\nThe inspection requires Laravel Pint to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| Laravel Pint](settings://settings.php.quality.tools?Laravel%20Pint).\n\n\nTo learn more about Laravel Pint installation, see [Laravel Pint](https://laravel.com/docs/10.x/pint#installation)." + "markdown": "Reports the coding style problems detected by Laravel Pint.\n\n\nThe inspection requires Laravel Pint to be properly installed and set up in the IDE under\n[Settings \\| PHP \\| Quality Tools \\| Laravel Pint](settings://settings.php.quality.tools.laravel.pint).\n\n\nTo learn more about Laravel Pint installation, see [Laravel Pint](https://laravel.com/docs/10.x/pint#installation)." }, "defaultConfiguration": { "enabled": false, @@ -18556,7 +18704,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 89, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -18622,7 +18770,7 @@ { "target": { "id": "PHP/Undefined symbols", - "index": 34, + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -18667,28 +18815,28 @@ ] }, { - "id": "PhpInvalidStringOffsetUsageInspection", + "id": "PhpTooManyParametersInspection", "shortDescription": { - "text": "Invalid string offset usage" + "text": "Too many parameters in function declaration" }, "fullDescription": { - "text": "Reports invalid string offset usages that will result in a runtime error. The following usages are reported: Using string offsets as objects or arrays Unsetting string offsets via 'unset' Passing string offsets by reference Creating references to or from string offsets Incrementing or decrementing string offsets Using combined operator assignments such as '+=' or '.=' on string offsets Assigning string offsets with empty strings or strings with length >1", - "markdown": "Reports invalid string offset usages that will result in a runtime error.\n\n\nThe following usages are reported:\n\n* Using string offsets as objects or arrays\n* Unsetting string offsets via `unset`\n* Passing string offsets by reference\n* Creating references to or from string offsets\n* Incrementing or decrementing string offsets\n* Using combined operator assignments such as `+=` or `.=` on string offsets\n* Assigning string offsets with empty strings or strings with length \\>1" + "text": "Reports the function/method declarations with the number of parameters exceeding the specified limit.", + "markdown": "Reports the function/method declarations with the number of parameters exceeding the specified limit." }, "defaultConfiguration": { - "enabled": true, - "level": "error", + "enabled": false, + "level": "note", "parameters": { - "suppressToolId": "PhpInvalidStringOffsetUsageInspection", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "PhpTooManyParametersInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "PHP/Probable bugs", - "index": 12, + "id": "PHP/Code smell", + "index": 3, "toolComponent": { "name": "QDPHP" } @@ -18733,28 +18881,28 @@ ] }, { - "id": "PhpTooManyParametersInspection", + "id": "PhpInvalidStringOffsetUsageInspection", "shortDescription": { - "text": "Too many parameters in function declaration" + "text": "Invalid string offset usage" }, "fullDescription": { - "text": "Reports the function/method declarations with the number of parameters exceeding the specified limit.", - "markdown": "Reports the function/method declarations with the number of parameters exceeding the specified limit." + "text": "Reports invalid string offset usages that will result in a runtime error. The following usages are reported: Using string offsets as objects or arrays Unsetting string offsets via 'unset' Passing string offsets by reference Creating references to or from string offsets Incrementing or decrementing string offsets Using combined operator assignments such as '+=' or '.=' on string offsets Assigning string offsets with empty strings or strings with length >1", + "markdown": "Reports invalid string offset usages that will result in a runtime error.\n\n\nThe following usages are reported:\n\n* Using string offsets as objects or arrays\n* Unsetting string offsets via `unset`\n* Passing string offsets by reference\n* Creating references to or from string offsets\n* Incrementing or decrementing string offsets\n* Using combined operator assignments such as `+=` or `.=` on string offsets\n* Assigning string offsets with empty strings or strings with length \\>1" }, "defaultConfiguration": { - "enabled": false, - "level": "note", + "enabled": true, + "level": "error", "parameters": { - "suppressToolId": "PhpTooManyParametersInspection", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "PhpInvalidStringOffsetUsageInspection", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ { "target": { - "id": "PHP/Code smell", - "index": 3, + "id": "PHP/Probable bugs", + "index": 12, "toolComponent": { "name": "QDPHP" } @@ -18973,7 +19121,7 @@ }, { "name": "com.jetbrains.sh", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "ShellCheck", @@ -19018,7 +19166,7 @@ }, { "name": "Karma", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "KarmaConfigFile", @@ -19063,7 +19211,7 @@ }, { "name": "com.intellij.database", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "MysqlLoadDataPathInspection", @@ -19153,7 +19301,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19186,7 +19334,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19219,7 +19367,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19252,7 +19400,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19285,7 +19433,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19318,7 +19466,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19351,7 +19499,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19384,7 +19532,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19396,28 +19544,28 @@ ] }, { - "id": "MysqlParsingInspection", + "id": "SqlCallNotationInspection", "shortDescription": { - "text": "Unsupported syntax in pre-8.0 versions" + "text": "Using of named and positional arguments" }, "fullDescription": { - "text": "Reports invalid usages of UNION in queries. The inspection works in MySQL versions that are earlier than 8.0. Example (MySQL): 'SELECT * FROM (SELECT 1 UNION (SELECT 1 UNION SELECT 2)) a;'", - "markdown": "Reports invalid usages of UNION in queries.\n\nThe inspection works in MySQL versions that are earlier than 8.0.\n\nExample (MySQL):\n\n\n SELECT * FROM (SELECT 1 UNION (SELECT 1 UNION SELECT 2)) a;\n" + "text": "Reports calls in which positional arguments go after the named ones. Works in PostgreSQL, Oracle, and Db2. Example (In PostgreSQL): 'CREATE FUNCTION foo(a int, b int, c int) RETURNS int\n LANGUAGE plpgsql AS\n$$\nBEGIN\n RETURN a + b + c;\nEND\n$$;\nSELECT foo(a => 1, b => 2, c => 3);\n -- `3` goes after the named argument\nSELECT foo(1, b => 2, 3);\n -- `1` and `3` go after the named argument\nSELECT foo(b => 2, 1, 3);'", + "markdown": "Reports calls in which positional arguments go after the named ones. Works in PostgreSQL, Oracle, and Db2.\n\nExample (In PostgreSQL):\n\n CREATE FUNCTION foo(a int, b int, c int) RETURNS int\n LANGUAGE plpgsql AS\n $$\n BEGIN\n RETURN a + b + c;\n END\n $$;\n SELECT foo(a => 1, b => 2, c => 3);\n -- `3` goes after the named argument\n SELECT foo(1, b => 2, 3);\n -- `1` and `3` go after the named argument\n SELECT foo(b => 2, 1, 3);\n" }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "error", "parameters": { - "suppressToolId": "MysqlParsing", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "SqlCallNotation", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ { "target": { - "id": "MySQL", - "index": 13, + "id": "SQL", + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19429,28 +19577,28 @@ ] }, { - "id": "SqlCallNotationInspection", + "id": "MysqlParsingInspection", "shortDescription": { - "text": "Using of named and positional arguments" + "text": "Unsupported syntax in pre-8.0 versions" }, "fullDescription": { - "text": "Reports calls in which positional arguments go after the named ones. Works in PostgreSQL, Oracle, and Db2. Example (In PostgreSQL): 'CREATE FUNCTION foo(a int, b int, c int) RETURNS int\n LANGUAGE plpgsql AS\n$$\nBEGIN\n RETURN a + b + c;\nEND\n$$;\nSELECT foo(a => 1, b => 2, c => 3);\n -- `3` goes after the named argument\nSELECT foo(1, b => 2, 3);\n -- `1` and `3` go after the named argument\nSELECT foo(b => 2, 1, 3);'", - "markdown": "Reports calls in which positional arguments go after the named ones. Works in PostgreSQL, Oracle, and Db2.\n\nExample (In PostgreSQL):\n\n CREATE FUNCTION foo(a int, b int, c int) RETURNS int\n LANGUAGE plpgsql AS\n $$\n BEGIN\n RETURN a + b + c;\n END\n $$;\n SELECT foo(a => 1, b => 2, c => 3);\n -- `3` goes after the named argument\n SELECT foo(1, b => 2, 3);\n -- `1` and `3` go after the named argument\n SELECT foo(b => 2, 1, 3);\n" + "text": "Reports invalid usages of UNION in queries. The inspection works in MySQL versions that are earlier than 8.0. Example (MySQL): 'SELECT * FROM (SELECT 1 UNION (SELECT 1 UNION SELECT 2)) a;'", + "markdown": "Reports invalid usages of UNION in queries.\n\nThe inspection works in MySQL versions that are earlier than 8.0.\n\nExample (MySQL):\n\n\n SELECT * FROM (SELECT 1 UNION (SELECT 1 UNION SELECT 2)) a;\n" }, "defaultConfiguration": { "enabled": false, - "level": "error", + "level": "warning", "parameters": { - "suppressToolId": "SqlCallNotation", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" + "suppressToolId": "MysqlParsing", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "SQL", - "index": 43, + "id": "MySQL", + "index": 13, "toolComponent": { "name": "QDPHP" } @@ -19483,7 +19631,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19516,7 +19664,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19549,7 +19697,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19582,7 +19730,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19615,7 +19763,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19648,7 +19796,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19681,7 +19829,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19714,7 +19862,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19747,7 +19895,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19780,7 +19928,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19813,7 +19961,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19846,7 +19994,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19879,7 +20027,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19912,7 +20060,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19945,7 +20093,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -19978,7 +20126,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20011,7 +20159,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20044,7 +20192,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20077,7 +20225,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20110,7 +20258,7 @@ { "target": { "id": "Oracle", - "index": 93, + "index": 98, "toolComponent": { "name": "QDPHP" } @@ -20143,7 +20291,7 @@ { "target": { "id": "Oracle", - "index": 93, + "index": 98, "toolComponent": { "name": "QDPHP" } @@ -20176,7 +20324,7 @@ { "target": { "id": "MongoJS", - "index": 95, + "index": 100, "toolComponent": { "name": "QDPHP" } @@ -20209,7 +20357,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20242,7 +20390,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20275,7 +20423,7 @@ { "target": { "id": "MongoJS", - "index": 95, + "index": 100, "toolComponent": { "name": "QDPHP" } @@ -20308,7 +20456,7 @@ { "target": { "id": "MongoJS", - "index": 95, + "index": 100, "toolComponent": { "name": "QDPHP" } @@ -20341,7 +20489,7 @@ { "target": { "id": "MongoJS", - "index": 95, + "index": 100, "toolComponent": { "name": "QDPHP" } @@ -20374,7 +20522,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20407,7 +20555,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20440,7 +20588,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20473,7 +20621,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20506,7 +20654,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20539,7 +20687,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20572,7 +20720,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20605,7 +20753,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20638,7 +20786,7 @@ { "target": { "id": "MongoJS", - "index": 95, + "index": 100, "toolComponent": { "name": "QDPHP" } @@ -20671,7 +20819,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20704,7 +20852,7 @@ { "target": { "id": "MongoJS", - "index": 95, + "index": 100, "toolComponent": { "name": "QDPHP" } @@ -20737,7 +20885,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20770,7 +20918,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20803,7 +20951,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20836,7 +20984,7 @@ { "target": { "id": "PostgreSQL", - "index": 106, + "index": 110, "toolComponent": { "name": "QDPHP" } @@ -20869,7 +21017,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20902,7 +21050,7 @@ { "target": { "id": "SQL server", - "index": 108, + "index": 112, "toolComponent": { "name": "QDPHP" } @@ -20935,7 +21083,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -20968,7 +21116,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -21001,7 +21149,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -21034,7 +21182,7 @@ { "target": { "id": "SQL server", - "index": 108, + "index": 112, "toolComponent": { "name": "QDPHP" } @@ -21067,7 +21215,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -21100,7 +21248,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -21133,7 +21281,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -21166,7 +21314,7 @@ { "target": { "id": "Oracle", - "index": 93, + "index": 98, "toolComponent": { "name": "QDPHP" } @@ -21199,7 +21347,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -21232,7 +21380,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -21265,7 +21413,7 @@ { "target": { "id": "SQL", - "index": 43, + "index": 44, "toolComponent": { "name": "QDPHP" } @@ -21286,7 +21434,7 @@ }, { "name": "fr.adrienbrault.idea.symfony2plugin", - "version": "2023.1.265", + "version": "2023.1.270", "rules": [ { "id": "TwigExtensionDeprecatedInspection", @@ -21387,6 +21535,39 @@ } ] }, + { + "id": "FirstClassCallable", + "shortDescription": { + "text": "Symfony: Consider using first class callable syntax" + }, + "fullDescription": { + "text": "Reports the callable creation expressions that can be replaced with first-class callable syntax f(...) available since PHP 8.1. See https://wiki.php.net/rfc/first_class_callable_syntax for more information. Example: '$this->method(...)\nFoo::method(...);'", + "markdown": "Reports the callable creation expressions that can be replaced with first-class callable syntax f(...) available since PHP 8.1.\n\n\nSee for more information.\n\n\nExample:\n\n\n $this->method(...)\n Foo::method(...);\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "FirstClassCallable", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony", + "index": 14, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "ProjectDirParameter", "shortDescription": { @@ -21442,7 +21623,7 @@ { "target": { "id": "Symfony/Asset", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -21458,7 +21639,10 @@ "shortDescription": { "text": "Twig: Missing Route" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -21472,7 +21656,7 @@ { "target": { "id": "Symfony/Route", - "index": 60, + "index": 63, "toolComponent": { "name": "QDPHP" } @@ -21571,7 +21755,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -21620,7 +21804,10 @@ "shortDescription": { "text": "Duplicate Key" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -21634,7 +21821,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -21667,7 +21854,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -21700,7 +21887,7 @@ { "target": { "id": "Symfony/Translation", - "index": 79, + "index": 82, "toolComponent": { "name": "QDPHP" } @@ -21733,7 +21920,7 @@ { "target": { "id": "Symfony/Route", - "index": 60, + "index": 63, "toolComponent": { "name": "QDPHP" } @@ -21766,7 +21953,7 @@ { "target": { "id": "Symfony/Translation", - "index": 79, + "index": 82, "toolComponent": { "name": "QDPHP" } @@ -21782,7 +21969,10 @@ "shortDescription": { "text": "Field or method not found" }, - "fullDescription": {}, + "fullDescription": { + "text": "Reporting missing field or method a known Twig typed variable", + "markdown": "Reporting missing field or method a known Twig typed variable" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -21845,7 +22035,10 @@ "shortDescription": { "text": "Duplicate Key" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -21859,7 +22052,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -21892,7 +22085,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -21941,7 +22134,10 @@ "shortDescription": { "text": "Missing Controller Action" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -21955,7 +22151,7 @@ { "target": { "id": "Symfony/Route", - "index": 60, + "index": 63, "toolComponent": { "name": "QDPHP" } @@ -21988,7 +22184,7 @@ { "target": { "id": "Symfony/Asset", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -22004,7 +22200,10 @@ "shortDescription": { "text": "Duplicate Key" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -22018,7 +22217,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -22067,7 +22266,10 @@ "shortDescription": { "text": "PHP: Missing translation domain" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -22081,7 +22283,7 @@ { "target": { "id": "Symfony/Translation", - "index": 79, + "index": 82, "toolComponent": { "name": "QDPHP" } @@ -22125,6 +22327,39 @@ } ] }, + { + "id": "DoctrineClearParameterDeprecation", + "shortDescription": { + "text": "Symfony: Doctrine " + }, + "fullDescription": { + "text": "Reports deprecation when calling EntityManager::clear with any arguments to clear specific entities which will not be supported in Doctrine ORM 3.0. See https://github.com/doctrine/orm/issues/8460 for more information. '$this->entityManager->clear(Foo::CLASS); #deprecated' It is possible to call EntityManager::clear($entity) or EntityRepository::clear() to only clear one kind of entity from the identity map. this is done by calling detach on the entity instead of actually clearing the identity map and other related UnitOfWork data. Because clearing is not semantically the same as detaching an entity, it is not possible to do this anymore. Alternative: If you need to detach many entities, you can perform this operation directly using the UnitOfWork", + "markdown": "Reports deprecation when calling EntityManager::clear with any arguments to clear specific entities which will not be supported in Doctrine ORM 3.0.\n\n\nSee for more information.\n\n\n $this->entityManager->clear(Foo::CLASS); #deprecated\n\n\nIt is possible to call EntityManager::clear($entity) or EntityRepository::clear() to only clear one kind of entity from the identity map. this is done by calling detach on the entity instead of actually clearing the identity map and other related UnitOfWork data. \n\nBecause clearing is not semantically the same as detaching an entity, it is not possible to do this anymore.\n\n\nAlternative: If you need to detach many entities, you can perform this operation directly using the UnitOfWork" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "DoctrineClearParameterDeprecation", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony", + "index": 14, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "EventMethodCall", "shortDescription": { @@ -22147,7 +22382,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -22213,7 +22448,7 @@ { "target": { "id": "Symfony/Route", - "index": 60, + "index": 63, "toolComponent": { "name": "QDPHP" } @@ -22257,10 +22492,43 @@ } ] }, + { + "id": "DoctrineOneToManyMappedByRequired", + "shortDescription": { + "text": "Symfony: OneToMany mapping requires the 'mappedBy' attribute" + }, + "fullDescription": { + "text": "Reports Doctrine metadata issues when using @OneToMany without a 'mappedBy' attribute, '* @OneToMany(targetEntity=\"Address\")'", + "markdown": "Reports Doctrine metadata issues when using @OneToMany without a 'mappedBy' attribute,\n\n\n * @OneToMany(targetEntity=\"Address\")\n" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "DoctrineOneToManyMappedByRequired", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Symfony", + "index": 14, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, { "id": "DoctrineOneToOneOwingSideDeprecation", "shortDescription": { - "text": "Symfony: 'JoinColumn configuration is not allowed on the inverse side of one-to-one associations" + "text": "Symfony: 'JoinColumn' configuration is not allowed on the inverse side of one-to-one associations" }, "fullDescription": { "text": "Reports deprecation when @JoinColumn is used on the side of a one-to-one association where mappedBy occurs. See https://github.com/doctrine/orm/pull/10654 for more information. '* @JoinColumn(name=\"`address-id`\", referencedColumnName=\"`address-id`\") # Deprecated\n * @OneToOne(targetEntity=\"Address\", mappedBy=\"user\", cascade={\"persist\"}, fetch=\"EAGER\")' For one-to-one associations, the side using the `mappedBy` attribute is the inverse side. The owning side is the entity with the table containing the foreign key. Using `JoinColumn` configuration on the _inverse_ side now triggers a deprecation notice and will be an error in 3.0.", @@ -22345,7 +22613,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -22394,7 +22662,10 @@ "shortDescription": { "text": "Duplicate Key" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -22408,7 +22679,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -22441,7 +22712,7 @@ { "target": { "id": "Symfony/Route", - "index": 60, + "index": 63, "toolComponent": { "name": "QDPHP" } @@ -22490,7 +22761,10 @@ "shortDescription": { "text": "Twig: Missing translation key" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -22504,7 +22778,7 @@ { "target": { "id": "Symfony/Translation", - "index": 79, + "index": 82, "toolComponent": { "name": "QDPHP" } @@ -22520,7 +22794,10 @@ "shortDescription": { "text": "Symfony: XML Arguments" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -22534,7 +22811,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -22567,7 +22844,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -22633,7 +22910,7 @@ { "target": { "id": "Symfony/Template", - "index": 103, + "index": 108, "toolComponent": { "name": "QDPHP" } @@ -22649,7 +22926,10 @@ "shortDescription": { "text": "Symfony: Yaml Arguments" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -22663,7 +22943,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -22729,7 +23009,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -22762,7 +23042,7 @@ { "target": { "id": "Symfony/Asset", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -22828,7 +23108,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -22861,7 +23141,7 @@ { "target": { "id": "Symfony/Yaml", - "index": 104, + "index": 109, "toolComponent": { "name": "QDPHP" } @@ -22877,7 +23157,10 @@ "shortDescription": { "text": "Deprecated Twig variable" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -23023,7 +23306,7 @@ { "target": { "id": "Symfony/Form", - "index": 107, + "index": 111, "toolComponent": { "name": "QDPHP" } @@ -23039,7 +23322,10 @@ "shortDescription": { "text": "Symfony: Container settings deprecated" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -23053,7 +23339,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -23086,7 +23372,7 @@ { "target": { "id": "Symfony/Asset", - "index": 53, + "index": 55, "toolComponent": { "name": "QDPHP" } @@ -23119,7 +23405,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -23152,7 +23438,7 @@ { "target": { "id": "Symfony/Yaml", - "index": 104, + "index": 109, "toolComponent": { "name": "QDPHP" } @@ -23168,7 +23454,10 @@ "shortDescription": { "text": "Symfony: Route settings deprecated" }, - "fullDescription": {}, + "fullDescription": { + "text": "No description available", + "markdown": "No description available" + }, "defaultConfiguration": { "enabled": true, "level": "warning", @@ -23182,7 +23471,7 @@ { "target": { "id": "Symfony/Route", - "index": 60, + "index": 63, "toolComponent": { "name": "QDPHP" } @@ -23215,7 +23504,7 @@ { "target": { "id": "Symfony/Service", - "index": 65, + "index": 68, "toolComponent": { "name": "QDPHP" } @@ -23269,7 +23558,7 @@ }, { "name": "org.jetbrains.plugins.sass", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "SassScssResolvedByNameOnly", @@ -23413,7 +23702,7 @@ }, { "name": "com.intellij", - "version": "233.14717.218", + "version": "241.16512.90", "rules": [ { "id": "HtmlUnknownBooleanAttribute", @@ -23470,7 +23759,7 @@ { "target": { "id": "General", - "index": 35, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -23503,7 +23792,7 @@ { "target": { "id": "General", - "index": 35, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -23536,7 +23825,7 @@ { "target": { "id": "General", - "index": 35, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -23569,7 +23858,7 @@ { "target": { "id": "General", - "index": 35, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -23635,7 +23924,7 @@ { "target": { "id": "General", - "index": 35, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -23668,7 +23957,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -23734,7 +24023,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -23767,7 +24056,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -23800,7 +24089,7 @@ { "target": { "id": "General", - "index": 35, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -23866,7 +24155,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -23899,7 +24188,7 @@ { "target": { "id": "Proofreading", - "index": 75, + "index": 78, "toolComponent": { "name": "QDPHP" } @@ -23932,7 +24221,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -23998,7 +24287,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -24031,7 +24320,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -24064,7 +24353,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -24097,7 +24386,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -24130,7 +24419,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -24196,7 +24485,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -24229,7 +24518,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -24262,7 +24551,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -24295,7 +24584,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -24328,7 +24617,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -24361,7 +24650,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -24394,7 +24683,7 @@ { "target": { "id": "General", - "index": 35, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -24427,7 +24716,7 @@ { "target": { "id": "JSON and JSON5", - "index": 91, + "index": 95, "toolComponent": { "name": "QDPHP" } @@ -24493,7 +24782,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -24526,7 +24815,7 @@ { "target": { "id": "JSON and JSON5", - "index": 91, + "index": 95, "toolComponent": { "name": "QDPHP" } @@ -24559,7 +24848,7 @@ { "target": { "id": "General", - "index": 35, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -24592,7 +24881,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -24625,7 +24914,7 @@ { "target": { "id": "Internationalization", - "index": 94, + "index": 99, "toolComponent": { "name": "QDPHP" } @@ -24658,7 +24947,7 @@ { "target": { "id": "Internationalization", - "index": 94, + "index": 99, "toolComponent": { "name": "QDPHP" } @@ -24691,7 +24980,7 @@ { "target": { "id": "Version control", - "index": 97, + "index": 102, "toolComponent": { "name": "QDPHP" } @@ -24724,7 +25013,7 @@ { "target": { "id": "JSON and JSON5", - "index": 91, + "index": 95, "toolComponent": { "name": "QDPHP" } @@ -24757,7 +25046,7 @@ { "target": { "id": "JSON and JSON5", - "index": 91, + "index": 95, "toolComponent": { "name": "QDPHP" } @@ -24790,7 +25079,7 @@ { "target": { "id": "JSON and JSON5", - "index": 91, + "index": 95, "toolComponent": { "name": "QDPHP" } @@ -24823,40 +25112,7 @@ { "target": { "id": "Structural search", - "index": 98, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "PhpSymfonyAnnotationToAttributeInspection", - "shortDescription": { - "text": "Symfony annotation can be replaced with attribute" - }, - "fullDescription": { - "text": "Suggests replacing Symfony annotations with attributes.", - "markdown": "Suggests replacing Symfony annotations with attributes." - }, - "defaultConfiguration": { - "enabled": true, - "level": "note", - "parameters": { - "suppressToolId": "PhpSymfonyAnnotationToAttributeInspection", - "ideaSeverity": "INFORMATION", - "qodanaSeverity": "Info" - } - }, - "relationships": [ - { - "target": { - "id": "PHP/General", - "index": 8, + "index": 103, "toolComponent": { "name": "QDPHP" } @@ -24922,7 +25178,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -24955,7 +25211,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -24988,7 +25244,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -25021,7 +25277,7 @@ { "target": { "id": "RELAX NG", - "index": 101, + "index": 106, "toolComponent": { "name": "QDPHP" } @@ -25120,7 +25376,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -25153,7 +25409,7 @@ { "target": { "id": "General", - "index": 35, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -25186,7 +25442,7 @@ { "target": { "id": "General", - "index": 35, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -25219,7 +25475,7 @@ { "target": { "id": "JSON and JSON5", - "index": 91, + "index": 95, "toolComponent": { "name": "QDPHP" } @@ -25252,7 +25508,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -25285,7 +25541,7 @@ { "target": { "id": "XML", - "index": 50, + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -25318,7 +25574,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -25351,7 +25607,7 @@ { "target": { "id": "RELAX NG", - "index": 101, + "index": 106, "toolComponent": { "name": "QDPHP" } @@ -25384,7 +25640,7 @@ { "target": { "id": "RegExp", - "index": 61, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -25396,28 +25652,28 @@ ] }, { - "id": "RegExpRepeatedSpace", + "id": "XmlUnresolvedReference", "shortDescription": { - "text": "Consecutive spaces" + "text": "Unresolved references" }, "fullDescription": { - "text": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier. Example: '( )' After the quick-fix is applied: '( {5})' New in 2017.1", - "markdown": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier.\n\n**Example:**\n\n\n ( )\n\nAfter the quick-fix is applied:\n\n\n ( {5})\n\n\nNew in 2017.1" + "text": "Reports an unresolved references in XML.", + "markdown": "Reports an unresolved references in XML." }, "defaultConfiguration": { - "enabled": false, - "level": "warning", + "enabled": true, + "level": "error", "parameters": { - "suppressToolId": "RegExpRepeatedSpace", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "XmlUnresolvedReference", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" } }, "relationships": [ { "target": { - "id": "RegExp", - "index": 61, + "id": "XML", + "index": 51, "toolComponent": { "name": "QDPHP" } @@ -25429,19 +25685,19 @@ ] }, { - "id": "RegExpDuplicateAlternationBranch", + "id": "RegExpRepeatedSpace", "shortDescription": { - "text": "Duplicate branch in alternation" + "text": "Consecutive spaces" }, "fullDescription": { - "text": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression. Example: '(alpha|bravo|charlie|alpha)' After the quick-fix is applied: '(alpha|bravo|charlie)' New in 2017.1", - "markdown": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression.\n\n**Example:**\n\n\n (alpha|bravo|charlie|alpha)\n\nAfter the quick-fix is applied:\n\n\n (alpha|bravo|charlie)\n\nNew in 2017.1" + "text": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier. Example: '( )' After the quick-fix is applied: '( {5})' New in 2017.1", + "markdown": "Reports multiple consecutive spaces in a RegExp. Because spaces are not visible by default, it can be hard to see how many spaces are required. The RegExp can be made more clear by replacing the consecutive spaces with a single space and a counted quantifier.\n\n**Example:**\n\n\n ( )\n\nAfter the quick-fix is applied:\n\n\n ( {5})\n\n\nNew in 2017.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "RegExpDuplicateAlternationBranch", + "suppressToolId": "RegExpRepeatedSpace", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -25450,85 +25706,7 @@ { "target": { "id": "RegExp", - "index": 61, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "CheckEmptyScriptTag", - "shortDescription": { - "text": "Empty tag" - }, - "fullDescription": { - "text": "Reports empty tags that do not work in some browsers. Example: '\n \n '", - "markdown": "Reports empty tags that do not work in some browsers.\n\n**Example:**\n\n\n \n \n \n" - }, - "defaultConfiguration": { - "enabled": false, - "level": "warning", - "parameters": { - "suppressToolId": "CheckEmptyScriptTag", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" - } - }, - "relationships": [ - { - "target": { - "id": "HTML", - "index": 20, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - } - ], - "language": "en-US", - "contents": [ - "localizedData", - "nonLocalizedData" - ], - "isComprehensive": false - }, - { - "name": "gherkin", - "version": "233.14717", - "rules": [ - { - "id": "GherkinScenarioToScenarioOutline", - "shortDescription": { - "text": "Scenario with Examples section" - }, - "fullDescription": { - "text": "Reports Gherkin scenarios that contain an 'Examples' section. Use the quick-fix to convert 'Scenario' to 'Scenario Outline'.", - "markdown": "Reports Gherkin scenarios that contain an `Examples` section.\n\nUse the quick-fix to convert `Scenario` to `Scenario Outline`." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "suppressToolId": "GherkinScenarioToScenarioOutline", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" - } - }, - "relationships": [ - { - "target": { - "id": "Cucumber", - "index": 21, + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -25540,19 +25718,19 @@ ] }, { - "id": "CucumberTableInspection", + "id": "RegExpDuplicateAlternationBranch", "shortDescription": { - "text": "Unused or missing columns in Cucumber tables" + "text": "Duplicate branch in alternation" }, "fullDescription": { - "text": "Reports tables in 'Examples' sections in Cucumber .feature files with unused or missing columns.", - "markdown": "Reports tables in `Examples` sections in Cucumber .feature files with unused or missing columns." + "text": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression. Example: '(alpha|bravo|charlie|alpha)' After the quick-fix is applied: '(alpha|bravo|charlie)' New in 2017.1", + "markdown": "Reports duplicate branches in a RegExp alternation. Duplicate branches slow down matching and obscure the intent of the expression.\n\n**Example:**\n\n\n (alpha|bravo|charlie|alpha)\n\nAfter the quick-fix is applied:\n\n\n (alpha|bravo|charlie)\n\nNew in 2017.1" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "CucumberTableInspection", + "suppressToolId": "RegExpDuplicateAlternationBranch", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -25560,107 +25738,8 @@ "relationships": [ { "target": { - "id": "Cucumber", - "index": 21, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "GherkinBrokenTableInspection", - "shortDescription": { - "text": "Gherkin table is broken" - }, - "fullDescription": { - "text": "Reports a table if there is at least one row with the number of cells different from the number of cells in the table header.", - "markdown": "Reports a table if there is at least one row with the number of cells different from the number of cells in the table header." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "suppressToolId": "GherkinBrokenTableInspection", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" - } - }, - "relationships": [ - { - "target": { - "id": "Cucumber", - "index": 21, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "GherkinMisplacedBackground", - "shortDescription": { - "text": "Misplaced background section" - }, - "fullDescription": { - "text": "Reports 'Background' sections that are located incorrectly. The 'Background' section must be located before the 'Scenario' section.", - "markdown": "Reports `Background` sections that are located incorrectly. The `Background` section must be located before the `Scenario` section." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "suppressToolId": "GherkinMisplacedBackground", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" - } - }, - "relationships": [ - { - "target": { - "id": "Cucumber", - "index": 21, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "CucumberMissedExamples", - "shortDescription": { - "text": "Missing examples section" - }, - "fullDescription": { - "text": "Reports scenario outlines in Cucumber .feature files that do not have the 'Examples' section. Use the quick-fix to automatically create the 'Examples' section with a pre-filled table header.", - "markdown": "Reports scenario outlines in Cucumber .feature files that do not have the `Examples` section.\n\nUse the quick-fix to automatically create the `Examples` section with a pre-filled table header." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "suppressToolId": "CucumberMissedExamples", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" - } - }, - "relationships": [ - { - "target": { - "id": "Cucumber", - "index": 21, + "id": "RegExp", + "index": 64, "toolComponent": { "name": "QDPHP" } @@ -25672,19 +25751,19 @@ ] }, { - "id": "CucumberUndefinedStep", + "id": "CheckEmptyScriptTag", "shortDescription": { - "text": "Undefined step" + "text": "Empty tag" }, "fullDescription": { - "text": "Reports steps in Cucumber (or some other Gherkin) .feature files that do not have matching step definitions. Use the quick-fix to automatically create a new step definition.", - "markdown": "Reports steps in Cucumber (or some other Gherkin) .feature files that do not have matching step definitions.\n\nUse the quick-fix to automatically create a new step definition." + "text": "Reports empty tags that do not work in some browsers. Example: '\n \n '", + "markdown": "Reports empty tags that do not work in some browsers.\n\n**Example:**\n\n\n \n \n \n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "CucumberUndefinedStep", + "suppressToolId": "CheckEmptyScriptTag", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -25692,41 +25771,8 @@ "relationships": [ { "target": { - "id": "Cucumber", - "index": 21, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "CucumberExamplesColon", - "shortDescription": { - "text": "Missing ':' after examples keyword" - }, - "fullDescription": { - "text": "Reports 'Examples' sections in Cucumber .feature files if they do not have ':' after the 'Examples' keyword.", - "markdown": "Reports `Examples` sections in Cucumber .feature files if they do not have ':' after the `Examples` keyword." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "suppressToolId": "CucumberExamplesColon", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" - } - }, - "relationships": [ - { - "target": { - "id": "Cucumber", - "index": 21, + "id": "HTML", + "index": 20, "toolComponent": { "name": "QDPHP" } @@ -25747,7 +25793,7 @@ }, { "name": "JavaScript", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "JSUnusedAssignment", @@ -25771,7 +25817,7 @@ { "target": { "id": "JavaScript and TypeScript/Unused symbols", - "index": 22, + "index": 21, "toolComponent": { "name": "QDPHP" } @@ -25837,7 +25883,7 @@ { "target": { "id": "JavaScript and TypeScript/Data flow", - "index": 25, + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -25936,7 +25982,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -25969,7 +26015,7 @@ { "target": { "id": "JavaScript and TypeScript/React", - "index": 37, + "index": 38, "toolComponent": { "name": "QDPHP" } @@ -26002,7 +26048,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 38, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -26035,7 +26081,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -26068,7 +26114,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 45, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -26101,7 +26147,7 @@ { "target": { "id": "JavaScript and TypeScript/Data flow", - "index": 25, + "index": 24, "toolComponent": { "name": "QDPHP" } @@ -26200,7 +26246,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -26233,7 +26279,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 51, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -26299,7 +26345,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -26365,7 +26411,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 62, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -26398,7 +26444,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 63, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -26431,7 +26477,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -26464,7 +26510,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -26563,7 +26609,7 @@ { "target": { "id": "JavaScript and TypeScript/Switch statement issues", - "index": 70, + "index": 73, "toolComponent": { "name": "QDPHP" } @@ -26596,7 +26642,7 @@ { "target": { "id": "JavaScript and TypeScript/Unused symbols", - "index": 22, + "index": 21, "toolComponent": { "name": "QDPHP" } @@ -26629,7 +26675,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -26662,7 +26708,7 @@ { "target": { "id": "JavaScript and TypeScript/DOM issues", - "index": 72, + "index": 74, "toolComponent": { "name": "QDPHP" } @@ -26695,7 +26741,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -26728,7 +26774,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -26761,7 +26807,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -26827,7 +26873,7 @@ { "target": { "id": "JavaScript and TypeScript/Async code and promises", - "index": 73, + "index": 76, "toolComponent": { "name": "QDPHP" } @@ -26860,7 +26906,7 @@ { "target": { "id": "JavaScript and TypeScript/Switch statement issues", - "index": 70, + "index": 73, "toolComponent": { "name": "QDPHP" } @@ -26959,7 +27005,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 38, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -26992,7 +27038,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -27058,7 +27104,7 @@ { "target": { "id": "JavaScript and TypeScript/Switch statement issues", - "index": 70, + "index": 73, "toolComponent": { "name": "QDPHP" } @@ -27091,7 +27137,7 @@ { "target": { "id": "JavaScript and TypeScript/Imports and dependencies", - "index": 77, + "index": 80, "toolComponent": { "name": "QDPHP" } @@ -27190,7 +27236,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -27223,7 +27269,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 63, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -27289,7 +27335,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 38, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -27355,7 +27401,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 45, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -27388,7 +27434,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 38, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -27421,7 +27467,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -27454,7 +27500,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -27487,7 +27533,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -27553,7 +27599,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -27586,7 +27632,7 @@ { "target": { "id": "JavaScript and TypeScript/Naming conventions", - "index": 83, + "index": 86, "toolComponent": { "name": "QDPHP" } @@ -27619,7 +27665,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -27652,7 +27698,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -27685,7 +27731,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -27751,7 +27797,7 @@ { "target": { "id": "JavaScript and TypeScript/Async code and promises", - "index": 73, + "index": 76, "toolComponent": { "name": "QDPHP" } @@ -27784,7 +27830,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -27850,7 +27896,7 @@ { "target": { "id": "JavaScript and TypeScript/Code quality tools", - "index": 85, + "index": 88, "toolComponent": { "name": "QDPHP" } @@ -27883,7 +27929,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 63, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -27916,7 +27962,7 @@ { "target": { "id": "JavaScript and TypeScript/Switch statement issues", - "index": 70, + "index": 73, "toolComponent": { "name": "QDPHP" } @@ -27949,7 +27995,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -27982,7 +28028,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 45, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -28048,7 +28094,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -28081,7 +28127,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -28114,7 +28160,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -28147,7 +28193,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 90, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -28180,7 +28226,7 @@ { "target": { "id": "JavaScript and TypeScript/Async code and promises", - "index": 73, + "index": 76, "toolComponent": { "name": "QDPHP" } @@ -28213,7 +28259,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 90, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -28246,7 +28292,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 62, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -28279,7 +28325,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -28312,7 +28358,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -28345,7 +28391,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 38, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -28378,7 +28424,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -28411,7 +28457,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -28444,7 +28490,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 51, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -28477,7 +28523,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -28510,7 +28556,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -28543,7 +28589,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -28593,8 +28639,8 @@ "text": "Unresolved reference" }, "fullDescription": { - "text": "Reports an unresolved reference in JavaScript code. In TypeScript code, a problem is reported if the part of the reference before the dot is of the type 'any'.", - "markdown": "Reports an unresolved reference in JavaScript code. In TypeScript code, a problem is reported if the part of the reference before the dot is of the type `any`." + "text": "Reports an unresolved reference in JavaScript code.", + "markdown": "Reports an unresolved reference in JavaScript code." }, "defaultConfiguration": { "enabled": false, @@ -28642,7 +28688,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 62, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -28675,7 +28721,7 @@ { "target": { "id": "JavaScript and TypeScript/DOM issues", - "index": 72, + "index": 74, "toolComponent": { "name": "QDPHP" } @@ -28708,7 +28754,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -28741,7 +28787,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -28774,7 +28820,7 @@ { "target": { "id": "JavaScript and TypeScript/Switch statement issues", - "index": 70, + "index": 73, "toolComponent": { "name": "QDPHP" } @@ -28786,19 +28832,19 @@ ] }, { - "id": "TypeScriptDuplicateUnionOrIntersectionType", + "id": "TrivialConditionalJS", "shortDescription": { - "text": "Duplicate union or intersection type component" + "text": "Redundant conditional expression" }, "fullDescription": { - "text": "Reports a duplicate type inside a union or intersection.", - "markdown": "Reports a duplicate type inside a union or intersection." + "text": "Reports a conditional expression of the form 'condition ? true : false\ncondition ? false : true' These expressions may be safely converted to 'condition\n!condition'", + "markdown": "Reports a conditional expression of the form\n\n\n condition ? true : false\n condition ? false : true\n\n\nThese expressions may be safely converted to\n\n\n condition\n !condition\n" }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "TypeScriptDuplicateUnionOrIntersectionType", + "suppressToolId": "RedundantConditionalExpressionJS", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -28806,8 +28852,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "id": "JavaScript and TypeScript/Control flow issues", + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -28819,19 +28865,19 @@ ] }, { - "id": "TrivialConditionalJS", + "id": "TypeScriptDuplicateUnionOrIntersectionType", "shortDescription": { - "text": "Redundant conditional expression" + "text": "Duplicate union or intersection type component" }, "fullDescription": { - "text": "Reports a conditional expression of the form 'condition ? true : false\ncondition ? false : true' These expressions may be safely converted to 'condition\n!condition'", - "markdown": "Reports a conditional expression of the form\n\n\n condition ? true : false\n condition ? false : true\n\n\nThese expressions may be safely converted to\n\n\n condition\n !condition\n" + "text": "Reports a duplicate type inside a union or intersection.", + "markdown": "Reports a duplicate type inside a union or intersection." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "RedundantConditionalExpressionJS", + "suppressToolId": "TypeScriptDuplicateUnionOrIntersectionType", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -28839,8 +28885,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "id": "JavaScript and TypeScript/TypeScript", + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -28852,19 +28898,19 @@ ] }, { - "id": "ES6UnusedImports", + "id": "InnerHTMLJS", "shortDescription": { - "text": "Unused import" + "text": "Use of 'innerHTML' property" }, "fullDescription": { - "text": "Reports a redundant 'import' statement. This is usually the case if the imported symbols are not used in the source file. To avoid side-effects, consider using bare import 'import 'packageName'' instead of the regular one.", - "markdown": "Reports a redundant `import` statement. This is usually the case if the imported symbols are not used in the source file. To avoid side-effects, consider using bare import `import 'packageName'` instead of the regular one." + "text": "Reports a JavaScript access to DOM nodes as text using the 'innerHTML' property. Most usages of 'innerHTML' are performed better with explicit DOM calls, such as 'getElementByID()' and 'createElement()'. Additionally, 'innerHTML' will not work with XML DOMs, including DOMs for XHTML if viewed as XML. This can lead to difficulties in diagnosing bugs.", + "markdown": "Reports a JavaScript access to DOM nodes as text using the `innerHTML` property. Most usages of `innerHTML` are performed better with explicit DOM calls, such as `getElementByID()` and `createElement()`. Additionally, `innerHTML` will not work with XML DOMs, including DOMs for XHTML if viewed as XML. This can lead to difficulties in diagnosing bugs." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "ES6UnusedImports", + "suppressToolId": "InnerHTMLJS", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -28872,8 +28918,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Imports and dependencies", - "index": 77, + "id": "JavaScript and TypeScript/DOM issues", + "index": 74, "toolComponent": { "name": "QDPHP" } @@ -28885,19 +28931,19 @@ ] }, { - "id": "InnerHTMLJS", + "id": "ES6UnusedImports", "shortDescription": { - "text": "Use of 'innerHTML' property" + "text": "Unused import" }, "fullDescription": { - "text": "Reports a JavaScript access to DOM nodes as text using the 'innerHTML' property. Most usages of 'innerHTML' are performed better with explicit DOM calls, such as 'getElementByID()' and 'createElement()'. Additionally, 'innerHTML' will not work with XML DOMs, including DOMs for XHTML if viewed as XML. This can lead to difficulties in diagnosing bugs.", - "markdown": "Reports a JavaScript access to DOM nodes as text using the `innerHTML` property. Most usages of `innerHTML` are performed better with explicit DOM calls, such as `getElementByID()` and `createElement()`. Additionally, `innerHTML` will not work with XML DOMs, including DOMs for XHTML if viewed as XML. This can lead to difficulties in diagnosing bugs." + "text": "Reports a redundant 'import' statement. This is usually the case if the imported symbols are not used in the source file. To avoid side-effects, consider using bare import 'import 'packageName'' instead of the regular one.", + "markdown": "Reports a redundant `import` statement. This is usually the case if the imported symbols are not used in the source file. To avoid side-effects, consider using bare import `import 'packageName'` instead of the regular one." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "InnerHTMLJS", + "suppressToolId": "ES6UnusedImports", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -28905,8 +28951,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/DOM issues", - "index": 72, + "id": "JavaScript and TypeScript/Imports and dependencies", + "index": 80, "toolComponent": { "name": "QDPHP" } @@ -28939,7 +28985,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 51, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -28972,7 +29018,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 63, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -29005,7 +29051,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -29038,7 +29084,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -29071,7 +29117,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 45, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -29137,7 +29183,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -29203,7 +29249,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -29215,19 +29261,19 @@ ] }, { - "id": "NonBlockStatementBodyJS", + "id": "JSValidateJSDoc", "shortDescription": { - "text": "Statement body without braces" + "text": "Syntax errors and unresolved references in JSDoc" }, "fullDescription": { - "text": "Reports a 'if', 'while', 'for', or 'with' statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance.", - "markdown": "Reports a `if`, `while`, `for`, or `with` statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance." + "text": "Reports a syntax discrepancy in a documentation comment.", + "markdown": "Reports a syntax discrepancy in a documentation comment." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "NonBlockStatementBodyJS", + "suppressToolId": "JSValidateJSDoc", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -29235,8 +29281,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Code style issues", - "index": 62, + "id": "JavaScript and TypeScript/General", + "index": 32, "toolComponent": { "name": "QDPHP" } @@ -29248,19 +29294,19 @@ ] }, { - "id": "JSValidateJSDoc", + "id": "NonBlockStatementBodyJS", "shortDescription": { - "text": "Syntax errors and unresolved references in JSDoc" + "text": "Statement body without braces" }, "fullDescription": { - "text": "Reports a syntax discrepancy in a documentation comment.", - "markdown": "Reports a syntax discrepancy in a documentation comment." + "text": "Reports a 'if', 'while', 'for', or 'with' statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance.", + "markdown": "Reports a `if`, `while`, `for`, or `with` statements whose body is not a block statement. Using code block in statement bodies is usually safer for downstream maintenance." }, "defaultConfiguration": { "enabled": false, "level": "warning", "parameters": { - "suppressToolId": "JSValidateJSDoc", + "suppressToolId": "NonBlockStatementBodyJS", "ideaSeverity": "WARNING", "qodanaSeverity": "High" } @@ -29268,8 +29314,8 @@ "relationships": [ { "target": { - "id": "JavaScript and TypeScript/General", - "index": 32, + "id": "JavaScript and TypeScript/Code style issues", + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -29302,7 +29348,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 51, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -29368,7 +29414,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -29401,7 +29447,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 51, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -29434,7 +29480,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -29467,7 +29513,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -29500,7 +29546,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 51, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -29533,7 +29579,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 90, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -29566,7 +29612,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 62, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -29599,7 +29645,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 51, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -29632,7 +29678,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -29665,7 +29711,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -29731,7 +29777,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 63, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -29764,7 +29810,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -29797,7 +29843,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -29830,7 +29876,7 @@ { "target": { "id": "JavaScript and TypeScript/Node.js", - "index": 100, + "index": 105, "toolComponent": { "name": "QDPHP" } @@ -29896,7 +29942,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -29929,7 +29975,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -29995,7 +30041,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 51, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -30028,7 +30074,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -30061,7 +30107,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -30094,7 +30140,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -30127,7 +30173,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -30160,7 +30206,7 @@ { "target": { "id": "JavaScript and TypeScript/Imports and dependencies", - "index": 77, + "index": 80, "toolComponent": { "name": "QDPHP" } @@ -30193,7 +30239,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -30226,7 +30272,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -30292,7 +30338,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 90, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -30325,7 +30371,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 51, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -30337,28 +30383,28 @@ ] }, { - "id": "UnusedCatchParameterJS", + "id": "NpmUsedModulesInstalled", "shortDescription": { - "text": "Unused 'catch' parameter" + "text": "Missing module dependency" }, "fullDescription": { - "text": "Reports a 'catch' parameter that is not used in the corresponding block. The 'catch' parameters named 'ignore' or 'ignored' are ignored. Use the checkbox below to disable this inspection for 'catch' blocks with comments.", - "markdown": "Reports a `catch` parameter that is not used in the corresponding block. The `catch` parameters named `ignore` or `ignored` are ignored.\n\n\nUse the checkbox below to disable this inspection for `catch`\nblocks with comments." + "text": "Reports a module from a 'require()' call or an 'import' statement that is not installed or is not listed in package.json dependencies. Suggests installing the module and/or including it into package.json. For 'require()' calls, works only in the files from the scope of Node.js Core JavaScript library.", + "markdown": "Reports a module from a `require()` call or an `import` statement that is not installed or is not listed in package.json dependencies.\n\nSuggests installing the module and/or including it into package.json.\n\nFor `require()` calls, works only in the files from the scope of *Node.js Core* JavaScript library." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "suppressToolId": "UnusedCatchParameterJS", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "NpmUsedModulesInstalled", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Try statement issues", - "index": 45, + "id": "JavaScript and TypeScript/Imports and dependencies", + "index": 80, "toolComponent": { "name": "QDPHP" } @@ -30370,28 +30416,28 @@ ] }, { - "id": "NpmUsedModulesInstalled", + "id": "UnusedCatchParameterJS", "shortDescription": { - "text": "Missing module dependency" + "text": "Unused 'catch' parameter" }, "fullDescription": { - "text": "Reports a module from a 'require()' call or an 'import' statement that is not installed or is not listed in package.json dependencies. Suggests installing the module and/or including it into package.json. For 'require()' calls, works only in the files from the scope of Node.js Core JavaScript library.", - "markdown": "Reports a module from a `require()` call or an `import` statement that is not installed or is not listed in package.json dependencies.\n\nSuggests installing the module and/or including it into package.json.\n\nFor `require()` calls, works only in the files from the scope of *Node.js Core* JavaScript library." + "text": "Reports a 'catch' parameter that is not used in the corresponding block. The 'catch' parameters named 'ignore' or 'ignored' are ignored. Use the checkbox below to disable this inspection for 'catch' blocks with comments.", + "markdown": "Reports a `catch` parameter that is not used in the corresponding block. The `catch` parameters named `ignore` or `ignored` are ignored.\n\n\nUse the checkbox below to disable this inspection for `catch`\nblocks with comments." }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "suppressToolId": "NpmUsedModulesInstalled", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "UnusedCatchParameterJS", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Imports and dependencies", - "index": 77, + "id": "JavaScript and TypeScript/Try statement issues", + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -30424,7 +30470,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 51, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -30457,7 +30503,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 38, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -30490,7 +30536,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -30523,7 +30569,7 @@ { "target": { "id": "JavaScript and TypeScript/Naming conventions", - "index": 83, + "index": 86, "toolComponent": { "name": "QDPHP" } @@ -30556,7 +30602,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -30589,7 +30635,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -30622,7 +30668,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially undesirable code constructs", - "index": 51, + "index": 53, "toolComponent": { "name": "QDPHP" } @@ -30655,7 +30701,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -30688,7 +30734,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -30721,7 +30767,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 45, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -30754,7 +30800,7 @@ { "target": { "id": "JavaScript and TypeScript/Code quality tools", - "index": 85, + "index": 88, "toolComponent": { "name": "QDPHP" } @@ -30787,7 +30833,7 @@ { "target": { "id": "JavaScript and TypeScript/Code quality tools", - "index": 85, + "index": 88, "toolComponent": { "name": "QDPHP" } @@ -30820,7 +30866,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -30853,7 +30899,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 45, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -30886,7 +30932,7 @@ { "target": { "id": "JavaScript and TypeScript/Try statement issues", - "index": 45, + "index": 46, "toolComponent": { "name": "QDPHP" } @@ -30919,7 +30965,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 90, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -30952,7 +30998,7 @@ { "target": { "id": "JavaScript and TypeScript/Imports and dependencies", - "index": 77, + "index": 80, "toolComponent": { "name": "QDPHP" } @@ -30985,7 +31031,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -31051,7 +31097,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -31084,40 +31130,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 62, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "Stylelint", - "shortDescription": { - "text": "Stylelint" - }, - "fullDescription": { - "text": "Reports a discrepancy detected by the Stylelint linter. The highlighting is based on the rule severity specified in the Stylelint configuration file for each individual rule.", - "markdown": "Reports a discrepancy detected by the [Stylelint](http://stylelint.io) linter. \n\nThe highlighting is based on the rule severity specified in the [Stylelint configuration file](https://stylelint.io/user-guide/configure) for each individual rule." - }, - "defaultConfiguration": { - "enabled": false, - "level": "error", - "parameters": { - "suppressToolId": "Stylelint", - "ideaSeverity": "ERROR", - "qodanaSeverity": "Critical" - } - }, - "relationships": [ - { - "target": { - "id": "CSS/Code quality tools", - "index": 105, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -31150,40 +31163,7 @@ { "target": { "id": "JavaScript and TypeScript/Naming conventions", - "index": 83, - "toolComponent": { - "name": "QDPHP" - } - }, - "kinds": [ - "superset" - ] - } - ] - }, - { - "id": "TypeScriptValidateJSTypes", - "shortDescription": { - "text": "Type mismatch in 'any' type" - }, - "fullDescription": { - "text": "Reports a function call with a parameter, return value, or assigned expression or incorrect type, if the context symbol can be implicitly resolved to the 'any' type. declare var test: any;\ntest.hasOwnProperty(true); //reports 'true'", - "markdown": "Reports a function call with a parameter, return value, or assigned expression or incorrect type, if the context symbol can be implicitly resolved to the `any` type.\n\n```\ndeclare var test: any;\ntest.hasOwnProperty(true); //reports 'true'\n```" - }, - "defaultConfiguration": { - "enabled": false, - "level": "note", - "parameters": { - "suppressToolId": "TypeScriptValidateJSTypes", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" - } - }, - "relationships": [ - { - "target": { - "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 86, "toolComponent": { "name": "QDPHP" } @@ -31216,7 +31196,7 @@ { "target": { "id": "JavaScript and TypeScript/DOM issues", - "index": 72, + "index": 74, "toolComponent": { "name": "QDPHP" } @@ -31249,7 +31229,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -31282,7 +31262,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -31315,7 +31295,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -31348,7 +31328,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -31393,28 +31373,28 @@ ] }, { - "id": "JSUnfilteredForInLoop", + "id": "JSIncompatibleTypesComparison", "shortDescription": { - "text": "Unfiltered for..in loop" + "text": "Comparison of expressions having incompatible types" }, "fullDescription": { - "text": "Reports unfiltered 'for-in' loops. The use of this construct results in processing not only own properties of an object but properties from its prototype as well. It may be unexpected in some specific cases, for example, in utility methods that copy or modify all properties or when 'Object''s prototype may be incorrectly modified. For example, the following code will print 42 and myMethod: 'Object.prototype.myMethod = function myMethod() {};\nlet a = { foo: 42 };\nfor (let i in a) {\n console.log(a[i]);\n}' Suggests replacing the whole loop with a 'Object.keys()' method or adding a 'hasOwnProperty()' check. After applying the quick-fix the code looks as follows: 'for (let i in a) {\n if (a.hasOwnProperty(i)) {\n console.log(a[i]);\n }\n}'", - "markdown": "Reports unfiltered `for-in` loops. \n\nThe use of this construct results in processing not only own properties of an object but properties from its prototype as well. It may be unexpected in some specific cases, for example, in utility methods that copy or modify all properties or when `Object`'s prototype may be incorrectly modified. For example, the following code will print **42** and **myMethod** : \n\n\n Object.prototype.myMethod = function myMethod() {};\n let a = { foo: 42 };\n for (let i in a) {\n console.log(a[i]);\n }\n\nSuggests replacing the whole loop with a `Object.keys()` method or adding a `hasOwnProperty()` check. After applying the quick-fix the code looks as follows:\n\n\n for (let i in a) {\n if (a.hasOwnProperty(i)) {\n console.log(a[i]);\n }\n }\n" + "text": "Reports a comparison with operands of incompatible types or an operand with a type without possible common values.", + "markdown": "Reports a comparison with operands of incompatible types or an operand with a type without possible common values." }, "defaultConfiguration": { "enabled": false, - "level": "warning", + "level": "note", "parameters": { - "suppressToolId": "JSUnfilteredForInLoop", - "ideaSeverity": "WARNING", - "qodanaSeverity": "High" + "suppressToolId": "JSIncompatibleTypesComparison", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/General", - "index": 32, + "id": "JavaScript and TypeScript/Probable bugs", + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -31426,28 +31406,28 @@ ] }, { - "id": "JSIncompatibleTypesComparison", + "id": "JSUnfilteredForInLoop", "shortDescription": { - "text": "Comparison of expressions having incompatible types" + "text": "Unfiltered for..in loop" }, "fullDescription": { - "text": "Reports a comparison with operands of incompatible types or an operand with a type without possible common values.", - "markdown": "Reports a comparison with operands of incompatible types or an operand with a type without possible common values." + "text": "Reports unfiltered 'for-in' loops. The use of this construct results in processing not only own properties of an object but properties from its prototype as well. It may be unexpected in some specific cases, for example, in utility methods that copy or modify all properties or when 'Object''s prototype may be incorrectly modified. For example, the following code will print 42 and myMethod: 'Object.prototype.myMethod = function myMethod() {};\nlet a = { foo: 42 };\nfor (let i in a) {\n console.log(a[i]);\n}' Suggests replacing the whole loop with a 'Object.keys()' method or adding a 'hasOwnProperty()' check. After applying the quick-fix the code looks as follows: 'for (let i in a) {\n if (a.hasOwnProperty(i)) {\n console.log(a[i]);\n }\n}'", + "markdown": "Reports unfiltered `for-in` loops. \n\nThe use of this construct results in processing not only own properties of an object but properties from its prototype as well. It may be unexpected in some specific cases, for example, in utility methods that copy or modify all properties or when `Object`'s prototype may be incorrectly modified. For example, the following code will print **42** and **myMethod** : \n\n\n Object.prototype.myMethod = function myMethod() {};\n let a = { foo: 42 };\n for (let i in a) {\n console.log(a[i]);\n }\n\nSuggests replacing the whole loop with a `Object.keys()` method or adding a `hasOwnProperty()` check. After applying the quick-fix the code looks as follows:\n\n\n for (let i in a) {\n if (a.hasOwnProperty(i)) {\n console.log(a[i]);\n }\n }\n" }, "defaultConfiguration": { "enabled": false, - "level": "note", + "level": "warning", "parameters": { - "suppressToolId": "JSIncompatibleTypesComparison", - "ideaSeverity": "WEAK WARNING", - "qodanaSeverity": "Moderate" + "suppressToolId": "JSUnfilteredForInLoop", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" } }, "relationships": [ { "target": { - "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "id": "JavaScript and TypeScript/General", + "index": 32, "toolComponent": { "name": "QDPHP" } @@ -31480,7 +31460,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -31513,7 +31493,7 @@ { "target": { "id": "JavaScript and TypeScript/Async code and promises", - "index": 73, + "index": 76, "toolComponent": { "name": "QDPHP" } @@ -31546,7 +31526,7 @@ { "target": { "id": "JavaScript and TypeScript/ES2015 migration aids", - "index": 33, + "index": 34, "toolComponent": { "name": "QDPHP" } @@ -31579,7 +31559,7 @@ { "target": { "id": "JavaScript and TypeScript/Naming conventions", - "index": 83, + "index": 86, "toolComponent": { "name": "QDPHP" } @@ -31612,7 +31592,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 62, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -31645,7 +31625,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 90, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -31678,7 +31658,7 @@ { "target": { "id": "JavaScript and TypeScript/Validity issues", - "index": 38, + "index": 39, "toolComponent": { "name": "QDPHP" } @@ -31744,7 +31724,7 @@ { "target": { "id": "JavaScript and TypeScript/Naming conventions", - "index": 83, + "index": 86, "toolComponent": { "name": "QDPHP" } @@ -31777,7 +31757,7 @@ { "target": { "id": "JavaScript and TypeScript/Imports and dependencies", - "index": 77, + "index": 80, "toolComponent": { "name": "QDPHP" } @@ -31810,7 +31790,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -31909,7 +31889,7 @@ { "target": { "id": "JavaScript and TypeScript/Function metrics", - "index": 90, + "index": 93, "toolComponent": { "name": "QDPHP" } @@ -31942,7 +31922,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -31975,7 +31955,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 62, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -32008,7 +31988,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 62, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -32041,7 +32021,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -32107,7 +32087,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 62, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -32140,7 +32120,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 63, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -32173,7 +32153,7 @@ { "target": { "id": "JavaScript and TypeScript/Code style issues", - "index": 62, + "index": 65, "toolComponent": { "name": "QDPHP" } @@ -32239,7 +32219,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -32305,7 +32285,7 @@ { "target": { "id": "JavaScript and TypeScript/Async code and promises", - "index": 73, + "index": 76, "toolComponent": { "name": "QDPHP" } @@ -32338,7 +32318,7 @@ { "target": { "id": "JavaScript and TypeScript/Switch statement issues", - "index": 70, + "index": 73, "toolComponent": { "name": "QDPHP" } @@ -32371,7 +32351,7 @@ { "target": { "id": "JavaScript and TypeScript/Assignment issues", - "index": 63, + "index": 66, "toolComponent": { "name": "QDPHP" } @@ -32404,7 +32384,7 @@ { "target": { "id": "JavaScript and TypeScript/Switch statement issues", - "index": 70, + "index": 73, "toolComponent": { "name": "QDPHP" } @@ -32437,7 +32417,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -32470,7 +32450,7 @@ { "target": { "id": "JavaScript and TypeScript/TypeScript", - "index": 67, + "index": 70, "toolComponent": { "name": "QDPHP" } @@ -32503,7 +32483,7 @@ { "target": { "id": "JavaScript and TypeScript/Switch statement issues", - "index": 70, + "index": 73, "toolComponent": { "name": "QDPHP" } @@ -32536,7 +32516,7 @@ { "target": { "id": "JavaScript and TypeScript/Switch statement issues", - "index": 70, + "index": 73, "toolComponent": { "name": "QDPHP" } @@ -32569,7 +32549,7 @@ { "target": { "id": "JavaScript and TypeScript/Switch statement issues", - "index": 70, + "index": 73, "toolComponent": { "name": "QDPHP" } @@ -32635,7 +32615,7 @@ { "target": { "id": "JavaScript and TypeScript/Control flow issues", - "index": 49, + "index": 52, "toolComponent": { "name": "QDPHP" } @@ -32668,7 +32648,7 @@ { "target": { "id": "JavaScript and TypeScript/Probable bugs", - "index": 56, + "index": 58, "toolComponent": { "name": "QDPHP" } @@ -32701,7 +32681,7 @@ { "target": { "id": "JavaScript and TypeScript/Potentially confusing code constructs", - "index": 40, + "index": 41, "toolComponent": { "name": "QDPHP" } @@ -32734,6 +32714,249 @@ { "target": { "id": "JavaScript and TypeScript/Unused symbols", + "index": 21, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "gherkin", + "version": "241.16512", + "rules": [ + { + "id": "GherkinScenarioToScenarioOutline", + "shortDescription": { + "text": "Scenario with Examples section" + }, + "fullDescription": { + "text": "Reports Gherkin scenarios that contain an 'Examples' section. Use the quick-fix to convert 'Scenario' to 'Scenario Outline'.", + "markdown": "Reports Gherkin scenarios that contain an `Examples` section.\n\nUse the quick-fix to convert `Scenario` to `Scenario Outline`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "GherkinScenarioToScenarioOutline", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 22, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CucumberTableInspection", + "shortDescription": { + "text": "Unused or missing columns in Cucumber tables" + }, + "fullDescription": { + "text": "Reports tables in 'Examples' sections in Cucumber .feature files with unused or missing columns.", + "markdown": "Reports tables in `Examples` sections in Cucumber .feature files with unused or missing columns." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "CucumberTableInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 22, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GherkinBrokenTableInspection", + "shortDescription": { + "text": "Gherkin table is broken" + }, + "fullDescription": { + "text": "Reports a table if there is at least one row with the number of cells different from the number of cells in the table header.", + "markdown": "Reports a table if there is at least one row with the number of cells different from the number of cells in the table header." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "GherkinBrokenTableInspection", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 22, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "GherkinMisplacedBackground", + "shortDescription": { + "text": "Misplaced background section" + }, + "fullDescription": { + "text": "Reports 'Background' sections that are located incorrectly. The 'Background' section must be located before the 'Scenario' section.", + "markdown": "Reports `Background` sections that are located incorrectly. The `Background` section must be located before the `Scenario` section." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "GherkinMisplacedBackground", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 22, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CucumberMissedExamples", + "shortDescription": { + "text": "Missing examples section" + }, + "fullDescription": { + "text": "Reports scenario outlines in Cucumber .feature files that do not have the 'Examples' section. Use the quick-fix to automatically create the 'Examples' section with a pre-filled table header.", + "markdown": "Reports scenario outlines in Cucumber .feature files that do not have the `Examples` section.\n\nUse the quick-fix to automatically create the `Examples` section with a pre-filled table header." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "CucumberMissedExamples", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 22, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CucumberUndefinedStep", + "shortDescription": { + "text": "Undefined step" + }, + "fullDescription": { + "text": "Reports steps in Cucumber (or some other Gherkin) .feature files that do not have matching step definitions. Use the quick-fix to automatically create a new step definition.", + "markdown": "Reports steps in Cucumber (or some other Gherkin) .feature files that do not have matching step definitions.\n\nUse the quick-fix to automatically create a new step definition." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "CucumberUndefinedStep", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", + "index": 22, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CucumberExamplesColon", + "shortDescription": { + "text": "Missing ':' after examples keyword" + }, + "fullDescription": { + "text": "Reports 'Examples' sections in Cucumber .feature files if they do not have ':' after the 'Examples' keyword.", + "markdown": "Reports `Examples` sections in Cucumber .feature files if they do not have ':' after the `Examples` keyword." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "CucumberExamplesColon", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "Cucumber", "index": 22, "toolComponent": { "name": "QDPHP" @@ -32755,7 +32978,7 @@ }, { "name": "org.editorconfig.editorconfigjetbrains", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "EditorConfigRootDeclarationUniqueness", @@ -33724,7 +33947,7 @@ }, { "name": "org.intellij.plugins.postcss", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "PostCssUnresolvedModuleValueReference", @@ -33901,7 +34124,7 @@ }, { "name": "HtmlTools", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "HtmlRequiredAltAttribute", @@ -33925,7 +34148,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 36, + "index": 37, "toolComponent": { "name": "QDPHP" } @@ -34024,7 +34247,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 36, + "index": 37, "toolComponent": { "name": "QDPHP" } @@ -34090,7 +34313,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 36, + "index": 37, "toolComponent": { "name": "QDPHP" } @@ -34123,7 +34346,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 36, + "index": 37, "toolComponent": { "name": "QDPHP" } @@ -34156,7 +34379,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 36, + "index": 37, "toolComponent": { "name": "QDPHP" } @@ -34189,7 +34412,7 @@ { "target": { "id": "HTML/Accessibility", - "index": 36, + "index": 37, "toolComponent": { "name": "QDPHP" } @@ -34276,7 +34499,7 @@ }, { "name": "com.intellij.css", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "CssInvalidHtmlTagReference", @@ -34300,7 +34523,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34333,7 +34556,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34366,7 +34589,7 @@ { "target": { "id": "CSS/Code style issues", - "index": 52, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -34399,7 +34622,7 @@ { "target": { "id": "CSS/Probable bugs", - "index": 68, + "index": 71, "toolComponent": { "name": "QDPHP" } @@ -34432,7 +34655,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34465,7 +34688,7 @@ { "target": { "id": "CSS", - "index": 41, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -34498,7 +34721,7 @@ { "target": { "id": "CSS", - "index": 41, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -34531,7 +34754,7 @@ { "target": { "id": "CSS", - "index": 41, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -34564,7 +34787,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34597,7 +34820,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34630,7 +34853,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34663,7 +34886,7 @@ { "target": { "id": "CSS/Probable bugs", - "index": 68, + "index": 71, "toolComponent": { "name": "QDPHP" } @@ -34696,7 +34919,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34729,7 +34952,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34762,7 +34985,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34795,7 +35018,7 @@ { "target": { "id": "CSS/Code style issues", - "index": 52, + "index": 54, "toolComponent": { "name": "QDPHP" } @@ -34828,7 +35051,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34861,7 +35084,7 @@ { "target": { "id": "CSS", - "index": 41, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -34894,7 +35117,7 @@ { "target": { "id": "CSS", - "index": 41, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -34927,7 +35150,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34960,7 +35183,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -34993,7 +35216,7 @@ { "target": { "id": "CSS", - "index": 41, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -35026,7 +35249,7 @@ { "target": { "id": "CSS/Probable bugs", - "index": 68, + "index": 71, "toolComponent": { "name": "QDPHP" } @@ -35059,7 +35282,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -35092,7 +35315,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -35125,7 +35348,7 @@ { "target": { "id": "CSS", - "index": 41, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -35158,7 +35381,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -35191,7 +35414,7 @@ { "target": { "id": "CSS", - "index": 41, + "index": 42, "toolComponent": { "name": "QDPHP" } @@ -35224,7 +35447,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -35257,7 +35480,7 @@ { "target": { "id": "CSS/Invalid elements", - "index": 42, + "index": 43, "toolComponent": { "name": "QDPHP" } @@ -35278,7 +35501,7 @@ }, { "name": "org.jetbrains.plugins.yaml", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "YAMLSchemaValidation", @@ -35302,7 +35525,7 @@ { "target": { "id": "YAML", - "index": 46, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -35335,7 +35558,7 @@ { "target": { "id": "YAML", - "index": 46, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -35368,7 +35591,7 @@ { "target": { "id": "YAML", - "index": 46, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -35401,7 +35624,7 @@ { "target": { "id": "YAML", - "index": 46, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -35434,7 +35657,7 @@ { "target": { "id": "YAML", - "index": 46, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -35467,7 +35690,7 @@ { "target": { "id": "YAML", - "index": 46, + "index": 47, "toolComponent": { "name": "QDPHP" } @@ -35500,7 +35723,415 @@ { "target": { "id": "YAML", - "index": 46, + "index": 47, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.jetbrains.restClient", + "version": "241.16512", + "rules": [ + { + "id": "HttpRequestWhitespaceInsideRequestTargetPath", + "shortDescription": { + "text": "Whitespace in URL in request" + }, + "fullDescription": { + "text": "Highlights spaces inside URL path segments. HTTP Client will ignore them. For better composing use Split Lines action.", + "markdown": "Highlights spaces inside URL path segments. HTTP Client will ignore them. For better composing use Split Lines action." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "HttpRequestWhitespaceInsideRequestTargetPath", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "HTTP Client", + "index": 49, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HttpClientUnresolvedAuthId", + "shortDescription": { + "text": "Unresolved Auth identifier" + }, + "fullDescription": { + "text": "Highlights references to non-existent Auth configurations. Suggests creating a new one in the current environment.", + "markdown": "Highlights references to non-existent Auth configurations. Suggests creating a new one in the current environment." + }, + "defaultConfiguration": { + "enabled": true, + "level": "error", + "parameters": { + "suppressToolId": "HttpClientUnresolvedAuthId", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "HTTP Client", + "index": 49, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HttpRequestEnvironmentAuthConfigurationValidationInspection", + "shortDescription": { + "text": "Auth configuration validation" + }, + "fullDescription": { + "text": "Reports Auth configuration the following problems in HTTP Client environment files: Missing properties in Auth configuration Auth/Security configuration placed in private environment file", + "markdown": "Reports Auth configuration the following problems in HTTP Client environment files:\n\n* Missing properties in Auth configuration\n* Auth/Security configuration placed in private environment file" + }, + "defaultConfiguration": { + "enabled": true, + "level": "warning", + "parameters": { + "suppressToolId": "HttpRequestEnvironmentAuthConfigurationValidationInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTTP Client", + "index": 49, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HttpClientUnresolvedVariable", + "shortDescription": { + "text": "Unresolved environment variable" + }, + "fullDescription": { + "text": "Reports variables undeclared in the current environment HTTP Client. Executing requests with undeclared variables probably fail. Consider adding a variable to the environment or selecting an environment with this variable. Inspection doesn't report variables in request bodies, because it can be a valid syntax of the body. Some variables may be not reported as unresolved, because they are declared in response or pre-request handler scripts via 'client.global.set' or 'request.variables.set' functions call.", + "markdown": "Reports variables undeclared in the current environment HTTP Client.\n\n\nExecuting requests with undeclared variables probably fail.\nConsider adding a variable to the environment or selecting an environment with this variable.\n\nInspection doesn't report variables in request bodies, because it can be a valid syntax of the body.\n\n\nSome variables may be not reported as unresolved, because they are declared in response or pre-request handler scripts via\n`client.global.set` or `request.variables.set` functions call." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HttpClientUnresolvedVariable", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTTP Client", + "index": 49, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HttpUrlsUsage", + "shortDescription": { + "text": "Link with unencrypted protocol" + }, + "fullDescription": { + "text": "Reports the links that use unencrypted protocols (such as HTTP), which can expose your data to man-in-the-middle attacks. These attacks are dangerous in general and may be especially harmful for artifact repositories. Use protocols with encryption, such as HTTPS, instead. See HTTPS: Difference from HTTP (wikipedia.org).", + "markdown": "Reports the links that use unencrypted protocols (such as HTTP), which can expose your data to man-in-the-middle attacks. These attacks\nare dangerous in general and may be especially harmful for artifact repositories. Use protocols with encryption, such as HTTPS,\ninstead.\n\nSee [HTTPS: Difference from HTTP (wikipedia.org)](https://en.wikipedia.org/wiki/HTTPS#Difference_from_HTTP)." + }, + "defaultConfiguration": { + "enabled": false, + "level": "note", + "parameters": { + "suppressToolId": "HttpUrlsUsage", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "Security", + "index": 94, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HttpRequestRequestSeparatorJsonBodyInspection", + "shortDescription": { + "text": "Missing request separator in JSON body" + }, + "fullDescription": { + "text": "Reports possible requests in injected JSON body where request separator '###' is missing. The quick fix suggests adding the separator '###' before the request.", + "markdown": "Reports possible requests in injected JSON body where request separator `###` is missing. The quick fix suggests adding the separator `###` before the request." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "HttpRequestRequestSeparatorJsonBodyInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "HTTP Client", + "index": 49, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HttpRequestContentLengthIsIgnored", + "shortDescription": { + "text": "Redundant 'Content-Length'" + }, + "fullDescription": { + "text": "Reports an explicitly set 'Content-Length' header. The header is redundant because HTTP Client uses the actual request body length.", + "markdown": "Reports an explicitly set `Content-Length` header. The header is redundant because HTTP Client uses the actual request body length." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HttpRequestContentLengthIsIgnored", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTTP Client", + "index": 49, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HttpRequestRequestSeparatorXmlBodyInspection", + "shortDescription": { + "text": "Missing request separator in HTML/XML body" + }, + "fullDescription": { + "text": "Reports possible requests in injected XML/HTML body where request separator '###' is missing. The quick fix suggests adding the separator '###' before the request.", + "markdown": "Reports possible requests in injected XML/HTML body where request separator `###` is missing. The quick fix suggests adding the separator `###` before the request." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "HttpRequestRequestSeparatorXmlBodyInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "HTTP Client", + "index": 49, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "IncorrectHttpHeaderInspection", + "shortDescription": { + "text": "Incorrect HTTP header" + }, + "fullDescription": { + "text": "Reports unknown HTTP headers that do not match any publicly known headers. The quick fix suggests adding the header to the list of custom headers when the Use custom HTTP headers option is enabled. HTTP headers from the list of custom headers will not trigger the inspection.", + "markdown": "Reports unknown HTTP headers that do not match any [publicly\nknown headers](https://www.iana.org/assignments/message-headers/message-headers.xml). The quick fix suggests adding the header to the list of custom headers when the **Use custom HTTP headers** option\nis enabled. HTTP headers from the list of custom headers will not trigger the inspection." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "IncorrectHttpHeaderInspection", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTTP Client", + "index": 49, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HttpClientInappropriateProtocolUsageInspection", + "shortDescription": { + "text": "Inappropriate HTTP Protocol usage" + }, + "fullDescription": { + "text": "Reports inappropriate usage of HTTP protocol keyword, e.g. 'HTTP/2', with non-HTTP method requests. Such a usage will be ignored.", + "markdown": "Reports inappropriate usage of HTTP protocol keyword, e.g. `HTTP/2`, with non-HTTP method requests. Such a usage will be ignored." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "HttpClientInappropriateProtocolUsageInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "HTTP Client", + "index": 49, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HttpRequestPlaceholder", + "shortDescription": { + "text": "'$placeholder' in HTTP Request" + }, + "fullDescription": { + "text": "Reports a '$placeholder' inside a request. A '$placeholder' to be replaced by the user is created automatically when a tool cannot recognize a part of a request. For example, a request mapping '/aaaa/*/bbb' will be generated as 'GET localhost/aaaa/{{$placeholder}}/bbb'.", + "markdown": "Reports a `$placeholder` inside a request.\n\nA `$placeholder` to be replaced by the user is created automatically when a tool cannot recognize a part of a request. For example, a request mapping `/aaaa/*/bbb` will be generated as `GET localhost/aaaa/{{$placeholder}}/bbb`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HttpRequestPlaceholder", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "HTTP Client", + "index": 49, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HttpRequestRequestSeparatorYamlBodyInspection", + "shortDescription": { + "text": "Missing request separator in YAML body" + }, + "fullDescription": { + "text": "Reports possible requests in injected YAML body where request separator '###' is missing. The quick fix suggests adding the separator '###' before the request.", + "markdown": "Reports possible requests in injected YAML body where request separator `###` is missing. The quick fix suggests adding the separator `###` before the request." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "HttpRequestRequestSeparatorYamlBodyInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "HTTP Client", + "index": 49, "toolComponent": { "name": "QDPHP" } @@ -35521,7 +36152,7 @@ }, { "name": "org.jetbrains.plugins.less", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "LessUnresolvedVariable", @@ -35545,7 +36176,7 @@ { "target": { "id": "Less", - "index": 55, + "index": 57, "toolComponent": { "name": "QDPHP" } @@ -35578,7 +36209,7 @@ { "target": { "id": "Less", - "index": 55, + "index": 57, "toolComponent": { "name": "QDPHP" } @@ -35611,7 +36242,316 @@ { "target": { "id": "Less", - "index": 55, + "index": 57, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "XPathView", + "version": "241.16512", + "rules": [ + { + "id": "XsltUnusedDeclaration", + "shortDescription": { + "text": "Unused variable or parameter" + }, + "fullDescription": { + "text": "Reports local variables and parameters that are never used.", + "markdown": "Reports local variables and parameters that are never used." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "XsltUnusedDeclaration", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XSLT", + "index": 61, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "RedundantTypeConversion", + "shortDescription": { + "text": "Redundant type conversion" + }, + "fullDescription": { + "text": "Reports unnecessary type conversions. Type conversions are unnecessary when the argument type of a 'string()', 'number()', or 'boolean()' function is already the same as the function's return type or if the expected expression type is 'any'. Suggests removing the unnecessary conversion.", + "markdown": "Reports unnecessary type conversions. Type conversions are unnecessary when the argument type of a `string()`, `number()`, or `boolean()` function is already the same as the function's return type or if the expected expression type is `any`. Suggests removing the unnecessary conversion." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "RedundantTypeConversion", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XPath", + "index": 97, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "IndexZeroUsage", + "shortDescription": { + "text": "XPath predicate with index 0" + }, + "fullDescription": { + "text": "Reports usages of '0' in a predicate index or in a comparison with the function 'position()'. Such usage is almost always a bug because in XPath, the index starts at '1', not at '0'. Example: '//someelement[position() = 0]' or '//something[0]'", + "markdown": "Reports usages of `0` in a predicate index or in a comparison with the function `position()`. Such usage is almost always a bug because in XPath, the index starts at `1`, *not* at `0`.\n\n**Example:**\n\n\n //someelement[position() = 0] or //something[0]\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "IndexZeroUsage", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XPath", + "index": 97, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "CheckNodeTest", + "shortDescription": { + "text": "Unknown element or attribute name" + }, + "fullDescription": { + "text": "Reports names of elements or attributes that are used in an XPath-expression but are missing in the associated XML files and are not defined in the referenced schemas. Such names are often the result of typos and would otherwise probably only be discovered at runtime. Example: '' If the 'h' is bound to the XHTML namespace, the inspection will report this part of the 'match' expression as an unknown element name because the correct name of the element is \"textarea\".", + "markdown": "Reports names of elements or attributes that are used in an XPath-expression but are missing in the associated XML files and are not defined in the referenced schemas. Such names are often the result of typos and would otherwise probably only be discovered at runtime.\n\n**Example:**\n\n\n \n\n\nIf the `h` is bound to the XHTML namespace, the inspection will report this part of the `match` expression as an\nunknown element name because the correct name of the element is \"textarea\"." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "CheckNodeTest", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XPath", + "index": 97, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XsltDeclarations", + "shortDescription": { + "text": "Incorrect declaration" + }, + "fullDescription": { + "text": "Reports duplicate declarations and illegal identifiers in XSLT variables, parameters, and named templates:", + "markdown": "Reports duplicate declarations and illegal identifiers in XSLT variables, parameters, and named templates:" + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XsltDeclarations", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XSLT", + "index": 61, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XsltVariableShadowing", + "shortDescription": { + "text": "Shadowed variable" + }, + "fullDescription": { + "text": "Reports shadowed XSLT variables.", + "markdown": "Reports shadowed XSLT variables." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "XsltVariableShadowing", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XSLT", + "index": 61, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "HardwiredNamespacePrefix", + "shortDescription": { + "text": "Hardcoded namespace prefix" + }, + "fullDescription": { + "text": "Reports comparisons of the 'name()' function with a string that contains a colon (':'). Such usages usually indicate a hardcoded namespace prefix in the comparison. As a result, the code will break when run against XML that uses another prefix for the same namespace. Example: '...'", + "markdown": "Reports comparisons of the `name()` function with a string that contains a colon (`:`). Such usages usually indicate a hardcoded namespace prefix in the comparison. As a result, the code will break when run against XML that uses another prefix for the same namespace.\n\n**Example:**\n\n\n ...\n" + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "HardwiredNamespacePrefix", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XPath", + "index": 97, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "XsltTemplateInvocation", + "shortDescription": { + "text": "Incorrect template invocation" + }, + "fullDescription": { + "text": "Reports missing arguments, passing arguments that are not declared, and passing arguments for parameters more than once in named XSLT template invocations. Parameters declared with a default value are optional and will not be reported as missing.", + "markdown": "Reports missing arguments, passing arguments that are not declared, and passing arguments for parameters more than once in named XSLT template invocations.\n\n\nParameters declared with a default value are optional and will not be reported as missing." + }, + "defaultConfiguration": { + "enabled": false, + "level": "error", + "parameters": { + "suppressToolId": "XsltTemplateInvocation", + "ideaSeverity": "ERROR", + "qodanaSeverity": "Critical" + } + }, + "relationships": [ + { + "target": { + "id": "XSLT", + "index": 61, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + }, + { + "id": "ImplicitTypeConversion", + "shortDescription": { + "text": "Implicit type conversion" + }, + "fullDescription": { + "text": "Reports implicit conversions between the predefined XPath-types 'STRING', 'NUMBER', 'BOOLEAN', and 'NODESET'. Helps to write XSLT scripts that are more expressive about types and prevents subtle bugs: Example: '' is not the same as '' The first test checks whether the element \"foo\" exists ('count(foo) > 0)'; the latter one however is only true if the element actually contains any text ('string-length(foo) > 0'). Suggests making the type conversion more explicit. Use the following options to configure the inspection: Enable or disable implicit conversions between certain types Always report explicit conversions that do not result in the actually expected type, for example, '' Ignore conversion from 'NODESET' to 'BOOLEAN' by using the 'string()' function as a shortcut for writing 'string-length() > 0'.", + "markdown": "Reports implicit conversions between the predefined XPath-types `STRING`, `NUMBER`, `BOOLEAN`, and `NODESET`. Helps to write XSLT scripts that are more expressive about types and prevents subtle bugs:\n\n**Example:**\n\n\n \n\nis not the same as\n\n\n \n\n\nThe first test checks whether the element \"foo\" exists (`count(foo) > 0)`; the latter one however is only\ntrue if the element actually contains any text (`string-length(foo) > 0`). Suggests making\nthe type conversion more explicit.\n\n\nUse the following options to configure the inspection:\n\n* Enable or disable implicit conversions between certain types\n* Always report explicit conversions that do not result in the actually expected type, for example, ``\n* Ignore conversion from `NODESET` to `BOOLEAN` by using the `string()` function as a shortcut for writing `string-length() > 0`." + }, + "defaultConfiguration": { + "enabled": false, + "level": "warning", + "parameters": { + "suppressToolId": "ImplicitTypeConversion", + "ideaSeverity": "WARNING", + "qodanaSeverity": "High" + } + }, + "relationships": [ + { + "target": { + "id": "XPath", + "index": 97, "toolComponent": { "name": "QDPHP" } @@ -35632,7 +36572,7 @@ }, { "name": "de.espend.idea.php.annotation", - "version": "9.4.0", + "version": "10.0.0", "rules": [ { "id": "DoctrineTypeDeprecatedInspection", @@ -35656,7 +36596,7 @@ { "target": { "id": "PHP/Annotation", - "index": 59, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -35689,7 +36629,7 @@ { "target": { "id": "PHP/Annotation", - "index": 59, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -35722,7 +36662,7 @@ { "target": { "id": "PHP/Annotation", - "index": 59, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -35739,8 +36679,8 @@ "text": "[Annotations] Missing import" }, "fullDescription": { - "text": "Doc block annotation class found, but its missing in use statement You should import the class as use statement Doctrine Annotations", - "markdown": "Doc block annotation class found, but its missing in use statement \nYou should import the class as *use* statement \n[Doctrine Annotations](http://doctrine-common.readthedocs.org/en/latest/reference/annotations.html)" + "text": "Doc block annotation class found, but its missing in use statement You should import the class as use statement", + "markdown": "Doc block annotation class found, but its missing in use statement \nYou should import the class as *use* statement" }, "defaultConfiguration": { "enabled": true, @@ -35755,7 +36695,7 @@ { "target": { "id": "PHP/Annotation", - "index": 59, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -35788,7 +36728,7 @@ { "target": { "id": "PHP/Annotation", - "index": 59, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -35821,7 +36761,7 @@ { "target": { "id": "PHP/Annotation", - "index": 59, + "index": 62, "toolComponent": { "name": "QDPHP" } @@ -35842,7 +36782,7 @@ }, { "name": "com.jetbrains.php.joomla", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "FileHeaderInspection", @@ -35866,7 +36806,7 @@ { "target": { "id": "Joomla!", - "index": 64, + "index": 67, "toolComponent": { "name": "QDPHP" } @@ -35899,7 +36839,7 @@ { "target": { "id": "Joomla!", - "index": 64, + "index": 67, "toolComponent": { "name": "QDPHP" } @@ -35920,7 +36860,7 @@ }, { "name": "com.jetbrains.php.architecture", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "PhpComplexClassInspection", @@ -35944,7 +36884,7 @@ { "target": { "id": "PHP/Refactoring opportunities", - "index": 66, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -35977,7 +36917,7 @@ { "target": { "id": "PHP/Refactoring opportunities", - "index": 66, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -36010,7 +36950,7 @@ { "target": { "id": "PHP/Refactoring opportunities", - "index": 66, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -36043,7 +36983,7 @@ { "target": { "id": "PHP/Refactoring opportunities", - "index": 66, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -36076,7 +37016,7 @@ { "target": { "id": "PHP/Refactoring opportunities", - "index": 66, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -36109,7 +37049,7 @@ { "target": { "id": "PHP/Refactoring opportunities", - "index": 66, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -36142,7 +37082,7 @@ { "target": { "id": "PHP/Refactoring opportunities", - "index": 66, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -36175,7 +37115,7 @@ { "target": { "id": "PHP/Refactoring opportunities", - "index": 66, + "index": 69, "toolComponent": { "name": "QDPHP" } @@ -36196,7 +37136,7 @@ }, { "name": "org.intellij.qodana", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "JsCoverageInspection", @@ -36220,7 +37160,7 @@ { "target": { "id": "Code Coverage", - "index": 74, + "index": 77, "toolComponent": { "name": "QDPHP" } @@ -36253,7 +37193,7 @@ { "target": { "id": "Code Coverage", - "index": 74, + "index": 77, "toolComponent": { "name": "QDPHP" } @@ -36286,7 +37226,7 @@ { "target": { "id": "Qodana", - "index": 109, + "index": 113, "toolComponent": { "name": "QDPHP" } @@ -36307,7 +37247,7 @@ }, { "name": "com.jetbrains.php.behat", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "BehatDocStepCanBeConvertedToAttributeInspection", @@ -36331,7 +37271,7 @@ { "target": { "id": "PHP/Behat", - "index": 76, + "index": 79, "toolComponent": { "name": "QDPHP" } @@ -36352,7 +37292,7 @@ }, { "name": "com.jetbrains.plugins.ini4idea", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "DuplicateSectionInFile", @@ -36376,7 +37316,7 @@ { "target": { "id": "Ini files", - "index": 78, + "index": 81, "toolComponent": { "name": "QDPHP" } @@ -36409,7 +37349,7 @@ { "target": { "id": "Ini files", - "index": 78, + "index": 81, "toolComponent": { "name": "QDPHP" } @@ -36430,7 +37370,7 @@ }, { "name": "com.intellij.php.psalm", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "PsalmAdvanceCallableParamsInspection", @@ -36454,7 +37394,7 @@ { "target": { "id": "PHP/Psalm", - "index": 82, + "index": 85, "toolComponent": { "name": "QDPHP" } @@ -36472,7 +37412,7 @@ }, "fullDescription": { "text": "Runs Psalm to find code problems. The inspection requires Psalm to be properly installed and set up in the IDE under Settings | PHP | Quality Tools | Psalm. To learn more about installing Psalm, see: https://psalm.dev/docs/running_psalm/installation/", - "markdown": "Runs Psalm to find code problems. \n\nThe inspection requires Psalm to be properly installed and set up in the IDE under [Settings \\| PHP \\| Quality Tools \\| Psalm](settings://settings.php.quality.tools?Psalm).\n\nTo learn more about installing Psalm, see:\n" + "markdown": "Runs Psalm to find code problems. \n\nThe inspection requires Psalm to be properly installed and set up in the IDE under [Settings \\| PHP \\| Quality Tools \\| Psalm](settings://settings.php.quality.tools.psalm).\n\nTo learn more about installing Psalm, see:\n" }, "defaultConfiguration": { "enabled": false, @@ -36487,7 +37427,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 89, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -36508,7 +37448,7 @@ }, { "name": "com.intellij.taintAnalysis", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "PhpTaintFunctionInspection", @@ -36532,7 +37472,7 @@ { "target": { "id": "PHP/Taint analysis", - "index": 84, + "index": 87, "toolComponent": { "name": "QDPHP" } @@ -36565,7 +37505,7 @@ { "target": { "id": "PHP/Taint analysis", - "index": 84, + "index": 87, "toolComponent": { "name": "QDPHP" } @@ -36586,7 +37526,7 @@ }, { "name": "com.jetbrains.php.blade", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "BladeUnpairedParenthesesInStringLiteral", @@ -36610,7 +37550,7 @@ { "target": { "id": "Blade files", - "index": 86, + "index": 89, "toolComponent": { "name": "QDPHP" } @@ -36643,7 +37583,7 @@ { "target": { "id": "Blade files", - "index": 86, + "index": 89, "toolComponent": { "name": "QDPHP" } @@ -36664,7 +37604,7 @@ }, { "name": "tanvd.grazi", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "LanguageDetectionInspection", @@ -36688,7 +37628,7 @@ { "target": { "id": "Proofreading", - "index": 75, + "index": 78, "toolComponent": { "name": "QDPHP" } @@ -36721,7 +37661,52 @@ { "target": { "id": "Proofreading", - "index": 75, + "index": 78, + "toolComponent": { + "name": "QDPHP" + } + }, + "kinds": [ + "superset" + ] + } + ] + } + ], + "language": "en-US", + "contents": [ + "localizedData", + "nonLocalizedData" + ], + "isComprehensive": false + }, + { + "name": "com.jetbrains.php.dql", + "version": "241.16512", + "rules": [ + { + "id": "PhpDqlBuilderUnknownModelInspection", + "shortDescription": { + "text": "Cannot infer DQL model class to enable completion" + }, + "fullDescription": { + "text": "Reports '$entityManager->createQueryBuilder()->from($model, $expr)' when PhpStorm cannot resolve '$model' to a class.", + "markdown": "Reports `$entityManager->createQueryBuilder()->from($model, $expr)` when PhpStorm cannot resolve `$model` to a class." + }, + "defaultConfiguration": { + "enabled": true, + "level": "note", + "parameters": { + "suppressToolId": "PhpDqlBuilderUnknownModelInspection", + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate" + } + }, + "relationships": [ + { + "target": { + "id": "PHP/Undefined symbols", + "index": 33, "toolComponent": { "name": "QDPHP" } @@ -36742,7 +37727,7 @@ }, { "name": "org.jetbrains.plugins.vue", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "VueMissingComponentImportInspection", @@ -36766,7 +37751,7 @@ { "target": { "id": "Vue", - "index": 96, + "index": 101, "toolComponent": { "name": "QDPHP" } @@ -36799,7 +37784,7 @@ { "target": { "id": "Vue", - "index": 96, + "index": 101, "toolComponent": { "name": "QDPHP" } @@ -36832,7 +37817,7 @@ { "target": { "id": "Vue", - "index": 96, + "index": 101, "toolComponent": { "name": "QDPHP" } @@ -36865,7 +37850,7 @@ { "target": { "id": "Vue", - "index": 96, + "index": 101, "toolComponent": { "name": "QDPHP" } @@ -36898,7 +37883,7 @@ { "target": { "id": "Vue", - "index": 96, + "index": 101, "toolComponent": { "name": "QDPHP" } @@ -36931,7 +37916,7 @@ { "target": { "id": "Vue", - "index": 96, + "index": 101, "toolComponent": { "name": "QDPHP" } @@ -36952,7 +37937,7 @@ }, { "name": "com.intellij.plugins.dependencyAnalysis", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "CheckThirdPartySoftwareList", @@ -36976,7 +37961,7 @@ { "target": { "id": "Dependency analysis", - "index": 99, + "index": 104, "toolComponent": { "name": "QDPHP" } @@ -37009,7 +37994,7 @@ { "target": { "id": "Dependency analysis", - "index": 99, + "index": 104, "toolComponent": { "name": "QDPHP" } @@ -37042,7 +38027,7 @@ { "target": { "id": "Dependency analysis", - "index": 99, + "index": 104, "toolComponent": { "name": "QDPHP" } @@ -37063,7 +38048,7 @@ }, { "name": "org.intellij.intelliLang", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "InjectedReferences", @@ -37087,7 +38072,7 @@ { "target": { "id": "General", - "index": 35, + "index": 36, "toolComponent": { "name": "QDPHP" } @@ -37108,7 +38093,7 @@ }, { "name": "com.intellij.php.tools.quality.phpstan", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "PhpStanGlobal", @@ -37117,7 +38102,7 @@ }, "fullDescription": { "text": "Runs PHPStan to find code problems. The inspection requires PHPStan to be properly installed and set up in the IDE under Settings | PHP | Quality Tools | PHPStan. To learn more about installing PHPStan, see: https://phpstan.org/user-guide/getting-started", - "markdown": "Runs PHPStan to find code problems. \n\nThe inspection requires PHPStan to be properly installed and set up in the IDE under [Settings \\| PHP \\| Quality Tools \\| PHPStan](settings://settings.php.quality.tools?PHPStan).\n\nTo learn more about installing PHPStan, see:\n" + "markdown": "Runs PHPStan to find code problems. \n\nThe inspection requires PHPStan to be properly installed and set up in the IDE under [Settings \\| PHP \\| Quality Tools \\| PHPStan](settings://settings.php.quality.tools.phpstan).\n\nTo learn more about installing PHPStan, see:\n" }, "defaultConfiguration": { "enabled": false, @@ -37132,7 +38117,7 @@ { "target": { "id": "PHP/Quality tools", - "index": 89, + "index": 92, "toolComponent": { "name": "QDPHP" } @@ -37153,7 +38138,7 @@ }, { "name": "intellij.webpack", - "version": "233.14717", + "version": "241.16512", "rules": [ { "id": "WebpackConfigHighlighting", @@ -37200,23 +38185,32 @@ }, "invocations": [ { - "startTimeUtc": "2024-03-06T14:24:47.108468511Z", + "startTimeUtc": "2024-04-25T14:29:24.085360548Z", "exitCode": 255, - "exitCodeDescription": "Failure condition triggered:\n- Detected 2 problems across all severities, fail threshold: 0", + "exitCodeDescription": "Failure condition triggered:\n- Detected 22 problems across all severities, fail threshold: 0", "executionSuccessful": true } ], "language": "en-US", "versionControlProvenance": [ { - "repositoryUri": "https://github.com/pimcore/studio-api-bundle.git", +<<<<<<< Updated upstream + "repositoryUri": "https://github.com/pimcore/studio-backend-bundle.git", "revisionId": "d44e6fe87239160c64004cbe3387f1b4779cf343", "branch": "0x-First-Prototype", "properties": { - "repoUrl": "https://github.com/pimcore/studio-api-bundle.git", + "repoUrl": "https://github.com/pimcore/studio-backend-bundle.git", "lastAuthorName": "mattamon", +======= + "repositoryUri": "https://github.com/pimcore/studio-api-bundle.git", + "revisionId": "31114daeacb526726b95f9a3a32bcca35958c20f", + "branch": "improve-filter-logic", + "properties": { + "repoUrl": "https://github.com/pimcore/studio-api-bundle.git", + "lastAuthorName": "Herbert Roth", +>>>>>>> Stashed changes "vcsType": "Git", - "lastAuthorEmail": "matthias.schuhmayer@pimcore.com" + "lastAuthorEmail": "126679157+herbertroth@users.noreply.github.com" } } ], @@ -37233,13 +38227,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Service/GenericData/V1/Hydrator/Asset/ArchiveHydrator.php", + "uri": "src/DataIndex/Hydrator/Asset/ArchiveHydrator.php", "uriBaseId": "SRCROOT" }, "region": { "startLine": 36, "startColumn": 13, - "charOffset": 1274, + "charOffset": 1277, "charLength": 743, "snippet": { "text": "$this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37249,7 +38243,7 @@ "contextRegion": { "startLine": 36, "startColumn": 1, - "charOffset": 1262, + "charOffset": 1265, "charLength": 755, "snippet": { "text": " $this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37267,13 +38261,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Service/GenericData/V1/Hydrator/Asset/AudioHydrator.php", + "uri": "src/DataIndex/Hydrator/Asset/AudioHydrator.php", "uriBaseId": "SRCROOT" }, "region": { "startLine": 36, "startColumn": 13, - "charOffset": 1258, + "charOffset": 1261, "charLength": 743, "snippet": { "text": "$this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37283,7 +38277,7 @@ "contextRegion": { "startLine": 36, "startColumn": 1, - "charOffset": 1246, + "charOffset": 1249, "charLength": 755, "snippet": { "text": " $this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37301,13 +38295,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Service/GenericData/V1/Hydrator/Asset/FolderHydrator.php", + "uri": "src/DataIndex/Hydrator/Asset/FolderHydrator.php", "uriBaseId": "SRCROOT" }, "region": { "startLine": 36, "startColumn": 13, - "charOffset": 1266, + "charOffset": 1269, "charLength": 743, "snippet": { "text": "$this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37317,7 +38311,7 @@ "contextRegion": { "startLine": 36, "startColumn": 1, - "charOffset": 1254, + "charOffset": 1257, "charLength": 755, "snippet": { "text": " $this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37335,13 +38329,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Service/GenericData/V1/Hydrator/Asset/TextHydrator.php", + "uri": "src/DataIndex/Hydrator/Asset/TextHydrator.php", "uriBaseId": "SRCROOT" }, "region": { "startLine": 36, "startColumn": 13, - "charOffset": 1250, + "charOffset": 1253, "charLength": 743, "snippet": { "text": "$this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37351,7 +38345,7 @@ "contextRegion": { "startLine": 36, "startColumn": 1, - "charOffset": 1238, + "charOffset": 1241, "charLength": 755, "snippet": { "text": " $this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37369,13 +38363,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Service/GenericData/V1/Hydrator/Asset/UnknownHydrator.php", + "uri": "src/DataIndex/Hydrator/Asset/UnknownHydrator.php", "uriBaseId": "SRCROOT" }, "region": { "startLine": 36, "startColumn": 13, - "charOffset": 1274, + "charOffset": 1277, "charLength": 743, "snippet": { "text": "$this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37385,7 +38379,7 @@ "contextRegion": { "startLine": 36, "startColumn": 1, - "charOffset": 1262, + "charOffset": 1265, "charLength": 755, "snippet": { "text": " $this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37403,13 +38397,13 @@ { "physicalLocation": { "artifactLocation": { - "uri": "src/Service/GenericData/V1/Hydrator/AssetHydrator.php", + "uri": "src/DataIndex/Hydrator/AssetHydrator.php", "uriBaseId": "SRCROOT" }, "region": { "startLine": 36, "startColumn": 13, - "charOffset": 1247, + "charOffset": 1251, "charLength": 743, "snippet": { "text": "$this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37419,7 +38413,7 @@ "contextRegion": { "startLine": 36, "startColumn": 1, - "charOffset": 1235, + "charOffset": 1239, "charLength": 755, "snippet": { "text": " $this->iconService->getIconForAsset($item->getType(), $item->getMimeType()),\n $item->isHasChildren(),\n $item->getType(),\n $item->getKey(),\n $item->getMimeType(),\n $this->metaDataHydrator->hydrate($item->getMetaData()),\n $item->isHasWorkflowWithPermissions(),\n $item->getFullPath(),\n $item->getId(),\n $item->getParentId(),\n $item->getPath(),\n $item->getUserOwner(),\n $item->getUserModification(),\n $item->getLocked(),\n $item->isLocked(),\n $item->getCreationDate(),\n $item->getModificationDate(),\n $this->permissionsHydrator->hydrate($item->getPermissions())" @@ -37436,7 +38430,8 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "dcc32b630c06449e2de443a18a2dd4f6758a9dea5c44c772e6e32a79c54d29d1" + "equalIndicator/v2": "1a48abf43e131b3c", + "equalIndicator/v1": "d332e327ffffb913d03b5c1b123366ccfb39379be3645fdac1a4e16298cddeb5" }, "baselineState": "new", "properties": { @@ -37452,33 +38447,147 @@ "kind": "fail", "level": "note", "message": { - "text": "[EA] High efferent coupling (28).", - "markdown": "\\[EA\\] High efferent coupling (28)." + "text": "[EA] High efferent coupling (30).", + "markdown": "\\[EA\\] High efferent coupling (30)." }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "src/Service/GenericData/V1/Hydrator/AssetHydratorService.php", + "uri": "src/DataObject/Controller/CollectionController.php", "uriBaseId": "SRCROOT" }, "region": { - "startLine": 46, - "startColumn": 22, - "charOffset": 2806, + "startLine": 50, + "startColumn": 13, + "charOffset": 3025, + "charLength": 20, + "snippet": { + "text": "CollectionController" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 48, + "startColumn": 1, + "charOffset": 2958, + "charLength": 151, + "snippet": { + "text": "use Symfony\\Component\\Serializer\\SerializerInterface;\n\nfinal class CollectionController extends AbstractApiController\n{\n use PaginatedResponseTrait;" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "2628b827dadbc43e", + "equalIndicator/v1": "4eff5b6887106f38106f3d5e26c162bd2a02157f1c71659dc533c9ec4a13c41c" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "EfferentObjectCouplingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "[EA] High efferent coupling (29).", + "markdown": "\\[EA\\] High efferent coupling (29)." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Asset/Controller/CollectionController.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 52, + "startColumn": 13, + "charOffset": 2928, "charLength": 20, "snippet": { - "text": "AssetHydratorService" + "text": "CollectionController" }, "sourceLanguage": "PHP" }, "contextRegion": { + "startLine": 50, + "startColumn": 1, + "charOffset": 2899, + "charLength": 113, + "snippet": { + "text": " * @internal\n */\nfinal class CollectionController extends AbstractApiController\n{\n use PaginatedResponseTrait;" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "13bc9cc0d9bd7824", + "equalIndicator/v1": "5ec02bc941be058babf5f731b39a5d02afb1720866aa04d196c6fd4dcc8f2f4e" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "EfferentObjectCouplingInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "[EA] High efferent coupling (21).", + "markdown": "\\[EA\\] High efferent coupling (21)." + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Authorization/Controller/AuthorizationController.php", + "uriBaseId": "SRCROOT" + }, + "region": { "startLine": 44, + "startColumn": 13, + "charOffset": 2041, + "charLength": 23, + "snippet": { + "text": "AuthorizationController" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 42, "startColumn": 1, - "charOffset": 2687, - "charLength": 215, + "charOffset": 2012, + "charLength": 117, "snippet": { - "text": "use Pimcore\\Bundle\\StudioApiBundle\\Service\\GenericData\\V1\\Hydrator\\Asset\\VideoHydratorInterface;\n\nfinal readonly class AssetHydratorService implements AssetHydratorServiceInterface\n{\n public function __construct(" + "text": " * @internal\n */\nfinal class AuthorizationController extends AbstractApiController\n{\n public function __construct(" }, "sourceLanguage": "PHP" } @@ -37492,7 +38601,8 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "10668b157fa72184354a3ce775dcbd0ba6554fe81c40f599cc120eacfbcc931d" + "equalIndicator/v2": "136582196c59be73", + "equalIndicator/v1": "ba200d2cbca7fb363ab73d986033cbecc7fe9522bfc558677c19c17fd84f4c99" }, "baselineState": "new", "properties": { @@ -37504,37 +38614,668 @@ } }, { - "ruleId": "OnlyWritesOnParameterInspection", + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", "kind": "fail", "level": "note", "message": { - "text": "[EA] Parameter/variable is overridden, but is never used or appears outside of the scope.", - "markdown": "\\[EA\\] Parameter/variable is overridden, but is never used or appears outside of the scope." + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" }, "locations": [ { "physicalLocation": { "artifactLocation": { - "uri": "src/ApiPlatform/OpenApiFactoryDecorator.php", + "uri": "src/Asset/Schema/Asset.php", "uriBaseId": "SRCROOT" }, "region": { + "startLine": 52, + "startColumn": 11, + "charOffset": 1762, + "charLength": 75, + "snippet": { + "text": "Property(description: 'Workflow permissions', type: 'bool', example: false)" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 50, + "startColumn": 1, + "charOffset": 1699, + "charLength": 291, + "snippet": { +<<<<<<< Updated upstream + "text": "use Pimcore\\Bundle\\StudioBackendBundle\\Service\\GenericData\\V1\\Hydrator\\Asset\\VideoHydratorInterface;\n\nfinal readonly class AssetHydratorService implements AssetHydratorServiceInterface\n{\n public function __construct(" +======= + "text": " )]\n private readonly array $metaData,\n #[Property(description: 'Workflow permissions', type: 'bool', example: false)]\n private readonly bool $hasWorkflowWithPermissions,\n #[Property(description: 'Full path', type: 'string', example: '/path/to/asset.jpg')]" +>>>>>>> Stashed changes + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "c8e54b4ae449ef08", + "equalIndicator/v1": "08a9dc4e9b115719de1aeaed732b08c3844bfa0d83ec7ce65f3d70a6998a7355" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Response/Element.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 48, + "startColumn": 11, + "charOffset": 1882, + "charLength": 33, + "snippet": { + "text": "Property(ref: Permissions::class)" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 46, + "startColumn": 1, + "charOffset": 1732, + "charLength": 242, + "snippet": { + "text": " #[Property(description: 'Modification date', type: 'integer', example: 327417600)]\n private readonly ?int $modificationDate,\n #[Property(ref: Permissions::class)]\n private readonly Permissions $permissions\n ) {" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "14ab2cf63d196a8d", + "equalIndicator/v1": "1519aa442e4b7420e0c7976d0355262e40ecff315029ceb0f77558914cdc8c7e" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Asset/Schema/Asset.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 39, + "startColumn": 11, + "charOffset": 1142, + "charLength": 63, + "snippet": { + "text": "Property(description: 'Type', type: 'string', example: 'image')" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { "startLine": 37, - "startColumn": 9, - "charOffset": 1116, - "charLength": 36, + "startColumn": 1, + "charOffset": 1009, + "charLength": 318, + "snippet": { + "text": " #[Property(description: 'Has children', type: 'bool', example: false)]\n private readonly bool $hasChildren,\n #[Property(description: 'Type', type: 'string', example: 'image')]\n private readonly string $type,\n #[Property(description: 'Filename', type: 'string', example: 'cool.jpg')]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "669bc6ac0069bd19", + "equalIndicator/v1": "43a80b488985c32dafac3a484c67f89e44977e35238a60da91129ee894458006" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Response/Element.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 46, + "startColumn": 11, + "charOffset": 1742, + "charLength": 79, + "snippet": { + "text": "Property(description: 'Modification date', type: 'integer', example: 327417600)" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 44, + "startColumn": 1, + "charOffset": 1600, + "charLength": 316, + "snippet": { + "text": " #[Property(description: 'Creation date', type: 'integer', example: 221846400)]\n private readonly ?int $creationDate,\n #[Property(description: 'Modification date', type: 'integer', example: 327417600)]\n private readonly ?int $modificationDate,\n #[Property(ref: Permissions::class)]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "7bcbe5e0ca1111b0", + "equalIndicator/v1": "56ec89239bdfba357459724f1bb84609cec99734a3a9fbc3a0a1cce71f74f674" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Request/CollectionParameters.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 33, + "startColumn": 11, + "charOffset": 905, + "charLength": 8, + "snippet": { + "text": "Positive" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 31, + "startColumn": 1, + "charOffset": 844, + "charLength": 114, + "snippet": { + "text": " private int $page = 1,\n #[NotBlank]\n #[Positive]\n private int $pageSize = 10,\n ) {" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "77d6ecc501de5c0c", + "equalIndicator/v1": "64afe4fba632fd3636d6943e45b1124b60c35b33bcbcbb3be68e9ad0e99134a3" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Request/CollectionParameters.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 32, + "startColumn": 11, + "charOffset": 885, + "charLength": 8, + "snippet": { + "text": "NotBlank" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 30, + "startColumn": 1, + "charOffset": 824, + "charLength": 126, + "snippet": { + "text": " #[Positive]\n private int $page = 1,\n #[NotBlank]\n #[Positive]\n private int $pageSize = 10," + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "ccd5d96bc68b7e1a", + "equalIndicator/v1": "70cb41f7fe78e21c7d9dc60728b83fd4fe5e2d7eece4ba89f9a57f4d07018b1c" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Asset/Schema/Asset.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 45, + "startColumn": 11, + "charOffset": 1509, + "charLength": 199, + "snippet": { + "text": "Property(\n description: 'Metadata',\n type: 'array',\n items: new Items(type: 'string', example: 'meta_data_example'),\n example: 'pimcore_icon_pdf'\n )" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 43, + "startColumn": 1, + "charOffset": 1371, + "charLength": 467, + "snippet": { + "text": " #[Property(description: 'Mimetype', type: 'string', example: 'image/jpeg')]\n private readonly ?string $mimeType,\n #[Property(\n description: 'Metadata',\n type: 'array',\n items: new Items(type: 'string', example: 'meta_data_example'),\n example: 'pimcore_icon_pdf'\n )]\n private readonly array $metaData,\n #[Property(description: 'Workflow permissions', type: 'bool', example: false)]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "b4c6aa1929d1bf97", + "equalIndicator/v1": "7e7fad67b721599df9b4a59f1faf5ae55576773c810fe1f0b11211a03ffdc9fb" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Response/Element.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 34, + "startColumn": 11, + "charOffset": 983, + "charLength": 74, + "snippet": { + "text": "Property(description: 'path', type: 'string', example: '/path/to/element')" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 32, + "startColumn": 1, + "charOffset": 855, + "charLength": 319, + "snippet": { + "text": " #[Property(description: 'ID of parent', type: 'integer', example: 1)]\n private readonly int $parentId,\n #[Property(description: 'path', type: 'string', example: '/path/to/element')]\n private readonly string $path,\n #[Property(description: 'ID of owner', type: 'integer', example: 1)]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "dd3f5ea7a9dff674", + "equalIndicator/v1": "8126ddc2ba426ea7c6af291056e76b92f38870ecf0967860a9a3bb0fa7933858" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Asset/Schema/Asset.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 54, + "startColumn": 11, + "charOffset": 1908, + "charLength": 81, + "snippet": { + "text": "Property(description: 'Full path', type: 'string', example: '/path/to/asset.jpg')" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 52, + "startColumn": 1, + "charOffset": 1752, + "charLength": 298, + "snippet": { + "text": " #[Property(description: 'Workflow permissions', type: 'bool', example: false)]\n private readonly bool $hasWorkflowWithPermissions,\n #[Property(description: 'Full path', type: 'string', example: '/path/to/asset.jpg')]\n private readonly string $fullPath,\n int $id," + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "0b4f2b468ad5fa55", + "equalIndicator/v1": "8589169c7dc68ddd3a3ff4ca9c715b43f668e1a9f3d177dae4138d9370b0e4a8" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Response/Element.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 44, + "startColumn": 11, + "charOffset": 1610, + "charLength": 75, + "snippet": { + "text": "Property(description: 'Creation date', type: 'integer', example: 221846400)" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 42, + "startColumn": 1, + "charOffset": 1480, + "charLength": 342, + "snippet": { + "text": " #[Property(description: 'Is locked', type: 'boolean', example: false)]\n private readonly bool $isLocked,\n #[Property(description: 'Creation date', type: 'integer', example: 221846400)]\n private readonly ?int $creationDate,\n #[Property(description: 'Modification date', type: 'integer', example: 327417600)]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "80bfcd5e195caddf", + "equalIndicator/v1": "a202732b45abe1c94d18ae6ea5f71ddbbfd1fb71649fbfcec1ec249f16766178" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Response/Element.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 42, + "startColumn": 11, + "charOffset": 1490, + "charLength": 67, + "snippet": { + "text": "Property(description: 'Is locked', type: 'boolean', example: false)" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 40, + "startColumn": 1, + "charOffset": 1360, + "charLength": 326, + "snippet": { + "text": " #[Property(description: 'Locked', type: 'string', example: 'locked')]\n private readonly ?string $locked,\n #[Property(description: 'Is locked', type: 'boolean', example: false)]\n private readonly bool $isLocked,\n #[Property(description: 'Creation date', type: 'integer', example: 221846400)]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "2fec47e9fbf8e257", + "equalIndicator/v1": "b8d74bf3622ae06c9cab86005a1ab064dc1fea4c53635f2556e00d81b9cddd88" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Request/CollectionParameters.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 30, + "startColumn": 11, + "charOffset": 834, + "charLength": 8, "snippet": { - "text": "$securitySchemes[self::ACCESS_TOKEN]" + "text": "Positive" }, "sourceLanguage": "PHP" }, "contextRegion": { - "startLine": 35, + "startLine": 28, "startColumn": 1, - "charOffset": 1010, - "charLength": 220, + "charOffset": 771, + "charLength": 123, "snippet": { - "text": "\n $securitySchemes = $openApi->getComponents()->getSecuritySchemes() ?: new ArrayObject();\n $securitySchemes[self::ACCESS_TOKEN] = new SecurityScheme(\n type: 'http',\n scheme: 'bearer'," + "text": " public function __construct(\n #[NotBlank]\n #[Positive]\n private int $page = 1,\n #[NotBlank]" }, "sourceLanguage": "PHP" } @@ -37548,9 +39289,352 @@ } ], "partialFingerprints": { - "equalIndicator/v1": "e5a5888e4d46630173f7a3d633577bcf5a128c81127af2be85baed1bb57efa32" + "equalIndicator/v2": "63721e6ae2ff09e4", + "equalIndicator/v1": "cc182978cf2b938bd3cf51d25b8852bdcaefc64d83197c7c517a569e1bed1d79" }, - "baselineState": "unchanged", + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Response/Element.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 36, + "startColumn": 11, + "charOffset": 1108, + "charLength": 65, + "snippet": { + "text": "Property(description: 'ID of owner', type: 'integer', example: 1)" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 34, + "startColumn": 1, + "charOffset": 973, + "charLength": 338, + "snippet": { + "text": " #[Property(description: 'path', type: 'string', example: '/path/to/element')]\n private readonly string $path,\n #[Property(description: 'ID of owner', type: 'integer', example: 1)]\n private readonly int $userOwner,\n #[Property(description: 'User that modified the element', type: 'integer', example: 1)]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "9c7851323aec72ad", + "equalIndicator/v1": "d23051cfd5b754ac82c3b6a0393e6667205ad4a75d4f5eefbeab50b23606d799" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Asset/Schema/Asset.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 43, + "startColumn": 11, + "charOffset": 1381, + "charLength": 72, + "snippet": { + "text": "Property(description: 'Mimetype', type: 'string', example: 'image/jpeg')" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 41, + "startColumn": 1, + "charOffset": 1246, + "charLength": 272, + "snippet": { + "text": " #[Property(description: 'Filename', type: 'string', example: 'cool.jpg')]\n private readonly string $filename,\n #[Property(description: 'Mimetype', type: 'string', example: 'image/jpeg')]\n private readonly ?string $mimeType,\n #[Property(" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "01e6b1622c1ac541", + "equalIndicator/v1": "e1278b582ec78526441db2e368254195614e887186a2c3c98383915ca5fa35fe" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Asset/Schema/Asset.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 41, + "startColumn": 11, + "charOffset": 1256, + "charLength": 70, + "snippet": { + "text": "Property(description: 'Filename', type: 'string', example: 'cool.jpg')" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 39, + "startColumn": 1, + "charOffset": 1132, + "charLength": 322, + "snippet": { + "text": " #[Property(description: 'Type', type: 'string', example: 'image')]\n private readonly string $type,\n #[Property(description: 'Filename', type: 'string', example: 'cool.jpg')]\n private readonly string $filename,\n #[Property(description: 'Mimetype', type: 'string', example: 'image/jpeg')]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "4265bd53264b2b0c", + "equalIndicator/v1": "e6cc6503ffca3f6dd7dce4f92789ac1a3e122d9a7ab44c799f8b7aebf6f514e1" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Request/CollectionParameters.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 29, + "startColumn": 11, + "charOffset": 814, + "charLength": 8, + "snippet": { + "text": "NotBlank" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 27, + "startColumn": 1, + "charOffset": 769, + "charLength": 105, + "snippet": { + "text": "{\n public function __construct(\n #[NotBlank]\n #[Positive]\n private int $page = 1," + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "b924270e17c10f07", + "equalIndicator/v1": "f2c0dc13e7e15ff2d40ef3f389848e6f1605257cc3a55e118392df3632ecdabf" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Response/Element.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 40, + "startColumn": 11, + "charOffset": 1370, + "charLength": 66, + "snippet": { + "text": "Property(description: 'Locked', type: 'string', example: 'locked')" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 38, + "startColumn": 1, + "charOffset": 1216, + "charLength": 342, + "snippet": { + "text": " #[Property(description: 'User that modified the element', type: 'integer', example: 1)]\n private readonly int $userModification,\n #[Property(description: 'Locked', type: 'string', example: 'locked')]\n private readonly ?string $locked,\n #[Property(description: 'Is locked', type: 'boolean', example: false)]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "54e2faa7120fdfad", + "equalIndicator/v1": "faa3722f6b90434e54f632922c9803f6e391e29984d1a9464086c270b3a0ed41" + }, + "baselineState": "new", + "properties": { + "ideaSeverity": "WEAK WARNING", + "qodanaSeverity": "Moderate", + "tags": [ + "PHP" + ] + } + }, + { + "ruleId": "PhpAttributeCanBeAddedToOverriddenMemberInspection", + "kind": "fail", + "level": "note", + "message": { + "text": "Attribute can be added to overriding parameter", + "markdown": "Attribute can be added to overriding parameter" + }, + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": "src/Response/Element.php", + "uriBaseId": "SRCROOT" + }, + "region": { + "startLine": 38, + "startColumn": 11, + "charOffset": 1226, + "charLength": 84, + "snippet": { + "text": "Property(description: 'User that modified the element', type: 'integer', example: 1)" + }, + "sourceLanguage": "PHP" + }, + "contextRegion": { + "startLine": 36, + "startColumn": 1, + "charOffset": 1098, + "charLength": 339, + "snippet": { + "text": " #[Property(description: 'ID of owner', type: 'integer', example: 1)]\n private readonly int $userOwner,\n #[Property(description: 'User that modified the element', type: 'integer', example: 1)]\n private readonly int $userModification,\n #[Property(description: 'Locked', type: 'string', example: 'locked')]" + }, + "sourceLanguage": "PHP" + } + }, + "logicalLocations": [ + { + "fullyQualifiedName": "project", + "kind": "module" + } + ] + } + ], + "partialFingerprints": { + "equalIndicator/v2": "0d648721bc039127", + "equalIndicator/v1": "fe6fc561100aa403c25a9624309cc14e7f1cc862740c652d71d7cc91df967beb" + }, + "baselineState": "new", "properties": { "ideaSeverity": "WEAK WARNING", "qodanaSeverity": "Moderate", @@ -37561,10 +39645,14 @@ } ], "automationDetails": { - "id": "project/qodana/2024-03-06", - "guid": "8da1f312-bbe5-4efb-91a8-5929ccb22f55", + "id": "project/qodana/2024-04-25", + "guid": "d78eefb5-fe11-449d-bd14-81498a3abd53", "properties": { - "jobUrl": "https://github.com/pimcore/studio-api-bundle/actions/runs/8173608135" +<<<<<<< Updated upstream + "jobUrl": "https://github.com/pimcore/studio-backend-bundle/actions/runs/8173608135" +======= + "jobUrl": "https://github.com/pimcore/studio-api-bundle/actions/runs/8834418729" +>>>>>>> Stashed changes } }, "newlineSequences": [ @@ -37580,8 +39668,8 @@ "configProfile": "path", "deviceId": "200820300000000-f800-ac37-cd19-06b28a4a08d3", "qodanaNewResultSummary": { - "moderate": 2, - "total": 2 + "moderate": 22, + "total": 22 } } } diff --git a/qodana.yaml b/qodana.yaml index 8e42461fc..784031487 100644 --- a/qodana.yaml +++ b/qodana.yaml @@ -34,6 +34,7 @@ exclude: - .env - .gitatributes - src/DependencyInjection/Configuration.php + - src/OpenApi/Attributes - qodana.sarif.json include: - name: PhpTaintFunctionInspection diff --git a/src/Asset/Controller/CollectionController.php b/src/Asset/Controller/CollectionController.php new file mode 100644 index 000000000..f8a001fcb --- /dev/null +++ b/src/Asset/Controller/CollectionController.php @@ -0,0 +1,111 @@ +name] + )] + #[PageParameter] + #[PageSizeParameter] + #[ParentIdParameter] + #[IdSearchTermParameter] + #[ExcludeFoldersParameter] + #[PathParameter] + #[PathIncludeParentParameter] + #[PathIncludeDescendantsParameter] + #[SuccessResponse( + description: 'Paginated assets with total count as header param', + content: new CollectionJson(new AnyOfAsset()) + )] + #[BadRequestResponse] + #[UnauthorizedResponse] + #[MethodNotAllowedResponse] + #[UnsupportedMediaTypeResponse] + #[UnprocessableContentResponse] + public function getAssets(#[MapQueryString] ElementParameters $parameters): JsonResponse + { + $filterService = $this->filterServiceProvider->create(OpenSearchFilterInterface::SERVICE_TYPE); + + $assetQuery = $filterService->applyFilters( + $parameters, + OpenSearchFilterInterface::TYPE_ASSET + ); + + $result = $this->assetSearchService->searchAssets($assetQuery); + + return $this->getPaginatedCollection( + $this->serializer, + $result->getItems(), + $result->getTotalItems() + ); + } +} diff --git a/src/Controller/Api/Assets/GetController.php b/src/Asset/Controller/GetController.php similarity index 65% rename from src/Controller/Api/Assets/GetController.php rename to src/Asset/Controller/GetController.php index 7c1c9dd15..57d81633c 100644 --- a/src/Controller/Api/Assets/GetController.php +++ b/src/Asset/Controller/GetController.php @@ -14,19 +14,19 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Controller\Api\Assets; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Controller; use OpenApi\Attributes\Get; -use Pimcore\Bundle\StudioApiBundle\Attributes\Parameters\Path\IdParameter; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Content\OneOfAssetJson; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\MethodNotAllowedResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\UnauthorizedResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\UnprocessableContentResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\UnsupportedMediaTypeResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\SuccessResponse; -use Pimcore\Bundle\StudioApiBundle\Config\Tags; -use Pimcore\Bundle\StudioApiBundle\Controller\Api\AbstractApiController; -use Pimcore\Bundle\StudioApiBundle\Service\AssetSearchServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Controller\AbstractApiController; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\AssetSearchServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Parameters\Path\IdParameter; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Content\OneOfAssetJson; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\MethodNotAllowedResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\UnauthorizedResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\UnprocessableContentResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\UnsupportedMediaTypeResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\SuccessResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Config\Tags; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Serializer\SerializerInterface; diff --git a/src/Response/Asset.php b/src/Asset/Schema/Asset.php similarity index 94% rename from src/Response/Asset.php rename to src/Asset/Schema/Asset.php index e613c7f20..91a95ca86 100644 --- a/src/Response/Asset.php +++ b/src/Asset/Schema/Asset.php @@ -14,12 +14,13 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Schema; use OpenApi\Attributes\Items; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Permissions; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Permissions; +use Pimcore\Bundle\StudioBackendBundle\Response\Element; /** * @internal diff --git a/src/Response/Asset/Archive.php b/src/Asset/Schema/Type/Archive.php similarity index 82% rename from src/Response/Asset/Archive.php rename to src/Asset/Schema/Type/Archive.php index 8d31294b4..d50c7ecda 100644 --- a/src/Response/Asset/Archive.php +++ b/src/Asset/Schema/Type/Archive.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Asset; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; #[Schema( title: 'Archive', diff --git a/src/Response/Asset/Audio.php b/src/Asset/Schema/Type/Audio.php similarity index 82% rename from src/Response/Asset/Audio.php rename to src/Asset/Schema/Type/Audio.php index 0509ec722..3c917708b 100644 --- a/src/Response/Asset/Audio.php +++ b/src/Asset/Schema/Type/Audio.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Asset; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; #[Schema( title: 'Audio', diff --git a/src/Response/Asset/Document.php b/src/Asset/Schema/Type/Document.php similarity index 94% rename from src/Response/Asset/Document.php rename to src/Asset/Schema/Type/Document.php index 60b13b481..7a9523b29 100644 --- a/src/Response/Asset/Document.php +++ b/src/Asset/Schema/Type/Document.php @@ -14,11 +14,11 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Asset; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; #[Schema( title: 'Document', diff --git a/src/Response/Asset/Folder.php b/src/Asset/Schema/Type/Folder.php similarity index 82% rename from src/Response/Asset/Folder.php rename to src/Asset/Schema/Type/Folder.php index 56bcc298e..eb8cf8d02 100644 --- a/src/Response/Asset/Folder.php +++ b/src/Asset/Schema/Type/Folder.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Asset; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; #[Schema( title: 'Folder', diff --git a/src/Response/Asset/Image.php b/src/Asset/Schema/Type/Image.php similarity index 95% rename from src/Response/Asset/Image.php rename to src/Asset/Schema/Type/Image.php index 21766f65a..24efa874c 100644 --- a/src/Response/Asset/Image.php +++ b/src/Asset/Schema/Type/Image.php @@ -14,11 +14,11 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Asset; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; #[Schema( title: 'Image', diff --git a/src/Response/Asset/MetaData.php b/src/Asset/Schema/Type/MetaData.php similarity index 95% rename from src/Response/Asset/MetaData.php rename to src/Asset/Schema/Type/MetaData.php index 880ac34bf..203999e80 100644 --- a/src/Response/Asset/MetaData.php +++ b/src/Asset/Schema/Type/MetaData.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Asset; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; diff --git a/src/Response/Asset/Permissions.php b/src/Asset/Schema/Type/Permissions.php similarity index 97% rename from src/Response/Asset/Permissions.php rename to src/Asset/Schema/Type/Permissions.php index c6f92152f..5fd11b6a6 100644 --- a/src/Response/Asset/Permissions.php +++ b/src/Asset/Schema/Type/Permissions.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Asset; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; diff --git a/src/Response/Asset/Text.php b/src/Asset/Schema/Type/Text.php similarity index 82% rename from src/Response/Asset/Text.php rename to src/Asset/Schema/Type/Text.php index 5f82f10f2..7f39e64a6 100644 --- a/src/Response/Asset/Text.php +++ b/src/Asset/Schema/Type/Text.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Asset; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; #[Schema( title: 'Text', diff --git a/src/Response/Asset/Unknown.php b/src/Asset/Schema/Type/Unknown.php similarity index 82% rename from src/Response/Asset/Unknown.php rename to src/Asset/Schema/Type/Unknown.php index 0c9b3e159..0aa081c63 100644 --- a/src/Response/Asset/Unknown.php +++ b/src/Asset/Schema/Type/Unknown.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Asset; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; #[Schema( title: 'Unknown', diff --git a/src/Response/Asset/Video.php b/src/Asset/Schema/Type/Video.php similarity index 95% rename from src/Response/Asset/Video.php rename to src/Asset/Schema/Type/Video.php index f34cdfbfe..161a6a758 100644 --- a/src/Response/Asset/Video.php +++ b/src/Asset/Schema/Type/Video.php @@ -14,11 +14,11 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Asset; +namespace Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; #[Schema( title: 'Video', diff --git a/src/Controller/Api/Authorization/AuthorizationController.php b/src/Authorization/Controller/AuthorizationController.php similarity index 70% rename from src/Controller/Api/Authorization/AuthorizationController.php rename to src/Authorization/Controller/AuthorizationController.php index 8f7f095fa..775c3c4d7 100644 --- a/src/Controller/Api/Authorization/AuthorizationController.php +++ b/src/Authorization/Controller/AuthorizationController.php @@ -14,24 +14,24 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Controller\Api\Authorization; +namespace Pimcore\Bundle\StudioBackendBundle\Authorization\Controller; use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\Post; -use Pimcore\Bundle\StudioApiBundle\Attributes\Request\CredentialsRequestBody; -use Pimcore\Bundle\StudioApiBundle\Attributes\Request\TokenRequestBody; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\MethodNotAllowedResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\UnauthorizedResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\UnprocessableContentResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\UnsupportedMediaTypeResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\SuccessResponse; -use Pimcore\Bundle\StudioApiBundle\Config\Tags; -use Pimcore\Bundle\StudioApiBundle\Controller\Api\AbstractApiController; -use Pimcore\Bundle\StudioApiBundle\Request\Credentials; -use Pimcore\Bundle\StudioApiBundle\Request\Query\Refresh; -use Pimcore\Bundle\StudioApiBundle\Response\Token; -use Pimcore\Bundle\StudioApiBundle\Service\SecurityServiceInterface; -use Pimcore\Bundle\StudioApiBundle\Service\TokenServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Schema\Credentials; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Schema\Refresh; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Schema\Token; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Service\TokenServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Controller\AbstractApiController; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Request\CredentialsRequestBody; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Request\TokenRequestBody; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\MethodNotAllowedResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\UnauthorizedResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\UnprocessableContentResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\UnsupportedMediaTypeResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\SuccessResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Config\Tags; +use Pimcore\Bundle\StudioBackendBundle\Security\Service\SecurityServiceInterface; use Pimcore\Security\User\User; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\Attribute\MapRequestPayload; diff --git a/src/Dto/Token/Info.php b/src/Authorization/Info.php similarity index 92% rename from src/Dto/Token/Info.php rename to src/Authorization/Info.php index 3de5fe099..0c73337a6 100644 --- a/src/Dto/Token/Info.php +++ b/src/Authorization/Info.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Dto\Token; +namespace Pimcore\Bundle\StudioBackendBundle\Authorization; /** * @internal diff --git a/src/Request/Credentials.php b/src/Authorization/Schema/Credentials.php similarity index 94% rename from src/Request/Credentials.php rename to src/Authorization/Schema/Credentials.php index 65d17dbe4..e97b25ba0 100644 --- a/src/Request/Credentials.php +++ b/src/Authorization/Schema/Credentials.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Request; +namespace Pimcore\Bundle\StudioBackendBundle\Authorization\Schema; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; diff --git a/src/Request/Query/Refresh.php b/src/Authorization/Schema/Refresh.php similarity index 93% rename from src/Request/Query/Refresh.php rename to src/Authorization/Schema/Refresh.php index 0ea3c6972..88d3bc1e5 100644 --- a/src/Request/Query/Refresh.php +++ b/src/Authorization/Schema/Refresh.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Request\Query; +namespace Pimcore\Bundle\StudioBackendBundle\Authorization\Schema; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; diff --git a/src/Response/Token.php b/src/Authorization/Schema/Token.php similarity index 95% rename from src/Response/Token.php rename to src/Authorization/Schema/Token.php index 47cdb0f75..ed6f75a57 100644 --- a/src/Response/Token.php +++ b/src/Authorization/Schema/Token.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response; +namespace Pimcore\Bundle\StudioBackendBundle\Authorization\Schema; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; diff --git a/src/Service/TokenService.php b/src/Authorization/Service/TokenService.php similarity index 92% rename from src/Service/TokenService.php rename to src/Authorization/Service/TokenService.php index fc03a9181..7740ab1a2 100644 --- a/src/Service/TokenService.php +++ b/src/Authorization/Service/TokenService.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service; +namespace Pimcore\Bundle\StudioBackendBundle\Authorization\Service; use Pimcore\Bundle\StaticResolverBundle\Models\Tool\TmpStoreResolverInterface; -use Pimcore\Bundle\StudioApiBundle\Dto\Token\Info; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Info; use Symfony\Component\Security\Core\Exception\TokenNotFoundException; use Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface; @@ -26,7 +26,7 @@ */ final class TokenService implements TokenServiceInterface { - private const TMP_STORE_TAG = 'studio-api-token-tag-user-{userId}'; + private const TMP_STORE_TAG = 'studio-backend-token-tag-user-{userId}'; private const TMP_STORE_TAG_PLACEHOLDER = '{userId}'; diff --git a/src/Service/TokenServiceInterface.php b/src/Authorization/Service/TokenServiceInterface.php similarity index 84% rename from src/Service/TokenServiceInterface.php rename to src/Authorization/Service/TokenServiceInterface.php index d8ffb47c6..f0af144df 100644 --- a/src/Service/TokenServiceInterface.php +++ b/src/Authorization/Service/TokenServiceInterface.php @@ -14,9 +14,9 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service; +namespace Pimcore\Bundle\StudioBackendBundle\Authorization\Service; -use Pimcore\Bundle\StudioApiBundle\Dto\Token\Info; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Info; /** * @internal diff --git a/src/Controller/Api/AbstractApiController.php b/src/Controller/AbstractApiController.php similarity index 95% rename from src/Controller/Api/AbstractApiController.php rename to src/Controller/AbstractApiController.php index db0369f3e..0fb379e48 100644 --- a/src/Controller/Api/AbstractApiController.php +++ b/src/Controller/AbstractApiController.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Controller\Api; +namespace Pimcore\Bundle\StudioBackendBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; diff --git a/src/Controller/Api/Assets/CollectionController.php b/src/Controller/Api/Assets/CollectionController.php deleted file mode 100644 index da54befb1..000000000 --- a/src/Controller/Api/Assets/CollectionController.php +++ /dev/null @@ -1,108 +0,0 @@ -name] - )] - #[PageParameter] - #[PageSizeParameter] - #[ParentIdParameter] - #[IdSearchTermParameter] - #[ExcludeFoldersParameter] - #[PathParameter] - #[PathIncludeParentParameter] - #[PathIncludeDescendantsParameter] - #[SuccessResponse( - description: 'Paginated assets with total count as header param', - content: new CollectionJson(new AnyOfAsset()) - )] - #[BadRequestResponse] - #[UnauthorizedResponse] - #[MethodNotAllowedResponse] - #[UnsupportedMediaTypeResponse] - #[UnprocessableContentResponse] - public function getAssets(#[MapQueryString] ElementParameters $parameters): JsonResponse - { - $assetQuery = $this->filterService->applyFilters( - $parameters, - FilterServiceInterface::TYPE_ASSET - ); - - $result = $this->assetSearchService->searchAssets($assetQuery); - - return $this->getPaginatedCollection( - $this->serializer, - $result->getItems(), - $result->getTotalItems() - ); - } -} diff --git a/src/Controller/Api/DataObjects/CollectionController.php b/src/Controller/Api/DataObjects/CollectionController.php deleted file mode 100644 index fdcc40b2b..000000000 --- a/src/Controller/Api/DataObjects/CollectionController.php +++ /dev/null @@ -1,105 +0,0 @@ -name], - )] - #[PageParameter] - #[PageSizeParameter] - #[ParentIdParameter] - #[IdSearchTermParameter] - #[ExcludeFoldersParameter] - #[PathParameter] - #[PathIncludeParentParameter] - #[PathIncludeDescendantsParameter] - #[ClassNameParameter] - #[SuccessResponse( - description: 'Paginated data objects with total count as header param', - content: new CollectionJson(new DataObjectCollection()) - )] - #[BadRequestResponse] - #[UnauthorizedResponse] - #[MethodNotAllowedResponse] - #[UnsupportedMediaTypeResponse] - #[UnprocessableContentResponse] - public function getDataObjects(#[MapQueryString] DataObjectParameters $parameters): JsonResponse - { - - $dataObjectQuery = $this->filterService->applyFilters($parameters, 'dataObject'); - - $result = $this->dataObjectSearchService->searchDataObjects($dataObjectQuery); - - return $this->getPaginatedCollection( - $this->serializer, - $result->getItems(), - $result->getTotalItems() - ); - } -} diff --git a/src/Service/GenericData/V1/AssetSearchAdapter.php b/src/DataIndex/Adapter/AssetSearchAdapter.php similarity index 83% rename from src/Service/GenericData/V1/AssetSearchAdapter.php rename to src/DataIndex/Adapter/AssetSearchAdapter.php index 6ab1462cc..2f3d3413a 100644 --- a/src/Service/GenericData/V1/AssetSearchAdapter.php +++ b/src/DataIndex/Adapter/AssetSearchAdapter.php @@ -14,14 +14,14 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Adapter; use Exception; use Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\Asset\AssetSearchServiceInterface; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; -use Pimcore\Bundle\StudioApiBundle\Service\AssetSearchResult; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\AssetSearchAdapterInterface; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\Hydrator\AssetHydratorServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\AssetSearchResult; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Hydrator\AssetHydratorServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; final readonly class AssetSearchAdapter implements AssetSearchAdapterInterface { diff --git a/src/Service/GenericData/AssetSearchAdapterInterface.php b/src/DataIndex/Adapter/AssetSearchAdapterInterface.php similarity index 70% rename from src/Service/GenericData/AssetSearchAdapterInterface.php rename to src/DataIndex/Adapter/AssetSearchAdapterInterface.php index 69c14cbdc..5d8284df9 100644 --- a/src/Service/GenericData/AssetSearchAdapterInterface.php +++ b/src/DataIndex/Adapter/AssetSearchAdapterInterface.php @@ -14,11 +14,11 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\GenericData; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Adapter; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; -use Pimcore\Bundle\StudioApiBundle\Service\AssetSearchResult; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\QueryInterface; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\AssetSearchResult; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; interface AssetSearchAdapterInterface { diff --git a/src/Service/GenericData/V1/DataObjectSearchAdapter.php b/src/DataIndex/Adapter/DataObjectSearchAdapter.php similarity index 87% rename from src/Service/GenericData/V1/DataObjectSearchAdapter.php rename to src/DataIndex/Adapter/DataObjectSearchAdapter.php index 4d7813085..c96fa38b0 100644 --- a/src/Service/GenericData/V1/DataObjectSearchAdapter.php +++ b/src/DataIndex/Adapter/DataObjectSearchAdapter.php @@ -14,15 +14,15 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Adapter; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\DataObject\DataObjectSearchInterface; use Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\DataObject\DataObjectSearchServiceInterface; use Pimcore\Bundle\StaticResolverBundle\Models\Element\ServiceResolver; -use Pimcore\Bundle\StudioApiBundle\Exception\InvalidSearchException; -use Pimcore\Bundle\StudioApiBundle\Response\DataObject; -use Pimcore\Bundle\StudioApiBundle\Service\DataObjectSearchResult; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\DataObjectSearchAdapterInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\DataObjectSearchResult; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; +use Pimcore\Bundle\StudioBackendBundle\DataObject\Schema\DataObject; +use Pimcore\Bundle\StudioBackendBundle\Exception\InvalidSearchException; use Pimcore\Model\DataObject\Concrete; use Pimcore\Model\Element\ElementInterface; diff --git a/src/Service/GenericData/DataObjectSearchAdapterInterface.php b/src/DataIndex/Adapter/DataObjectSearchAdapterInterface.php similarity index 77% rename from src/Service/GenericData/DataObjectSearchAdapterInterface.php rename to src/DataIndex/Adapter/DataObjectSearchAdapterInterface.php index 47f63779a..854268509 100644 --- a/src/Service/GenericData/DataObjectSearchAdapterInterface.php +++ b/src/DataIndex/Adapter/DataObjectSearchAdapterInterface.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\GenericData; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Adapter; -use Pimcore\Bundle\StudioApiBundle\Service\DataObjectSearchResult; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\QueryInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\DataObjectSearchResult; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; use Pimcore\Model\Element\ElementInterface; interface DataObjectSearchAdapterInterface diff --git a/src/Service/AssetSearchResult.php b/src/DataIndex/AssetSearchResult.php similarity index 66% rename from src/Service/AssetSearchResult.php rename to src/DataIndex/AssetSearchResult.php index c48ef6f73..73888a526 100644 --- a/src/Service/AssetSearchResult.php +++ b/src/DataIndex/AssetSearchResult.php @@ -14,17 +14,17 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Archive; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Audio; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Document; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Folder; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Image; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Text; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Unknown; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Video; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Archive; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Audio; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Document; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Folder; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Image; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Text; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Unknown; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Video; final readonly class AssetSearchResult { diff --git a/src/Service/AssetSearchService.php b/src/DataIndex/AssetSearchService.php similarity index 55% rename from src/Service/AssetSearchService.php rename to src/DataIndex/AssetSearchService.php index a7e373c3c..ed3fb85c5 100644 --- a/src/Service/AssetSearchService.php +++ b/src/DataIndex/AssetSearchService.php @@ -14,19 +14,19 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex; -use Pimcore\Bundle\StudioApiBundle\Response\Asset; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Archive; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Audio; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Document; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Folder; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Image; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Text; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Unknown; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Video; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\AssetSearchAdapterInterface; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\QueryInterface; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Asset; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Archive; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Audio; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Document; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Folder; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Image; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Text; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Unknown; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Video; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Adapter\AssetSearchAdapterInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; final readonly class AssetSearchService implements AssetSearchServiceInterface { diff --git a/src/DataIndex/AssetSearchServiceInterface.php b/src/DataIndex/AssetSearchServiceInterface.php new file mode 100644 index 000000000..89129671b --- /dev/null +++ b/src/DataIndex/AssetSearchServiceInterface.php @@ -0,0 +1,35 @@ + $filters->getAssetFilters(), - FilterServiceInterface::TYPE_DATA_OBJECT => $filters->getDataObjectFilters(), - FilterServiceInterface::TYPE_DOCUMENT => $filters->getDocumentFilters(), + OpenSearchFilterInterface::TYPE_ASSET => $filters->getAssetFilters(), + OpenSearchFilterInterface::TYPE_DATA_OBJECT => $filters->getDataObjectFilters(), + OpenSearchFilterInterface::TYPE_DOCUMENT => $filters->getDocumentFilters(), default => throw new InvalidFilterTypeException(400, "Unknown filter type: $type") }; } + + public function getType(): string + { + return OpenSearchFilterInterface::SERVICE_TYPE; + } } diff --git a/src/Service/Filter/FilterServiceInterface.php b/src/DataIndex/OpenSearchFilterInterface.php similarity index 67% rename from src/Service/Filter/FilterServiceInterface.php rename to src/DataIndex/OpenSearchFilterInterface.php index d8d48949c..72c679667 100644 --- a/src/Service/Filter/FilterServiceInterface.php +++ b/src/DataIndex/OpenSearchFilterInterface.php @@ -14,17 +14,19 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\Filter; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex; -use Pimcore\Bundle\StudioApiBundle\Exception\InvalidQueryTypeException; -use Pimcore\Bundle\StudioApiBundle\Request\Query\Filter\CollectionParametersInterface; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\QueryInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; +use Pimcore\Bundle\StudioBackendBundle\Exception\InvalidQueryTypeException; +use Pimcore\Bundle\StudioBackendBundle\Request\CollectionParametersInterface; /** * @internal */ -interface FilterServiceInterface +interface OpenSearchFilterInterface { + public const SERVICE_TYPE = 'open_search_filter'; + public const TYPE_DATA_OBJECT = 'dataObject'; public const TYPE_ASSET = 'asset'; diff --git a/src/Service/GenericData/V1/AssetQueryProvider.php b/src/DataIndex/Provider/AssetQueryProvider.php similarity index 81% rename from src/Service/GenericData/V1/AssetQueryProvider.php rename to src/DataIndex/Provider/AssetQueryProvider.php index 5c5a2180f..427cc2300 100644 --- a/src/Service/GenericData/V1/AssetQueryProvider.php +++ b/src/DataIndex/Provider/AssetQueryProvider.php @@ -14,9 +14,11 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider; use Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\SearchProviderInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\AssetQuery; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; final readonly class AssetQueryProvider implements AssetQueryProviderInterface { diff --git a/src/Service/GenericData/V1/AssetQueryProviderInterface.php b/src/DataIndex/Provider/AssetQueryProviderInterface.php similarity index 80% rename from src/Service/GenericData/V1/AssetQueryProviderInterface.php rename to src/DataIndex/Provider/AssetQueryProviderInterface.php index c8a0addaa..4a815c22e 100644 --- a/src/Service/GenericData/V1/AssetQueryProviderInterface.php +++ b/src/DataIndex/Provider/AssetQueryProviderInterface.php @@ -14,7 +14,9 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider; + +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; interface AssetQueryProviderInterface { diff --git a/src/Service/GenericData/V1/DataObjectQueryProvider.php b/src/DataIndex/Provider/DataObjectQueryProvider.php similarity index 86% rename from src/Service/GenericData/V1/DataObjectQueryProvider.php rename to src/DataIndex/Provider/DataObjectQueryProvider.php index be8265ae6..b022deb22 100644 --- a/src/Service/GenericData/V1/DataObjectQueryProvider.php +++ b/src/DataIndex/Provider/DataObjectQueryProvider.php @@ -14,11 +14,13 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\DataObject\DataObjectSearch; use Pimcore\Bundle\GenericDataIndexBundle\Service\Search\SearchService\SearchProviderInterface; use Pimcore\Bundle\StaticResolverBundle\Models\DataObject\ClassDefinitionResolverInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\DataObjectQuery; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; final readonly class DataObjectQueryProvider implements DataObjectQueryProviderInterface { diff --git a/src/Service/GenericData/V1/DataObjectQueryProviderInterface.php b/src/DataIndex/Provider/DataObjectQueryProviderInterface.php similarity index 80% rename from src/Service/GenericData/V1/DataObjectQueryProviderInterface.php rename to src/DataIndex/Provider/DataObjectQueryProviderInterface.php index a602b8ab1..2822b3cf6 100644 --- a/src/Service/GenericData/V1/DataObjectQueryProviderInterface.php +++ b/src/DataIndex/Provider/DataObjectQueryProviderInterface.php @@ -14,7 +14,9 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider; + +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; interface DataObjectQueryProviderInterface { diff --git a/src/Service/GenericData/V1/AssetQuery.php b/src/DataIndex/Query/AssetQuery.php similarity index 97% rename from src/Service/GenericData/V1/AssetQuery.php rename to src/DataIndex/Query/AssetQuery.php index 9aa4ce354..30f5776f3 100644 --- a/src/Service/GenericData/V1/AssetQuery.php +++ b/src/DataIndex/Query/AssetQuery.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Query; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Interfaces\SearchInterface; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Basic\ExcludeFoldersFilter; diff --git a/src/Service/GenericData/V1/DataObjectQuery.php b/src/DataIndex/Query/DataObjectQuery.php similarity index 95% rename from src/Service/GenericData/V1/DataObjectQuery.php rename to src/DataIndex/Query/DataObjectQuery.php index 6d088c13f..f4b1fc9a9 100644 --- a/src/Service/GenericData/V1/DataObjectQuery.php +++ b/src/DataIndex/Query/DataObjectQuery.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Query; use Exception; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\DataObject\DataObjectSearch; @@ -23,7 +23,7 @@ use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\Filter\Tree\PathFilter; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Modifier\FullTextSearch\ElementKeySearch; use Pimcore\Bundle\StaticResolverBundle\Models\DataObject\ClassDefinitionResolverInterface; -use Pimcore\Bundle\StudioApiBundle\Exception\ClassDefinitionNotFoundException; +use Pimcore\Bundle\StudioBackendBundle\Exception\ClassDefinitionNotFoundException; final class DataObjectQuery implements QueryInterface { diff --git a/src/Service/GenericData/V1/QueryInterface.php b/src/DataIndex/Query/QueryInterface.php similarity index 93% rename from src/Service/GenericData/V1/QueryInterface.php rename to src/DataIndex/Query/QueryInterface.php index 45a8648fd..c4f58d3ec 100644 --- a/src/Service/GenericData/V1/QueryInterface.php +++ b/src/DataIndex/Query/QueryInterface.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Query; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Interfaces\SearchInterface; diff --git a/src/Request/Query/Filter/DataObjectParameters.php b/src/DataIndex/Request/DataObjectParameters.php similarity index 95% rename from src/Request/Query/Filter/DataObjectParameters.php rename to src/DataIndex/Request/DataObjectParameters.php index 491faac58..a546f601a 100644 --- a/src/Request/Query/Filter/DataObjectParameters.php +++ b/src/DataIndex/Request/DataObjectParameters.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Request\Query\Filter; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Request; /** * @internal diff --git a/src/Request/Query/Filter/DataObjectParametersInterface.php b/src/DataIndex/Request/DataObjectParametersInterface.php similarity index 90% rename from src/Request/Query/Filter/DataObjectParametersInterface.php rename to src/DataIndex/Request/DataObjectParametersInterface.php index b8e0a0137..1a9960db2 100644 --- a/src/Request/Query/Filter/DataObjectParametersInterface.php +++ b/src/DataIndex/Request/DataObjectParametersInterface.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Request\Query\Filter; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Request; /** * @internal diff --git a/src/Request/Query/Filter/ElementParameters.php b/src/DataIndex/Request/ElementParameters.php similarity index 92% rename from src/Request/Query/Filter/ElementParameters.php rename to src/DataIndex/Request/ElementParameters.php index 72a36353a..2f7af3b2b 100644 --- a/src/Request/Query/Filter/ElementParameters.php +++ b/src/DataIndex/Request/ElementParameters.php @@ -14,7 +14,9 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Request\Query\Filter; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Request; + +use Pimcore\Bundle\StudioBackendBundle\Request\CollectionParameters; /** * @internal diff --git a/src/Request/Query/Filter/ElementParametersInterface.php b/src/DataIndex/Request/ElementParametersInterface.php similarity index 79% rename from src/Request/Query/Filter/ElementParametersInterface.php rename to src/DataIndex/Request/ElementParametersInterface.php index 85b342863..08033732b 100644 --- a/src/Request/Query/Filter/ElementParametersInterface.php +++ b/src/DataIndex/Request/ElementParametersInterface.php @@ -14,12 +14,14 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Request\Query\Filter; +namespace Pimcore\Bundle\StudioBackendBundle\DataIndex\Request; + +use Pimcore\Bundle\StudioBackendBundle\Request\CollectionParametersInterface; /** * @internal */ -interface ElementParametersInterface +interface ElementParametersInterface extends CollectionParametersInterface { public function getPage(): int; diff --git a/src/DataObject/Controller/CollectionController.php b/src/DataObject/Controller/CollectionController.php new file mode 100644 index 000000000..83d08586e --- /dev/null +++ b/src/DataObject/Controller/CollectionController.php @@ -0,0 +1,107 @@ +name], + )] + #[PageParameter] + #[PageSizeParameter] + #[ParentIdParameter] + #[IdSearchTermParameter] + #[ExcludeFoldersParameter] + #[PathParameter] + #[PathIncludeParentParameter] + #[PathIncludeDescendantsParameter] + #[ClassNameParameter] + #[SuccessResponse( + description: 'Paginated data objects with total count as header param', + content: new CollectionJson(new DataObjectCollection()) + )] + #[BadRequestResponse] + #[UnauthorizedResponse] + #[MethodNotAllowedResponse] + #[UnsupportedMediaTypeResponse] + #[UnprocessableContentResponse] + public function getDataObjects(#[MapQueryString] DataObjectParameters $parameters): JsonResponse + { + $filterService = $this->filterServiceProvider->create(OpenSearchFilterInterface::SERVICE_TYPE); + + $dataObjectQuery = $filterService->applyFilters($parameters, 'dataObject'); + + $result = $this->dataObjectSearchService->searchDataObjects($dataObjectQuery); + + return $this->getPaginatedCollection( + $this->serializer, + $result->getItems(), + $result->getTotalItems() + ); + } +} diff --git a/src/Response/DataObject.php b/src/DataObject/Schema/DataObject.php similarity index 94% rename from src/Response/DataObject.php rename to src/DataObject/Schema/DataObject.php index ceeea56bb..503de03c6 100644 --- a/src/Response/DataObject.php +++ b/src/DataObject/Schema/DataObject.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response; +namespace Pimcore\Bundle\StudioBackendBundle\DataObject\Schema; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; diff --git a/src/DependencyInjection/CompilerPass/FilterPass.php b/src/DependencyInjection/CompilerPass/FilterPass.php index baf68b1e7..a418e2c9e 100644 --- a/src/DependencyInjection/CompilerPass/FilterPass.php +++ b/src/DependencyInjection/CompilerPass/FilterPass.php @@ -14,12 +14,12 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\DependencyInjection\CompilerPass; +namespace Pimcore\Bundle\StudioBackendBundle\DependencyInjection\CompilerPass; -use Pimcore\Bundle\StudioApiBundle\Exception\MustImplementInterfaceException; -use Pimcore\Bundle\StudioApiBundle\Filter\FilterInterface; -use Pimcore\Bundle\StudioApiBundle\Service\Filter\Loader\TaggedIteratorAdapter; -use Pimcore\Bundle\StudioApiBundle\Util\Traits\MustImplementInterfaceTrait; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\FilterInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Filter\Loader\TaggedIteratorAdapter; +use Pimcore\Bundle\StudioBackendBundle\Exception\MustImplementInterfaceException; +use Pimcore\Bundle\StudioBackendBundle\Util\Traits\MustImplementInterfaceTrait; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index ad4cf7c1c..3493e3eb6 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\DependencyInjection; +namespace Pimcore\Bundle\StudioBackendBundle\DependencyInjection; -use Pimcore\Bundle\StudioApiBundle\Exception\InvalidHostException; -use Pimcore\Bundle\StudioApiBundle\Exception\InvalidPathException; +use Pimcore\Bundle\StudioBackendBundle\Exception\InvalidHostException; +use Pimcore\Bundle\StudioBackendBundle\Exception\InvalidPathException; use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition; use Symfony\Component\Config\Definition\Builder\TreeBuilder; use Symfony\Component\Config\Definition\ConfigurationInterface; @@ -29,13 +29,10 @@ */ class Configuration implements ConfigurationInterface { - public const ROOT_NODE = 'pimcore_studio_api'; + public const ROOT_NODE = 'pimcore_studio_backend'; /** * {@inheritdoc} - * - * @throws InvalidPathException - * @throws InvalidHostException */ public function getConfigTreeBuilder(): TreeBuilder { @@ -53,7 +50,7 @@ public function getConfigTreeBuilder(): TreeBuilder private function addOpenApiScanPathsNode(ArrayNodeDefinition $node): void { $node->children() - ->arrayNode('openApiScanPaths') + ->arrayNode('open_api_scan_paths') ->prototype('scalar')->end() ->validate() ->always( @@ -91,7 +88,7 @@ private function addApiTokenNode(ArrayNodeDefinition $node): void private function addAllowedHostsForCorsNode(ArrayNodeDefinition $node): void { $node->children() - ->arrayNode('allowedHostsForCors') + ->arrayNode('allowed_hosts_for_cors') ->prototype('scalar')->end() ->validate() ->always( diff --git a/src/DependencyInjection/PimcoreStudioApiExtension.php b/src/DependencyInjection/PimcoreStudioBackendExtension.php similarity index 69% rename from src/DependencyInjection/PimcoreStudioApiExtension.php rename to src/DependencyInjection/PimcoreStudioBackendExtension.php index e5f96ea15..b551317eb 100644 --- a/src/DependencyInjection/PimcoreStudioApiExtension.php +++ b/src/DependencyInjection/PimcoreStudioBackendExtension.php @@ -14,12 +14,12 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\DependencyInjection; +namespace Pimcore\Bundle\StudioBackendBundle\DependencyInjection; use Exception; -use Pimcore\Bundle\StudioApiBundle\EventSubscriber\CorsSubscriber; -use Pimcore\Bundle\StudioApiBundle\Service\OpenApiServiceInterface; -use Pimcore\Bundle\StudioApiBundle\Service\TokenServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Service\TokenServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\EventSubscriber\CorsSubscriber; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Service\OpenApiServiceInterface; use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; @@ -34,7 +34,7 @@ /** * @internal */ -class PimcoreStudioApiExtension extends Extension +class PimcoreStudioBackendExtension extends Extension { /** * {@inheritdoc} @@ -48,17 +48,28 @@ public function load(array $configs, ContainerBuilder $container): void // Load services and configuration $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../../config')); - $loader->load('services.yaml'); - $loader->load('filters.yaml'); + + $loader->load('assets.yaml'); + $loader->load('authorization.yaml'); + $loader->load('data_index.yaml'); + $loader->load('data_index_filters.yaml'); + $loader->load('data_objects.yaml'); $loader->load('event_subscribers.yaml'); + $loader->load('factories.yaml'); + $loader->load('filters.yaml'); + $loader->load('icon.yaml'); + $loader->load('open_api.yaml'); + $loader->load('security.yaml'); + $loader->load('services.yaml'); + $loader->load('translation.yaml'); $definition = $container->getDefinition(TokenServiceInterface::class); $definition->setArgument('$tokenLifetime', $config['api_token']['lifetime']); $definition = $container->getDefinition(OpenApiServiceInterface::class); - $definition->setArgument('$openApiScanPaths', $config['openApiScanPaths']); + $definition->setArgument('$openApiScanPaths', $config['open_api_scan_paths']); $definition = $container->getDefinition(CorsSubscriber::class); - $definition->setArgument('$allowedHosts', $config['allowedHostsForCors']); + $definition->setArgument('$allowedHosts', $config['allowed_hosts_for_cors']); } } diff --git a/src/Dto/Dependency.php b/src/Dto/Dependency.php index 2cd3674d5..840b73539 100644 --- a/src/Dto/Dependency.php +++ b/src/Dto/Dependency.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Dto; +namespace Pimcore\Bundle\StudioBackendBundle\Dto; readonly class Dependency { diff --git a/src/Dto/Property.php b/src/Dto/Property.php index 17bd472cb..0624796dc 100644 --- a/src/Dto/Property.php +++ b/src/Dto/Property.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Dto; +namespace Pimcore\Bundle\StudioBackendBundle\Dto; readonly class Property { diff --git a/src/Dto/ResetPasswordRequest.php b/src/Dto/ResetPasswordRequest.php index 771edf479..7a638407b 100644 --- a/src/Dto/ResetPasswordRequest.php +++ b/src/Dto/ResetPasswordRequest.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Dto; +namespace Pimcore\Bundle\StudioBackendBundle\Dto; use Symfony\Component\Validator\Constraints as Assert; diff --git a/src/Dto/Task.php b/src/Dto/Task.php index 3fe86c3d0..8ae9349bb 100644 --- a/src/Dto/Task.php +++ b/src/Dto/Task.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Dto; +namespace Pimcore\Bundle\StudioBackendBundle\Dto; readonly class Task { diff --git a/src/Dto/User.php b/src/Dto/User.php index ea177610b..db69b3904 100644 --- a/src/Dto/User.php +++ b/src/Dto/User.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Dto; +namespace Pimcore\Bundle\StudioBackendBundle\Dto; use Pimcore\Model\User as ModelUser; diff --git a/src/Dto/Version.php b/src/Dto/Version.php index 513fd316a..e22120e17 100644 --- a/src/Dto/Version.php +++ b/src/Dto/Version.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Dto; +namespace Pimcore\Bundle\StudioBackendBundle\Dto; use Pimcore\Model\User; use Pimcore\Model\Version as ModelVersion; diff --git a/src/EventSubscriber/ApiExceptionSubscriber.php b/src/EventSubscriber/ApiExceptionSubscriber.php index b11bed4f1..8c0ce2ea9 100644 --- a/src/EventSubscriber/ApiExceptionSubscriber.php +++ b/src/EventSubscriber/ApiExceptionSubscriber.php @@ -14,8 +14,9 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\EventSubscriber; +namespace Pimcore\Bundle\StudioBackendBundle\EventSubscriber; +use Pimcore\Bundle\StudioBackendBundle\Util\Traits\StudioBackendPathTrait; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; @@ -27,7 +28,7 @@ */ final class ApiExceptionSubscriber implements EventSubscriberInterface { - use StudioApiPathTrait; + use StudioBackendPathTrait; public function __construct(private readonly string $environment) { @@ -45,7 +46,7 @@ public function onKernelException(ExceptionEvent $event): void $exception = $event->getThrowable(); $request = $event->getRequest(); - if(!$this->isStudioApiPath($request->getPathInfo())) { + if(!$this->isStudioBackendPath($request->getPathInfo())) { return; } diff --git a/src/EventSubscriber/CorsSubscriber.php b/src/EventSubscriber/CorsSubscriber.php index c24b0d7fa..6afae9cc4 100644 --- a/src/EventSubscriber/CorsSubscriber.php +++ b/src/EventSubscriber/CorsSubscriber.php @@ -14,8 +14,9 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\EventSubscriber; +namespace Pimcore\Bundle\StudioBackendBundle\EventSubscriber; +use Pimcore\Bundle\StudioBackendBundle\Util\Traits\StudioBackendPathTrait; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\RequestEvent; @@ -25,7 +26,7 @@ final class CorsSubscriber implements EventSubscriberInterface { - use StudioApiPathTrait; + use StudioBackendPathTrait; private array $routeMethods; @@ -34,7 +35,7 @@ public function __construct( private readonly array $allowedHosts = [] ) { foreach($this->router->getRouteCollection()->getIterator() as $route) { - if($this->isStudioApiPath($route->getPath())) { + if($this->isStudioBackendPath($route->getPath())) { $this->routeMethods[$route->getPath()] = implode(', ', $route->getMethods()); } } @@ -57,7 +58,7 @@ public function onKernelRequest(RequestEvent $event): void $request = $event->getRequest(); - if(!$this->isStudioApiPath($request->getPathInfo())) { + if(!$this->isStudioBackendPath($request->getPathInfo())) { return; } @@ -78,7 +79,7 @@ public function onKernelResponse(ResponseEvent $event): void { $request = $event->getRequest(); - if (!$this->isStudioApiPath($request->getPathInfo())) { + if (!$this->isStudioBackendPath($request->getPathInfo())) { return; } // Run CORS check in here to ensure domain is in the system diff --git a/src/Exception/AbstractApiException.php b/src/Exception/AbstractApiException.php index 1f326d5b8..f29bf8440 100644 --- a/src/Exception/AbstractApiException.php +++ b/src/Exception/AbstractApiException.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; use Symfony\Component\HttpKernel\Exception\HttpException; -abstract class AbstractApiException extends HttpException implements ApiExceptionInterface +abstract class AbstractApiException extends HttpException { } diff --git a/src/Exception/AccessDeniedException.php b/src/Exception/AccessDeniedException.php index efbabd3a6..57bc941ac 100644 --- a/src/Exception/AccessDeniedException.php +++ b/src/Exception/AccessDeniedException.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; /** * @internal diff --git a/src/Exception/ClassDefinitionNotFoundException.php b/src/Exception/ClassDefinitionNotFoundException.php index aabf081a3..fbf3ea3ee 100644 --- a/src/Exception/ClassDefinitionNotFoundException.php +++ b/src/Exception/ClassDefinitionNotFoundException.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; /** * @internal diff --git a/src/Exception/ApiExceptionInterface.php b/src/Exception/InvalidFilterServiceTypeException.php similarity index 74% rename from src/Exception/ApiExceptionInterface.php rename to src/Exception/InvalidFilterServiceTypeException.php index 49c23d4d2..f002b12f2 100644 --- a/src/Exception/ApiExceptionInterface.php +++ b/src/Exception/InvalidFilterServiceTypeException.php @@ -14,14 +14,11 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; /** * @internal */ -interface ApiExceptionInterface +final class InvalidFilterServiceTypeException extends AbstractApiException { - public function getStatusCode(): int; - - public function getMessage(): string; } diff --git a/src/Exception/InvalidFilterTypeException.php b/src/Exception/InvalidFilterTypeException.php index 17bcd3746..2452dee1a 100644 --- a/src/Exception/InvalidFilterTypeException.php +++ b/src/Exception/InvalidFilterTypeException.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; /** * @internal diff --git a/src/Exception/InvalidHostException.php b/src/Exception/InvalidHostException.php index c5e48b67d..e5ab8ee4c 100644 --- a/src/Exception/InvalidHostException.php +++ b/src/Exception/InvalidHostException.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; use Exception; diff --git a/src/Exception/InvalidPathException.php b/src/Exception/InvalidPathException.php index 6f81b0f2d..0f77690dc 100644 --- a/src/Exception/InvalidPathException.php +++ b/src/Exception/InvalidPathException.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; use Exception; diff --git a/src/Exception/InvalidQueryTypeException.php b/src/Exception/InvalidQueryTypeException.php index c0fecb5a4..7fe74e23f 100644 --- a/src/Exception/InvalidQueryTypeException.php +++ b/src/Exception/InvalidQueryTypeException.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; /** * @internal diff --git a/src/Exception/InvalidSearchException.php b/src/Exception/InvalidSearchException.php index 74f362717..b9c52ad50 100644 --- a/src/Exception/InvalidSearchException.php +++ b/src/Exception/InvalidSearchException.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; final class InvalidSearchException extends AbstractApiException { diff --git a/src/Exception/MustImplementInterfaceException.php b/src/Exception/MustImplementInterfaceException.php index fa2131cfa..8ab128b8c 100644 --- a/src/Exception/MustImplementInterfaceException.php +++ b/src/Exception/MustImplementInterfaceException.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; use Exception; diff --git a/src/Exception/NoRequestException.php b/src/Exception/NoRequestException.php index 6e28637c7..91d3fc747 100644 --- a/src/Exception/NoRequestException.php +++ b/src/Exception/NoRequestException.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; /** * @internal diff --git a/src/Exception/NonPublicTranslationException.php b/src/Exception/NonPublicTranslationException.php index fa9a6dc4a..721b6f845 100644 --- a/src/Exception/NonPublicTranslationException.php +++ b/src/Exception/NonPublicTranslationException.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; /** * @internal diff --git a/src/Exception/NotAuthorizedException.php b/src/Exception/NotAuthorizedException.php index 1ab2d001c..891c5ab4d 100644 --- a/src/Exception/NotAuthorizedException.php +++ b/src/Exception/NotAuthorizedException.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Exception; +namespace Pimcore\Bundle\StudioBackendBundle\Exception; /** * @internal diff --git a/src/Factory/QueryFactory.php b/src/Factory/QueryFactory.php index ab82029a0..acbc10388 100644 --- a/src/Factory/QueryFactory.php +++ b/src/Factory/QueryFactory.php @@ -14,12 +14,12 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Factory; +namespace Pimcore\Bundle\StudioBackendBundle\Factory; -use Pimcore\Bundle\StudioApiBundle\Exception\InvalidQueryTypeException; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\AssetQueryProviderInterface; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\DataObjectQueryProviderInterface; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\QueryInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider\AssetQueryProviderInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider\DataObjectQueryProviderInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; +use Pimcore\Bundle\StudioBackendBundle\Exception\InvalidQueryTypeException; /** * @internal diff --git a/src/Factory/QueryFactoryInterface.php b/src/Factory/QueryFactoryInterface.php index 90e5011c4..328213692 100644 --- a/src/Factory/QueryFactoryInterface.php +++ b/src/Factory/QueryFactoryInterface.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Factory; +namespace Pimcore\Bundle\StudioBackendBundle\Factory; -use Pimcore\Bundle\StudioApiBundle\Exception\InvalidQueryTypeException; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\QueryInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\QueryInterface; +use Pimcore\Bundle\StudioBackendBundle\Exception\InvalidQueryTypeException; /** * @internal diff --git a/src/Filter/Service/FilterServiceInterface.php b/src/Filter/Service/FilterServiceInterface.php new file mode 100644 index 000000000..70753d076 --- /dev/null +++ b/src/Filter/Service/FilterServiceInterface.php @@ -0,0 +1,22 @@ +loadFilterServices() as $filterService) { + $this->filterServices[$filterService->getType()] = $filterService; + } + } + + public function create(string $type): mixed + { + if(!array_key_exists($type, $this->filterServices)) { + throw new InvalidFilterServiceTypeException(400, "Unknown filter type: $type"); + } + + return $this->filterServices[$type]; + } +} diff --git a/src/Filter/Service/FilterServiceProviderInterface.php b/src/Filter/Service/FilterServiceProviderInterface.php new file mode 100644 index 000000000..f6c6e510e --- /dev/null +++ b/src/Filter/Service/FilterServiceProviderInterface.php @@ -0,0 +1,22 @@ +taggedFilterServices]; + } +} diff --git a/src/Service/IconService.php b/src/Icon/Service/IconService.php similarity index 96% rename from src/Service/IconService.php rename to src/Icon/Service/IconService.php index b0856c27b..99daba989 100644 --- a/src/Service/IconService.php +++ b/src/Icon/Service/IconService.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service; +namespace Pimcore\Bundle\StudioBackendBundle\Icon\Service; final class IconService implements IconServiceInterface { diff --git a/src/Service/IconServiceInterface.php b/src/Icon/Service/IconServiceInterface.php similarity index 90% rename from src/Service/IconServiceInterface.php rename to src/Icon/Service/IconServiceInterface.php index 43997b850..6579c2d52 100644 --- a/src/Service/IconServiceInterface.php +++ b/src/Icon/Service/IconServiceInterface.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service; +namespace Pimcore\Bundle\StudioBackendBundle\Icon\Service; interface IconServiceInterface { diff --git a/src/Installer.php b/src/Installer.php index bc979b98c..5ead04119 100644 --- a/src/Installer.php +++ b/src/Installer.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle; +namespace Pimcore\Bundle\StudioBackendBundle; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Exception; @@ -22,7 +22,7 @@ use Doctrine\DBAL\Schema\Comparator; use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Schema\SchemaException; -use Pimcore\Bundle\StudioApiBundle\Service\TranslatorService; +use Pimcore\Bundle\StudioBackendBundle\Translation\Service\TranslatorService; use Pimcore\Extension\Bundle\Installer\Exception\InstallationException; use Pimcore\Extension\Bundle\Installer\SettingsStoreAwareInstaller; use Symfony\Component\HttpKernel\Bundle\BundleInterface; diff --git a/src/Attributes/Parameters/Path/IdParameter.php b/src/OpenApi/Attributes/Parameters/Path/IdParameter.php similarity index 92% rename from src/Attributes/Parameters/Path/IdParameter.php rename to src/OpenApi/Attributes/Parameters/Path/IdParameter.php index 8a1c06b2a..8e7a35276 100644 --- a/src/Attributes/Parameters/Path/IdParameter.php +++ b/src/OpenApi/Attributes/Parameters/Path/IdParameter.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Parameters\Path; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Parameters\Path; use Attribute; use OpenApi\Attributes\PathParameter; diff --git a/src/Attributes/Parameters/Query/ClassNameParameter.php b/src/OpenApi/Attributes/Parameters/Query/ClassNameParameter.php similarity index 94% rename from src/Attributes/Parameters/Query/ClassNameParameter.php rename to src/OpenApi/Attributes/Parameters/Query/ClassNameParameter.php index 1d7cc8a15..4e6305cf7 100644 --- a/src/Attributes/Parameters/Query/ClassNameParameter.php +++ b/src/OpenApi/Attributes/Parameters/Query/ClassNameParameter.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Parameters\Query; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Parameters\Query; use Attribute; use OpenApi\Attributes\QueryParameter; diff --git a/src/Attributes/Parameters/Query/ExcludeFoldersParameter.php b/src/OpenApi/Attributes/Parameters/Query/ExcludeFoldersParameter.php similarity index 92% rename from src/Attributes/Parameters/Query/ExcludeFoldersParameter.php rename to src/OpenApi/Attributes/Parameters/Query/ExcludeFoldersParameter.php index ec2846619..c89cbaea9 100644 --- a/src/Attributes/Parameters/Query/ExcludeFoldersParameter.php +++ b/src/OpenApi/Attributes/Parameters/Query/ExcludeFoldersParameter.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Parameters\Query; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Parameters\Query; use Attribute; use OpenApi\Attributes\QueryParameter; diff --git a/src/Attributes/Parameters/Query/IdSearchTermParameter.php b/src/OpenApi/Attributes/Parameters/Query/IdSearchTermParameter.php similarity index 92% rename from src/Attributes/Parameters/Query/IdSearchTermParameter.php rename to src/OpenApi/Attributes/Parameters/Query/IdSearchTermParameter.php index a1a3f75b5..80f3b1cc2 100644 --- a/src/Attributes/Parameters/Query/IdSearchTermParameter.php +++ b/src/OpenApi/Attributes/Parameters/Query/IdSearchTermParameter.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Parameters\Query; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Parameters\Query; use Attribute; use OpenApi\Attributes\QueryParameter; diff --git a/src/Attributes/Parameters/Query/PageParameter.php b/src/OpenApi/Attributes/Parameters/Query/PageParameter.php similarity index 92% rename from src/Attributes/Parameters/Query/PageParameter.php rename to src/OpenApi/Attributes/Parameters/Query/PageParameter.php index fc960c335..ce73bd629 100644 --- a/src/Attributes/Parameters/Query/PageParameter.php +++ b/src/OpenApi/Attributes/Parameters/Query/PageParameter.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Parameters\Query; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Parameters\Query; use Attribute; use OpenApi\Attributes\QueryParameter; diff --git a/src/Attributes/Parameters/Query/PageSizeParameter.php b/src/OpenApi/Attributes/Parameters/Query/PageSizeParameter.php similarity index 92% rename from src/Attributes/Parameters/Query/PageSizeParameter.php rename to src/OpenApi/Attributes/Parameters/Query/PageSizeParameter.php index 2ac0a3f00..7b572e13f 100644 --- a/src/Attributes/Parameters/Query/PageSizeParameter.php +++ b/src/OpenApi/Attributes/Parameters/Query/PageSizeParameter.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Parameters\Query; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Parameters\Query; use Attribute; use OpenApi\Attributes\QueryParameter; diff --git a/src/Attributes/Parameters/Query/ParentIdParameter.php b/src/OpenApi/Attributes/Parameters/Query/ParentIdParameter.php similarity index 92% rename from src/Attributes/Parameters/Query/ParentIdParameter.php rename to src/OpenApi/Attributes/Parameters/Query/ParentIdParameter.php index 98129cbd7..950e214ad 100644 --- a/src/Attributes/Parameters/Query/ParentIdParameter.php +++ b/src/OpenApi/Attributes/Parameters/Query/ParentIdParameter.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Parameters\Query; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Parameters\Query; use Attribute; use OpenApi\Attributes\QueryParameter; diff --git a/src/Attributes/Parameters/Query/PathIncludeDescendantsParameter.php b/src/OpenApi/Attributes/Parameters/Query/PathIncludeDescendantsParameter.php similarity index 92% rename from src/Attributes/Parameters/Query/PathIncludeDescendantsParameter.php rename to src/OpenApi/Attributes/Parameters/Query/PathIncludeDescendantsParameter.php index 8ea6a4ed8..620e214e0 100644 --- a/src/Attributes/Parameters/Query/PathIncludeDescendantsParameter.php +++ b/src/OpenApi/Attributes/Parameters/Query/PathIncludeDescendantsParameter.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Parameters\Query; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Parameters\Query; use Attribute; use OpenApi\Attributes\QueryParameter; diff --git a/src/Attributes/Parameters/Query/PathIncludeParentParameter.php b/src/OpenApi/Attributes/Parameters/Query/PathIncludeParentParameter.php similarity index 92% rename from src/Attributes/Parameters/Query/PathIncludeParentParameter.php rename to src/OpenApi/Attributes/Parameters/Query/PathIncludeParentParameter.php index fd1d00e19..218b9b2aa 100644 --- a/src/Attributes/Parameters/Query/PathIncludeParentParameter.php +++ b/src/OpenApi/Attributes/Parameters/Query/PathIncludeParentParameter.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Parameters\Query; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Parameters\Query; use Attribute; use OpenApi\Attributes\QueryParameter; diff --git a/src/Attributes/Parameters/Query/PathParameter.php b/src/OpenApi/Attributes/Parameters/Query/PathParameter.php similarity index 92% rename from src/Attributes/Parameters/Query/PathParameter.php rename to src/OpenApi/Attributes/Parameters/Query/PathParameter.php index b388de774..fe78751fc 100644 --- a/src/Attributes/Parameters/Query/PathParameter.php +++ b/src/OpenApi/Attributes/Parameters/Query/PathParameter.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Parameters\Query; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Parameters\Query; use Attribute; use OpenApi\Attributes\QueryParameter; diff --git a/src/Attributes/Request/CredentialsRequestBody.php b/src/OpenApi/Attributes/Request/CredentialsRequestBody.php similarity index 85% rename from src/Attributes/Request/CredentialsRequestBody.php rename to src/OpenApi/Attributes/Request/CredentialsRequestBody.php index db9afb706..0a512ed31 100644 --- a/src/Attributes/Request/CredentialsRequestBody.php +++ b/src/OpenApi/Attributes/Request/CredentialsRequestBody.php @@ -14,12 +14,12 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Request; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Request; use Attribute; use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\RequestBody; -use Pimcore\Bundle\StudioApiBundle\Request\Credentials; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Schema\Credentials; #[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD | Attribute::IS_REPEATABLE)] final class CredentialsRequestBody extends RequestBody diff --git a/src/Attributes/Request/TokenRequestBody.php b/src/OpenApi/Attributes/Request/TokenRequestBody.php similarity index 85% rename from src/Attributes/Request/TokenRequestBody.php rename to src/OpenApi/Attributes/Request/TokenRequestBody.php index 72e0363be..8ff3bf837 100644 --- a/src/Attributes/Request/TokenRequestBody.php +++ b/src/OpenApi/Attributes/Request/TokenRequestBody.php @@ -14,12 +14,12 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Request; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Request; use Attribute; use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\RequestBody; -use Pimcore\Bundle\StudioApiBundle\Request\Query\Refresh; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Schema\Refresh; #[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD | Attribute::IS_REPEATABLE)] final class TokenRequestBody extends RequestBody diff --git a/src/Attributes/Request/TranslationRequestBody.php b/src/OpenApi/Attributes/Request/TranslationRequestBody.php similarity index 85% rename from src/Attributes/Request/TranslationRequestBody.php rename to src/OpenApi/Attributes/Request/TranslationRequestBody.php index 9b48aa56e..6ff8134cc 100644 --- a/src/Attributes/Request/TranslationRequestBody.php +++ b/src/OpenApi/Attributes/Request/TranslationRequestBody.php @@ -14,12 +14,12 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Request; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Request; use Attribute; use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\RequestBody; -use Pimcore\Bundle\StudioApiBundle\Request\Query\Translation; +use Pimcore\Bundle\StudioBackendBundle\Translation\Schema\Translation; #[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD | Attribute::IS_REPEATABLE)] final class TranslationRequestBody extends RequestBody diff --git a/src/Attributes/Response/Content/CollectionJson.php b/src/OpenApi/Attributes/Response/Content/CollectionJson.php similarity index 91% rename from src/Attributes/Response/Content/CollectionJson.php rename to src/OpenApi/Attributes/Response/Content/CollectionJson.php index 11188cfeb..539d98d3e 100644 --- a/src/Attributes/Response/Content/CollectionJson.php +++ b/src/OpenApi/Attributes/Response/Content/CollectionJson.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Response\Content; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Content; use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\Property; diff --git a/src/Attributes/Response/Content/OneOfAssetJson.php b/src/OpenApi/Attributes/Response/Content/OneOfAssetJson.php similarity index 85% rename from src/Attributes/Response/Content/OneOfAssetJson.php rename to src/OpenApi/Attributes/Response/Content/OneOfAssetJson.php index afaa0b80c..83dd20292 100644 --- a/src/Attributes/Response/Content/OneOfAssetJson.php +++ b/src/OpenApi/Attributes/Response/Content/OneOfAssetJson.php @@ -14,11 +14,11 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Response\Content; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Content; use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Schemas; +use Pimcore\Bundle\StudioBackendBundle\Response\Schemas; /** * @internal diff --git a/src/Attributes/Response/Error/BadRequestResponse.php b/src/OpenApi/Attributes/Response/Error/BadRequestResponse.php similarity index 88% rename from src/Attributes/Response/Error/BadRequestResponse.php rename to src/OpenApi/Attributes/Response/Error/BadRequestResponse.php index 6140f9f25..1a6eb06ac 100644 --- a/src/Attributes/Response/Error/BadRequestResponse.php +++ b/src/OpenApi/Attributes/Response/Error/BadRequestResponse.php @@ -14,13 +14,13 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error; use Attribute; use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\Response; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Schemas; +use Pimcore\Bundle\StudioBackendBundle\Response\Schemas; #[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD | Attribute::IS_REPEATABLE)] final class BadRequestResponse extends Response diff --git a/src/Attributes/Response/Error/MethodNotAllowedResponse.php b/src/OpenApi/Attributes/Response/Error/MethodNotAllowedResponse.php similarity index 88% rename from src/Attributes/Response/Error/MethodNotAllowedResponse.php rename to src/OpenApi/Attributes/Response/Error/MethodNotAllowedResponse.php index 943828f99..bc4632e42 100644 --- a/src/Attributes/Response/Error/MethodNotAllowedResponse.php +++ b/src/OpenApi/Attributes/Response/Error/MethodNotAllowedResponse.php @@ -14,13 +14,13 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error; use Attribute; use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\Response; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Schemas; +use Pimcore\Bundle\StudioBackendBundle\Response\Schemas; #[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD | Attribute::IS_REPEATABLE)] final class MethodNotAllowedResponse extends Response diff --git a/src/Attributes/Response/Error/UnauthorizedResponse.php b/src/OpenApi/Attributes/Response/Error/UnauthorizedResponse.php similarity index 88% rename from src/Attributes/Response/Error/UnauthorizedResponse.php rename to src/OpenApi/Attributes/Response/Error/UnauthorizedResponse.php index dd25c2f46..78fdd1c3a 100644 --- a/src/Attributes/Response/Error/UnauthorizedResponse.php +++ b/src/OpenApi/Attributes/Response/Error/UnauthorizedResponse.php @@ -14,13 +14,13 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error; use Attribute; use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\Response; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Schemas; +use Pimcore\Bundle\StudioBackendBundle\Response\Schemas; #[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD | Attribute::IS_REPEATABLE)] final class UnauthorizedResponse extends Response diff --git a/src/Attributes/Response/Error/UnprocessableContentResponse.php b/src/OpenApi/Attributes/Response/Error/UnprocessableContentResponse.php similarity index 91% rename from src/Attributes/Response/Error/UnprocessableContentResponse.php rename to src/OpenApi/Attributes/Response/Error/UnprocessableContentResponse.php index 26d052d96..29e0bc394 100644 --- a/src/Attributes/Response/Error/UnprocessableContentResponse.php +++ b/src/OpenApi/Attributes/Response/Error/UnprocessableContentResponse.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error; use Attribute; use OpenApi\Attributes\Response; diff --git a/src/Attributes/Response/Error/UnsupportedMediaTypeResponse.php b/src/OpenApi/Attributes/Response/Error/UnsupportedMediaTypeResponse.php similarity index 88% rename from src/Attributes/Response/Error/UnsupportedMediaTypeResponse.php rename to src/OpenApi/Attributes/Response/Error/UnsupportedMediaTypeResponse.php index e96fd4d38..d5a6018d2 100644 --- a/src/Attributes/Response/Error/UnsupportedMediaTypeResponse.php +++ b/src/OpenApi/Attributes/Response/Error/UnsupportedMediaTypeResponse.php @@ -14,13 +14,13 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error; use Attribute; use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\Response; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Schemas; +use Pimcore\Bundle\StudioBackendBundle\Response\Schemas; #[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD | Attribute::IS_REPEATABLE)] final class UnsupportedMediaTypeResponse extends Response diff --git a/src/Attributes/Response/Property/AnyOfAsset.php b/src/OpenApi/Attributes/Response/Property/AnyOfAsset.php similarity index 87% rename from src/Attributes/Response/Property/AnyOfAsset.php rename to src/OpenApi/Attributes/Response/Property/AnyOfAsset.php index 577fb6871..2690cc47a 100644 --- a/src/Attributes/Response/Property/AnyOfAsset.php +++ b/src/OpenApi/Attributes/Response/Property/AnyOfAsset.php @@ -14,12 +14,12 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Response\Property; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Property; use OpenApi\Attributes\Items; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Schemas; +use Pimcore\Bundle\StudioBackendBundle\Response\Schemas; /** * @internal diff --git a/src/Attributes/Response/Property/DataObjectCollection.php b/src/OpenApi/Attributes/Response/Property/DataObjectCollection.php similarity index 86% rename from src/Attributes/Response/Property/DataObjectCollection.php rename to src/OpenApi/Attributes/Response/Property/DataObjectCollection.php index bc3d09c2b..853f984d5 100644 --- a/src/Attributes/Response/Property/DataObjectCollection.php +++ b/src/OpenApi/Attributes/Response/Property/DataObjectCollection.php @@ -14,12 +14,12 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Response\Property; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Property; use OpenApi\Attributes\Items; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\DataObject; +use Pimcore\Bundle\StudioBackendBundle\DataObject\Schema\DataObject; /** * @internal diff --git a/src/Attributes/Response/SuccessResponse.php b/src/OpenApi/Attributes/Response/SuccessResponse.php similarity index 92% rename from src/Attributes/Response/SuccessResponse.php rename to src/OpenApi/Attributes/Response/SuccessResponse.php index 51a2a9eb2..431e4d77e 100644 --- a/src/Attributes/Response/SuccessResponse.php +++ b/src/OpenApi/Attributes/Response/SuccessResponse.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Attributes\Response; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response; use Attribute; use OpenApi\Attributes\Response; diff --git a/src/Config/OpenApi/Security.php b/src/OpenApi/Config/Security.php similarity index 92% rename from src/Config/OpenApi/Security.php rename to src/OpenApi/Config/Security.php index 8b81fee65..d25ff43f0 100644 --- a/src/Config/OpenApi/Security.php +++ b/src/OpenApi/Config/Security.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Config\OpenApi; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Config; use OpenApi\Attributes\SecurityScheme; diff --git a/src/Config/OpenApi/Spec.php b/src/OpenApi/Config/Spec.php similarity index 91% rename from src/Config/OpenApi/Spec.php rename to src/OpenApi/Config/Spec.php index d00d102a6..6d86b295b 100644 --- a/src/Config/OpenApi/Spec.php +++ b/src/OpenApi/Config/Spec.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Config\OpenApi; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Config; use OpenApi\Attributes\Info; use OpenApi\Attributes\License; @@ -26,7 +26,7 @@ #[Info( version: '0.0.1', description: 'API for Studio generated by OpenApi Generator via zircote/swagger-php', - title: 'Studio API' + title: 'Studio Backend API' )] #[License( name: 'GNU General Public License version 3 & Pimcore Commercial License', diff --git a/src/Config/Tags.php b/src/OpenApi/Config/Tags.php similarity index 94% rename from src/Config/Tags.php rename to src/OpenApi/Config/Tags.php index 62c6c5add..e6ab5cc14 100644 --- a/src/Config/Tags.php +++ b/src/OpenApi/Config/Tags.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Config; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Config; use OpenApi\Attributes\Tag; diff --git a/src/Controller/Api/OpenApiController.php b/src/OpenApi/Controller/OpenApiController.php similarity index 84% rename from src/Controller/Api/OpenApiController.php rename to src/OpenApi/Controller/OpenApiController.php index 03b7b5c45..69bdabbb3 100644 --- a/src/Controller/Api/OpenApiController.php +++ b/src/OpenApi/Controller/OpenApiController.php @@ -14,9 +14,9 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Controller\Api; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Controller; -use Pimcore\Bundle\StudioApiBundle\Service\OpenApiServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Service\OpenApiServiceInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; @@ -34,7 +34,7 @@ public function __construct(private readonly OpenApiServiceInterface $openApiSer #[Route('/docs', name: 'pimcore_studio_api_docs', methods: ['GET'], condition: "'dev' === '%kernel.environment%'")] public function index(): Response { - return $this->render('@PimcoreStudioApi/swagger-ui/index.html.twig'); + return $this->render('@PimcoreStudioBackend/swagger-ui/index.html.twig'); } #[Route('/docs.json', name: 'pimcore_studio_api_docs_json', methods: ['GET'])] diff --git a/src/OpenApi/Service/OpenApiService.php b/src/OpenApi/Service/OpenApiService.php new file mode 100644 index 000000000..2599d0cd7 --- /dev/null +++ b/src/OpenApi/Service/OpenApiService.php @@ -0,0 +1,32 @@ +openApiScanPaths]); + } +} diff --git a/src/Service/OpenApiServiceInterface.php b/src/OpenApi/Service/OpenApiServiceInterface.php similarity index 90% rename from src/Service/OpenApiServiceInterface.php rename to src/OpenApi/Service/OpenApiServiceInterface.php index b0c6af025..609c989b5 100644 --- a/src/Service/OpenApiServiceInterface.php +++ b/src/OpenApi/Service/OpenApiServiceInterface.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service; +namespace Pimcore\Bundle\StudioBackendBundle\OpenApi\Service; use OpenApi\Annotations\OpenApi; diff --git a/src/PimcoreStudioApiBundle.php b/src/PimcoreStudioBackendBundle.php similarity index 66% rename from src/PimcoreStudioApiBundle.php rename to src/PimcoreStudioBackendBundle.php index 3436c892c..ebdb5435a 100644 --- a/src/PimcoreStudioApiBundle.php +++ b/src/PimcoreStudioBackendBundle.php @@ -14,18 +14,18 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle; +namespace Pimcore\Bundle\StudioBackendBundle; use Pimcore\Bundle\GenericDataIndexBundle\PimcoreGenericDataIndexBundle; use Pimcore\Bundle\StaticResolverBundle\PimcoreStaticResolverBundle; -use Pimcore\Bundle\StudioApiBundle\DependencyInjection\CompilerPass\FilterPass; +use Pimcore\Bundle\StudioBackendBundle\DependencyInjection\CompilerPass\FilterPass; use Pimcore\Extension\Bundle\AbstractPimcoreBundle; use Pimcore\Extension\Bundle\Installer\InstallerInterface; use Pimcore\HttpKernel\Bundle\DependentBundleInterface; use Pimcore\HttpKernel\BundleCollection\BundleCollection; use Symfony\Component\DependencyInjection\ContainerBuilder; -class PimcoreStudioApiBundle extends AbstractPimcoreBundle implements DependentBundleInterface +class PimcoreStudioBackendBundle extends AbstractPimcoreBundle implements DependentBundleInterface { public function getPath(): string { @@ -35,20 +35,20 @@ public function getPath(): string public function getJsPaths(): array { return [ - '/bundles/pimcorestudioapi/js/swagger-ui/swagger-ui.js', - '/bundles/pimcorestudioapi/js/swagger-ui/swagger-ui-bundle.js', - '/bundles/pimcorestudioapi/js/swagger-ui/swagger-ui-es-bundle.js', - '/bundles/pimcorestudioapi/js/swagger-ui/swagger-ui-es-bundle-core.js', - '/bundles/pimcorestudioapi/js/swagger-ui/swagger-ui-standalone-preset.js', + '/bundles/pimcorestudiobackend/js/swagger-ui/swagger-ui.js', + '/bundles/pimcorestudiobackend/js/swagger-ui/swagger-ui-bundle.js', + '/bundles/pimcorestudiobackend/js/swagger-ui/swagger-ui-es-bundle.js', + '/bundles/pimcorestudiobackend/js/swagger-ui/swagger-ui-es-bundle-core.js', + '/bundles/pimcorestudiobackend/js/swagger-ui/swagger-ui-standalone-preset.js', ]; } public function getCssPaths(): array { return [ - '/bundles/pimcorestudioapi/css/styles.css', - '/bundles/pimcorestudioapi/css/swagger-ui/index.css', - '/bundles/pimcorestudioapi/css/swagger-ui/swagger-ui.css', + '/bundles/pimcorestudiobackend/css/styles.css', + '/bundles/pimcorestudiobackend/css/swagger-ui/index.css', + '/bundles/pimcorestudiobackend/css/swagger-ui/swagger-ui.css', ]; } diff --git a/src/Request/Query/Filter/CollectionParameters.php b/src/Request/CollectionParameters.php similarity index 95% rename from src/Request/Query/Filter/CollectionParameters.php rename to src/Request/CollectionParameters.php index 5e2f05dd7..6d0a7233b 100644 --- a/src/Request/Query/Filter/CollectionParameters.php +++ b/src/Request/CollectionParameters.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Request\Query\Filter; +namespace Pimcore\Bundle\StudioBackendBundle\Request; use Pimcore\ValueObject\Integer\PositiveInteger; use Symfony\Component\Validator\Constraints\NotBlank; diff --git a/src/Request/Query/Filter/CollectionParametersInterface.php b/src/Request/CollectionParametersInterface.php similarity index 90% rename from src/Request/Query/Filter/CollectionParametersInterface.php rename to src/Request/CollectionParametersInterface.php index 12e7a5362..7da7fbe87 100644 --- a/src/Request/Query/Filter/CollectionParametersInterface.php +++ b/src/Request/CollectionParametersInterface.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Request\Query\Filter; +namespace Pimcore\Bundle\StudioBackendBundle\Request; /** * @internal diff --git a/src/Response/Collection.php b/src/Response/Collection.php index 9d8c8e85c..5aeb8342f 100644 --- a/src/Response/Collection.php +++ b/src/Response/Collection.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response; +namespace Pimcore\Bundle\StudioBackendBundle\Response; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; diff --git a/src/Response/Element.php b/src/Response/Element.php index 762f06a31..11da4572f 100644 --- a/src/Response/Element.php +++ b/src/Response/Element.php @@ -14,11 +14,11 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response; +namespace Pimcore\Bundle\StudioBackendBundle\Response; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Permissions; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Permissions; #[Schema( title: 'Element', diff --git a/src/Response/Schema/DevError.php b/src/Response/Schema/DevError.php index b4fc9cc9a..bfbf1678f 100644 --- a/src/Response/Schema/DevError.php +++ b/src/Response/Schema/DevError.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Schema; +namespace Pimcore\Bundle\StudioBackendBundle\Response\Schema; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; diff --git a/src/Response/Schema/Error.php b/src/Response/Schema/Error.php index e6e4d6bd2..d20680688 100644 --- a/src/Response/Schema/Error.php +++ b/src/Response/Schema/Error.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response\Schema; +namespace Pimcore\Bundle\StudioBackendBundle\Response\Schema; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; diff --git a/src/Response/Schemas.php b/src/Response/Schemas.php index c7f2ead0c..198efe244 100644 --- a/src/Response/Schemas.php +++ b/src/Response/Schemas.php @@ -14,18 +14,18 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Response; +namespace Pimcore\Bundle\StudioBackendBundle\Response; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Archive; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Audio; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Document; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Folder; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Image; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Text; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Unknown; -use Pimcore\Bundle\StudioApiBundle\Response\Asset\Video; -use Pimcore\Bundle\StudioApiBundle\Response\Schema\DevError; -use Pimcore\Bundle\StudioApiBundle\Response\Schema\Error; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Archive; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Audio; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Document; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Folder; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Image; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Text; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Unknown; +use Pimcore\Bundle\StudioBackendBundle\Asset\Schema\Type\Video; +use Pimcore\Bundle\StudioBackendBundle\Response\Schema\DevError; +use Pimcore\Bundle\StudioBackendBundle\Response\Schema\Error; /** * @internal diff --git a/src/Service/SecurityService.php b/src/Security/Service/SecurityService.php similarity index 90% rename from src/Service/SecurityService.php rename to src/Security/Service/SecurityService.php index 2eb4115a1..a43c42b4c 100644 --- a/src/Service/SecurityService.php +++ b/src/Security/Service/SecurityService.php @@ -14,11 +14,11 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service; +namespace Pimcore\Bundle\StudioBackendBundle\Security\Service; use Pimcore\Bundle\StaticResolverBundle\Models\Tool\TmpStoreResolverInterface; -use Pimcore\Bundle\StudioApiBundle\Exception\AccessDeniedException; -use Pimcore\Bundle\StudioApiBundle\Request\Credentials; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Schema\Credentials; +use Pimcore\Bundle\StudioBackendBundle\Exception\AccessDeniedException; use Pimcore\Security\User\UserProvider; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Security\Core\Exception\UserNotFoundException; diff --git a/src/Service/SecurityServiceInterface.php b/src/Security/Service/SecurityServiceInterface.php similarity index 84% rename from src/Service/SecurityServiceInterface.php rename to src/Security/Service/SecurityServiceInterface.php index 71e98d769..6452b49fb 100644 --- a/src/Service/SecurityServiceInterface.php +++ b/src/Security/Service/SecurityServiceInterface.php @@ -14,9 +14,9 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service; +namespace Pimcore\Bundle\StudioBackendBundle\Security\Service; -use Pimcore\Bundle\StudioApiBundle\Request\Credentials; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Schema\Credentials; use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; /** diff --git a/src/Security/Voter/AuthorizationVoter.php b/src/Security/Voter/AuthorizationVoter.php index bbbad1472..fb0187d86 100644 --- a/src/Security/Voter/AuthorizationVoter.php +++ b/src/Security/Voter/AuthorizationVoter.php @@ -14,12 +14,12 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Security\Voter; +namespace Pimcore\Bundle\StudioBackendBundle\Security\Voter; -use Pimcore\Bundle\StudioApiBundle\Exception\NoRequestException; -use Pimcore\Bundle\StudioApiBundle\Exception\NotAuthorizedException; -use Pimcore\Bundle\StudioApiBundle\Security\Trait\RequestTrait; -use Pimcore\Bundle\StudioApiBundle\Service\SecurityServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Exception\NoRequestException; +use Pimcore\Bundle\StudioBackendBundle\Exception\NotAuthorizedException; +use Pimcore\Bundle\StudioBackendBundle\Security\Service\SecurityServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Util\Traits\RequestTrait; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; diff --git a/src/Security/Voter/PublicAuthorizationVoter.php b/src/Security/Voter/PublicAuthorizationVoter.php index d90c39d20..7a5f25e0c 100644 --- a/src/Security/Voter/PublicAuthorizationVoter.php +++ b/src/Security/Voter/PublicAuthorizationVoter.php @@ -14,14 +14,14 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Security\Voter; +namespace Pimcore\Bundle\StudioBackendBundle\Security\Voter; -use Pimcore\Bundle\StudioApiBundle\Exception\NonPublicTranslationException; -use Pimcore\Bundle\StudioApiBundle\Exception\NoRequestException; -use Pimcore\Bundle\StudioApiBundle\Exception\NotAuthorizedException; -use Pimcore\Bundle\StudioApiBundle\Security\Trait\PublicTranslationTrait; -use Pimcore\Bundle\StudioApiBundle\Security\Trait\RequestTrait; -use Pimcore\Bundle\StudioApiBundle\Service\SecurityServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Exception\NonPublicTranslationException; +use Pimcore\Bundle\StudioBackendBundle\Exception\NoRequestException; +use Pimcore\Bundle\StudioBackendBundle\Exception\NotAuthorizedException; +use Pimcore\Bundle\StudioBackendBundle\Security\Service\SecurityServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Util\Traits\PublicTranslationTrait; +use Pimcore\Bundle\StudioBackendBundle\Util\Traits\RequestTrait; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpKernel\Attribute\MapRequestPayload; diff --git a/src/Service/AssetSearchServiceInterface.php b/src/Service/AssetSearchServiceInterface.php deleted file mode 100644 index 5a49605a5..000000000 --- a/src/Service/AssetSearchServiceInterface.php +++ /dev/null @@ -1,35 +0,0 @@ -openApiScanPaths]); - } -} diff --git a/src/Controller/Api/TranslationController.php b/src/Translation/Controller/TranslationController.php similarity index 71% rename from src/Controller/Api/TranslationController.php rename to src/Translation/Controller/TranslationController.php index 0cbf60c5d..637f94f4c 100644 --- a/src/Controller/Api/TranslationController.php +++ b/src/Translation/Controller/TranslationController.php @@ -14,19 +14,20 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Controller\Api; +namespace Pimcore\Bundle\StudioBackendBundle\Translation\Controller; use OpenApi\Attributes\JsonContent; use OpenApi\Attributes\Post; -use Pimcore\Bundle\StudioApiBundle\Attributes\Request\TranslationRequestBody; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\MethodNotAllowedResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\UnauthorizedResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\UnprocessableContentResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\Error\UnsupportedMediaTypeResponse; -use Pimcore\Bundle\StudioApiBundle\Attributes\Response\SuccessResponse; -use Pimcore\Bundle\StudioApiBundle\Config\Tags; -use Pimcore\Bundle\StudioApiBundle\Request\Query\Translation; -use Pimcore\Bundle\StudioApiBundle\Service\TranslatorServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Controller\AbstractApiController; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Request\TranslationRequestBody; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\MethodNotAllowedResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\UnauthorizedResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\UnprocessableContentResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\Error\UnsupportedMediaTypeResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attributes\Response\SuccessResponse; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Config\Tags; +use Pimcore\Bundle\StudioBackendBundle\Translation\Schema\Translation; +use Pimcore\Bundle\StudioBackendBundle\Translation\Service\TranslatorServiceInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\Attribute\MapRequestPayload; use Symfony\Component\Routing\Attribute\Route; diff --git a/src/Request/Query/Translation.php b/src/Translation/Schema/Translation.php similarity index 90% rename from src/Request/Query/Translation.php rename to src/Translation/Schema/Translation.php index 94328355f..17d77b7bc 100644 --- a/src/Request/Query/Translation.php +++ b/src/Translation/Schema/Translation.php @@ -14,12 +14,12 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Request\Query; +namespace Pimcore\Bundle\StudioBackendBundle\Translation\Schema; use OpenApi\Attributes\Items; use OpenApi\Attributes\Property; use OpenApi\Attributes\Schema; -use Pimcore\Bundle\StudioApiBundle\Util\Constants\PublicTranslations; +use Pimcore\Bundle\StudioBackendBundle\Util\Constants\PublicTranslations; /** * @internal diff --git a/src/Service/TranslatorService.php b/src/Translation/Service/TranslatorService.php similarity index 92% rename from src/Service/TranslatorService.php rename to src/Translation/Service/TranslatorService.php index 60b6ecab7..2f38853a3 100644 --- a/src/Service/TranslatorService.php +++ b/src/Translation/Service/TranslatorService.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service; +namespace Pimcore\Bundle\StudioBackendBundle\Translation\Service; use InvalidArgumentException; -use Pimcore\Bundle\StudioApiBundle\Request\Query\Translation; +use Pimcore\Bundle\StudioBackendBundle\Translation\Schema\Translation; use Symfony\Component\Translation\TranslatorBagInterface; use Symfony\Contracts\Translation\TranslatorInterface; diff --git a/src/Service/TranslatorServiceInterface.php b/src/Translation/Service/TranslatorServiceInterface.php similarity index 83% rename from src/Service/TranslatorServiceInterface.php rename to src/Translation/Service/TranslatorServiceInterface.php index 95768b0a4..8e41e3be2 100644 --- a/src/Service/TranslatorServiceInterface.php +++ b/src/Translation/Service/TranslatorServiceInterface.php @@ -14,9 +14,9 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Service; +namespace Pimcore\Bundle\StudioBackendBundle\Translation\Service; -use Pimcore\Bundle\StudioApiBundle\Request\Query\Translation; +use Pimcore\Bundle\StudioBackendBundle\Translation\Schema\Translation; /** * @internal diff --git a/src/Util/Constants/PublicTranslations.php b/src/Util/Constants/PublicTranslations.php index 27784c484..113b91a01 100644 --- a/src/Util/Constants/PublicTranslations.php +++ b/src/Util/Constants/PublicTranslations.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Util\Constants; +namespace Pimcore\Bundle\StudioBackendBundle\Util\Constants; /** * @internal diff --git a/src/Util/Traits/MustImplementInterfaceTrait.php b/src/Util/Traits/MustImplementInterfaceTrait.php index 44f2d71b2..1a656279e 100644 --- a/src/Util/Traits/MustImplementInterfaceTrait.php +++ b/src/Util/Traits/MustImplementInterfaceTrait.php @@ -14,9 +14,9 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Util\Traits; +namespace Pimcore\Bundle\StudioBackendBundle\Util\Traits; -use Pimcore\Bundle\StudioApiBundle\Exception\MustImplementInterfaceException; +use Pimcore\Bundle\StudioBackendBundle\Exception\MustImplementInterfaceException; /** * @internal diff --git a/src/Controller/Trait/PaginatedResponseTrait.php b/src/Util/Traits/PaginatedResponseTrait.php similarity index 85% rename from src/Controller/Trait/PaginatedResponseTrait.php rename to src/Util/Traits/PaginatedResponseTrait.php index dd05a5758..db3fd0fed 100644 --- a/src/Controller/Trait/PaginatedResponseTrait.php +++ b/src/Util/Traits/PaginatedResponseTrait.php @@ -14,9 +14,9 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Controller\Trait; +namespace Pimcore\Bundle\StudioBackendBundle\Util\Traits; -use Pimcore\Bundle\StudioApiBundle\Response\Collection; +use Pimcore\Bundle\StudioBackendBundle\Response\Collection; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\Serializer\SerializerInterface; @@ -29,10 +29,10 @@ trait PaginatedResponseTrait protected function getPaginatedCollection( SerializerInterface $serializer, - array $data, + array $items, int $totalItems = 0 ): JsonResponse { - $serialized = $serializer->serialize(new Collection($totalItems, $data), 'json'); + $serialized = $serializer->serialize(new Collection($totalItems, $items), 'json'); return new JsonResponse($serialized, 200, [self::HEADER_TOTAL_ITEMS => $totalItems], true); } diff --git a/src/Security/Trait/PublicTranslationTrait.php b/src/Util/Traits/PublicTranslationTrait.php similarity index 86% rename from src/Security/Trait/PublicTranslationTrait.php rename to src/Util/Traits/PublicTranslationTrait.php index 566dac245..44bb12a9c 100644 --- a/src/Security/Trait/PublicTranslationTrait.php +++ b/src/Util/Traits/PublicTranslationTrait.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Security\Trait; +namespace Pimcore\Bundle\StudioBackendBundle\Util\Traits; -use Pimcore\Bundle\StudioApiBundle\Exception\NonPublicTranslationException; -use Pimcore\Bundle\StudioApiBundle\Util\Constants\PublicTranslations; +use Pimcore\Bundle\StudioBackendBundle\Exception\NonPublicTranslationException; +use Pimcore\Bundle\StudioBackendBundle\Util\Constants\PublicTranslations; use Symfony\Component\HttpFoundation\InputBag; /** diff --git a/src/Security/Trait/RequestTrait.php b/src/Util/Traits/RequestTrait.php similarity index 89% rename from src/Security/Trait/RequestTrait.php rename to src/Util/Traits/RequestTrait.php index 100d83b69..cc04dcba5 100644 --- a/src/Security/Trait/RequestTrait.php +++ b/src/Util/Traits/RequestTrait.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Security\Trait; +namespace Pimcore\Bundle\StudioBackendBundle\Util\Traits; -use Pimcore\Bundle\StudioApiBundle\Exception\NoRequestException; -use Pimcore\Bundle\StudioApiBundle\Exception\NotAuthorizedException; +use Pimcore\Bundle\StudioBackendBundle\Exception\NoRequestException; +use Pimcore\Bundle\StudioBackendBundle\Exception\NotAuthorizedException; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; diff --git a/src/EventSubscriber/StudioApiPathTrait.php b/src/Util/Traits/StudioBackendPathTrait.php similarity index 73% rename from src/EventSubscriber/StudioApiPathTrait.php rename to src/Util/Traits/StudioBackendPathTrait.php index 4c15cfc78..7a9113580 100644 --- a/src/EventSubscriber/StudioApiPathTrait.php +++ b/src/Util/Traits/StudioBackendPathTrait.php @@ -14,16 +14,16 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\EventSubscriber; +namespace Pimcore\Bundle\StudioBackendBundle\Util\Traits; -use Pimcore\Bundle\StudioApiBundle\Controller\Api\AbstractApiController; +use Pimcore\Bundle\StudioBackendBundle\Controller\AbstractApiController; /** * @internal */ -trait StudioApiPathTrait +trait StudioBackendPathTrait { - private function isStudioApiPath(string $path): bool + private function isStudioBackendPath(string $path): bool { return str_starts_with($path, AbstractApiController::API_PATH); } diff --git a/templates/swagger-ui/index.html.twig b/templates/swagger-ui/index.html.twig index 4bda73f78..804d5443c 100644 --- a/templates/swagger-ui/index.html.twig +++ b/templates/swagger-ui/index.html.twig @@ -3,9 +3,9 @@ - Pimcore Studio Api - - + Pimcore Studio Backend Api + + @@ -16,9 +16,9 @@
- - - + + + diff --git a/tests/Unit.suite.dist.yml b/tests/Unit.suite.dist.yml index e28e40175..122708133 100644 --- a/tests/Unit.suite.dist.yml +++ b/tests/Unit.suite.dist.yml @@ -1 +1 @@ -suite_namespace: Pimcore\Bundle\StudioApiBundle\Tests \ No newline at end of file +suite_namespace: Pimcore\Bundle\StudioBackendBundle\Tests \ No newline at end of file diff --git a/tests/Unit/DefaultTest.php b/tests/Unit/DefaultTest.php index 770c038e7..f492961d8 100644 --- a/tests/Unit/DefaultTest.php +++ b/tests/Unit/DefaultTest.php @@ -14,7 +14,7 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Tests\Unit; +namespace Pimcore\Bundle\StudioBackendBundle\Tests\Unit; use Codeception\Test\Unit; diff --git a/tests/Unit/Dto/Token/CreateTest.php b/tests/Unit/Dto/Token/CreateTest.php index 7d2831bda..53c0e211c 100644 --- a/tests/Unit/Dto/Token/CreateTest.php +++ b/tests/Unit/Dto/Token/CreateTest.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Tests\Unit\Dto\Token; +namespace Pimcore\Bundle\StudioBackendBundle\Tests\Unit\Dto\Token; use Codeception\Test\Unit; -use Pimcore\Bundle\StudioApiBundle\Request\Credentials; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Schema\Credentials; final class CreateTest extends Unit { diff --git a/tests/Unit/Dto/Token/InfoTest.php b/tests/Unit/Dto/Token/InfoTest.php index fb341b581..2988f8897 100644 --- a/tests/Unit/Dto/Token/InfoTest.php +++ b/tests/Unit/Dto/Token/InfoTest.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Tests\Unit\Dto\Token; +namespace Pimcore\Bundle\StudioBackendBundle\Tests\Unit\Dto\Token; use Codeception\Test\Unit; -use Pimcore\Bundle\StudioApiBundle\Dto\Token\Info; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Info; final class InfoTest extends Unit { diff --git a/tests/Unit/Dto/Token/RefreshTest.php b/tests/Unit/Dto/Token/RefreshTest.php index e0cd23e5b..96510fbbb 100644 --- a/tests/Unit/Dto/Token/RefreshTest.php +++ b/tests/Unit/Dto/Token/RefreshTest.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Tests\Unit\Dto\Token; +namespace Pimcore\Bundle\StudioBackendBundle\Tests\Unit\Dto\Token; use Codeception\Test\Unit; -use Pimcore\Bundle\StudioApiBundle\Request\Query\Refresh; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Schema\Refresh; final class RefreshTest extends Unit { diff --git a/tests/Unit/Dto/TranslationTest.php b/tests/Unit/Dto/TranslationTest.php index 964e962eb..541a1da6f 100644 --- a/tests/Unit/Dto/TranslationTest.php +++ b/tests/Unit/Dto/TranslationTest.php @@ -14,10 +14,10 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Tests\Unit\Dto; +namespace Pimcore\Bundle\StudioBackendBundle\Tests\Unit\Dto; use Codeception\Test\Unit; -use Pimcore\Bundle\StudioApiBundle\Request\Query\Translation; +use Pimcore\Bundle\StudioBackendBundle\Translation\Schema\Translation; final class TranslationTest extends Unit { diff --git a/tests/Unit/Service/Factory/QueryFactoryTest.php b/tests/Unit/Service/Factory/QueryFactoryTest.php index 5179df8af..15eb16087 100644 --- a/tests/Unit/Service/Factory/QueryFactoryTest.php +++ b/tests/Unit/Service/Factory/QueryFactoryTest.php @@ -14,20 +14,20 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Tests\Unit\Service\Factory; +namespace Pimcore\Bundle\StudioBackendBundle\Tests\Unit\Service\Factory; use Codeception\Test\Unit; use Exception; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\DataObject\DataObjectSearch; use Pimcore\Bundle\GenericDataIndexBundle\Model\Search\Interfaces\SearchInterface; use Pimcore\Bundle\StaticResolverBundle\Models\DataObject\ClassDefinitionResolverInterface; -use Pimcore\Bundle\StudioApiBundle\Exception\InvalidQueryTypeException; -use Pimcore\Bundle\StudioApiBundle\Factory\QueryFactory; -use Pimcore\Bundle\StudioApiBundle\Factory\QueryFactoryInterface; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\AssetQuery; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\AssetQueryProviderInterface; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\DataObjectQuery; -use Pimcore\Bundle\StudioApiBundle\Service\GenericData\V1\DataObjectQueryProviderInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider\AssetQueryProviderInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Provider\DataObjectQueryProviderInterface; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\AssetQuery; +use Pimcore\Bundle\StudioBackendBundle\DataIndex\Query\DataObjectQuery; +use Pimcore\Bundle\StudioBackendBundle\Exception\InvalidQueryTypeException; +use Pimcore\Bundle\StudioBackendBundle\Factory\QueryFactory; +use Pimcore\Bundle\StudioBackendBundle\Factory\QueryFactoryInterface; final class QueryFactoryTest extends Unit { diff --git a/tests/Unit/Service/OpenApi/OpenApiServiceTest.php b/tests/Unit/Service/OpenApi/OpenApiServiceTest.php index 91ab0473e..a386fb0ab 100644 --- a/tests/Unit/Service/OpenApi/OpenApiServiceTest.php +++ b/tests/Unit/Service/OpenApi/OpenApiServiceTest.php @@ -14,11 +14,11 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Tests\Unit\Service\OpenApi; +namespace Pimcore\Bundle\StudioBackendBundle\Tests\Unit\Service\OpenApi; use Codeception\Test\Unit; use ErrorException; -use Pimcore\Bundle\StudioApiBundle\Service\OpenApiService; +use Pimcore\Bundle\StudioBackendBundle\OpenApi\Service\OpenApiService; final class OpenApiServiceTest extends Unit { diff --git a/tests/Unit/Service/Security/SecurityServiceTest.php b/tests/Unit/Service/Security/SecurityServiceTest.php index e83dc2e79..4f33690a6 100644 --- a/tests/Unit/Service/Security/SecurityServiceTest.php +++ b/tests/Unit/Service/Security/SecurityServiceTest.php @@ -14,15 +14,15 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Tests\Unit\Service\Security; +namespace Pimcore\Bundle\StudioBackendBundle\Tests\Unit\Service\Security; use Codeception\Test\Unit; use Exception; use Pimcore\Bundle\StaticResolverBundle\Models\Tool\TmpStoreResolverInterface; -use Pimcore\Bundle\StudioApiBundle\Exception\AccessDeniedException; -use Pimcore\Bundle\StudioApiBundle\Request\Credentials; -use Pimcore\Bundle\StudioApiBundle\Service\SecurityService; -use Pimcore\Bundle\StudioApiBundle\Service\SecurityServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Authorization\Schema\Credentials; +use Pimcore\Bundle\StudioBackendBundle\Exception\AccessDeniedException; +use Pimcore\Bundle\StudioBackendBundle\Security\Service\SecurityService; +use Pimcore\Bundle\StudioBackendBundle\Security\Service\SecurityServiceInterface; use Pimcore\Model\Tool\TmpStore; use Pimcore\Security\User\User; use Pimcore\Security\User\UserProvider; diff --git a/tests/Unit/Service/Translator/TranslatorServiceTest.php b/tests/Unit/Service/Translator/TranslatorServiceTest.php index 1342955ce..9c154081a 100644 --- a/tests/Unit/Service/Translator/TranslatorServiceTest.php +++ b/tests/Unit/Service/Translator/TranslatorServiceTest.php @@ -14,13 +14,13 @@ * @license http://www.pimcore.org/license GPLv3 and PCL */ -namespace Pimcore\Bundle\StudioApiBundle\Tests\Unit\Service\Translator; +namespace Pimcore\Bundle\StudioBackendBundle\Tests\Unit\Service\Translator; use Codeception\Test\Unit; use Exception; -use Pimcore\Bundle\StudioApiBundle\Service\TranslatorService; -use Pimcore\Bundle\StudioApiBundle\Service\TranslatorServiceInterface; -use Pimcore\Bundle\StudioApiBundle\Util\Constants\PublicTranslations; +use Pimcore\Bundle\StudioBackendBundle\Translation\Service\TranslatorService; +use Pimcore\Bundle\StudioBackendBundle\Translation\Service\TranslatorServiceInterface; +use Pimcore\Bundle\StudioBackendBundle\Util\Constants\PublicTranslations; use Pimcore\Translation\Translator; final class TranslatorServiceTest extends Unit