diff --git a/.gitattributes b/.gitattributes index fc7cebdf6..d9946b2df 100644 --- a/.gitattributes +++ b/.gitattributes @@ -19,24 +19,24 @@ *.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 -*.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php *.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html -*.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php -*.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php +*.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php *.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 -*.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php -*.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php +*.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php *.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 -*.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php *.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 -*.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php *.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 -*.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php *.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 981d9c507..bd0c9f44f 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -2,7 +2,7 @@ on: pull_request name: CI Tests env: - PHP_VERSION: 8.0 + PHP_VERSION: 8.1 COMPOSER_VERSION: v2 jobs: diff --git a/.gitignore b/.gitignore index 13af53124..61b45832c 100644 --- a/.gitignore +++ b/.gitignore @@ -35,7 +35,8 @@ web/sites/simpletest .history .vscode -# Task environment file +# Task workspace and environment file +.task/ .task.env # drush contrib commands diff --git a/.lagoon.yml b/.lagoon.yml index 1e62b204d..f892f7784 100644 --- a/.lagoon.yml +++ b/.lagoon.yml @@ -72,7 +72,7 @@ environments: schedule: "M/30 * * * *" command: drush locale-check && drush locale-update service: cli - pr-481: + pr-521: cronjobs: - name: drush cron schedule: "M/15 * * * *" diff --git a/.pa11yci b/.pa11yci index 65e650790..731310af9 100644 --- a/.pa11yci +++ b/.pa11yci @@ -10,10 +10,6 @@ "timeout": 600000 }, "urls": [ - { - "url": "http://varnish:8080/", - "screenCapture": "/app/pa11y/screenshots/front-page.png" - }, { "url": "http://varnish:8080/search?q=harry+potter&x=0&y=0", "screenCapture": "/app/pa11y/screenshots/search-page.png" diff --git a/README.md b/README.md index becfd83f3..e64678483 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,13 @@ -# dpl-cms +# dpl-cms - The library CMS, powered by Drupal This is the main repository used for building the core Drupal CMS which is used by the danish public libraries. -## Running a local development +This repo uses styling from the +[dpl-design-system repo](https://github.com/danskernesdigitalebibliotek/dpl-design-system/). -If you want to develop and maintain the DPL cms project locally you can run: -`dev:reset`. The command builds the site with dependencies and starts the -required Docker containers. +You can find the full documentation, along with setup instructions in either the +[documentation site](https://danskernesdigitalebibliotek.github.io/dpl-docs/dpl-cms/), +or directly in [the docs folder](docs/) -## Prerequisites - -In order to run local development you need: - -* [`go-task`](https://taskfile.dev) -* Docker -* Preferably support for `VIRTUAL_HOST` environment variables for Docker - containers. Examples: [Dory (OSX)](https://github.com/FreedomBen/dory) or - [`nginx-proxy`](https://github.com/nginx-proxy/nginx-proxy). - -## Other initial steps - -If you are using a mac/OSX it is recommended to use [VirtioFS](https://virtio-fs.gitlab.io) -on the mounted volumes in docker-compose. - -In your Docker for mac preference you need to activate VirtioFS for directory sharing: - -![OSX preference pane providing access to VirtioFS](docs/images/virtiofs.png) - -## Building and publishing releases - -A release of dpl-cms can be build by pushing a tag that matches the following -pattern: - -```shell -# Replace with the version. -git tag - -# Eg. -git tag 1.2.3 -``` - -The actual release is performed by the `Publish source` Github action which -invokes `task source:deploy` which in turn uses the tasks `source:build` and -`source:push` to build and publish the release. - -Using the action should be the preferred choice for building and publishing -releases, but should you need to - it is possible to run the task manually -given you have the necessary permissions for pushing the resulting source-image. -Should you only need to produce the image, but not push it the task you can opt -for just invoking the `source:build` task. - -You can override the name of the built image and/or the destination registry -temporarily by providing a number of environment variables (see the -[Taskfile](Taskfile.yml)). To permanently change these configurations, eg. in -a fork, change the defaults directly in the `Taskfile.yml`. +**tl;dr:** Run `task dev:reset` to get the site up and running locally. diff --git a/Taskfile.yml b/Taskfile.yml index 854c68d09..05bf529df 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -69,13 +69,25 @@ tasks: - sh: "[ ! -z {{.CR_PAT}} ]" msg: "Env variable CR_PAT is not set or empty." + dev:build: + summary: Build docker containers + # Ensure that we only rebuild if there are changes to Dockerfiles + sources: + - "{{ .LAGOON_DIR }}/*.dockerfile" + cmds: + - docker compose build + dev:cli: summary: Performs command inside container. Expects parameter(s). + # This could have a dependency on dev:build but does not to avoid excessive + # log output. dev:cli gets called a lot. cmds: - docker compose {{ .DOCKER_COMPOSE_FILES }} run --rm cli sh -c "{{.CLI_ARGS}}" dev:start: summary: Run docker compose + deps: + - dev:build cmds: - docker compose {{ .DOCKER_COMPOSE_FILES }} up -d {{if eq .CI "true"}}--quiet-pull{{end}} vars: @@ -94,11 +106,19 @@ tasks: # causes the process to fail. Wait and retry if that is the case - docker compose {{ .DOCKER_COMPOSE_FILES }} down --volumes --remove-orphans || (sleep 3 && docker-compose down) + dev:pull: + summary: Pull latest docker images. + cmds: + - docker compose {{ .DOCKER_COMPOSE_FILES }} pull + dev:reset: desc: Create local development setup in a clean state - cmds: + deps: + # Build new containers if necessary. + - dev:build # Stop potential running environment. - - task dev:down + - dev:down + cmds: # Create a .env file with recommended defaults. - cp -n .env.example .env || true # Build site. @@ -107,8 +127,12 @@ tasks: # packages may change without composer package version changes so ensure # we have the latest version. - task dev:cli -- composer reinstall danskernesdigitalebibliotek/dpl-design-system danskernesdigitalebibliotek/dpl-react --no-cache + # (Re)run Drupal scaffolding. + - task dev:cli -- composer drupal:scaffold # Build dev scripts - task dev:cli -- $(cd dev-scripts/dpl-react; composer install) + # Pull the images (necessary for the first reset) + - task dev:pull # Start local environment. - task dev:start # Install site. @@ -123,9 +147,22 @@ tasks: - task dev:cache:clear:all # Ensure site is reachable and warm any caches - task dev:cli -- curl --silent --show-error --fail --output /dev/null http://varnish:8080/ + # Enable dev modules. + - task dev:enable-dev-tools # Show a one-time login to the local site. - task dev:cli -- drush user-login + dev:enable-dev-tools: + desc: Enable dev modules and settings, which are not to be used in Prod. They are config-ignored + cmds: + - task dev:cli -- drush install -y field_ui views_ui + + dev:enable-xdebug: + cmds: + - XDEBUG_ENABLE=true task dev:start + - read -p "Press enter to disable Xdebug" + - task dev:start + dev:phpunit: desc: Run PHPUnit tests with code coverage cmds: @@ -194,7 +231,7 @@ tasks: cmds: - cmd: | docker run --rm -v ${PWD}:/local -v ${PWD}/openapi-generator.config.fbs.yaml:/openapi-generator.config.fbs.yaml \ - openapitools/openapi-generator-cli:v5.2.1 generate \ + openapitools/openapi-generator-cli:v7.1.0 generate \ -i https://raw.githubusercontent.com/danskernesdigitalebibliotek/dpl-react/main/src/core/fbs/fbs-adapter.yaml \ -g php -o /local/packages/fbs-client -c /openapi-generator.config.fbs.yaml @@ -216,6 +253,7 @@ tasks: # All tests that delete mappings and make their own run afterwards. - docker compose {{ .DOCKER_COMPOSE_FILES_CI }} run --rm -e CYPRESS_DRUPAL_USERNAME=$CYPRESS_DRUPAL_USERNAME -e CYPRESS_DRUPAL_PASSWORD=$CYPRESS_DRUPAL_PASSWORD cypress --spec "cypress/e2e/*.ts" env: + DOCKER_COMPOSE_FILES: "{{ .DOCKER_COMPOSE_FILES_CI }}" CYPRESS_DRUPAL_USERNAME: admin CYPRESS_DRUPAL_PASSWORD: admin @@ -227,6 +265,7 @@ tasks: - task dev:cli -- drush user:password $CYPRESS_DRUPAL_USERNAME $CYPRESS_DRUPAL_PASSWORD - http_proxy={{ .WIREMOCK_HOST_LOCAL }} https_proxy={{ .WIREMOCK_HOST_LOCAL_HTTPS }} npx cypress open env: + DOCKER_COMPOSE_FILES: "{{ .DOCKER_COMPOSE_FILES_CI }}" CYPRESS_BASE_URL: http://localhost:{{ .CYPRESS_BASE_PORT }} CYPRESS_WIREMOCK_URL: '{{ .WIREMOCK_HOST_LOCAL }}' CYPRESS_DRUPAL_USERNAME: admin @@ -292,9 +331,9 @@ tasks: - task: source:push lagoon:drush:uli: - desc: Get an Drupal one-time login link for a Lagoon environment through Drush + desc: Get an Drupal one-time user login link for a Lagoon environment through Drush cmds: - - task lagoon:cli -- drush uli + - task lagoon:cli -- drush user-login lagoon:cli: desc: Performs a command in a Lagoon environment and display the output. Expects parameter(s). diff --git a/assets/all.settings.php b/assets/all.settings.php index d28fee5e7..caeb11f57 100644 --- a/assets/all.settings.php +++ b/assets/all.settings.php @@ -30,7 +30,13 @@ } // Exclude development modules from configuration export. -$settings['config_exclude_modules'] = ['devel', 'field_ui', 'restui']; +$settings['config_exclude_modules'] = [ + 'devel', + 'field_ui', + 'views_ui', + 'restui', + 'upgrade_status', +]; // Defines where the sync folder of your configuration lives. In this case it's // inside the Drupal root, which is protected by amazee.io Nginx configs, so it diff --git a/assets/local.services.yml b/assets/local.services.yml new file mode 100644 index 000000000..57af24d56 --- /dev/null +++ b/assets/local.services.yml @@ -0,0 +1,6 @@ +parameters: + twig.config: + debug: true +services: + cache.backend.null: + class: Drupal\Core\Cache\NullBackendFactory diff --git a/assets/local.settings.php b/assets/local.settings.php new file mode 100644 index 000000000..a2272fc3a --- /dev/null +++ b/assets/local.settings.php @@ -0,0 +1,11 @@ +=5.5.9", - "symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0", - "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0" + "php": "^7.2|^8.0", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4|^5|^6" }, "require-dev": { - "phpunit/phpunit": "^5.0 || ^4.8.10", - "squizlabs/php_codesniffer": "^2.3" + "phpunit/phpunit": "^7|^9", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "2.1-dev" } }, "autoload": { "psr-4": { - "Asm89\\Stack\\": "src/Asm89/Stack/" + "Asm89\\Stack\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -112,56 +112,55 @@ ], "support": { "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/1.3.0" + "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" }, - "time": "2019-12-24T22:41:47+00:00" + "time": "2022-01-18T09:12:03+00:00" }, { "name": "chi-teck/drupal-code-generator", - "version": "2.4.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/Chi-teck/drupal-code-generator.git", - "reference": "e7261a46a839a3433e4bbe24eeeb21ed8805a7d3" + "reference": "ccaca62c878e2857635cf8571125fb6f90a9b556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/e7261a46a839a3433e4bbe24eeeb21ed8805a7d3", - "reference": "e7261a46a839a3433e4bbe24eeeb21ed8805a7d3", + "url": "https://api.github.com/repos/Chi-teck/drupal-code-generator/zipball/ccaca62c878e2857635cf8571125fb6f90a9b556", + "reference": "ccaca62c878e2857635cf8571125fb6f90a9b556", "shasum": "" }, "require": { "ext-json": "*", - "php": ">=7.4", - "psr/log": "^1.1", - "symfony/console": "^4.4.15 || ^5.1", - "symfony/filesystem": "^4.4 || ^5.1", - "symfony/polyfill-php80": "^1.23", - "symfony/string": "^5.1 || ^6", - "twig/twig": "^2.12 || ^3.1" + "php": ">=8.1.0", + "psr/event-dispatcher": "^1.0", + "psr/log": "^3.0", + "symfony/console": "^6.2", + "symfony/dependency-injection": "^6.2", + "symfony/filesystem": "^6.2", + "symfony/string": "^6.2", + "twig/twig": "^3.4" }, "conflict": { + "slevomat/coding-standard": "<8.6.4", "squizlabs/php_codesniffer": "<3.6" }, "require-dev": { - "chi-teck/drupal-coder-extension": "^1.0", - "drupal/coder": "^8.3.13", - "friendsoftwig/twigcs": "^5.0", + "chi-teck/drupal-coder-extension": "^2.0.0-alpha2", + "drupal/coder": "8.3.17", + "drupal/core": "10.1.x-dev", + "ext-simplexml": "*", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.4", - "squizlabs/php_codesniffer": "^3.5", - "symfony/var-dumper": "^5.2", - "symfony/yaml": "^5.2" + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "^3.7", + "symfony/var-dumper": "^6.2", + "symfony/yaml": "^6.2", + "vimeo/psalm": "^5.4" }, "bin": [ "bin/dcg" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, "autoload": { "psr-4": { "DrupalCodeGenerator\\": "src" @@ -174,9 +173,9 @@ "description": "Drupal code generator", "support": { "issues": "https://github.com/Chi-teck/drupal-code-generator/issues", - "source": "https://github.com/Chi-teck/drupal-code-generator/tree/2.4.1" + "source": "https://github.com/Chi-teck/drupal-code-generator/tree/3.0.0" }, - "time": "2022-01-18T18:48:57+00:00" + "time": "2023-03-26T07:06:55+00:00" }, { "name": "composer/installers", @@ -331,23 +330,23 @@ }, { "name": "composer/semver", - "version": "3.2.5", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9" + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.54", + "phpstan/phpstan": "^1.4", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", @@ -392,7 +391,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.5" + "source": "https://github.com/composer/semver/tree/3.3.2" }, "funding": [ { @@ -408,7 +407,7 @@ "type": "tidelift" } ], - "time": "2021-05-24T12:41:47+00:00" + "time": "2022-04-01T19:23:25+00:00" }, { "name": "consolidation/annotated-command", @@ -578,22 +577,22 @@ }, { "name": "consolidation/log", - "version": "2.1.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/consolidation/log.git", - "reference": "3ad08dc57e8aff9400111bad36beb0ed387fe6a9" + "reference": "caaad9d70dae54eb49002666f000e3c607066878" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/log/zipball/3ad08dc57e8aff9400111bad36beb0ed387fe6a9", - "reference": "3ad08dc57e8aff9400111bad36beb0ed387fe6a9", + "url": "https://api.github.com/repos/consolidation/log/zipball/caaad9d70dae54eb49002666f000e3c607066878", + "reference": "caaad9d70dae54eb49002666f000e3c607066878", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "^1 || ^2", - "symfony/console": "^4 || ^5 || ^6" + "php": ">=8.0.0", + "psr/log": "^3", + "symfony/console": "^5 || ^6" }, "require-dev": { "phpunit/phpunit": ">=7.5.20", @@ -624,9 +623,9 @@ "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.", "support": { "issues": "https://github.com/consolidation/log/issues", - "source": "https://github.com/consolidation/log/tree/2.1.1" + "source": "https://github.com/consolidation/log/tree/3.0.0" }, - "time": "2022-02-24T04:27:32+00:00" + "time": "2022-04-05T16:53:32+00:00" }, { "name": "consolidation/output-formatters", @@ -684,32 +683,33 @@ }, { "name": "consolidation/robo", - "version": "4.0.2", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/consolidation/robo.git", - "reference": "ccf80963abf11bdb8e90659aa99a7449b21e9452" + "reference": "55a272370940607649e5c46eb173c5c54f7c166d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/robo/zipball/ccf80963abf11bdb8e90659aa99a7449b21e9452", - "reference": "ccf80963abf11bdb8e90659aa99a7449b21e9452", + "url": "https://api.github.com/repos/consolidation/robo/zipball/55a272370940607649e5c46eb173c5c54f7c166d", + "reference": "55a272370940607649e5c46eb173c5c54f7c166d", "shasum": "" }, "require": { - "consolidation/annotated-command": "^4.3", - "consolidation/config": "^1.2.1 || ^2.0.1", - "consolidation/log": "^1.1.1 || ^2.0.2", + "consolidation/annotated-command": "^4.8.1", + "consolidation/config": "^2.0.1", + "consolidation/log": "^2.0.2 || ^3", "consolidation/output-formatters": "^4.1.2", "consolidation/self-update": "^2.0", "league/container": "^3.3.1 || ^4.0", - "php": ">=7.1.3", - "symfony/console": "^4.4.19 || ^5 || ^6", - "symfony/event-dispatcher": "^4.4.19 || ^5 || ^6", - "symfony/filesystem": "^4.4.9 || ^5 || ^6", - "symfony/finder": "^4.4.9 || ^5 || ^6", - "symfony/process": "^4.4.9 || ^5 || ^6", - "symfony/yaml": "^4.4 || ^5 || ^6" + "php": ">=8.0", + "phpowermove/docblock": "^4.0", + "symfony/console": "^6", + "symfony/event-dispatcher": "^6", + "symfony/filesystem": "^6", + "symfony/finder": "^6", + "symfony/process": "^6", + "symfony/yaml": "^6" }, "conflict": { "codegyre/robo": "*" @@ -732,33 +732,6 @@ "robo" ], "type": "library", - "extra": { - "scenarios": { - "symfony4": { - "require": { - "symfony/console": "^4.4.11", - "symfony/event-dispatcher": "^4.4.11", - "symfony/filesystem": "^4.4.11", - "symfony/finder": "^4.4.11", - "symfony/process": "^4.4.11", - "phpunit/phpunit": "^6", - "nikic/php-parser": "^2" - }, - "remove": [ - "codeception/phpunit-wrapper" - ], - "config": { - "platform": { - "php": "7.1.3" - } - } - } - }, - "branch-alias": { - "dev-master": "2.x-dev", - "dev-main": "2.x-dev" - } - }, "autoload": { "psr-4": { "Robo\\": "src" @@ -777,9 +750,9 @@ "description": "Modern task runner", "support": { "issues": "https://github.com/consolidation/robo/issues", - "source": "https://github.com/consolidation/robo/tree/4.0.2" + "source": "https://github.com/consolidation/robo/tree/4.0.6" }, - "time": "2022-04-21T09:29:58+00:00" + "time": "2023-04-30T21:49:04+00:00" }, { "name": "consolidation/self-update", @@ -838,24 +811,23 @@ }, { "name": "consolidation/site-alias", - "version": "3.1.7", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/consolidation/site-alias.git", - "reference": "3b6519592c7e8557423f935806cd73adf69ed6c7" + "reference": "b0eeb8c8f3d54d072824ee31b5e00cb5181f91c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/site-alias/zipball/3b6519592c7e8557423f935806cd73adf69ed6c7", - "reference": "3b6519592c7e8557423f935806cd73adf69ed6c7", + "url": "https://api.github.com/repos/consolidation/site-alias/zipball/b0eeb8c8f3d54d072824ee31b5e00cb5181f91c5", + "reference": "b0eeb8c8f3d54d072824ee31b5e00cb5181f91c5", "shasum": "" }, "require": { "consolidation/config": "^1.2.1 || ^2", - "php": ">=5.5.0", - "symfony/filesystem": "^4.4 || ^5.4 || ^6", - "symfony/finder": "~2.3 || ^3 || ^4.4 || ^5 || ^6", - "webmozart/path-util": "^2.3" + "php": ">=7.4", + "symfony/filesystem": "^5.4 || ^6", + "symfony/finder": "^5 || ^6" }, "require-dev": { "php-coveralls/php-coveralls": "^2.4.2", @@ -867,7 +839,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.x-dev" + "dev-main": "4.x-dev" } }, "autoload": { @@ -892,40 +864,39 @@ "description": "Manage alias records for local and remote sites.", "support": { "issues": "https://github.com/consolidation/site-alias/issues", - "source": "https://github.com/consolidation/site-alias/tree/3.1.7" + "source": "https://github.com/consolidation/site-alias/tree/4.0.1" }, - "time": "2022-10-15T01:21:09+00:00" + "time": "2023-04-29T17:18:10+00:00" }, { "name": "consolidation/site-process", - "version": "4.2.1", + "version": "5.2.0", "source": { "type": "git", "url": "https://github.com/consolidation/site-process.git", - "reference": "ee3bf69001694b2117cc2f96c2ef70d8d45f1234" + "reference": "6c44638d7af8a8b4abe12c3180701243f480539d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/site-process/zipball/ee3bf69001694b2117cc2f96c2ef70d8d45f1234", - "reference": "ee3bf69001694b2117cc2f96c2ef70d8d45f1234", + "url": "https://api.github.com/repos/consolidation/site-process/zipball/6c44638d7af8a8b4abe12c3180701243f480539d", + "reference": "6c44638d7af8a8b4abe12c3180701243f480539d", "shasum": "" }, "require": { - "consolidation/config": "^1.2.1 || ^2", + "consolidation/config": "^2", "consolidation/site-alias": "^3 || ^4", - "php": ">=7.1.3", - "symfony/console": "^2.8.52 || ^3 || ^4.4 || ^5", - "symfony/process": "^4.3.4 || ^5" + "php": ">=8.0.14", + "symfony/console": "^5.4 || ^6", + "symfony/process": "^6" }, "require-dev": { - "phpunit/phpunit": "^7.5.20 || ^8.5.14", - "squizlabs/php_codesniffer": "^3", - "yoast/phpunit-polyfills": "^0.2.0" + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.x-dev" + "dev-main": "5.x-dev" } }, "autoload": { @@ -950,9 +921,9 @@ "description": "A thin wrapper around the Symfony Process Component that allows applications to use the Site Alias library to specify the target for a remote call.", "support": { "issues": "https://github.com/consolidation/site-process/issues", - "source": "https://github.com/consolidation/site-process/tree/4.2.1" + "source": "https://github.com/consolidation/site-process/tree/5.2.0" }, - "time": "2022-10-18T13:19:35+00:00" + "time": "2022-12-06T17:57:16+00:00" }, { "name": "cweagans/composer-patches", @@ -1004,19 +975,19 @@ }, { "name": "danskernesdigitalebibliotek/dpl-design-system", - "version": "2023-48-0", + "version": "2023.49.0", "dist": { "type": "zip", - "url": "https://github.com/danskernesdigitalebibliotek/dpl-design-system/releases/download/release-develop/dist.zip" + "url": "https://github.com/danskernesdigitalebibliotek/dpl-design-system/releases/download/release-release%2F2023-49-0/dist.zip" }, "type": "drupal-library" }, { "name": "danskernesdigitalebibliotek/dpl-react", - "version": "2023-48-0", + "version": "2023.49.0", "dist": { "type": "zip", - "url": "https://github.com/danskernesdigitalebibliotek/dpl-react/releases/download/release-develop/dist.zip" + "url": "https://github.com/danskernesdigitalebibliotek/dpl-react/releases/download/release-release%2F2023-49-0/dist.zip" }, "require": { "composer/installers": "^1.2.0" @@ -1029,17 +1000,18 @@ "dist": { "type": "path", "url": "packages/fbs-client", - "reference": "5ada3fe1856a6a1e504c281d08ed1558120990ef" + "reference": "d435286d4eea151b1c2aa00d607052c6a57edc96" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "guzzlehttp/guzzle": "^6.2", - "php": "^7.3 || ^8.0" + "guzzlehttp/guzzle": "^7.3", + "guzzlehttp/psr7": "^1.7 || ^2.0", + "php": "^7.4 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.12", + "friendsofphp/php-cs-fixer": "^3.5", "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", @@ -1058,7 +1030,7 @@ ], "authors": [ { - "name": "OpenAPI-Generator contributors", + "name": "OpenAPI", "homepage": "https://openapi-generator.tech" } ], @@ -1284,16 +1256,16 @@ }, { "name": "doctrine/annotations", - "version": "1.13.1", + "version": "1.13.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f" + "reference": "648b0343343565c4a056bfc8392201385e8d89f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f", - "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0", "shasum": "" }, "require": { @@ -1305,9 +1277,10 @@ "require-dev": { "doctrine/cache": "^1.11 || ^2.0", "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", + "phpstan/phpstan": "^1.4.10 || ^1.8.0", "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "symfony/cache": "^4.4 || ^5.2", + "vimeo/psalm": "^4.10" }, "type": "library", "autoload": { @@ -1350,9 +1323,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.1" + "source": "https://github.com/doctrine/annotations/tree/1.13.3" }, - "time": "2021-05-16T18:07:53+00:00" + "time": "2022-07-02T10:48:51+00:00" }, { "name": "doctrine/cache", @@ -1861,32 +1834,28 @@ }, { "name": "doctrine/lexer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" @@ -1921,7 +1890,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" + "source": "https://github.com/doctrine/lexer/tree/1.2.3" }, "funding": [ { @@ -1937,7 +1906,7 @@ "type": "tidelift" } ], - "time": "2020-05-25T17:44:05+00:00" + "time": "2022-02-28T11:07:21+00:00" }, { "name": "doctrine/persistence", @@ -2043,20 +2012,20 @@ }, { "name": "doctrine/reflection", - "version": "1.2.2", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/doctrine/reflection.git", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5" + "reference": "6bcea3e81ab8b3d0abe5fde5300bbc8a968960c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5", + "url": "https://api.github.com/repos/doctrine/reflection/zipball/6bcea3e81ab8b3d0abe5fde5300bbc8a968960c7", + "reference": "6bcea3e81ab8b3d0abe5fde5300bbc8a968960c7", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", + "doctrine/annotations": "^1.0 || ^2.0", "ext-tokenizer": "*", "php": "^7.1 || ^8.0" }, @@ -2064,18 +2033,13 @@ "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^6.0 || ^8.2.0", - "doctrine/common": "^2.10", - "phpstan/phpstan": "^0.11.0 || ^0.12.20", - "phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16", - "phpunit/phpunit": "^7.5 || ^9.1.5" + "doctrine/coding-standard": "^9", + "doctrine/common": "^3.3", + "phpstan/phpstan": "^1.4.10", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\": "lib/Doctrine/Common" @@ -2119,27 +2083,108 @@ ], "support": { "issues": "https://github.com/doctrine/reflection/issues", - "source": "https://github.com/doctrine/reflection/tree/1.2.2" + "source": "https://github.com/doctrine/reflection/tree/1.2.4" }, "abandoned": "roave/better-reflection", - "time": "2020-10-27T21:46:55+00:00" + "time": "2023-07-27T18:11:59+00:00" + }, + { + "name": "drupal/admin_toolbar", + "version": "3.4.2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/admin_toolbar.git", + "reference": "3.4.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/admin_toolbar-3.4.2.zip", + "reference": "3.4.2", + "shasum": "f5a008e5c73f5a11c6c8067c0ea6ebb76aa33854" + }, + "require": { + "drupal/core": "^9.2 || ^10" + }, + "require-dev": { + "drupal/admin_toolbar_tools": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "3.4.2", + "datestamp": "1696006195", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Wilfrid Roze (eme)", + "homepage": "https://www.drupal.org/u/eme", + "role": "Maintainer" + }, + { + "name": "Romain Jarraud (romainj)", + "homepage": "https://www.drupal.org/u/romainj", + "role": "Maintainer" + }, + { + "name": "Adrian Cid Almaguer (adriancid)", + "homepage": "https://www.drupal.org/u/adriancid", + "email": "adriancid@gmail.com", + "role": "Maintainer" + }, + { + "name": "Mohamed Anis Taktak (matio89)", + "homepage": "https://www.drupal.org/u/matio89", + "role": "Maintainer" + }, + { + "name": "matio89", + "homepage": "https://www.drupal.org/user/2320090" + }, + { + "name": "Musa.thomas", + "homepage": "https://www.drupal.org/user/1213824" + }, + { + "name": "romainj", + "homepage": "https://www.drupal.org/user/370706" + } + ], + "description": "Provides a drop-down menu interface to the core Drupal Toolbar.", + "homepage": "http://drupal.org/project/admin_toolbar", + "keywords": [ + "Drupal", + "Toolbar" + ], + "support": { + "source": "https://git.drupalcode.org/project/admin_toolbar", + "issues": "https://www.drupal.org/project/issues/admin_toolbar" + } }, { "name": "drupal/config_filter", - "version": "2.2.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/config_filter.git", - "reference": "8.x-2.2" + "reference": "8.x-2.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/config_filter-8.x-2.2.zip", - "reference": "8.x-2.2", - "shasum": "dc6bc8107255066507cfc1d6766e664c3673cda0" + "url": "https://ftp.drupal.org/files/projects/config_filter-8.x-2.6.zip", + "reference": "8.x-2.6", + "shasum": "fd1a057a402436fc906c63bf0a74722f73b9b155" }, "require": { - "drupal/core": "^8.8 || ^9" + "drupal/core": "^8.8 || ^9 || ^10" }, "conflict": { "drush/drush": "<10" @@ -2150,8 +2195,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.2", - "datestamp": "1601934694", + "version": "8.x-2.6", + "datestamp": "1698308577", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2195,27 +2240,27 @@ }, { "name": "drupal/config_ignore", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/config_ignore.git", - "reference": "8.x-2.3" + "reference": "8.x-2.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/config_ignore-8.x-2.3.zip", - "reference": "8.x-2.3", - "shasum": "2e1f07a455275fb6637909921a8915646601fc00" + "url": "https://ftp.drupal.org/files/projects/config_ignore-8.x-2.4.zip", + "reference": "8.x-2.4", + "shasum": "e0e45dde2d6927c5d26de59f352792fb6cf26554" }, "require": { "drupal/config_filter": "^1 || ^2", - "drupal/core": "^8 || ^9" + "drupal/core": "^8 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.3", - "datestamp": "1608306489", + "version": "8.x-2.4", + "datestamp": "1676045435", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2247,30 +2292,30 @@ "homepage": "http://drupal.org/project/config_ignore", "support": { "source": "https://git.drupalcode.org/project/config_ignore", - "issues": "http://drupal.org/project/config_ignore", + "issues": "https://drupal.org/project/config_ignore", "irc": "irc://irc.freenode.org/drupal-contribute" } }, { "name": "drupal/core", - "version": "9.2.7", + "version": "10.0.11", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "ce3220458c7a744bb00e9436e48d8e644e134576" + "reference": "34fbfb77065c8c2934a97be8662b5190f5806176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/ce3220458c7a744bb00e9436e48d8e644e134576", - "reference": "ce3220458c7a744bb00e9436e48d8e644e134576", + "url": "https://api.github.com/repos/drupal/core/zipball/34fbfb77065c8c2934a97be8662b5190f5806176", + "reference": "34fbfb77065c8c2934a97be8662b5190f5806176", "shasum": "" }, "require": { - "asm89/stack-cors": "^1.1", - "composer/semver": "^3.0", - "doctrine/annotations": "^1.12", - "doctrine/reflection": "^1.1", - "egulias/email-validator": "^2.0", + "asm89/stack-cors": "^2.1", + "composer-runtime-api": "^2.1", + "composer/semver": "^3.3", + "doctrine/annotations": "^1.13", + "egulias/email-validator": "^3.2.1", "ext-date": "*", "ext-dom": "*", "ext-filter": "*", @@ -2284,61 +2329,33 @@ "ext-spl": "*", "ext-tokenizer": "*", "ext-xml": "*", - "guzzlehttp/guzzle": "^6.5.2", - "laminas/laminas-diactoros": "^2.1", - "laminas/laminas-feed": "^2.12", - "masterminds/html5": "^2.1", + "guzzlehttp/guzzle": "^7.5", + "guzzlehttp/psr7": "^2.4.5", + "masterminds/html5": "^2.7", "pear/archive_tar": "^1.4.14", - "php": ">=7.3.0", - "psr/log": "^1.0", - "stack/builder": "^1.0", - "symfony-cmf/routing": "^2.1", - "symfony/console": "^4.4", - "symfony/dependency-injection": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-foundation": "^4.4.7", - "symfony/http-kernel": "^4.4", - "symfony/mime": "^5.3.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/process": "^4.4", - "symfony/psr-http-message-bridge": "^2.0", - "symfony/routing": "^4.4", - "symfony/serializer": "^4.4", - "symfony/translation": "^4.4", - "symfony/validator": "^4.4", - "symfony/yaml": "^4.4.19", - "twig/twig": "^2.12.0", - "typo3/phar-stream-wrapper": "^3.1.3" + "php": ">=8.1.0", + "psr/log": "^3.0", + "symfony/console": "^6.2", + "symfony/dependency-injection": "^6.2", + "symfony/event-dispatcher": "^6.2", + "symfony/http-foundation": "^6.2", + "symfony/http-kernel": "^6.2", + "symfony/mime": "^6.2", + "symfony/polyfill-iconv": "^1.26", + "symfony/process": "^6.2", + "symfony/psr-http-message-bridge": "^2.1", + "symfony/routing": "^6.2", + "symfony/serializer": "~6.2.0", + "symfony/validator": "~6.2.0", + "symfony/yaml": "^6.2", + "twig/twig": "^3.4.3" }, "conflict": { "drush/drush": "<8.1.10" }, "replace": { - "drupal/action": "self.version", - "drupal/aggregator": "self.version", - "drupal/automated_cron": "self.version", - "drupal/ban": "self.version", - "drupal/bartik": "self.version", - "drupal/basic_auth": "self.version", - "drupal/big_pipe": "self.version", - "drupal/block": "self.version", - "drupal/block_content": "self.version", - "drupal/book": "self.version", - "drupal/breakpoint": "self.version", - "drupal/ckeditor": "self.version", - "drupal/claro": "self.version", - "drupal/classy": "self.version", - "drupal/color": "self.version", - "drupal/comment": "self.version", - "drupal/config": "self.version", - "drupal/config_translation": "self.version", - "drupal/contact": "self.version", - "drupal/content_moderation": "self.version", - "drupal/content_translation": "self.version", - "drupal/contextual": "self.version", "drupal/core-annotation": "self.version", "drupal/core-assertion": "self.version", - "drupal/core-bridge": "self.version", "drupal/core-class-finder": "self.version", "drupal/core-datetime": "self.version", "drupal/core-dependency-injection": "self.version", @@ -2360,72 +2377,10 @@ "drupal/core-transliteration": "self.version", "drupal/core-utility": "self.version", "drupal/core-uuid": "self.version", - "drupal/core-version": "self.version", - "drupal/datetime": "self.version", - "drupal/datetime_range": "self.version", - "drupal/dblog": "self.version", - "drupal/dynamic_page_cache": "self.version", - "drupal/editor": "self.version", - "drupal/entity_reference": "self.version", - "drupal/field": "self.version", - "drupal/field_layout": "self.version", - "drupal/field_ui": "self.version", - "drupal/file": "self.version", - "drupal/filter": "self.version", - "drupal/forum": "self.version", - "drupal/hal": "self.version", - "drupal/help": "self.version", - "drupal/help_topics": "self.version", - "drupal/history": "self.version", - "drupal/image": "self.version", - "drupal/inline_form_errors": "self.version", - "drupal/jsonapi": "self.version", - "drupal/language": "self.version", - "drupal/layout_builder": "self.version", - "drupal/layout_discovery": "self.version", - "drupal/link": "self.version", - "drupal/locale": "self.version", - "drupal/media": "self.version", - "drupal/media_library": "self.version", - "drupal/menu_link_content": "self.version", - "drupal/menu_ui": "self.version", - "drupal/migrate": "self.version", - "drupal/migrate_drupal": "self.version", - "drupal/migrate_drupal_multilingual": "self.version", - "drupal/migrate_drupal_ui": "self.version", - "drupal/minimal": "self.version", - "drupal/node": "self.version", - "drupal/olivero": "self.version", - "drupal/options": "self.version", - "drupal/page_cache": "self.version", - "drupal/path": "self.version", - "drupal/path_alias": "self.version", - "drupal/quickedit": "self.version", - "drupal/rdf": "self.version", - "drupal/responsive_image": "self.version", - "drupal/rest": "self.version", - "drupal/search": "self.version", - "drupal/serialization": "self.version", - "drupal/settings_tray": "self.version", - "drupal/seven": "self.version", - "drupal/shortcut": "self.version", - "drupal/standard": "self.version", - "drupal/stark": "self.version", - "drupal/statistics": "self.version", - "drupal/syslog": "self.version", - "drupal/system": "self.version", - "drupal/taxonomy": "self.version", - "drupal/telephone": "self.version", - "drupal/text": "self.version", - "drupal/toolbar": "self.version", - "drupal/tour": "self.version", - "drupal/tracker": "self.version", - "drupal/update": "self.version", - "drupal/user": "self.version", - "drupal/views": "self.version", - "drupal/views_ui": "self.version", - "drupal/workflows": "self.version", - "drupal/workspaces": "self.version" + "drupal/core-version": "self.version" + }, + "suggest": { + "ext-zip": "Needed to extend the plugin.manager.archiver service capability with the handling of files in the ZIP format." }, "type": "drupal-core", "extra": { @@ -2463,7 +2418,6 @@ ], "psr-4": { "Drupal\\Core\\": "lib/Drupal/Core", - "Drupal\\Driver\\": "../drivers/lib/Drupal/Driver", "Drupal\\Component\\": "lib/Drupal/Component" }, "classmap": [ @@ -2482,15 +2436,10 @@ "lib/Drupal/Core/Cache/DatabaseCacheTagsChecksum.php", "lib/Drupal/Core/Database/Connection.php", "lib/Drupal/Core/Database/Database.php", - "lib/Drupal/Core/Database/Driver/mysql/Connection.php", - "lib/Drupal/Core/Database/Driver/pgsql/Connection.php", - "lib/Drupal/Core/Database/Driver/sqlite/Connection.php", - "lib/Drupal/Core/Database/Statement.php", "lib/Drupal/Core/Database/StatementInterface.php", "lib/Drupal/Core/DependencyInjection/Container.php", "lib/Drupal/Core/DrupalKernel.php", "lib/Drupal/Core/DrupalKernelInterface.php", - "lib/Drupal/Core/Http/InputBag.php", "lib/Drupal/Core/Installer/InstallerRedirectTrait.php", "lib/Drupal/Core/Site/Settings.php" ] @@ -2501,22 +2450,22 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/9.2.7" + "source": "https://github.com/drupal/core/tree/10.0.11" }, - "time": "2021-10-06T10:34:39+00:00" + "time": "2023-09-19T17:58:10+00:00" }, { "name": "drupal/core-composer-scaffold", - "version": "10.1.5", + "version": "10.0.11", "source": { "type": "git", "url": "https://github.com/drupal/core-composer-scaffold.git", - "reference": "1ccd7db5ff8a5425b5bbba9b9a05e366363c0a51" + "reference": "22c8b48a5b34864bf433ab3eb6ee7670191c0468" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/1ccd7db5ff8a5425b5bbba9b9a05e366363c0a51", - "reference": "1ccd7db5ff8a5425b5bbba9b9a05e366363c0a51", + "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/22c8b48a5b34864bf433ab3eb6ee7670191c0468", + "reference": "22c8b48a5b34864bf433ab3eb6ee7670191c0468", "shasum": "" }, "require": { @@ -2551,26 +2500,26 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-composer-scaffold/tree/10.1.5" + "source": "https://github.com/drupal/core-composer-scaffold/tree/10.0.11" }, - "time": "2023-04-30T16:15:32+00:00" + "time": "2023-04-30T16:15:41+00:00" }, { "name": "drupal/core-project-message", - "version": "9.2.7", + "version": "10.0.11", "source": { "type": "git", "url": "https://github.com/drupal/core-project-message.git", - "reference": "812d6da43dd49cc210af62e80fa92189e68e565a" + "reference": "b4bb5b4c67242def27c2abf5892e5d9bfb7d08f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-project-message/zipball/812d6da43dd49cc210af62e80fa92189e68e565a", - "reference": "812d6da43dd49cc210af62e80fa92189e68e565a", + "url": "https://api.github.com/repos/drupal/core-project-message/zipball/b4bb5b4c67242def27c2abf5892e5d9bfb7d08f1", + "reference": "b4bb5b4c67242def27c2abf5892e5d9bfb7d08f1", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1 || ^2", + "composer-plugin-api": "^2", "php": ">=7.3.0" }, "type": "composer-plugin", @@ -2592,82 +2541,74 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-project-message/tree/9.2.7" + "source": "https://github.com/drupal/core-project-message/tree/10.0.11" }, - "time": "2020-09-14T13:40:36+00:00" + "time": "2022-07-01T08:33:05+00:00" }, { "name": "drupal/core-recommended", - "version": "9.2.7", + "version": "10.0.11", "source": { "type": "git", "url": "https://github.com/drupal/core-recommended.git", - "reference": "87c998e8d60d6b2452b21827fb7b16f77d02a38a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/drupal/core-recommended/zipball/87c998e8d60d6b2452b21827fb7b16f77d02a38a", - "reference": "87c998e8d60d6b2452b21827fb7b16f77d02a38a", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "1.3.0", - "composer/semver": "3.2.5", - "doctrine/annotations": "1.13.1", - "doctrine/lexer": "1.2.1", - "doctrine/reflection": "1.2.2", - "drupal/core": "9.2.7", - "egulias/email-validator": "2.1.25", - "guzzlehttp/guzzle": "6.5.5", - "guzzlehttp/promises": "1.4.1", - "guzzlehttp/psr7": "1.8.2", - "laminas/laminas-diactoros": "2.6.0", - "laminas/laminas-escaper": "2.7.0", - "laminas/laminas-feed": "2.14.1", - "laminas/laminas-stdlib": "3.3.1", - "laminas/laminas-zendframework-bridge": "1.2.0", - "masterminds/html5": "2.7.4", - "pear/archive_tar": "1.4.14", - "pear/console_getopt": "v1.4.3", - "pear/pear-core-minimal": "v1.10.10", - "pear/pear_exception": "v1.0.2", - "psr/cache": "1.0.1", - "psr/container": "1.1.1", - "psr/http-factory": "1.0.1", - "psr/http-message": "1.0.1", - "psr/log": "1.1.4", - "ralouphie/getallheaders": "3.0.3", - "stack/builder": "v1.0.6", - "symfony-cmf/routing": "2.3.3", - "symfony/console": "v4.4.25", - "symfony/debug": "v4.4.25", - "symfony/dependency-injection": "v4.4.25", - "symfony/deprecation-contracts": "v2.4.0", - "symfony/error-handler": "v4.4.25", - "symfony/event-dispatcher": "v4.4.25", - "symfony/event-dispatcher-contracts": "v1.1.9", - "symfony/http-client-contracts": "v2.4.0", - "symfony/http-foundation": "v4.4.25", - "symfony/http-kernel": "v4.4.25", - "symfony/mime": "v5.3.0", - "symfony/polyfill-ctype": "v1.23.0", - "symfony/polyfill-iconv": "v1.23.0", - "symfony/polyfill-intl-idn": "v1.23.0", - "symfony/polyfill-intl-normalizer": "v1.23.0", - "symfony/polyfill-mbstring": "v1.23.0", - "symfony/polyfill-php80": "v1.23.0", - "symfony/process": "v4.4.25", - "symfony/psr-http-message-bridge": "v2.1.0", - "symfony/routing": "v4.4.25", - "symfony/serializer": "v4.4.25", - "symfony/service-contracts": "v2.4.0", - "symfony/translation": "v4.4.25", - "symfony/translation-contracts": "v2.4.0", - "symfony/validator": "v4.4.25", - "symfony/var-dumper": "v5.3.0", - "symfony/yaml": "v4.4.25", - "twig/twig": "v2.14.6", - "typo3/phar-stream-wrapper": "v3.1.6" + "reference": "ad08c3a2c235ea6f48e2288afd652a4d08d3816d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/drupal/core-recommended/zipball/ad08c3a2c235ea6f48e2288afd652a4d08d3816d", + "reference": "ad08c3a2c235ea6f48e2288afd652a4d08d3816d", + "shasum": "" + }, + "require": { + "asm89/stack-cors": "~v2.1.1", + "composer/semver": "~3.3.2", + "doctrine/annotations": "~1.13.3", + "doctrine/lexer": "~1.2.3", + "drupal/core": "10.0.11", + "egulias/email-validator": "~3.2.1", + "guzzlehttp/guzzle": "~7.5.0", + "guzzlehttp/promises": "~1.5.2", + "guzzlehttp/psr7": "~2.4.5", + "masterminds/html5": "~2.7.6", + "pear/archive_tar": "~1.4.14", + "pear/console_getopt": "~v1.4.3", + "pear/pear-core-minimal": "~v1.10.11", + "pear/pear_exception": "~v1.0.2", + "psr/cache": "~3.0.0", + "psr/container": "~2.0.2", + "psr/event-dispatcher": "~1.0.0", + "psr/http-client": "~1.0.1", + "psr/http-factory": "~1.0.1", + "psr/http-message": "~1.0.1", + "psr/log": "~3.0.0", + "ralouphie/getallheaders": "~3.0.3", + "symfony/console": "~v6.2.5", + "symfony/dependency-injection": "~v6.2.6", + "symfony/deprecation-contracts": "~v3.2.0", + "symfony/error-handler": "~v6.2.5", + "symfony/event-dispatcher": "~v6.2.5", + "symfony/event-dispatcher-contracts": "~v3.2.0", + "symfony/http-foundation": "~v6.2.6", + "symfony/http-kernel": "~v6.2.6", + "symfony/mime": "~v6.2.5", + "symfony/polyfill-ctype": "~v1.27.0", + "symfony/polyfill-iconv": "~v1.27.0", + "symfony/polyfill-intl-grapheme": "~v1.27.0", + "symfony/polyfill-intl-idn": "~v1.27.0", + "symfony/polyfill-intl-normalizer": "~v1.27.0", + "symfony/polyfill-mbstring": "~v1.27.0", + "symfony/process": "~v6.2.5", + "symfony/psr-http-message-bridge": "~v2.1.4", + "symfony/routing": "~v6.2.5", + "symfony/serializer": "~v6.2.5", + "symfony/service-contracts": "~v3.2.0", + "symfony/string": "~v6.2.5", + "symfony/translation-contracts": "~v3.2.0", + "symfony/validator": "~v6.2.5", + "symfony/var-dumper": "~v6.2.5", + "symfony/var-exporter": "~v6.2.5", + "symfony/yaml": "~v6.2.5", + "twig/twig": "~v3.5.0" }, "conflict": { "webflo/drupal-core-strict": "*" @@ -2677,11 +2618,11 @@ "license": [ "GPL-2.0-or-later" ], - "description": "Locked core dependencies; require this project INSTEAD OF drupal/core.", + "description": "Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.", "support": { - "source": "https://github.com/drupal/core-recommended/tree/9.2.7" + "source": "https://github.com/drupal/core-recommended/tree/10.0.11" }, - "time": "2021-10-06T10:34:39+00:00" + "time": "2023-09-19T17:58:10+00:00" }, { "name": "drupal/customerror", @@ -2822,28 +2763,28 @@ }, { "name": "drupal/devel", - "version": "4.1.1", + "version": "5.0.2", "source": { "type": "git", "url": "https://git.drupalcode.org/project/devel.git", - "reference": "4.1.1" + "reference": "5.0.2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/devel-4.1.1.zip", - "reference": "4.1.1", - "shasum": "88e5d49dda26a3136291ecd97bc6c8e897b24198" + "url": "https://ftp.drupal.org/files/projects/devel-5.0.2.zip", + "reference": "5.0.2", + "shasum": "9299d52d806897240fb5a57e66f12e09c4f00960" }, "require": { "doctrine/common": "^2.7", - "drupal/core": "^8.8 || ^9", - "symfony/var-dumper": "^4 || ^5" + "drupal/core": "^9 || ^10", + "symfony/var-dumper": "^4 || ^5 || ^6" }, "conflict": { "kint-php/kint": "<3" }, "require-dev": { - "drush/drush": "^10" + "drush/drush": "^11" }, "suggest": { "kint-php/kint": "Kint provides an informative display of arrays/objects. Useful for debugging and developing." @@ -2851,8 +2792,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "4.1.1", - "datestamp": "1631968537", + "version": "5.0.2", + "datestamp": "1664317512", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2860,7 +2801,7 @@ }, "drush": { "services": { - "drush.services.yml": "^9 || ^10" + "drush.services.yml": "^9 || ^10 || ^11" } } }, @@ -2951,30 +2892,30 @@ } }, { - "name": "drupal/handy_cache_tags", - "version": "1.4.0", + "name": "drupal/enum_field", + "version": "1.0.1", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/handy_cache_tags.git", - "reference": "8.x-1.4" + "url": "https://git.drupalcode.org/project/enum_field.git", + "reference": "1.0.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/handy_cache_tags-8.x-1.4.zip", - "reference": "8.x-1.4", - "shasum": "cf9fd07629949fdda3e3ff77c68265149a7c4ffd" + "url": "https://ftp.drupal.org/files/projects/enum_field-1.0.1.zip", + "reference": "1.0.1", + "shasum": "8a43a9cbe1419f7434c085f86d8b26191fe57660" }, "require": { - "drupal/core": "^8 || ^9 || ^10" + "drupal/core": "^9.3 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.4", - "datestamp": "1664207912", + "version": "1.0.1", + "datestamp": "1691138049", "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" + "status": "not-covered", + "message": "Project has not opted into security advisory coverage!" } } }, @@ -2984,44 +2925,41 @@ ], "authors": [ { - "name": "eiriksm", - "homepage": "https://www.drupal.org/user/1014468" + "name": "DieterHolvoet", + "homepage": "https://www.drupal.org/user/3567222" } ], - "description": "Provides some handy cache tags for developers.", - "homepage": "https://www.drupal.org/project/handy_cache_tags", + "description": "Create list fields based on PHP enums", + "homepage": "https://www.drupal.org/project/enum_field", "support": { - "source": "https://git.drupalcode.org/project/handy_cache_tags" + "source": "https://git.drupalcode.org/project/enum_field" } }, { - "name": "drupal/inline_all_css", - "version": "1.0.0-rc3", + "name": "drupal/field_group", + "version": "3.4.0", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/inline_all_css.git", - "reference": "1.0.0-rc3" + "url": "https://git.drupalcode.org/project/field_group.git", + "reference": "8.x-3.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/inline_all_css-1.0.0-rc3.zip", - "reference": "1.0.0-rc3", - "shasum": "1b2014699d49609d4ea366701ad7abc42e4650ae" + "url": "https://ftp.drupal.org/files/projects/field_group-8.x-3.4.zip", + "reference": "8.x-3.4", + "shasum": "80b937e1a11f8b29c69d853fc4bf798c057c6f94" }, "require": { - "drupal/core": "^9" - }, - "suggest": { - "drupal/guzzle_cache": "Provides a Drupal cache backend for Kevinrob/guzzle-cache-middleware." + "drupal/core": "^9.2 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "1.0.0-rc3", - "datestamp": "1645900154", + "version": "8.x-3.4", + "datestamp": "1667241979", "security-coverage": { - "status": "not-covered", - "message": "RC releases are not covered by Drupal security advisories." + "status": "covered", + "message": "Covered by Drupal's security advisory policy" } } }, @@ -3031,162 +2969,180 @@ ], "authors": [ { - "name": "Luke Leber", - "homepage": "https://www.drupal.org/user/3509746", - "email": "lukeleber@gmail.com" + "name": "Anybody", + "homepage": "https://www.drupal.org/user/291091" + }, + { + "name": "Hydra", + "homepage": "https://www.drupal.org/user/647364" + }, + { + "name": "jyve", + "homepage": "https://www.drupal.org/user/591438" + }, + { + "name": "nils.destoop", + "homepage": "https://www.drupal.org/user/361625" + }, + { + "name": "Stalski", + "homepage": "https://www.drupal.org/user/322618" + }, + { + "name": "swentel", + "homepage": "https://www.drupal.org/user/107403" } ], - "description": "Delivers all CSS to the client via an inline style tag.", - "homepage": "https://drupal.org/project/inline_all_css", + "description": "Provides the field_group module.", + "homepage": "https://www.drupal.org/project/field_group", "support": { - "source": "https://git.drupalcode.org/project/inline_all_css" + "source": "https://git.drupalcode.org/project/field_group", + "issues": "https://www.drupal.org/project/issues/field_group" } }, { - "name": "drupal/jsonlog", - "version": "3.0.0", + "name": "drupal/gin", + "version": "3.0.0-rc7", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/jsonlog.git", - "reference": "3.0.0" + "url": "https://git.drupalcode.org/project/gin.git", + "reference": "8.x-3.0-rc7" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/jsonlog-3.0.0.zip", - "reference": "3.0.0", - "shasum": "20d30c46b07f054a2a8eb4177de58d1fffd20e86" + "url": "https://ftp.drupal.org/files/projects/gin-8.x-3.0-rc7.zip", + "reference": "8.x-3.0-rc7", + "shasum": "9f91862fc82ef8b0adbf34b26caa3c42d4f1f6b2" }, "require": { - "drupal/core": "^8 || ^9" + "drupal/core": "^9 || ^10", + "drupal/gin_toolbar": "^1.0@beta" }, - "type": "drupal-module", + "type": "drupal-theme", "extra": { "drupal": { - "version": "3.0.0", - "datestamp": "1629639401", + "version": "8.x-3.0-rc7", + "datestamp": "1697193234", "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" + "status": "not-covered", + "message": "RC releases are not covered by Drupal security advisories." } } }, "notification-url": "https://packages.drupal.org/8/downloads", + "scripts": { + "phpcs": [ + "phpcs -s --runtime-set ignore_warnings_on_exit 1 --runtime-set ignore_errors_on_exit 0 'web/modules/custom'" + ] + }, "license": [ - "GPL-2.0+" + "GPL-2.0-or-later" ], "authors": [ { - "name": "jacobfriis", - "homepage": "https://www.drupal.org/u/jacobfriis", - "role": "Developer" - }, - { - "name": "lorenzs", - "homepage": "https://www.drupal.org/cegeka", - "role": "Developer" + "name": "Sascha Eggenberger (saschaeggi)", + "homepage": "https://www.drupal.org/u/saschaeggi", + "role": "Maintainer" } ], - "description": "Logs watchdog events JSON-formatted to file.", - "homepage": "https://www.drupal.org/project/jsonlog", - "keywords": [ - "Drupal" - ], + "description": "For a better Admin and Content Editor Experience.", + "homepage": "https://www.drupal.org/project/gin", "support": { - "source": "https://git.drupalcode.org/project/jsonlog", - "issues": "https://www.drupal.org/project/issues/jsonlog" - } + "source": "https://git.drupalcode.org/project/gin", + "issues": "https://www.drupal.org/project/issues/gin" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/saschaeggi" + }, + { + "type": "other", + "url": "https://paypal.me/saschaeggi" + } + ] }, { - "name": "drupal/libraries", - "version": "3.0.0-beta2", + "name": "drupal/gin_toolbar", + "version": "1.0.0-rc4", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/libraries.git", - "reference": "8.x-3.0-beta2" + "url": "https://git.drupalcode.org/project/gin_toolbar.git", + "reference": "8.x-1.0-rc4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/libraries-8.x-3.0-beta2.zip", - "reference": "8.x-3.0-beta2", - "shasum": "6e2ade6754f1406345e35b55cf27006b80349c25" + "url": "https://ftp.drupal.org/files/projects/gin_toolbar-8.x-1.0-rc4.zip", + "reference": "8.x-1.0-rc4", + "shasum": "4f5fa958362b02804564302b0dfceb39e1b38119" }, "require": { - "drupal/core": "^8.8 || ^9" + "drupal/core": "^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-3.0-beta2", - "datestamp": "1635190094", + "version": "8.x-1.0-rc4", + "datestamp": "1697192878", "security-coverage": { "status": "not-covered", - "message": "Beta releases are not covered by Drupal security advisories." + "message": "RC releases are not covered by Drupal security advisories." } } }, "notification-url": "https://packages.drupal.org/8/downloads", "license": [ - "GPL-2.0-or-later" + "GPL-2.0+" ], "authors": [ { - "name": "joseph.olstad", - "homepage": "https://www.drupal.org/user/1321830" - }, - { - "name": "podarok", - "homepage": "https://www.drupal.org/user/116002" - }, - { - "name": "Pol", - "homepage": "https://www.drupal.org/user/47194" - }, - { - "name": "rjacobs", - "homepage": "https://www.drupal.org/user/422459" - }, + "name": "Sascha Eggenberger (saschaeggi)", + "homepage": "https://www.drupal.org/u/saschaeggi", + "role": "Maintainer" + } + ], + "description": "Gin Toolbar for Frontend use", + "homepage": "https://www.drupal.org/project/gin_toolbar", + "keywords": [ + "Drupal" + ], + "support": { + "source": "http://cgit.drupalcode.org/gin_toolbar", + "issues": "https://www.drupal.org/project/issues/gin_toolbar" + }, + "funding": [ { - "name": "sun", - "homepage": "https://www.drupal.org/user/54136" + "type": "github", + "url": "https://github.com/sponsors/saschaeggi" }, { - "name": "tstoeckler", - "homepage": "https://www.drupal.org/user/107158" + "type": "other", + "url": "https://paypal.me/saschaeggi" } - ], - "description": "Allows version-dependent and shared usage of external libraries in Drupal.", - "homepage": "http://drupal.org/project/libraries", - "support": { - "source": "http://cgit.drupalcode.org/libraries", - "issues": "http://drupal.org/project/issues/libraries", - "irc": "irc://irc.freenode.org/drupal-contribute" - } + ] }, { - "name": "drupal/openapi", - "version": "2.0.0", + "name": "drupal/handy_cache_tags", + "version": "1.4.0", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/openapi.git", - "reference": "8.x-2.0" + "url": "https://git.drupalcode.org/project/handy_cache_tags.git", + "reference": "8.x-1.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/openapi-8.x-2.0.zip", - "reference": "8.x-2.0", - "shasum": "4562a072dde9d1b5f3249b292d49ee0c489ace7a" + "url": "https://ftp.drupal.org/files/projects/handy_cache_tags-8.x-1.4.zip", + "reference": "8.x-1.4", + "shasum": "cf9fd07629949fdda3e3ff77c68265149a7c4ffd" }, "require": { - "drupal/core": "^8.7.0 || ^9" - }, - "require-dev": { - "vijaycs85/drupal-quality-checker": "^1.2" + "drupal/core": "^8 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.0", - "datestamp": "1632637188", + "version": "8.x-1.4", + "datestamp": "1664207912", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3199,126 +3155,118 @@ ], "authors": [ { - "name": "bradjones1", - "homepage": "https://www.drupal.org/user/405824" - }, - { - "name": "e0ipso", - "homepage": "https://www.drupal.org/user/550110" - }, - { - "name": "mrjmd", - "homepage": "https://www.drupal.org/user/1800446" - }, - { - "name": "phenaproxima", - "homepage": "https://www.drupal.org/user/205645" - }, - { - "name": "richgerdes", - "homepage": "https://www.drupal.org/user/3437973" - }, - { - "name": "rogierbom", - "homepage": "https://www.drupal.org/user/1352176" - }, - { - "name": "tedbow", - "homepage": "https://www.drupal.org/user/240860" + "name": "eiriksm", + "homepage": "https://www.drupal.org/user/1014468" } ], - "description": "Creates OpenAPI specification for Drupal resources.", - "homepage": "https://www.drupal.org/project/openapi", - "keywords": [ - "Drupal" - ], + "description": "Provides some handy cache tags for developers.", + "homepage": "https://www.drupal.org/project/handy_cache_tags", "support": { - "source": "http://cgit.drupalcode.org/openapi", - "issues": "http://drupal.org/project/issues/openapi" + "source": "https://git.drupalcode.org/project/handy_cache_tags" } }, { - "name": "drupal/openapi_rest", - "version": "2.0.0-rc2", + "name": "drupal/job_scheduler", + "version": "4.0.1", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/openapi_rest.git", - "reference": "8.x-2.0-rc2" + "url": "https://git.drupalcode.org/project/job_scheduler.git", + "reference": "4.0.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/openapi_rest-8.x-2.0-rc2.zip", - "reference": "8.x-2.0-rc2", - "shasum": "900118dea679f0d9e2f2c92eb2744e6793494adb" + "url": "https://ftp.drupal.org/files/projects/job_scheduler-4.0.1.zip", + "reference": "4.0.1", + "shasum": "f262bf0689ddd909d98012628a8d4c09b332cb33" }, "require": { - "drupal/core": "^8 || ^9", - "drupal/openapi": "^2.0", - "drupal/schemata": "*", - "drupal/schemata_json_schema": "*" + "drupal/core": "^8.7.7 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.0-rc2", - "datestamp": "1585779664", + "version": "4.0.1", + "datestamp": "1677234863", "security-coverage": { "status": "not-covered", - "message": "RC releases are not covered by Drupal security advisories." + "message": "Project has not opted into security advisory coverage!" } } }, "notification-url": "https://packages.drupal.org/8/downloads", "license": [ - "GPL-2.0-or-later" + "GPL-2.0+" ], "authors": [ { - "name": "API-First Initiative", - "homepage": "https://www.drupal.org/user/3616626" + "name": "alex_b", + "homepage": "https://www.drupal.org/user/53995" }, { - "name": "e0ipso", - "homepage": "https://www.drupal.org/user/550110" + "name": "febbraro", + "homepage": "https://www.drupal.org/user/43670" }, { - "name": "phenaproxima", - "homepage": "https://www.drupal.org/user/205645" + "name": "gabesullice", + "homepage": "https://www.drupal.org/user/2287430" }, { - "name": "richgerdes", - "homepage": "https://www.drupal.org/user/3437973" + "name": "intrafusion", + "homepage": "https://www.drupal.org/user/424800" + }, + { + "name": "jmiccolis", + "homepage": "https://www.drupal.org/user/31731" + }, + { + "name": "joachim", + "homepage": "https://www.drupal.org/user/107701" + }, + { + "name": "makara", + "homepage": "https://www.drupal.org/user/132402" + }, + { + "name": "RenatoG", + "homepage": "https://www.drupal.org/user/3326031" + }, + { + "name": "twistor", + "homepage": "https://www.drupal.org/user/473738" + }, + { + "name": "webflo", + "homepage": "https://www.drupal.org/user/254778" } ], - "description": "OpenAPI support for the REST module.", - "homepage": "https://www.drupal.org/project/openapi_rest", + "description": "Scheduler API.", + "homepage": "http://drupal.org/project/job_scheduler", "support": { - "source": "https://git.drupalcode.org/project/openapi_rest" + "source": "https://git.drupalcode.org/project/job_scheduler" } }, { - "name": "drupal/openid_connect", - "version": "1.2.0", + "name": "drupal/jsonlog", + "version": "4.0.0", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/openid_connect.git", - "reference": "8.x-1.2" + "url": "https://git.drupalcode.org/project/jsonlog.git", + "reference": "4.0.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/openid_connect-8.x-1.2.zip", - "reference": "8.x-1.2", - "shasum": "b00290161d7dc54fe1dccca1b0ab91bed920f051" + "url": "https://ftp.drupal.org/files/projects/jsonlog-4.0.0.zip", + "reference": "4.0.0", + "shasum": "21d98e1e922881a65cc89ca76d0db873d469ed9f" }, "require": { - "drupal/core": "^8.8 || ^9", - "ext-json": "*" + "drupal/core": "^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.2", - "datestamp": "1640195069", + "version": "4.0.0", + "datestamp": "1697209435", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3327,79 +3275,52 @@ }, "notification-url": "https://packages.drupal.org/8/downloads", "license": [ - "GPL-2.0-or-later" + "GPL-2.0+" ], "authors": [ { - "name": "bojanz", - "homepage": "https://www.drupal.org/user/86106" - }, - { - "name": "jcnventura", - "homepage": "https://www.drupal.org/user/122464" - }, - { - "name": "pfrilling", - "homepage": "https://www.drupal.org/user/169695" - }, - { - "name": "pjcdawkins", - "homepage": "https://www.drupal.org/user/1025236" + "name": "jacobfriis", + "homepage": "https://www.drupal.org/u/jacobfriis", + "role": "Developer" }, { - "name": "sanduhrs", - "homepage": "https://www.drupal.org/user/28074" + "name": "lorenzs", + "homepage": "https://www.drupal.org/cegeka", + "role": "Developer" } ], - "description": "A pluggable client implementation for the OpenID Connect protocol.", - "homepage": "https://www.drupal.org/project/openid_connect", + "description": "Logs watchdog events JSON-formatted to file.", + "homepage": "https://www.drupal.org/project/jsonlog", "keywords": [ "Drupal" ], "support": { - "source": "https://git.drupalcode.org/project/openid_connect", - "issues": "https://www.drupal.org/project/issues/openid_connect" + "source": "https://git.drupalcode.org/project/jsonlog", + "issues": "https://www.drupal.org/project/issues/jsonlog" } }, { - "name": "drupal/paragraphs", - "version": "1.14.0", + "name": "drupal/libraries", + "version": "4.0.3", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/paragraphs.git", - "reference": "8.x-1.14" + "url": "https://git.drupalcode.org/project/libraries.git", + "reference": "4.0.3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/paragraphs-8.x-1.14.zip", - "reference": "8.x-1.14", - "shasum": "caa1a945dcfd058c4937c4907743eed970ce14cc" + "url": "https://ftp.drupal.org/files/projects/libraries-4.0.3.zip", + "reference": "4.0.3", + "shasum": "75af50de9a3d1b8dd65039e0b3603aac5e7ebe19" }, "require": { - "drupal/core": "^9.2", - "drupal/entity_reference_revisions": "~1.3" - }, - "require-dev": { - "drupal/block_field": "~1.0", - "drupal/ctools": "3.x-dev", - "drupal/diff": "~1.0", - "drupal/entity_browser": "2.x-dev", - "drupal/entity_usage": "2.x-dev", - "drupal/field_group": "3.x-dev", - "drupal/inline_entity_form": "~1.0", - "drupal/paragraphs-paragraphs_library": "*", - "drupal/replicate": "~1.0", - "drupal/search_api": "1.x-dev", - "drupal/search_api_db": "*" - }, - "suggest": { - "drupal/entity_browser": "Recommended for an improved user experience when using the Paragraphs library module" + "drupal/core": "^8.8 || ^9 || ^10" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.14", - "datestamp": "1650520869", + "version": "4.0.3", + "datestamp": "1684192643", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3412,63 +3333,70 @@ ], "authors": [ { - "name": "Berdir", - "homepage": "https://www.drupal.org/user/214652" + "name": "joseph.olstad", + "homepage": "https://www.drupal.org/user/1321830" }, { - "name": "Frans", - "homepage": "https://www.drupal.org/user/514222" + "name": "podarok", + "homepage": "https://www.drupal.org/user/116002" }, { - "name": "jeroen.b", - "homepage": "https://www.drupal.org/user/1853532" + "name": "Pol", + "homepage": "https://www.drupal.org/user/47194" }, { - "name": "jstoller", - "homepage": "https://www.drupal.org/user/99012" + "name": "rjacobs", + "homepage": "https://www.drupal.org/user/422459" }, { - "name": "miro_dietiker", - "homepage": "https://www.drupal.org/user/227761" + "name": "sun", + "homepage": "https://www.drupal.org/user/54136" }, { - "name": "Primsi", - "homepage": "https://www.drupal.org/user/282629" + "name": "tstoeckler", + "homepage": "https://www.drupal.org/user/107158" } ], - "description": "Enables the creation of Paragraphs entities.", - "homepage": "https://www.drupal.org/project/paragraphs", + "description": "Allows version-dependent and shared usage of external libraries in Drupal.", + "homepage": "http://drupal.org/project/libraries", "support": { - "source": "https://git.drupalcode.org/project/paragraphs" + "source": "https://git.drupalcode.org/project/libraries", + "issues": "http://drupal.org/project/issues/libraries", + "irc": "irc://irc.freenode.org/drupal-contribute" } }, { - "name": "drupal/potion", - "version": "dev-2.x", + "name": "drupal/linkit", + "version": "6.0.2", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/potion.git", - "reference": "e48d6ee336d960b9d2efb5d88e68402db6d229a6" + "url": "https://git.drupalcode.org/project/linkit.git", + "reference": "6.0.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/linkit-6.0.2.zip", + "reference": "6.0.2", + "shasum": "b7d965d122403c0d1cd8b891db3ea56004026804" }, "require": { - "drupal/core": "^8 || ^9", - "symfony/finder": "^3.4 || ^4.4", - "symfony/process": "^3.4 || ^4.4" + "drupal/core": "^9.4 || ^10.0.0" + }, + "conflict": { + "drupal/core": ">=10.1" }, "require-dev": { - "drupal/coder": "^8.3.1" + "drupal/ckeditor": "*", + "drupal/imce": "*" }, "type": "drupal-module", "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - }, "drupal": { - "version": "8.x-2.0-beta1+14-dev", - "datestamp": "1616160587", + "version": "6.0.2", + "datestamp": "1696865395", "security-coverage": { - "status": "not-covered", - "message": "Dev releases are not covered by Drupal security advisories." + "status": "covered", + "message": "Covered by Drupal's security advisory policy" } } }, @@ -3478,71 +3406,65 @@ ], "authors": [ { - "name": "Antistatique", - "homepage": "https://www.antistatique.net", - "email": "info@antistatique.net", - "role": "Sponsor" - }, - { - "name": "Toni Fisler", - "homepage": "https://www.drupal.org/u/tonifisler", - "email": "mail@toni.io", - "role": "Author & Maintainer" + "name": "Emil Stjerneman", + "homepage": "https://stjerneman.com", + "email": "emil@stjerneman.com", + "role": "Maintainer" }, { - "name": "Gilles Doge", - "homepage": "https://www.drupal.org/u/gido", - "email": "gilles@antistatique.net", - "role": "Author & Maintainer" + "name": "johnwebdev", + "homepage": "https://www.drupal.org/user/3331569" }, { - "name": "Kevin Wenger", - "email": "contact@kevin-wenger.ch", - "homepage": "https://www.drupal.org/u/wengerk", - "role": "Author & Maintainer" + "name": "mark_fullmer", + "homepage": "https://www.drupal.org/user/2612816" } ], - "description": "Provides a normalized way to collect internationalization strings to export, merge & create .po files from versatile sources such as Twig, PHP or YML files.", - "homepage": "https://www.drupal.org/project/potion", + "description": "Linkit - Enriched linking experience", + "homepage": "http://drupal.org/project/linkit", "support": { - "source": "https://git.drupalcode.org/project/potion", - "issues": "https://www.drupal.org/project/issues/potion" + "source": "http://cgit.drupalcode.org/linkit", + "issues": "http://drupal.org/project/linkit" } }, { - "name": "drupal/purge", - "version": "3.5.0", + "name": "drupal/metatag", + "version": "2.0.0", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/purge.git", - "reference": "8.x-3.5" + "url": "https://git.drupalcode.org/project/metatag.git", + "reference": "2.0.0" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/purge-8.x-3.5.zip", - "reference": "8.x-3.5", - "shasum": "3772c156be0a2fc1df179710d23b9d7bf645b112" + "url": "https://ftp.drupal.org/files/projects/metatag-2.0.0.zip", + "reference": "2.0.0", + "shasum": "2966c854d982b7069b1c0111519427990ebbad40" }, "require": { - "drupal/core": "^9.2 || ^10" + "drupal/core": "^9.4 || ^10", + "drupal/token": "^1.0", + "php": ">=8.0" + }, + "require-dev": { + "drupal/devel": "^4.0 || ^5.0", + "drupal/hal": "^9 || ^1 || ^2", + "drupal/metatag_dc": "*", + "drupal/metatag_open_graph": "*", + "drupal/page_manager": "^4.0", + "drupal/redirect": "^1.0", + "drupal/webprofiler": "^9 || ^10", + "mpyw/phpunit-patch-serializable-comparison": "*" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-3.5", - "datestamp": "1697142035", + "version": "2.0.0", + "datestamp": "1692368265", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" } - }, - "branch-alias": { - "dev-8.x-3.x": "3.x-dev" - }, - "drush": { - "services": { - "drush.services.yml": ">=9" - } } }, "notification-url": "https://packages.drupal.org/8/downloads", @@ -3551,117 +3473,130 @@ ], "authors": [ { - "name": "Niels van Mourik", - "homepage": "http://www.nielsvm.org" - }, - { - "name": "japerry", - "homepage": "https://www.drupal.org/user/45640" - }, - { - "name": "nielsvm", - "homepage": "https://www.drupal.org/user/163285" + "name": "See contributors", + "homepage": "https://www.drupal.org/node/640498/committers", + "role": "Developer" }, { - "name": "SqyD", - "homepage": "https://www.drupal.org/user/106525" + "name": "Dave Reid", + "homepage": "https://www.drupal.org/user/53892" } ], - "description": "Provides a generic external cache invalidation API and queue service.", - "homepage": "https://www.drupal.org/project/purge", + "description": "Manage meta tags for all entities.", + "homepage": "https://www.drupal.org/project/metatag", + "keywords": [ + "Drupal", + "seo" + ], "support": { - "source": "https://git.drupalcode.org/project/purge" + "source": "https://git.drupalcode.org/project/metatag", + "issues": "https://www.drupal.org/project/issues/metatag", + "docs": "https://www.drupal.org/docs/8/modules/metatag" } }, { - "name": "drupal/redis", - "version": "1.5.0", + "name": "drupal/openapi", + "version": "2.1.0", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/redis.git", - "reference": "8.x-1.5" + "url": "https://git.drupalcode.org/project/openapi.git", + "reference": "8.x-2.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/redis-8.x-1.5.zip", - "reference": "8.x-1.5", - "shasum": "4283333dc2bf405045765b83ca662acc409a6543" + "url": "https://ftp.drupal.org/files/projects/openapi-8.x-2.1.zip", + "reference": "8.x-2.1", + "shasum": "c0ce4095f555dad31c442f2354453ee4f6e9fadc" }, "require": { - "drupal/core": "^8.8 || ^9" + "drupal/core": "^8 || ^9 || ^10" }, - "suggest": { - "predis/predis": "^1.1.1" + "conflict": { + "drupal/core": "<8.7" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.5", - "datestamp": "1609972488", + "version": "8.x-2.1", + "datestamp": "1669682974", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" } } }, - "autoload": { - "psr-4": { - "Drupal\\redis\\": "src" - } - }, "notification-url": "https://packages.drupal.org/8/downloads", "license": [ "GPL-2.0-or-later" ], "authors": [ { - "name": "Berdir", - "homepage": "https://www.drupal.org/user/214652" + "name": "bradjones1", + "homepage": "https://www.drupal.org/user/405824" }, { - "name": "greg.1.anderson", - "homepage": "https://www.drupal.org/user/438598" + "name": "e0ipso", + "homepage": "https://www.drupal.org/user/550110" }, { - "name": "kporras07", - "homepage": "https://www.drupal.org/user/1349780" + "name": "mrjmd", + "homepage": "https://www.drupal.org/user/1800446" }, { - "name": "pounard", - "homepage": "https://www.drupal.org/user/240164" + "name": "phenaproxima", + "homepage": "https://www.drupal.org/user/205645" + }, + { + "name": "richgerdes", + "homepage": "https://www.drupal.org/user/3437973" + }, + { + "name": "rogierbom", + "homepage": "https://www.drupal.org/user/1352176" + }, + { + "name": "tedbow", + "homepage": "https://www.drupal.org/user/240860" } ], - "description": "Integration of Drupal with the Redis key-value store.", - "homepage": "https://www.drupal.org/project/redis", + "description": "Creates OpenAPI specification for Drupal resources.", + "homepage": "https://www.drupal.org/project/openapi", "support": { - "source": "https://git.drupalcode.org/project/redis" + "source": "http://cgit.drupalcode.org/openapi", + "issues": "http://drupal.org/project/issues/openapi" } }, { - "name": "drupal/restui", - "version": "1.21.0", + "name": "drupal/openapi_rest", + "version": "2.0.0-rc3", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/restui.git", - "reference": "8.x-1.21" + "url": "https://git.drupalcode.org/project/openapi_rest.git", + "reference": "8.x-2.0-rc3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/restui-8.x-1.21.zip", - "reference": "8.x-1.21", - "shasum": "2a67dc2c1953dced0bddaff25e5c60784ee0178c" + "url": "https://ftp.drupal.org/files/projects/openapi_rest-8.x-2.0-rc3.zip", + "reference": "8.x-2.0-rc3", + "shasum": "7b53926033bfee8f99b71f43f22ecc7b78b3d44e" }, "require": { - "drupal/core": "^8.7.7 || ^9 || ^10" + "drupal/core": "^8 || ^9 || ^10", + "drupal/openapi": "^2", + "drupal/schemata": "^1.0@beta", + "drupal/schemata_json_schema": "*" + }, + "require-dev": { + "drupal/hal": "^1 || ^2" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.21", - "datestamp": "1659086914", + "version": "8.x-2.0-rc3", + "datestamp": "1670346527", "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" + "status": "not-covered", + "message": "RC releases are not covered by Drupal security advisories." } } }, @@ -3671,143 +3606,134 @@ ], "authors": [ { - "name": "-enzo-", - "homepage": "https://www.drupal.org/user/294937" + "name": "API-First Initiative", + "homepage": "https://www.drupal.org/user/3616626" }, { - "name": "clemens.tolboom", - "homepage": "https://www.drupal.org/user/125814" + "name": "e0ipso", + "homepage": "https://www.drupal.org/user/550110" }, { - "name": "juampynr", - "homepage": "https://www.drupal.org/user/682736" + "name": "phenaproxima", + "homepage": "https://www.drupal.org/user/205645" }, { - "name": "klausi", - "homepage": "https://www.drupal.org/user/262198" + "name": "richgerdes", + "homepage": "https://www.drupal.org/user/3437973" } ], - "description": "Provides a user interface to manage REST resources.", - "homepage": "https://www.drupal.org/project/restui", + "description": "OpenAPI support for the REST module.", + "homepage": "https://www.drupal.org/project/openapi_rest", "support": { - "source": "https://git.drupalcode.org/project/restui" + "source": "https://git.drupalcode.org/project/openapi_rest" } }, { - "name": "drupal/schemata", - "version": "1.0.0-beta2", + "name": "drupal/openid_connect", + "version": "1.4.0", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/schemata.git", - "reference": "8.x-1.0-beta2" + "url": "https://git.drupalcode.org/project/openid_connect.git", + "reference": "8.x-1.4" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/schemata-8.x-1.0-beta2.zip", - "reference": "8.x-1.0-beta2", - "shasum": "c50bc45c370073224877a8c72e6d8d5b2ec732d3" + "url": "https://ftp.drupal.org/files/projects/openid_connect-8.x-1.4.zip", + "reference": "8.x-1.4", + "shasum": "9bdbfa6365d10b2029bdaee9fbd82265aa6d4fa4" }, "require": { - "drupal/core": "^8 || ^9" - }, - "require-dev": { - "drupal/coder": "^8.2", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "league/json-guard": "^1.0", - "league/json-reference": "^1.0" + "drupal/core": "^9.5 || ^10", + "ext-json": "*" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.0-beta2", - "datestamp": "1585777919", + "version": "8.x-1.4", + "datestamp": "1698170385", "security-coverage": { - "status": "not-covered", - "message": "Beta releases are not covered by Drupal security advisories." + "status": "covered", + "message": "Covered by Drupal's security advisory policy" } } }, "notification-url": "https://packages.drupal.org/8/downloads", - "scripts": { - "phpcs": [ - "phpcs --standard=tests/phpcs.xml" - ], - "phpcbf": [ - "phpcbf --standard=tests/phpcs.xml" - ], - "lint": [ - "parallel-lint -e php,module,install,profile,theme,inc --exclude vendor/ --blame ." - ], - "quality": [ - "@lint", - "@phpcs" - ] - }, "license": [ - "GPL-2.0+" + "GPL-2.0-or-later" ], "authors": [ { - "name": "Adam Ross", - "homepage": "https://www.drupal.org/user/550110", - "email": "grayside@gmail.com" - }, - { - "name": "febbraro", - "homepage": "https://www.drupal.org/user/43670" - }, - { - "name": "Grayside", - "homepage": "https://www.drupal.org/user/346868" - }, - { - "name": "HalfChem", - "homepage": "https://www.drupal.org/user/1608382" + "name": "bojanz", + "homepage": "https://www.drupal.org/user/86106" }, { - "name": "jhedstrom", - "homepage": "https://www.drupal.org/user/208732" + "name": "jcnventura", + "homepage": "https://www.drupal.org/user/122464" }, { - "name": "mpotter", - "homepage": "https://www.drupal.org/user/616192" + "name": "pfrilling", + "homepage": "https://www.drupal.org/user/169695" }, { - "name": "richgerdes", - "homepage": "https://www.drupal.org/user/3437973" + "name": "pjcdawkins", + "homepage": "https://www.drupal.org/user/1025236" }, { - "name": "tekante", - "homepage": "https://www.drupal.org/user/640024" + "name": "sanduhrs", + "homepage": "https://www.drupal.org/user/28074" } ], - "description": "Facilitate generation of schema definitions of Drupal 8 data models.", - "homepage": "https://drupal.org/project/schemata", + "description": "A pluggable client implementation for the OpenID Connect protocol.", + "homepage": "https://www.drupal.org/project/openid_connect", "keywords": [ - "Drupal", - "json", - "schema" + "Drupal" ], "support": { - "source": "https://cgit.drupalcode.org/schemata", - "issues": "https://drupal.org/project/issues/schemata" + "source": "https://git.drupalcode.org/project/openid_connect", + "issues": "https://www.drupal.org/project/issues/openid_connect" } }, { - "name": "drupal/schemata_json_schema", - "version": "1.0.0-beta2", + "name": "drupal/paragraphs", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/paragraphs.git", + "reference": "8.x-1.16" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/paragraphs-8.x-1.16.zip", + "reference": "8.x-1.16", + "shasum": "48f60810fd8086a52d56e84af8b212cce7a270e8" + }, "require": { - "drupal/core": "^8 || ^9", - "drupal/schemata": "*" + "drupal/core": "^9.3 || ^10", + "drupal/entity_reference_revisions": "~1.3" }, - "type": "metapackage", + "require-dev": { + "drupal/block_field": "1.x-dev", + "drupal/diff": "1.x-dev", + "drupal/entity_browser": "2.x-dev", + "drupal/entity_usage": "2.x-dev", + "drupal/field_group": "3.x-dev", + "drupal/inline_entity_form": "1.x-dev", + "drupal/paragraphs-paragraphs_library": "*", + "drupal/replicate": "1.x-dev", + "drupal/search_api": "1.x-dev", + "drupal/search_api_db": "*" + }, + "suggest": { + "drupal/entity_browser": "Recommended for an improved user experience when using the Paragraphs library module" + }, + "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-1.0-beta2", - "datestamp": "1585777919", + "version": "8.x-1.16", + "datestamp": "1694007797", "security-coverage": { - "status": "not-covered", - "message": "Beta releases are not covered by Drupal security advisories." + "status": "covered", + "message": "Covered by Drupal's security advisory policy" } } }, @@ -3817,73 +3743,64 @@ ], "authors": [ { - "name": "e0ipso", - "homepage": "https://www.drupal.org/user/550110" - }, - { - "name": "febbraro", - "homepage": "https://www.drupal.org/user/43670" - }, - { - "name": "Grayside", - "homepage": "https://www.drupal.org/user/346868" + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" }, { - "name": "HalfChem", - "homepage": "https://www.drupal.org/user/1608382" + "name": "Frans", + "homepage": "https://www.drupal.org/user/514222" }, { - "name": "jhedstrom", - "homepage": "https://www.drupal.org/user/208732" + "name": "jeroen.b", + "homepage": "https://www.drupal.org/user/1853532" }, { - "name": "mpotter", - "homepage": "https://www.drupal.org/user/616192" + "name": "jstoller", + "homepage": "https://www.drupal.org/user/99012" }, { - "name": "richgerdes", - "homepage": "https://www.drupal.org/user/3437973" + "name": "miro_dietiker", + "homepage": "https://www.drupal.org/user/227761" }, { - "name": "tekante", - "homepage": "https://www.drupal.org/user/640024" + "name": "Primsi", + "homepage": "https://www.drupal.org/user/282629" } ], - "description": "Provides a data models for entity types and bundles in JSON schema format.", - "homepage": "https://www.drupal.org/project/schemata", + "description": "Enables the creation of Paragraphs entities.", + "homepage": "https://www.drupal.org/project/paragraphs", "support": { - "source": "https://git.drupalcode.org/project/schemata" + "source": "https://git.drupalcode.org/project/paragraphs" } }, { - "name": "drupal/twig_tweak", - "version": "3.1.3", + "name": "drupal/paragraphs_ee", + "version": "10.0.2", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/twig_tweak.git", - "reference": "3.1.3" + "url": "https://git.drupalcode.org/project/paragraphs_ee.git", + "reference": "10.0.2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.1.3.zip", - "reference": "3.1.3", - "shasum": "9f2f6813bf6d40faded73b0fd36e6c669565c7f7" + "url": "https://ftp.drupal.org/files/projects/paragraphs_ee-10.0.2.zip", + "reference": "10.0.2", + "shasum": "4cad95209ed247e172c9d8425f34bbc1a315f006" }, "require": { - "drupal/core": "^9.0", - "ext-json": "*", - "php": ">=7.3", - "symfony/polyfill-php80": "^1.17", - "twig/twig": "^2.12" + "drupal/core": ">=10.0", + "drupal/paragraphs_features": "^2.0@beta" }, - "suggest": { - "symfony/var-dumper": "Better dump() function for debugging Twig variables" + "require-dev": { + "drupal/paragraphs_sets": "*", + "phpunit/phpunit": "^9.5", + "weitzman/drupal-test-traits": "^1.5" }, "type": "drupal-module", "extra": { "drupal": { - "version": "3.1.3", - "datestamp": "1635338145", + "version": "10.0.2", + "datestamp": "1696752786", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3896,51 +3813,46 @@ ], "authors": [ { - "name": "Chi", - "homepage": "https://www.drupal.org/user/556138" + "name": "Stefan Borchert", + "homepage": "https://www.drupal.org/user/36942", + "email": "stefan.borchert@undpaul.de" } ], - "description": "A Twig extension with some useful functions and filters for Drupal development.", - "homepage": "https://www.drupal.org/project/twig_tweak", - "keywords": [ - "Drupal", - "Twig" - ], + "description": "Paragraphs Editor Enhancements for better usability.", + "homepage": "https://www.drupal.org/project/paragraphs_ee", "support": { - "source": "https://git.drupalcode.org/project/twig_tweak", - "issues": "https://www.drupal.org/project/issues/twig_tweak" + "source": "https://git.drupalcode.org/project/paragraphs_ee" } }, { - "name": "drupal/varnish_purge", - "version": "2.1.0", + "name": "drupal/paragraphs_features", + "version": "2.0.0-beta3", "source": { "type": "git", - "url": "https://git.drupalcode.org/project/varnish_purge.git", - "reference": "8.x-2.1" + "url": "https://git.drupalcode.org/project/paragraphs_features.git", + "reference": "2.0.0-beta3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/varnish_purge-8.x-2.1.zip", - "reference": "8.x-2.1", - "shasum": "695eb7d81816e013e81d36207cfac162dd3cbe9f" + "url": "https://ftp.drupal.org/files/projects/paragraphs_features-2.0.0-beta3.zip", + "reference": "2.0.0-beta3", + "shasum": "b040ba0048101f578752050bc55cc039939a649c" }, "require": { - "drupal/core": "^8 || ^9" + "drupal/core": "^9.2 || ^10", + "drupal/paragraphs": "^1.13" }, "require-dev": { - "drupal/purge": "*", - "drupal/purge_tokens": "*", - "drupal/varnish_purger-varnish_purger": "*" + "drupal/gin": "^3.0" }, "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.1", - "datestamp": "1615977068", + "version": "2.0.0-beta3", + "datestamp": "1692697161", "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." } } }, @@ -3950,460 +3862,1621 @@ ], "authors": [ { - "name": "deadbeef", - "homepage": "https://www.drupal.org/user/93644" + "name": "Mladen Todorovic", + "homepage": "https://www.drupal.org/user/2103716", + "email": "mladen.todorovic@burda.com" }, { - "name": "javivf", - "homepage": "https://www.drupal.org/user/2789335" + "name": "Daniel Bosen", + "homepage": "https://www.drupal.org/user/404865", + "email": "daniel.bosen@burda.com" }, { - "name": "littlethoughts", - "homepage": "https://www.drupal.org/user/2479724" + "name": "Christian Fritsch", + "homepage": "https://www.drupal.org/user/3511180", + "email": "christian.fritsch@burda.com" }, { - "name": "MiSc", - "homepage": "https://www.drupal.org/user/382892" + "name": "Volker Killesreiter", + "homepage": "https://www.drupal.org/user/57527", + "email": "volker.killesreiter@burda.com" + }, + { + "name": "Alex Pott", + "email": "alex.a.pott@gmail.com" } ], - "homepage": "https://www.drupal.org/project/varnish_purge", + "description": "Paragraphs features for extending paragraphs widget functionality.", + "homepage": "https://www.drupal.org/project/paragraphs_features", "support": { - "source": "https://git.drupalcode.org/project/varnish_purge" + "source": "https://git.drupalcode.org/project/paragraphs_features" } }, { - "name": "drush/drush", - "version": "11.6.0", + "name": "drupal/potion", + "version": "dev-2.x", "source": { "type": "git", - "url": "https://github.com/drush-ops/drush.git", - "reference": "f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78" + "url": "https://git.drupalcode.org/project/potion.git", + "reference": "e48d6ee336d960b9d2efb5d88e68402db6d229a6" + }, + "require": { + "drupal/core": "^8 || ^9 || ^10", + "symfony/finder": "^3.4 || ^4.4 || ^5 || ^6", + "symfony/process": "^3.4 || ^4.4 || ^5 || ^6", + "symfony/translation": "^3.4 || ^4.4 || ^5 || ^6" + }, + "type": "drupal-module" + }, + { + "name": "drupal/purge", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/purge.git", + "reference": "8.x-3.5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drush-ops/drush/zipball/f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78", - "reference": "f301df5dec8d2aacb03d3e01e0ffc6d98e10ae78", - "shasum": "" + "url": "https://ftp.drupal.org/files/projects/purge-8.x-3.5.zip", + "reference": "8.x-3.5", + "shasum": "3772c156be0a2fc1df179710d23b9d7bf645b112" }, "require": { - "chi-teck/drupal-code-generator": "^2.4", - "composer/semver": "^1.4 || ^3", - "consolidation/annotated-command": "^4.8.2", - "consolidation/config": "^2", - "consolidation/filter-via-dot-access-data": "^2", - "consolidation/robo": "^3.0.9 || ^4.0.1", - "consolidation/site-alias": "^3.1.6 || ^4", - "consolidation/site-process": "^4.1.3 || ^5", - "enlightn/security-checker": "^1", - "ext-dom": "*", - "guzzlehttp/guzzle": "^6.5 || ^7.0", - "league/container": "^3.4 || ^4", - "php": ">=7.4", + "drupal/core": "^9.2 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-3.5", + "datestamp": "1697142035", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "branch-alias": { + "dev-8.x-3.x": "3.x-dev" + }, + "drush": { + "services": { + "drush.services.yml": ">=9" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Niels van Mourik", + "homepage": "http://www.nielsvm.org" + }, + { + "name": "japerry", + "homepage": "https://www.drupal.org/user/45640" + }, + { + "name": "nielsvm", + "homepage": "https://www.drupal.org/user/163285" + }, + { + "name": "SqyD", + "homepage": "https://www.drupal.org/user/106525" + } + ], + "description": "Provides a generic external cache invalidation API and queue service.", + "homepage": "https://www.drupal.org/project/purge", + "support": { + "source": "https://git.drupalcode.org/project/purge" + } + }, + { + "name": "drupal/redis", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/redis.git", + "reference": "8.x-1.7" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/redis-8.x-1.7.zip", + "reference": "8.x-1.7", + "shasum": "602043bdad62ff047321121edcfde8abf3638c7c" + }, + "require": { + "drupal/core": "^9.3 || ^10" + }, + "suggest": { + "ext-redis": "Required to use the PhpRedis as redis driver (^4.0|^5.0).", + "ext-relay": "Required to use the Relay as Redis driver (^0.5|^1.0).", + "predis/predis": "Required to use the Predis as redis driver (^1.1|^2.0)." + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.7", + "datestamp": "1686175620", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "autoload": { + "psr-4": { + "Drupal\\redis\\": "src" + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "greg.1.anderson", + "homepage": "https://www.drupal.org/user/438598" + }, + { + "name": "kporras07", + "homepage": "https://www.drupal.org/user/1349780" + }, + { + "name": "pounard", + "homepage": "https://www.drupal.org/user/240164" + } + ], + "description": "Integration of Drupal with the Redis key-value store.", + "homepage": "https://www.drupal.org/project/redis", + "support": { + "source": "https://git.drupalcode.org/project/redis" + } + }, + { + "name": "drupal/restui", + "version": "1.21.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/restui.git", + "reference": "8.x-1.21" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/restui-8.x-1.21.zip", + "reference": "8.x-1.21", + "shasum": "2a67dc2c1953dced0bddaff25e5c60784ee0178c" + }, + "require": { + "drupal/core": "^8.7.7 || ^9 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.21", + "datestamp": "1659086914", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "-enzo-", + "homepage": "https://www.drupal.org/user/294937" + }, + { + "name": "clemens.tolboom", + "homepage": "https://www.drupal.org/user/125814" + }, + { + "name": "juampynr", + "homepage": "https://www.drupal.org/user/682736" + }, + { + "name": "klausi", + "homepage": "https://www.drupal.org/user/262198" + } + ], + "description": "Provides a user interface to manage REST resources.", + "homepage": "https://www.drupal.org/project/restui", + "support": { + "source": "https://git.drupalcode.org/project/restui" + } + }, + { + "name": "drupal/schemata", + "version": "1.0.0-beta3", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/schemata.git", + "reference": "8.x-1.0-beta3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/schemata-8.x-1.0-beta3.zip", + "reference": "8.x-1.0-beta3", + "shasum": "be2cbbf357c3f4d126c8ffbf926432b5fe44e4ff" + }, + "require": { + "drupal/core": "^8 || ^9 || ^10" + }, + "require-dev": { + "drupal/coder": "^8.2", + "drupal/hal": "^1 || ^2", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "justinrainbow/json-schema": "^5.2" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.0-beta3", + "datestamp": "1670337727", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "scripts": { + "phpcs": [ + "phpcs --standard=tests/phpcs.xml" + ], + "phpcbf": [ + "phpcbf --standard=tests/phpcs.xml" + ], + "lint": [ + "parallel-lint -e php,module,install,profile,theme,inc --exclude vendor/ --blame ." + ], + "quality": [ + "@lint", + "@phpcs" + ] + }, + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Adam Ross", + "homepage": "https://www.drupal.org/user/550110", + "email": "grayside@gmail.com" + }, + { + "name": "febbraro", + "homepage": "https://www.drupal.org/user/43670" + }, + { + "name": "Grayside", + "homepage": "https://www.drupal.org/user/346868" + }, + { + "name": "HalfChem", + "homepage": "https://www.drupal.org/user/1608382" + }, + { + "name": "jhedstrom", + "homepage": "https://www.drupal.org/user/208732" + }, + { + "name": "mpotter", + "homepage": "https://www.drupal.org/user/616192" + }, + { + "name": "richgerdes", + "homepage": "https://www.drupal.org/user/3437973" + }, + { + "name": "tekante", + "homepage": "https://www.drupal.org/user/640024" + } + ], + "description": "Facilitate generation of schema definitions of Drupal 8 data models.", + "homepage": "https://drupal.org/project/schemata", + "keywords": [ + "Drupal", + "json", + "schema" + ], + "support": { + "source": "https://cgit.drupalcode.org/schemata", + "issues": "https://drupal.org/project/issues/schemata" + } + }, + { + "name": "drupal/schemata_json_schema", + "version": "1.0.0-beta3", + "require": { + "drupal/core": "^8 || ^9 || ^10", + "drupal/schemata": "*" + }, + "type": "metapackage", + "extra": { + "drupal": { + "version": "8.x-1.0-beta3", + "datestamp": "1670337727", + "security-coverage": { + "status": "not-covered", + "message": "Beta releases are not covered by Drupal security advisories." + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "e0ipso", + "homepage": "https://www.drupal.org/user/550110" + }, + { + "name": "febbraro", + "homepage": "https://www.drupal.org/user/43670" + }, + { + "name": "Grayside", + "homepage": "https://www.drupal.org/user/346868" + }, + { + "name": "HalfChem", + "homepage": "https://www.drupal.org/user/1608382" + }, + { + "name": "jhedstrom", + "homepage": "https://www.drupal.org/user/208732" + }, + { + "name": "mpotter", + "homepage": "https://www.drupal.org/user/616192" + }, + { + "name": "richgerdes", + "homepage": "https://www.drupal.org/user/3437973" + }, + { + "name": "tekante", + "homepage": "https://www.drupal.org/user/640024" + } + ], + "description": "Provides a data models for entity types and bundles in JSON schema format.", + "homepage": "https://www.drupal.org/project/schemata", + "support": { + "source": "https://git.drupalcode.org/project/schemata" + } + }, + { + "name": "drupal/token", + "version": "1.13.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/token.git", + "reference": "8.x-1.13" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/token-8.x-1.13.zip", + "reference": "8.x-1.13", + "shasum": "f2a074b51726de3727c1d900237d6d471806a4d2" + }, + "require": { + "drupal/core": "^9.2 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.13", + "datestamp": "1697885927", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": ">=9" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Berdir", + "homepage": "https://www.drupal.org/user/214652" + }, + { + "name": "Dave Reid", + "homepage": "https://www.drupal.org/user/53892" + }, + { + "name": "eaton", + "homepage": "https://www.drupal.org/user/16496" + }, + { + "name": "fago", + "homepage": "https://www.drupal.org/user/16747" + }, + { + "name": "greggles", + "homepage": "https://www.drupal.org/user/36762" + }, + { + "name": "mikeryan", + "homepage": "https://www.drupal.org/user/4420" + } + ], + "description": "Provides a user interface for the Token API, some missing core tokens.", + "homepage": "https://www.drupal.org/project/token", + "support": { + "source": "https://git.drupalcode.org/project/token" + } + }, + { + "name": "drupal/twig_tweak", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/twig_tweak.git", + "reference": "3.2.1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.2.1.zip", + "reference": "3.2.1", + "shasum": "89fc08b60f494a7d786251b6c2c493c536218222" + }, + "require": { + "drupal/core": "^9.3 || ^10.0", + "ext-json": "*", + "php": ">=7.3", + "symfony/polyfill-php80": "^1.17", + "twig/twig": "^2.12 || ^3.3.8" + }, + "suggest": { + "symfony/var-dumper": "Better dump() function for debugging Twig variables" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "3.2.1", + "datestamp": "1677404306", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10 || ^11" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Chi", + "homepage": "https://www.drupal.org/user/556138" + } + ], + "description": "A Twig extension with some useful functions and filters for Drupal development.", + "homepage": "https://www.drupal.org/project/twig_tweak", + "keywords": [ + "Drupal", + "Twig" + ], + "support": { + "source": "https://git.drupalcode.org/project/twig_tweak", + "issues": "https://www.drupal.org/project/issues/twig_tweak" + } + }, + { + "name": "drupal/upgrade_status", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/upgrade_status.git", + "reference": "4.0.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/upgrade_status-4.0.0.zip", + "reference": "4.0.0", + "shasum": "013afdb46a03c9db0119cb1ce60ca49631d64368" + }, + "require": { + "drupal/core": "^9 || ^10", + "mathieuviossat/arraytotexttable": "~1.0.0", + "mglaman/phpstan-drupal": "^1.0.0", + "nikic/php-parser": "^4.0.0", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "symfony/process": "^3.4|^4.0|^5.0|^6.0", + "webflo/drupal-finder": "^1.2" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "4.0.0", + "datestamp": "1678815090", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "drush": { + "services": { + "drush.services.yml": "^9 || ^10" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "colan", + "homepage": "https://www.drupal.org/user/58704" + }, + { + "name": "Gábor Hojtsy", + "homepage": "https://www.drupal.org/user/4166" + }, + { + "name": "herczogzoltan", + "homepage": "https://www.drupal.org/user/3528391" + }, + { + "name": "sun", + "homepage": "https://www.drupal.org/user/54136" + }, + { + "name": "webchick", + "homepage": "https://www.drupal.org/user/24967" + }, + { + "name": "xjm", + "homepage": "https://www.drupal.org/user/65776" + } + ], + "description": "Review Drupal major upgrade readiness of the environment and components of the site.", + "homepage": "http://drupal.org/project/upgrade_status", + "support": { + "source": "https://git.drupalcode.org/project/upgrade_status" + } + }, + { + "name": "drupal/varnish_purge", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/varnish_purge.git", + "reference": "8.x-2.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/varnish_purge-8.x-2.2.zip", + "reference": "8.x-2.2", + "shasum": "9fbddb71417113d58345d2fbe9d0a1aa9c5d5c36" + }, + "require": { + "drupal/core": "^8 || ^9 || ^10" + }, + "require-dev": { + "drupal/purge": "*", + "drupal/purge_tokens": "*", + "drupal/varnish_purger-varnish_purger": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.2", + "datestamp": "1681218333", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "deadbeef", + "homepage": "https://www.drupal.org/user/93644" + }, + { + "name": "javivf", + "homepage": "https://www.drupal.org/user/2789335" + }, + { + "name": "littlethoughts", + "homepage": "https://www.drupal.org/user/2479724" + }, + { + "name": "MiSc", + "homepage": "https://www.drupal.org/user/382892" + } + ], + "homepage": "https://www.drupal.org/project/varnish_purge", + "support": { + "source": "https://git.drupalcode.org/project/varnish_purge" + } + }, + { + "name": "drush/drush", + "version": "12.4.3", + "source": { + "type": "git", + "url": "https://github.com/drush-ops/drush.git", + "reference": "8245acede57ecc62a90aa0f19ff3b29e5f11f971" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/drush-ops/drush/zipball/8245acede57ecc62a90aa0f19ff3b29e5f11f971", + "reference": "8245acede57ecc62a90aa0f19ff3b29e5f11f971", + "shasum": "" + }, + "require": { + "chi-teck/drupal-code-generator": "^3.0", + "composer-runtime-api": "^2.2", + "composer/semver": "^1.4 || ^3", + "consolidation/annotated-command": "^4.9.1", + "consolidation/config": "^2.1.2", + "consolidation/filter-via-dot-access-data": "^2.0.2", + "consolidation/output-formatters": "^4.3.2", + "consolidation/robo": "^4.0.6", + "consolidation/site-alias": "^4", + "consolidation/site-process": "^5.2.0", + "ext-dom": "*", + "grasmash/yaml-cli": "^3.1", + "guzzlehttp/guzzle": "^7.0", + "league/container": "^4", + "php": ">=8.1", "psy/psysh": "~0.11", - "symfony/event-dispatcher": "^4.0 || ^5.0 || ^6.0", - "symfony/filesystem": "^4.4 || ^5.4 || ^6.1", - "symfony/finder": "^4.0 || ^5 || ^6", - "symfony/polyfill-php80": "^1.23", - "symfony/var-dumper": "^4.0 || ^5.0 || ^6.0", - "symfony/yaml": "^4.0 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^6", + "symfony/filesystem": "^6.1", + "symfony/finder": "^6", + "symfony/var-dumper": "^6.0", + "symfony/yaml": "^6.0", "webflo/drupal-finder": "^1.2" }, - "conflict": { - "drupal/core": "< 9.2", - "drupal/migrate_run": "*", - "drupal/migrate_tools": "<= 5" + "conflict": { + "drupal/core": "< 10.0", + "drupal/migrate_run": "*", + "drupal/migrate_tools": "<= 5" + }, + "require-dev": { + "composer/installers": "^2", + "cweagans/composer-patches": "~1.0", + "drupal/core-recommended": "^10", + "drupal/semver_example": "2.3.0", + "phpunit/phpunit": "^9", + "rector/rector": "^0.12", + "squizlabs/php_codesniffer": "^3.7" + }, + "bin": [ + "drush" + ], + "type": "library", + "extra": { + "installer-paths": { + "sut/core": [ + "type:drupal-core" + ], + "sut/libraries/{$name}": [ + "type:drupal-library" + ], + "sut/modules/unish/{$name}": [ + "drupal/devel" + ], + "sut/themes/unish/{$name}": [ + "drupal/empty_theme" + ], + "sut/modules/contrib/{$name}": [ + "type:drupal-module" + ], + "sut/profiles/contrib/{$name}": [ + "type:drupal-profile" + ], + "sut/themes/contrib/{$name}": [ + "type:drupal-theme" + ], + "sut/drush/contrib/{$name}": [ + "type:drupal-drush" + ] + } + }, + "autoload": { + "psr-4": { + "Drush\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Moshe Weitzman", + "email": "weitzman@tejasa.com" + }, + { + "name": "Owen Barton", + "email": "drupal@owenbarton.com" + }, + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + }, + { + "name": "Jonathan Araña Cruz", + "email": "jonhattan@faita.net" + }, + { + "name": "Jonathan Hedstrom", + "email": "jhedstrom@gmail.com" + }, + { + "name": "Christopher Gervais", + "email": "chris@ergonlogic.com" + }, + { + "name": "Dave Reid", + "email": "dave@davereid.net" + }, + { + "name": "Damian Lee", + "email": "damiankloip@googlemail.com" + } + ], + "description": "Drush is a command line shell and scripting interface for Drupal, a veritable Swiss Army knife designed to make life easier for those of us who spend some of our working hours hacking away at the command prompt.", + "homepage": "http://www.drush.org", + "support": { + "forum": "http://drupal.stackexchange.com/questions/tagged/drush", + "issues": "https://github.com/drush-ops/drush/issues", + "security": "https://github.com/drush-ops/drush/security/advisories", + "slack": "https://drupal.slack.com/messages/C62H9CWQM", + "source": "https://github.com/drush-ops/drush/tree/12.4.3" + }, + "funding": [ + { + "url": "https://github.com/weitzman", + "type": "github" + } + ], + "time": "2023-11-16T22:57:24+00:00" + }, + { + "name": "egulias/email-validator", + "version": "3.2.6", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^1.2|^2", + "php": ">=7.2", + "symfony/polyfill-intl-idn": "^1.15" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.8|^9.3.3", + "vimeo/psalm": "^4" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/3.2.6" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-06-01T07:04:22+00:00" + }, + { + "name": "grasmash/expander", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/grasmash/expander.git", + "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/grasmash/expander/zipball/bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", + "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.0", + "php": ">=8.0", + "psr/log": "^2 | ^3" + }, + "require-dev": { + "greg-1-anderson/composer-test-scenarios": "^1", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Grasmash\\Expander\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Grasmick" + } + ], + "description": "Expands internal property references in PHP arrays file.", + "support": { + "issues": "https://github.com/grasmash/expander/issues", + "source": "https://github.com/grasmash/expander/tree/3.0.0" + }, + "time": "2022-05-10T13:14:49+00:00" + }, + { + "name": "grasmash/yaml-cli", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/grasmash/yaml-cli.git", + "reference": "00f3fd775f6abbfacd44432f1999c3c3b02791f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/grasmash/yaml-cli/zipball/00f3fd775f6abbfacd44432f1999c3c3b02791f0", + "reference": "00f3fd775f6abbfacd44432f1999c3c3b02791f0", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3", + "php": ">=8.0", + "symfony/console": "^6", + "symfony/filesystem": "^6", + "symfony/yaml": "^6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.0" + }, + "bin": [ + "bin/yaml-cli" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Grasmash\\YamlCli\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Grasmick" + } + ], + "description": "A command line tool for reading and manipulating yaml files.", + "support": { + "issues": "https://github.com/grasmash/yaml-cli/issues", + "source": "https://github.com/grasmash/yaml-cli/tree/3.1.0" + }, + "time": "2022-05-09T20:22:34+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.5.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "584d1f06b5caa07b0587f5054d551ed65460ce5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/584d1f06b5caa07b0587f5054d551ed65460ce5d", + "reference": "584d1f06b5caa07b0587f5054d551ed65460ce5d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "ext-curl": "*", + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.5.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2023-05-15T20:42:18+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.5.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.5.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-05-21T12:31:43+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.4.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/0454e12ef0cd597ccd2adb036f7bda4e7fface66", + "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" }, "require-dev": { - "composer/installers": "^1.7", - "cweagans/composer-patches": "~1.0", - "david-garcia/phpwhois": "4.3.0", - "drupal/core-recommended": "^9 || ^10", - "drupal/semver_example": "2.3.0", - "phpunit/phpunit": ">=7.5.20", - "rector/rector": "^0.12", - "squizlabs/php_codesniffer": "^3.6", - "vlucas/phpdotenv": "^2.4", - "yoast/phpunit-polyfills": "^0.2.0" + "bamarni/composer-bin-plugin": "^1.8.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, - "bin": [ - "drush" - ], "type": "library", "extra": { - "installer-paths": { - "sut/core": [ - "type:drupal-core" - ], - "sut/libraries/{$name}": [ - "type:drupal-library" - ], - "sut/modules/unish/{$name}": [ - "drupal/devel" - ], - "sut/themes/unish/{$name}": [ - "drupal/empty_theme" - ], - "sut/modules/contrib/{$name}": [ - "type:drupal-module" - ], - "sut/profiles/contrib/{$name}": [ - "type:drupal-profile" - ], - "sut/themes/contrib/{$name}": [ - "type:drupal-theme" - ], - "sut/drush/contrib/{$name}": [ - "type:drupal-drush" - ] + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { "psr-4": { - "Drush\\": "src/" + "GuzzleHttp\\Psr7\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-2.0-or-later" + "MIT" ], "authors": [ { - "name": "Moshe Weitzman", - "email": "weitzman@tejasa.com" - }, - { - "name": "Owen Barton", - "email": "drupal@owenbarton.com" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { - "name": "Greg Anderson", - "email": "greg.1.anderson@greenknowe.org" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" }, { - "name": "Jonathan Araña Cruz", - "email": "jonhattan@faita.net" + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" }, { - "name": "Jonathan Hedstrom", - "email": "jhedstrom@gmail.com" + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" }, { - "name": "Christopher Gervais", - "email": "chris@ergonlogic.com" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" }, { - "name": "Dave Reid", - "email": "dave@davereid.net" + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" }, { - "name": "Damian Lee", - "email": "damiankloip@googlemail.com" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], - "description": "Drush is a command line shell and scripting interface for Drupal, a veritable Swiss Army knife designed to make life easier for those of us who spend some of our working hours hacking away at the command prompt.", - "homepage": "http://www.drush.org", + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], "support": { - "forum": "http://drupal.stackexchange.com/questions/tagged/drush", - "issues": "https://github.com/drush-ops/drush/issues", - "slack": "https://drupal.slack.com/messages/C62H9CWQM", - "source": "https://github.com/drush-ops/drush/tree/11.6.0" + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.4.5" }, "funding": [ { - "url": "https://github.com/weitzman", + "url": "https://github.com/GrahamCampbell", "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" } ], - "time": "2023-06-06T18:46:18+00:00" + "time": "2023-04-17T16:00:45+00:00" }, { - "name": "egulias/email-validator", - "version": "2.1.25", + "name": "icanboogie/inflector", + "version": "v2.2.1", "source": { "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" + "url": "https://github.com/ICanBoogie/Inflector.git", + "reference": "0288676d1cd48899386f8bbe50643d3ade5dc13b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "url": "https://api.github.com/repos/ICanBoogie/Inflector/zipball/0288676d1cd48899386f8bbe50643d3ade5dc13b", + "reference": "0288676d1cd48899386f8bbe50643d3ade5dc13b", "shasum": "" }, "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" + "ext-mbstring": "*", + "php": ">=7.1" }, - "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" + "conflict": { + "icanboogie/common": "<2.0" }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + "require-dev": { + "icanboogie/common": "^2.0", + "phpstan/phpstan": "^0.12.92", + "phpunit/phpunit": "^7.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, "autoload": { + "files": [ + "lib/helpers.php" + ], "psr-4": { - "Egulias\\EmailValidator\\": "src" + "ICanBoogie\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Eduardo Gulias Davis" + "name": "Olivier Laviale", + "email": "olivier.laviale@gmail.com", + "homepage": "http://www.weirdog.com/", + "role": "Developer" } ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", + "description": "Multilingual inflector that transforms words from singular to plural, underscore to camel case, and more.", + "homepage": "http://icanboogie.org/", "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" + "camelize", + "hyphenate", + "inflect", + "multilingual", + "pluralize", + "singularize", + "underscore" ], "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + "issues": "https://github.com/ICanBoogie/Inflector/issues", + "source": "https://github.com/ICanBoogie/Inflector" }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2020-12-29T14:50:06+00:00" + "time": "2023-03-12T18:39:52+00:00" }, { - "name": "enlightn/security-checker", - "version": "v1.10.0", + "name": "laminas/laminas-servicemanager", + "version": "3.15.0", "source": { "type": "git", - "url": "https://github.com/enlightn/security-checker.git", - "reference": "196bacc76e7a72a63d0e1220926dbb190272db97" + "url": "https://github.com/laminas/laminas-servicemanager.git", + "reference": "65910ef6a8066b0369fab77fbec9e030be59c866" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/enlightn/security-checker/zipball/196bacc76e7a72a63d0e1220926dbb190272db97", - "reference": "196bacc76e7a72a63d0e1220926dbb190272db97", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/65910ef6a8066b0369fab77fbec9e030be59c866", + "reference": "65910ef6a8066b0369fab77fbec9e030be59c866", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/guzzle": "^6.3|^7.0", - "php": ">=5.6", - "symfony/console": "^3.4|^4|^5|^6", - "symfony/finder": "^3|^4|^5|^6", - "symfony/process": "^3.4|^4|^5|^6", - "symfony/yaml": "^3.4|^4|^5|^6" + "composer-plugin-api": "^2.0", + "laminas/laminas-stdlib": "^3.2.1", + "php": "~7.4.0 || ~8.0.0 || ~8.1.0", + "psr/container": "^1.1 || ^2.0.2" + }, + "conflict": { + "ext-psr": "*", + "laminas/laminas-code": "<3.3.1", + "zendframework/zend-code": "<3.3.1", + "zendframework/zend-servicemanager": "*" + }, + "provide": { + "psr/container-implementation": "^1.1 || ^2.0" + }, + "replace": { + "container-interop/container-interop": "^1.2.0" }, "require-dev": { - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^2.18|^3.0", - "phpunit/phpunit": "^5.5|^6|^7|^8|^9" + "laminas/laminas-coding-standard": "~2.3.0", + "laminas/laminas-container-config-test": "^0.6", + "mikey179/vfsstream": "^1.6.10@alpha", + "ocramius/proxy-manager": "^2.11", + "phpbench/phpbench": "^1.1", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5.5", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.8" + }, + "suggest": { + "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" }, "bin": [ - "security-checker" + "bin/generate-deps-for-config-factory", + "bin/generate-factory-for-class" ], "type": "library", "autoload": { + "files": [ + "src/autoload.php" + ], "psr-4": { - "Enlightn\\SecurityChecker\\": "src" + "Laminas\\ServiceManager\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paras Malhotra", - "email": "paras@laravel-enlightn.com" - }, - { - "name": "Miguel Piedrafita", - "email": "soy@miguelpiedrafita.com" - } + "BSD-3-Clause" ], - "description": "A PHP dependency vulnerabilities scanner based on the Security Advisories Database.", + "description": "Factory-Driven Dependency Injection Container", + "homepage": "https://laminas.dev", "keywords": [ - "package", - "php", - "scanner", - "security", - "security advisories", - "vulnerability scanner" + "PSR-11", + "dependency-injection", + "di", + "dic", + "laminas", + "service-manager", + "servicemanager" ], "support": { - "issues": "https://github.com/enlightn/security-checker/issues", - "source": "https://github.com/enlightn/security-checker/tree/v1.10.0" + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-servicemanager/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-servicemanager/issues", + "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", + "source": "https://github.com/laminas/laminas-servicemanager" }, - "time": "2022-02-21T22:40:16+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2022-07-18T21:18:56+00:00" }, { - "name": "grasmash/expander", - "version": "2.0.3", + "name": "laminas/laminas-stdlib", + "version": "3.18.0", "source": { "type": "git", - "url": "https://github.com/grasmash/expander.git", - "reference": "b7cbc1f2fdf9a9c0e253a424c2a4058316b7cb6e" + "url": "https://github.com/laminas/laminas-stdlib.git", + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/grasmash/expander/zipball/b7cbc1f2fdf9a9c0e253a424c2a4058316b7cb6e", - "reference": "b7cbc1f2fdf9a9c0e253a424c2a4058316b7cb6e", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", "shasum": "" }, "require": { - "dflydev/dot-access-data": "^3.0.0", - "php": ">=7.1", - "psr/log": "^1 | ^2 | ^3" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + }, + "conflict": { + "zendframework/zend-stdlib": "*" }, "require-dev": { - "greg-1-anderson/composer-test-scenarios": "^1", - "phpunit/phpunit": "^6.0 || ^8.0 || ^9", - "squizlabs/php_codesniffer": "^2.7 || ^3.3" + "laminas/laminas-coding-standard": "^2.5", + "phpbench/phpbench": "^1.2.14", + "phpunit/phpunit": "^10.3.3", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { - "Grasmash\\Expander\\": "src/" + "Laminas\\Stdlib\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "authors": [ - { - "name": "Matthew Grasmick" - } + "description": "SPL extensions, array utilities, error handlers, and more", + "homepage": "https://laminas.dev", + "keywords": [ + "laminas", + "stdlib" ], - "description": "Expands internal property references in PHP arrays file.", "support": { - "issues": "https://github.com/grasmash/expander/issues", - "source": "https://github.com/grasmash/expander/tree/2.0.3" + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-stdlib/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-stdlib/issues", + "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", + "source": "https://github.com/laminas/laminas-stdlib" }, - "time": "2022-04-25T22:17:46+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2023-09-19T10:15:21+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "6.5.5", + "name": "laminas/laminas-text", + "version": "2.9.0", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" + "url": "https://github.com/laminas/laminas-text.git", + "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "url": "https://api.github.com/repos/laminas/laminas-text/zipball/8879e75d03e09b0d6787e6680cfa255afd4645a7", + "reference": "8879e75d03e09b0d6787e6680cfa255afd4645a7", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17.0" + "laminas/laminas-servicemanager": "^3.4", + "laminas/laminas-stdlib": "^3.6", + "php": "^7.3 || ~8.0.0 || ~8.1.0" }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" + "conflict": { + "zendframework/zend-text": "*" }, - "suggest": { - "psr/log": "Required for using the Log middleware" + "require-dev": { + "laminas/laminas-coding-standard": "~1.0.0", + "phpunit/phpunit": "^9.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5-dev" - } - }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\": "src/" + "Laminas\\Text\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } + "BSD-3-Clause" ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", + "description": "Create FIGlets and text-based tables", + "homepage": "https://laminas.dev", "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" + "laminas", + "text" ], "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5" + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-text/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-text/issues", + "rss": "https://github.com/laminas/laminas-text/releases.atom", + "source": "https://github.com/laminas/laminas-text" }, - "time": "2020-06-16T21:01:06+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-02T16:50:53+00:00" }, { - "name": "guzzlehttp/promises", - "version": "1.4.1", + "name": "league/container", + "version": "4.2.0", "source": { "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "url": "https://github.com/thephpleague/container.git", + "reference": "375d13cb828649599ef5d48a339c4af7a26cd0ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/thephpleague/container/zipball/375d13cb828649599ef5d48a339c4af7a26cd0ab", + "reference": "375d13cb828649599ef5d48a339c4af7a26cd0ab", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2 || ^8.0", + "psr/container": "^1.1 || ^2.0" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "replace": { + "orno/di": "~2.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "nette/php-generator": "^3.4", + "nikic/php-parser": "^4.10", + "phpstan/phpstan": "^0.12.47", + "phpunit/phpunit": "^8.5.17", + "roave/security-advisories": "dev-latest", + "scrutinizer/ocular": "^1.8", + "squizlabs/php_codesniffer": "^3.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "4.x-dev", + "dev-4.x": "4.x-dev", + "dev-3.x": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\Promise\\": "src/" + "League\\Container\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4412,62 +5485,66 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Phil Bennett", + "email": "mail@philbennett.co.uk", + "role": "Developer" } ], - "description": "Guzzle promises library", + "description": "A fast and intuitive dependency injection container.", + "homepage": "https://github.com/thephpleague/container", "keywords": [ - "promise" + "container", + "dependency", + "di", + "injection", + "league", + "provider", + "service" ], "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" + "issues": "https://github.com/thephpleague/container/issues", + "source": "https://github.com/thephpleague/container/tree/4.2.0" }, - "time": "2021-03-07T09:25:29+00:00" + "funding": [ + { + "url": "https://github.com/philipobenito", + "type": "github" + } + ], + "time": "2021-11-16T10:29:06+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "1.8.2", + "name": "masterminds/html5", + "version": "2.7.6", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91" + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "897eb517a343a2281f11bc5556d6548db7d93947" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/897eb517a343a2281f11bc5556d6548db7d93947", + "reference": "897eb517a343a2281f11bc5556d6548db7d93947", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" + "ext-ctype": "*", + "ext-dom": "*", + "ext-libxml": "*", + "php": ">=5.3.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "2.7-dev" } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" + "Masterminds\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4476,643 +5553,570 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Matt Butcher", + "email": "technosophos@gmail.com" }, { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" } ], - "description": "PSR-7 message implementation that also provides common utility methods", + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" ], "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.2" + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.7.6" }, - "time": "2021-04-26T09:17:50+00:00" + "time": "2022-08-18T16:18:26+00:00" }, { - "name": "icanboogie/inflector", - "version": "v2.2.1", + "name": "mathieuviossat/arraytotexttable", + "version": "v1.0.9", "source": { "type": "git", - "url": "https://github.com/ICanBoogie/Inflector.git", - "reference": "0288676d1cd48899386f8bbe50643d3ade5dc13b" + "url": "https://github.com/viossat/arraytotexttable.git", + "reference": "518ec338fe62e92c064a9d3d3bc8c64fb6e77d1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ICanBoogie/Inflector/zipball/0288676d1cd48899386f8bbe50643d3ade5dc13b", - "reference": "0288676d1cd48899386f8bbe50643d3ade5dc13b", + "url": "https://api.github.com/repos/viossat/arraytotexttable/zipball/518ec338fe62e92c064a9d3d3bc8c64fb6e77d1c", + "reference": "518ec338fe62e92c064a9d3d3bc8c64fb6e77d1c", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=7.1" - }, - "conflict": { - "icanboogie/common": "<2.0" - }, - "require-dev": { - "icanboogie/common": "^2.0", - "phpstan/phpstan": "^0.12.92", - "phpunit/phpunit": "^7.5" + "laminas/laminas-text": "^2.9", + "php": ">=5.3.0" }, "type": "library", "autoload": { - "files": [ - "lib/helpers.php" - ], "psr-4": { - "ICanBoogie\\": "lib/" + "MathieuViossat\\Util\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Olivier Laviale", - "email": "olivier.laviale@gmail.com", - "homepage": "http://www.weirdog.com/", - "role": "Developer" + "name": "Mathieu Viossat", + "email": "mathieu@viossat.fr", + "homepage": "https://viossat.fr" } ], - "description": "Multilingual inflector that transforms words from singular to plural, underscore to camel case, and more.", - "homepage": "http://icanboogie.org/", + "description": "Display arrays in terminal", + "homepage": "https://github.com/viossat/arraytotexttable", "keywords": [ - "camelize", - "hyphenate", - "inflect", - "multilingual", - "pluralize", - "singularize", - "underscore" + "array", + "ascii", + "table", + "terminal", + "text", + "unicode" ], "support": { - "issues": "https://github.com/ICanBoogie/Inflector/issues", - "source": "https://github.com/ICanBoogie/Inflector" + "issues": "https://github.com/viossat/arraytotexttable/issues", + "source": "https://github.com/viossat/arraytotexttable/tree/v1.0.9" }, - "time": "2023-03-12T18:39:52+00:00" + "time": "2022-08-30T15:33:10+00:00" }, { - "name": "laminas/laminas-diactoros", - "version": "2.6.0", + "name": "mglaman/phpstan-drupal", + "version": "1.2.4", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "7d2034110ae18afe05050b796a3ee4b3fe177876" + "url": "https://github.com/mglaman/phpstan-drupal.git", + "reference": "57b2cc67fb4416e8484db37a3d8502ac8fb3c0d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/7d2034110ae18afe05050b796a3ee4b3fe177876", - "reference": "7d2034110ae18afe05050b796a3ee4b3fe177876", + "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/57b2cc67fb4416e8484db37a3d8502ac8fb3c0d6", + "reference": "57b2cc67fb4416e8484db37a3d8502ac8fb3c0d6", "shasum": "" }, "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.3 || ~8.0.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "replace": { - "zendframework/zend-diactoros": "^2.2.1" + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^1.10.1", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "symfony/finder": "^4.2 || ^5.0 || ^6.0 || ^7.0", + "symfony/yaml": "^4.2|| ^5.0 || ^6.0 || ^7.0", + "webflo/drupal-finder": "^1.2" }, "require-dev": { - "ext-curl": "*", - "ext-dom": "*", - "ext-gd": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.8.0", - "laminas/laminas-coding-standard": "~1.0.0", - "php-http/psr7-integration-tests": "^1.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.1", - "psalm/plugin-phpunit": "^0.14.0", - "vimeo/psalm": "^4.3" + "behat/mink": "^1.8", + "composer/installers": "^1.9", + "drupal/core-recommended": "^9.0", + "drush/drush": "^10.0 || ^11 || ^12", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.1", + "squizlabs/php_codesniffer": "^3.3", + "symfony/phpunit-bridge": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, - "type": "library", + "suggest": { + "jangregor/phpstan-prophecy": "Provides a prophecy/prophecy extension for phpstan/phpstan.", + "phpstan/phpstan-deprecation-rules": "For catching deprecations, especially in Drupal core.", + "phpstan/phpstan-phpunit": "PHPUnit extensions and rules for PHPStan." + }, + "type": "phpstan-extension", "extra": { - "laminas": { - "config-provider": "Laminas\\Diactoros\\ConfigProvider", - "module": "Laminas\\Diactoros" + "branch-alias": { + "dev-main": "1.0-dev" + }, + "installer-paths": { + "tests/fixtures/drupal/core": [ + "type:drupal-core" + ], + "tests/fixtures/drupal/libraries/{$name}": [ + "type:drupal-library" + ], + "tests/fixtures/drupal/modules/contrib/{$name}": [ + "type:drupal-module" + ], + "tests/fixtures/drupal/profiles/contrib/{$name}": [ + "type:drupal-profile" + ], + "tests/fixtures/drupal/themes/contrib/{$name}": [ + "type:drupal-theme" + ] + }, + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] } }, "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php", - "src/functions/create_uploaded_file.legacy.php", - "src/functions/marshal_headers_from_sapi.legacy.php", - "src/functions/marshal_method_from_sapi.legacy.php", - "src/functions/marshal_protocol_version_from_sapi.legacy.php", - "src/functions/marshal_uri_from_sapi.legacy.php", - "src/functions/normalize_server.legacy.php", - "src/functions/normalize_uploaded_files.legacy.php", - "src/functions/parse_cookie_header.legacy.php" - ], "psr-4": { - "Laminas\\Diactoros\\": "src/" + "mglaman\\PHPStanDrupal\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "PSR HTTP Message implementations", - "homepage": "https://laminas.dev", - "keywords": [ - "http", - "laminas", - "psr", - "psr-17", - "psr-7" + "authors": [ + { + "name": "Matt Glaman", + "email": "nmd.matt@gmail.com" + } ], + "description": "Drupal extension and rules for PHPStan", "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-diactoros/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-diactoros/issues", - "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", - "source": "https://github.com/laminas/laminas-diactoros" + "issues": "https://github.com/mglaman/phpstan-drupal/issues", + "source": "https://github.com/mglaman/phpstan-drupal/tree/1.2.4" }, "funding": [ { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" + "url": "https://github.com/mglaman", + "type": "github" + }, + { + "url": "https://opencollective.com/phpstan-drupal", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/mglaman/phpstan-drupal", + "type": "tidelift" } ], - "time": "2021-05-18T14:41:54+00:00" + "time": "2023-11-14T22:47:32+00:00" }, { - "name": "laminas/laminas-escaper", - "version": "2.7.0", + "name": "myclabs/php-enum", + "version": "1.8.4", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "5e04bc5ae5990b17159d79d331055e2c645e5cc5" + "url": "https://github.com/myclabs/php-enum.git", + "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/5e04bc5ae5990b17159d79d331055e2c645e5cc5", - "reference": "5e04bc5ae5990b17159d79d331055e2c645e5cc5", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483", + "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483", "shasum": "" }, "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.3 || ~8.0.0" - }, - "replace": { - "zendframework/zend-escaper": "^2.6.1" + "ext-json": "*", + "php": "^7.3 || ^8.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.12.2", - "vimeo/psalm": "^3.16" - }, - "suggest": { - "ext-iconv": "*", - "ext-mbstring": "*" + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "1.*", + "vimeo/psalm": "^4.6.2" }, "type": "library", "autoload": { "psr-4": { - "Laminas\\Escaper\\": "src/" - } + "MyCLabs\\Enum\\": "src/" + }, + "classmap": [ + "stubs/Stringable.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", - "homepage": "https://laminas.dev", + "authors": [ + { + "name": "PHP Enum contributors", + "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" + } + ], + "description": "PHP Enum implementation", + "homepage": "http://github.com/myclabs/php-enum", "keywords": [ - "escaper", - "laminas" + "enum" ], "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-escaper/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-escaper/issues", - "rss": "https://github.com/laminas/laminas-escaper/releases.atom", - "source": "https://github.com/laminas/laminas-escaper" + "issues": "https://github.com/myclabs/php-enum/issues", + "source": "https://github.com/myclabs/php-enum/tree/1.8.4" }, "funding": [ { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", + "type": "tidelift" } ], - "time": "2020-11-17T21:26:43+00:00" + "time": "2022-08-04T09:53:51+00:00" }, { - "name": "laminas/laminas-feed", - "version": "2.14.1", + "name": "nikic/php-parser", + "version": "v4.17.1", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-feed.git", - "reference": "463fdae515fba30633906098c258d3b2c733c15c" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/463fdae515fba30633906098c258d3b2c733c15c", - "reference": "463fdae515fba30633906098c258d3b2c733c15c", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "laminas/laminas-escaper": "^2.5.2", - "laminas/laminas-stdlib": "^3.2.1", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.3 || ~8.0.0" - }, - "conflict": { - "laminas/laminas-servicemanager": "<3.3" - }, - "replace": { - "zendframework/zend-feed": "^2.12.0" + "ext-tokenizer": "*", + "php": ">=7.0" }, "require-dev": { - "laminas/laminas-cache": "^2.7.2", - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-db": "^2.8.2", - "laminas/laminas-http": "^2.7", - "laminas/laminas-servicemanager": "^3.3", - "laminas/laminas-validator": "^2.10.1", - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.13.0", - "psr/http-message": "^1.0.1", - "vimeo/psalm": "^4.1" - }, - "suggest": { - "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", - "laminas/laminas-db": "Laminas\\Db component, for use with PubSubHubbub", - "laminas/laminas-http": "Laminas\\Http for PubSubHubbub, and optionally for use with Laminas\\Feed\\Reader", - "laminas/laminas-servicemanager": "Laminas\\ServiceManager component, for easily extending ExtensionManager implementations", - "laminas/laminas-validator": "Laminas\\Validator component, for validating email addresses used in Atom feeds and entries when using the Writer subcomponent", - "psr/http-message": "PSR-7 ^1.0.1, if you wish to use Laminas\\Feed\\Reader\\Http\\Psr7ResponseDecorator" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, + "bin": [ + "bin/php-parse" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, "autoload": { "psr-4": { - "Laminas\\Feed\\": "src/" + "PhpParser\\": "lib/PhpParser" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "provides functionality for consuming RSS and Atom feeds", - "homepage": "https://laminas.dev", + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", "keywords": [ - "feed", - "laminas" + "parser", + "php" ], "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-feed/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-feed/issues", - "rss": "https://github.com/laminas/laminas-feed/releases.atom", - "source": "https://github.com/laminas/laminas-feed" + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-04-01T19:26:09+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { - "name": "laminas/laminas-stdlib", - "version": "3.3.1", + "name": "pear/archive_tar", + "version": "1.4.14", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "d81c7ffe602ed0e6ecb18691019111c0f4bf1efe" + "url": "https://github.com/pear/Archive_Tar.git", + "reference": "4d761c5334c790e45ef3245f0864b8955c562caa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/d81c7ffe602ed0e6ecb18691019111c0f4bf1efe", - "reference": "d81c7ffe602ed0e6ecb18691019111c0f4bf1efe", + "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/4d761c5334c790e45ef3245f0864b8955c562caa", + "reference": "4d761c5334c790e45ef3245f0864b8955c562caa", "shasum": "" }, "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.3 || ^8.0" - }, - "replace": { - "zendframework/zend-stdlib": "^3.2.1" + "pear/pear-core-minimal": "^1.10.0alpha2", + "php": ">=5.2.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpbench/phpbench": "^0.17.1", - "phpunit/phpunit": "~9.3.7" + "phpunit/phpunit": "*" + }, + "suggest": { + "ext-bz2": "Bz2 compression support.", + "ext-xz": "Lzma2 compression support.", + "ext-zlib": "Gzip compression support." }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, "autoload": { - "psr-4": { - "Laminas\\Stdlib\\": "src/" + "psr-0": { + "Archive_Tar": "" } }, "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "./" + ], "license": [ "BSD-3-Clause" ], - "description": "SPL extensions, array utilities, error handlers, and more", - "homepage": "https://laminas.dev", + "authors": [ + { + "name": "Vincent Blavet", + "email": "vincent@phpconcept.net" + }, + { + "name": "Greg Beaver", + "email": "greg@chiaraquartet.net" + }, + { + "name": "Michiel Rook", + "email": "mrook@php.net" + } + ], + "description": "Tar file management class with compression support (gzip, bzip2, lzma2)", + "homepage": "https://github.com/pear/Archive_Tar", "keywords": [ - "laminas", - "stdlib" + "archive", + "tar" ], "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-stdlib/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-stdlib/issues", - "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", - "source": "https://github.com/laminas/laminas-stdlib" + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Archive_Tar", + "source": "https://github.com/pear/Archive_Tar" }, "funding": [ { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" + "url": "https://github.com/mrook", + "type": "github" + }, + { + "url": "https://www.patreon.com/michielrook", + "type": "patreon" } ], - "time": "2020-11-19T20:18:59+00:00" + "time": "2021-07-20T13:53:39+00:00" }, { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.2.0", + "name": "pear/console_getopt", + "version": "v1.4.3", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "6cccbddfcfc742eb02158d6137ca5687d92cee32" + "url": "https://github.com/pear/Console_Getopt.git", + "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6cccbddfcfc742eb02158d6137ca5687d92cee32", - "reference": "6cccbddfcfc742eb02158d6137ca5687d92cee32", + "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/a41f8d3e668987609178c7c4a9fe48fecac53fa0", + "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0", "shasum": "" }, - "require": { - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3", - "psalm/plugin-phpunit": "^0.15.1", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.6" - }, "type": "library", - "extra": { - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" + "psr-0": { + "Console": "./" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" + "include-path": [ + "./" ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "keywords": [ - "ZendFramework", - "autoloading", - "laminas", - "zf" + "license": [ + "BSD-2-Clause" ], - "support": { - "forum": "https://discourse.laminas.dev/", - "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", - "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", - "source": "https://github.com/laminas/laminas-zendframework-bridge" - }, - "funding": [ + "authors": [ { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" + "name": "Andrei Zmievski", + "email": "andrei@php.net", + "role": "Lead" + }, + { + "name": "Stig Bakken", + "email": "stig@php.net", + "role": "Developer" + }, + { + "name": "Greg Beaver", + "email": "cellog@php.net", + "role": "Helper" } ], - "time": "2021-02-25T21:54:58+00:00" + "description": "More info available on: http://pear.php.net/package/Console_Getopt", + "support": { + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Console_Getopt", + "source": "https://github.com/pear/Console_Getopt" + }, + "time": "2019-11-20T18:27:48+00:00" }, { - "name": "league/container", - "version": "4.2.0", + "name": "pear/pear-core-minimal", + "version": "v1.10.13", "source": { "type": "git", - "url": "https://github.com/thephpleague/container.git", - "reference": "375d13cb828649599ef5d48a339c4af7a26cd0ab" + "url": "https://github.com/pear/pear-core-minimal.git", + "reference": "aed862e95fd286c53cc546734868dc38ff4b5b1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/container/zipball/375d13cb828649599ef5d48a339c4af7a26cd0ab", - "reference": "375d13cb828649599ef5d48a339c4af7a26cd0ab", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "psr/container": "^1.1 || ^2.0" - }, - "provide": { - "psr/container-implementation": "^1.0" - }, - "replace": { - "orno/di": "~2.0" - }, - "require-dev": { - "nette/php-generator": "^3.4", - "nikic/php-parser": "^4.10", - "phpstan/phpstan": "^0.12.47", - "phpunit/phpunit": "^8.5.17", - "roave/security-advisories": "dev-latest", - "scrutinizer/ocular": "^1.8", - "squizlabs/php_codesniffer": "^3.6" + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/aed862e95fd286c53cc546734868dc38ff4b5b1d", + "reference": "aed862e95fd286c53cc546734868dc38ff4b5b1d", + "shasum": "" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev", - "dev-4.x": "4.x-dev", - "dev-3.x": "3.x-dev", - "dev-2.x": "2.x-dev", - "dev-1.x": "1.x-dev" - } + "require": { + "pear/console_getopt": "~1.4", + "pear/pear_exception": "~1.0" + }, + "replace": { + "rsky/pear-core-min": "self.version" }, + "type": "library", "autoload": { - "psr-4": { - "League\\Container\\": "src" + "psr-0": { + "": "src/" } }, "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "src/" + ], "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Phil Bennett", - "email": "mail@philbennett.co.uk", - "role": "Developer" + "name": "Christian Weiske", + "email": "cweiske@php.net", + "role": "Lead" } ], - "description": "A fast and intuitive dependency injection container.", - "homepage": "https://github.com/thephpleague/container", - "keywords": [ - "container", - "dependency", - "di", - "injection", - "league", - "provider", - "service" - ], + "description": "Minimal set of PEAR core files to be used as composer dependency", "support": { - "issues": "https://github.com/thephpleague/container/issues", - "source": "https://github.com/thephpleague/container/tree/4.2.0" + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR", + "source": "https://github.com/pear/pear-core-minimal" }, - "funding": [ - { - "url": "https://github.com/philipobenito", - "type": "github" - } - ], - "time": "2021-11-16T10:29:06+00:00" + "time": "2023-04-19T19:15:47+00:00" }, { - "name": "masterminds/html5", - "version": "2.7.4", + "name": "pear/pear_exception", + "version": "v1.0.2", "source": { "type": "git", - "url": "https://github.com/Masterminds/html5-php.git", - "reference": "9227822783c75406cfe400984b2f095cdf03d417" + "url": "https://github.com/pear/PEAR_Exception.git", + "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/9227822783c75406cfe400984b2f095cdf03d417", - "reference": "9227822783c75406cfe400984b2f095cdf03d417", + "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/b14fbe2ddb0b9f94f5b24cf08783d599f776fff0", + "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-dom": "*", - "ext-libxml": "*", - "php": ">=5.3.0" + "php": ">=5.2.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35" + "phpunit/phpunit": "<9" }, - "type": "library", + "type": "class", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-4": { - "Masterminds\\": "src" - } + "classmap": [ + "PEAR/" + ] }, "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "." + ], "license": [ - "MIT" + "BSD-2-Clause" ], "authors": [ { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" - }, - { - "name": "Matt Farina", - "email": "matt@mattfarina.com" + "name": "Helgi Thormar", + "email": "dufuz@php.net" }, { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" + "name": "Greg Beaver", + "email": "cellog@php.net" } ], - "description": "An HTML5 parser and serializer.", - "homepage": "http://masterminds.github.io/html5-php", + "description": "The PEAR Exception base class.", + "homepage": "https://github.com/pear/PEAR_Exception", "keywords": [ - "HTML5", - "dom", - "html", - "parser", - "querypath", - "serializer", - "xml" + "exception" ], "support": { - "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.7.4" + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR_Exception", + "source": "https://github.com/pear/PEAR_Exception" }, - "time": "2020-10-01T13:52:52+00:00" + "time": "2021-03-21T15:43:46+00:00" }, { - "name": "myclabs/php-enum", - "version": "1.8.4", + "name": "phootwork/collection", + "version": "v3.2.2", "source": { "type": "git", - "url": "https://github.com/myclabs/php-enum.git", - "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483" + "url": "https://github.com/phootwork/collection.git", + "reference": "46dde20420fba17766c89200bc3ff91d3e58eafa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483", - "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483", + "url": "https://api.github.com/repos/phootwork/collection/zipball/46dde20420fba17766c89200bc3ff91d3e58eafa", + "reference": "46dde20420fba17766c89200bc3ff91d3e58eafa", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "1.*", - "vimeo/psalm": "^4.6.2" + "phootwork/lang": "^3.0", + "php": ">=8.0" }, "type": "library", "autoload": { "psr-4": { - "MyCLabs\\Enum\\": "src/" - }, - "classmap": [ - "stubs/Stringable.php" - ] + "phootwork\\collection\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5120,474 +6124,483 @@ ], "authors": [ { - "name": "PHP Enum contributors", - "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" + "name": "Thomas Gossmann", + "homepage": "http://gos.si" } ], - "description": "PHP Enum implementation", - "homepage": "http://github.com/myclabs/php-enum", + "description": "The phootwork library fills gaps in the php language and provides better solutions than the existing ones php offers.", + "homepage": "https://phootwork.github.io/collection/", "keywords": [ - "enum" + "Array object", + "Text object", + "collection", + "collections", + "json", + "list", + "map", + "queue", + "set", + "stack", + "xml" ], "support": { - "issues": "https://github.com/myclabs/php-enum/issues", - "source": "https://github.com/myclabs/php-enum/tree/1.8.4" + "issues": "https://github.com/phootwork/phootwork/issues", + "source": "https://github.com/phootwork/collection/tree/v3.2.2" }, - "funding": [ - { - "url": "https://github.com/mnapoli", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", - "type": "tidelift" - } - ], - "time": "2022-08-04T09:53:51+00:00" + "time": "2022-08-27T12:51:24+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.17.1", + "name": "phootwork/lang", + "version": "v3.2.2", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "url": "https://github.com/phootwork/lang.git", + "reference": "baaf154ae7d521ebeee5e89105f5b12b0f234597" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/phootwork/lang/zipball/baaf154ae7d521ebeee5e89105f5b12b0f234597", + "reference": "baaf154ae7d521ebeee5e89105f5b12b0f234597", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "php": ">=8.0", + "symfony/polyfill-mbstring": "^1.12", + "symfony/polyfill-php81": "^1.22" }, - "bin": [ - "bin/php-parse" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "phootwork\\lang\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "Thomas Gossmann", + "homepage": "http://gos.si" } ], - "description": "A PHP parser written in PHP", + "description": "Missing PHP language constructs", + "homepage": "https://phootwork.github.io/lang/", "keywords": [ - "parser", - "php" + "array", + "comparator", + "comparison", + "string" ], "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "issues": "https://github.com/phootwork/phootwork/issues", + "source": "https://github.com/phootwork/lang/tree/v3.2.2" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-05-26T05:37:59+00:00" }, { - "name": "pear/archive_tar", - "version": "1.4.14", + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/pear/Archive_Tar.git", - "reference": "4d761c5334c790e45ef3245f0864b8955c562caa" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/4d761c5334c790e45ef3245f0864b8955c562caa", - "reference": "4d761c5334c790e45ef3245f0864b8955c562caa", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "pear/pear-core-minimal": "^1.10.0alpha2", - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "*" - }, - "suggest": { - "ext-bz2": "Bz2 compression support.", - "ext-xz": "Lzma2 compression support.", - "ext-zlib": "Gzip compression support." + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { - "psr-0": { - "Archive_Tar": "" + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "./" - ], "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Vincent Blavet", - "email": "vincent@phpconcept.net" - }, - { - "name": "Greg Beaver", - "email": "greg@chiaraquartet.net" - }, - { - "name": "Michiel Rook", - "email": "mrook@php.net" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Tar file management class with compression support (gzip, bzip2, lzma2)", - "homepage": "https://github.com/pear/Archive_Tar", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "archive", - "tar" + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" ], "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Archive_Tar", - "source": "https://github.com/pear/Archive_Tar" - }, - "funding": [ - { - "url": "https://github.com/mrook", - "type": "github" - }, - { - "url": "https://www.patreon.com/michielrook", - "type": "patreon" - } - ], - "time": "2021-07-20T13:53:39+00:00" + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" }, { - "name": "pear/console_getopt", - "version": "v1.4.3", + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", "source": { "type": "git", - "url": "https://github.com/pear/Console_Getopt.git", - "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/a41f8d3e668987609178c7c4a9fe48fecac53fa0", - "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, "autoload": { - "psr-0": { - "Console": "./" + "psr-4": { + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "./" - ], "license": [ - "BSD-2-Clause" + "MIT" ], "authors": [ { - "name": "Andrei Zmievski", - "email": "andrei@php.net", - "role": "Lead" - }, - { - "name": "Stig Bakken", - "email": "stig@php.net", - "role": "Developer" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" }, { - "name": "Greg Beaver", - "email": "cellog@php.net", - "role": "Helper" + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], - "description": "More info available on: http://pear.php.net/package/Console_Getopt", + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Console_Getopt", - "source": "https://github.com/pear/Console_Getopt" + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2019-11-20T18:27:48+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { - "name": "pear/pear-core-minimal", - "version": "v1.10.10", + "name": "phpdocumentor/type-resolver", + "version": "1.7.3", "source": { "type": "git", - "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "625a3c429d9b2c1546438679074cac1b089116a7" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/625a3c429d9b2c1546438679074cac1b089116a7", - "reference": "625a3c429d9b2c1546438679074cac1b089116a7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { - "pear/console_getopt": "~1.4", - "pear/pear_exception": "~1.0" + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, - "replace": { - "rsky/pear-core-min": "self.version" + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, "autoload": { - "psr-0": { - "": "src/" + "psr-4": { + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "src/" - ], "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Christian Weiske", - "email": "cweiske@php.net", - "role": "Lead" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Minimal set of PEAR core files to be used as composer dependency", + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR", - "source": "https://github.com/pear/pear-core-minimal" + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" }, - "time": "2019-11-19T19:00:24+00:00" + "time": "2023-08-12T11:01:26+00:00" }, { - "name": "pear/pear_exception", - "version": "v1.0.2", + "name": "phpowermove/docblock", + "version": "v4.0", "source": { "type": "git", - "url": "https://github.com/pear/PEAR_Exception.git", - "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0" + "url": "https://github.com/phpowermove/docblock.git", + "reference": "a73f6e17b7d4e1b92ca5378c248c952c9fae7826" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/b14fbe2ddb0b9f94f5b24cf08783d599f776fff0", - "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0", + "url": "https://api.github.com/repos/phpowermove/docblock/zipball/a73f6e17b7d4e1b92ca5378c248c952c9fae7826", + "reference": "a73f6e17b7d4e1b92ca5378c248c952c9fae7826", "shasum": "" }, "require": { - "php": ">=5.2.0" + "phootwork/collection": "^3.0", + "phootwork/lang": "^3.0", + "php": ">=8.0" }, "require-dev": { - "phpunit/phpunit": "<9" - }, - "type": "class", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } + "phootwork/php-cs-fixer-config": "^0.4", + "phpunit/phpunit": "^9.0", + "psalm/phar": "^4.3" }, + "type": "library", "autoload": { - "classmap": [ - "PEAR/" - ] + "psr-4": { + "phpowermove\\docblock\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "." - ], "license": [ - "BSD-2-Clause" + "MIT" ], "authors": [ { - "name": "Helgi Thormar", - "email": "dufuz@php.net" - }, - { - "name": "Greg Beaver", - "email": "cellog@php.net" + "name": "Thomas Gossmann", + "homepage": "http://gos.si" } ], - "description": "The PEAR Exception base class.", - "homepage": "https://github.com/pear/PEAR_Exception", + "description": "PHP Docblock parser and generator. An API to read and write Docblocks.", "keywords": [ - "exception" + "docblock", + "generator", + "parser" ], "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR_Exception", - "source": "https://github.com/pear/PEAR_Exception" + "issues": "https://github.com/phpowermove/docblock/issues", + "source": "https://github.com/phpowermove/docblock/tree/v4.0" }, - "time": "2021-03-21T15:43:46+00:00" + "time": "2021-09-22T16:57:06+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "phpstan/phpdoc-parser", + "version": "1.24.3", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "12f01d214f1c73b9c91fdb3b1c415e4c70652083" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/12f01d214f1c73b9c91fdb3b1c415e4c70652083", + "reference": "12f01d214f1c73b9c91fdb3b1c415e4c70652083", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" }, + "type": "library", "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src/" + "PHPStan\\PhpDocParser\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.3" + }, + "time": "2023-11-18T20:15:32+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "1.10.44", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "bf84367c53a23f759513985c54ffe0d0c249825b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/bf84367c53a23f759513985c54ffe0d0c249825b", + "reference": "bf84367c53a23f759513985c54ffe0d0c249825b", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", + "dev", "static analysis" ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, - "time": "2020-06-27T09:03:43+00:00" + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2023-11-21T16:30:46+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "name": "phpstan/phpstan-deprecation-rules", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", "shasum": "" }, "require": { - "ext-filter": "*", "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" + "phpstan/phpstan": "^1.10.3" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-php-parser": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5" }, - "type": "library", + "type": "phpstan-extension", "extra": { - "branch-alias": { - "dev-master": "5.x-dev" + "phpstan": { + "includes": [ + "rules.neon" + ] } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "PHPStan\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.4" }, - "time": "2021-10-19T17:43:47+00:00" + "time": "2023-08-05T09:02:04+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.7.3", + "name": "psr/cache", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" - }, - "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5596,80 +6609,90 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2023-08-12T11:01:26+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { - "name": "phpstan/phpdoc-parser", - "version": "1.24.3", + "name": "psr/container", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "12f01d214f1c73b9c91fdb3b1c415e4c70652083" + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/12f01d214f1c73b9c91fdb3b1c415e4c70652083", - "reference": "12f01d214f1c73b9c91fdb3b1c415e4c70652083", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" + "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.3" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2023-11-18T20:15:32+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { - "name": "psr/cache", - "version": "1.0.1", + "name": "psr/event-dispatcher", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.0" }, "type": "library", "extra": { @@ -5679,7 +6702,7 @@ }, "autoload": { "psr-4": { - "Psr\\Cache\\": "src/" + "Psr\\EventDispatcher\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5692,38 +6715,45 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Common interface for caching libraries", + "description": "Standard interfaces for event handling.", "keywords": [ - "cache", + "events", "psr", - "psr-6" + "psr-14" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { - "name": "psr/container", - "version": "1.1.1", + "name": "psr/http-client", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Psr\\Container\\": "src/" + "Psr\\Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5736,38 +6766,36 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "http", + "http-client", + "psr", + "psr-18" ], "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/http-client" }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -5787,7 +6815,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -5802,9 +6830,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", @@ -5861,30 +6889,30 @@ }, { "name": "psr/log", - "version": "1.1.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -5905,9 +6933,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/3.0.0" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-07-14T16:46:02+00:00" }, { "name": "psy/psysh", @@ -5991,137 +7019,30 @@ }, { "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.0", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-04-09T00:54:41+00:00" - }, - { - "name": "stack/builder", - "version": "v1.0.6", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/stackphp/builder.git", - "reference": "a4faaa6f532c6086bc66c29e1bc6c29593e1ca7c" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stackphp/builder/zipball/a4faaa6f532c6086bc66c29e1bc6c29593e1ca7c", - "reference": "a4faaa6f532c6086bc66c29e1bc6c29593e1ca7c", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "php": ">=7.2.0", - "symfony/http-foundation": "~2.1|~3.0|~4.0|~5.0", - "symfony/http-kernel": "~2.1|~3.0|~4.0|~5.0" + "php": ">=5.6" }, "require-dev": { - "phpunit/phpunit": "~8.0", - "symfony/routing": "^5.0" + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, "autoload": { - "psr-0": { - "Stack": "src" - } + "files": [ + "src/getallheaders.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6129,121 +7050,113 @@ ], "authors": [ { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" } ], - "description": "Builder for stack middleware based on HttpKernelInterface.", - "keywords": [ - "stack" - ], + "description": "A polyfill for getallheaders.", "support": { - "issues": "https://github.com/stackphp/builder/issues", - "source": "https://github.com/stackphp/builder/tree/v1.0.6" + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" }, - "time": "2020-01-30T12:17:27+00:00" + "time": "2019-03-08T08:55:37+00:00" }, { - "name": "symfony-cmf/routing", - "version": "2.3.3", + "name": "squizlabs/php_codesniffer", + "version": "3.7.2", "source": { "type": "git", - "url": "https://github.com/symfony-cmf/Routing.git", - "reference": "3c97e7b7709b313cecfb76d691ad4cc22acbf3f5" + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/3c97e7b7709b313cecfb76d691ad4cc22acbf3f5", - "reference": "3c97e7b7709b313cecfb76d691ad4cc22acbf3f5", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "psr/log": "^1.0", - "symfony/http-kernel": "^4.4 || ^5.0", - "symfony/routing": "^4.4 || ^5.0" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" }, "require-dev": { - "symfony-cmf/testing": "^3@dev", - "symfony/config": "^4.4 || ^5.0", - "symfony/dependency-injection": "^4.4 || ^5.0", - "symfony/event-dispatcher": "^4.4 || ^5.0", - "symfony/phpunit-bridge": "^5.0" - }, - "suggest": { - "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version (^4.4 || ^5.0)" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Cmf\\Component\\Routing\\": "src/" + "dev-master": "3.x-dev" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Symfony CMF Community", - "homepage": "https://github.com/symfony-cmf/Routing/contributors" + "name": "Greg Sherwood", + "role": "lead" } ], - "description": "Extends the Symfony routing component for dynamic routes and chaining several routers", - "homepage": "http://cmf.symfony.com", + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ - "database", - "routing" + "phpcs", + "standards", + "static analysis" ], "support": { - "issues": "https://github.com/symfony-cmf/Routing/issues", - "source": "https://github.com/symfony-cmf/Routing/tree/2.3.3" + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2020-10-06T10:15:37+00:00" + "time": "2023-02-22T23:07:41+00:00" }, { "name": "symfony/console", - "version": "v4.4.25", + "version": "v6.2.13", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a62acecdf5b50e314a4f305cd01b5282126f3095" + "reference": "e30dfbceadb96cb67605b69b1277c41332fae185" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a62acecdf5b50e314a4f305cd01b5282126f3095", - "reference": "a62acecdf5b50e314a4f305cd01b5282126f3095", + "url": "https://api.github.com/repos/symfony/console/zipball/e30dfbceadb96cb67605b69b1277c41332fae185", + "reference": "e30dfbceadb96cb67605b69b1277c41332fae185", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.4|^6.0" }, "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/log-implementation": "1.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -6276,77 +7189,14 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/console/tree/v4.4.25" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-05-26T11:20:16+00:00" - }, - { - "name": "symfony/debug", - "version": "v4.4.25", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/a8d2d5c94438548bff9f998ca874e202bb29d07f", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } + "keywords": [ + "cli", + "command-line", + "console", + "terminal" ], - "description": "Provides tools to ease debugging PHP code", - "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.25" + "source": "https://github.com/symfony/console/tree/v6.2.13" }, "funding": [ { @@ -6362,48 +7212,49 @@ "type": "tidelift" } ], - "abandoned": "symfony/error-handler", - "time": "2021-05-26T17:39:37+00:00" + "time": "2023-07-19T20:17:04+00:00" }, { "name": "symfony/dependency-injection", - "version": "v4.4.25", + "version": "v6.2.13", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "2ed2a0a6c960bf4e2e862ec77b2f2c558b83c64d" + "reference": "d977404486b419bedf450739a9f8992a88c1d6e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/2ed2a0a6c960bf4e2e862ec77b2f2c558b83c64d", - "reference": "2ed2a0a6c960bf4e2e862ec77b2f2c558b83c64d", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d977404486b419bedf450739a9f8992a88c1d6e3", + "reference": "d977404486b419bedf450739a9f8992a88c1d6e3", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/container": "^1.0", - "symfony/service-contracts": "^1.1.6|^2" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/service-contracts": "^1.1.6|^2.0|^3.0", + "symfony/var-exporter": "^6.2.7" }, "conflict": { - "symfony/config": "<4.3|>=5.0", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" + "ext-psr": "<1.1|>=2", + "symfony/config": "<6.1", + "symfony/finder": "<5.4", + "symfony/proxy-manager-bridge": "<6.2", + "symfony/yaml": "<5.4" }, "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/config": "^6.1", + "symfony/expression-language": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "suggest": { "symfony/config": "", "symfony/expression-language": "For using expressions in service container configuration", "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", "symfony/yaml": "" }, "type": "library", @@ -6432,7 +7283,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v4.4.25" + "source": "https://github.com/symfony/dependency-injection/tree/v6.2.13" }, "funding": [ { @@ -6448,29 +7299,29 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:54:16+00:00" + "time": "2023-07-19T20:17:04+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -6499,7 +7350,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" }, "funding": [ { @@ -6515,33 +7366,35 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2023-03-01T10:25:55+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.25", + "version": "v6.2.13", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "310a756cec00d29d89a08518405aded046a54a8b" + "reference": "69f92a208efc45a98fa240d0792d210ef5eef987" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/310a756cec00d29d89a08518405aded046a54a8b", - "reference": "310a756cec00d29d89a08518405aded046a54a8b", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/69f92a208efc45a98fa240d0792d210ef5eef987", + "reference": "69f92a208efc45a98fa240d0792d210ef5eef987", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/debug": "^4.4.5", - "symfony/polyfill-php80": "^1.15", - "symfony/var-dumper": "^4.4|^5.0" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -6568,7 +7421,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.25" + "source": "https://github.com/symfony/error-handler/tree/v6.2.13" }, "funding": [ { @@ -6584,42 +7437,42 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2023-07-16T16:55:01+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.25", + "version": "v6.2.13", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f" + "reference": "a6e533212c6c298c6a4d1e892e4cdbf45ea21f1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/047773e7016e4fd45102cedf4bd2558ae0d0c32f", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a6e533212c6c298c6a4d1e892e4cdbf45ea21f1c", + "reference": "a6e533212c6c298c6a4d1e892e4cdbf45ea21f1c", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2|^3" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<5.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^5.4|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -6651,7 +7504,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.25" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.13" }, "funding": [ { @@ -6667,33 +7520,33 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2023-07-06T06:53:05+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -6730,7 +7583,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" }, "funding": [ { @@ -6746,26 +7599,26 @@ "type": "tidelift" } ], - "time": "2020-07-06T13:19:58+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.42", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "815412ee8971209bd4c1eecd5f4f481eacd44bf5" + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/815412ee8971209bd4c1eecd5f4f481eacd44bf5", - "reference": "815412ee8971209bd4c1eecd5f4f481eacd44bf5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "~1.8" }, "type": "library", "autoload": { @@ -6787,153 +7640,13 @@ }, { "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v4.4.42" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-20T08:49:14+00:00" - }, - { - "name": "symfony/finder", - "version": "v4.4.44", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/66bd787edb5e42ff59d3523f623895af05043e4f", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.44" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-29T07:35:46+00:00" - }, - { - "name": "symfony/http-client-contracts", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e82f6084d7cae521a75ef2cb5c9457bbda785f4", - "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "homepage": "https://symfony.com/contributors" + } ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/filesystem/tree/v6.3.1" }, "funding": [ { @@ -6949,36 +7662,32 @@ "type": "tidelift" } ], - "time": "2021-04-11T23:07:08+00:00" + "time": "2023-06-01T08:30:39+00:00" }, { - "name": "symfony/http-foundation", - "version": "v4.4.25", + "name": "symfony/finder", + "version": "v6.3.5", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "0c79d5a65ace4fe66e49702658c024a419d2438b" + "url": "https://github.com/symfony/finder.git", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0c79d5a65ace4fe66e49702658c024a419d2438b", - "reference": "0c79d5a65ace4fe66e49702658c024a419d2438b", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.15" + "php": ">=8.1" }, "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "symfony/filesystem": "^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" + "Symfony\\Component\\Finder\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6998,10 +7707,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Defines an object-oriented layer for the HTTP specification", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.25" + "source": "https://github.com/symfony/finder/tree/v6.3.5" }, "funding": [ { @@ -7017,72 +7726,46 @@ "type": "tidelift" } ], - "time": "2021-05-26T11:20:16+00:00" + "time": "2023-09-26T12:56:25+00:00" }, { - "name": "symfony/http-kernel", - "version": "v4.4.25", + "name": "symfony/http-foundation", + "version": "v6.2.13", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "3795165596fe81a52296b78c9aae938d434069cc" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "d64109065a5283c96f1ccbe2f2eeedf75ef7d490" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3795165596fe81a52296b78c9aae938d434069cc", - "reference": "3795165596fe81a52296b78c9aae938d434069cc", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d64109065a5283c96f1ccbe2f2eeedf75ef7d490", + "reference": "d64109065a5283c96f1ccbe2f2eeedf75ef7d490", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.15" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.1" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.43|<2.13,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" + "symfony/cache": "<6.2" }, "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" + "predis/predis": "~1.0", + "symfony/cache": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^5.4|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" + "symfony/mime": "To use the file extension guesser" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" + "Symfony\\Component\\HttpFoundation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -7102,10 +7785,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a structured process for converting a Request into a Response", + "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.25" + "source": "https://github.com/symfony/http-foundation/tree/v6.2.13" }, "funding": [ { @@ -7121,32 +7804,80 @@ "type": "tidelift" } ], - "time": "2021-06-01T07:12:08+00:00" + "time": "2023-07-23T21:58:00+00:00" }, { - "name": "symfony/inflector", - "version": "v5.4.21", + "name": "symfony/http-kernel", + "version": "v6.2.14", "source": { "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "d56964e2b19253ba331a829c20d911dd27aa61b6" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "d05cebbc07478d37ff1e0f0079f06298a096b870" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/d56964e2b19253ba331a829c20d911dd27aa61b6", - "reference": "d56964e2b19253ba331a829c20d911dd27aa61b6", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d05cebbc07478d37ff1e0f0079f06298a096b870", + "reference": "d05cebbc07478d37ff1e0f0079f06298a096b870", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", + "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.3.10|^6.0" + "symfony/error-handler": "^6.1", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.2", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<5.4", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^6.1", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dependency-injection": "^6.2", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/uid": "^5.4|^6.0", + "symfony/var-exporter": "^6.2", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Inflector\\": "" + "Symfony\\Component\\HttpKernel\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -7158,26 +7889,18 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Converts words between their singular and plural forms (English only)", + "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string", - "symfony", - "words" - ], "support": { - "source": "https://github.com/symfony/inflector/tree/v5.4.21" + "source": "https://github.com/symfony/http-kernel/tree/v6.2.14" }, "funding": [ { @@ -7193,43 +7916,42 @@ "type": "tidelift" } ], - "abandoned": "EnglishInflector from the String component", - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-07-31T10:40:35+00:00" }, { "name": "symfony/mime", - "version": "v5.3.0", + "version": "v6.2.13", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "ed710d297b181f6a7194d8172c9c2423d58e4852" + "reference": "32f2c5f8114fd778ed00fc54f684e805d7e48508" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ed710d297b181f6a7194d8172c9c2423d58e4852", - "reference": "ed710d297b181f6a7194d8172c9c2423d58e4852", + "url": "https://api.github.com/repos/symfony/mime/zipball/32f2c5f8114fd778ed00fc54f684e805d7e48508", + "reference": "32f2c5f8114fd778ed00fc54f684e805d7e48508", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "php": ">=8.1", "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.1", - "symfony/property-info": "^4.4|^5.1", - "symfony/serializer": "^5.2" + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/serializer": "~6.2.13|^6.3.2" }, "type": "library", "autoload": { @@ -7261,7 +7983,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.0" + "source": "https://github.com/symfony/mime/tree/v6.2.13" }, "funding": [ { @@ -7277,32 +7999,35 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2023-07-27T06:30:34+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-ctype": "*" + }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7340,7 +8065,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -7356,32 +8081,35 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.23.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933" + "reference": "927013f3aac555983a5059aada98e1907d842695" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/63b5bb7db83e5673936d6e3b8b3e022ff6474933", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", + "reference": "927013f3aac555983a5059aada98e1907d842695", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-iconv": "*" + }, "suggest": { "ext-iconv": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7420,7 +8148,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0" }, "funding": [ { @@ -7436,20 +8164,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { @@ -7461,7 +8189,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7501,7 +8229,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" }, "funding": [ { @@ -7517,20 +8245,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + "reference": "639084e360537a19f9ee352433b84ce831f3d2da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", + "reference": "639084e360537a19f9ee352433b84ce831f3d2da", "shasum": "" }, "require": { @@ -7544,7 +8272,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7588,7 +8316,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" }, "funding": [ { @@ -7604,20 +8332,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { @@ -7629,7 +8357,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7672,7 +8400,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -7688,32 +8416,35 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1", - "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, "suggest": { "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7752,7 +8483,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -7768,7 +8499,7 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php72", @@ -7847,17 +8578,17 @@ "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-php73", + "name": "symfony/polyfill-php80", "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -7878,7 +8609,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" + "Symfony\\Polyfill\\Php80\\": "" }, "classmap": [ "Resources/stubs" @@ -7889,6 +8620,10 @@ "MIT" ], "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -7898,7 +8633,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -7907,7 +8642,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -7926,17 +8661,17 @@ "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.23.0", + "name": "symfony/polyfill-php81", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", "shasum": "" }, "require": { @@ -7945,7 +8680,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7957,7 +8692,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Polyfill\\Php81\\": "" }, "classmap": [ "Resources/stubs" @@ -7968,10 +8703,6 @@ "MIT" ], "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -7981,7 +8712,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -7990,7 +8721,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" }, "funding": [ { @@ -8006,24 +8737,24 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/process", - "version": "v4.4.25", + "version": "v6.2.13", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "cd61e6dd273975c6625316de9d141ebd197f93c9" + "reference": "1603ae32487981c11b8d0bf5d7551b8b00f5a99b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/cd61e6dd273975c6625316de9d141ebd197f93c9", - "reference": "cd61e6dd273975c6625316de9d141ebd197f93c9", + "url": "https://api.github.com/repos/symfony/process/zipball/1603ae32487981c11b8d0bf5d7551b8b00f5a99b", + "reference": "1603ae32487981c11b8d0bf5d7551b8b00f5a99b", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -8051,7 +8782,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.25" + "source": "https://github.com/symfony/process/tree/v6.2.13" }, "funding": [ { @@ -8067,32 +8798,29 @@ "type": "tidelift" } ], - "time": "2021-05-26T11:20:16+00:00" + "time": "2023-07-12T15:50:46+00:00" }, { "name": "symfony/property-access", - "version": "v4.4.44", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "d49682f6f0764df725c95128213a38f7e0a9f358" + "reference": "2dc4f9da444b8f8ff592e95d570caad67924f1d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/d49682f6f0764df725c95128213a38f7e0a9f358", - "reference": "d49682f6f0764df725c95128213a38f7e0a9f358", + "url": "https://api.github.com/repos/symfony/property-access/zipball/2dc4f9da444b8f8ff592e95d570caad67924f1d0", + "reference": "2dc4f9da444b8f8ff592e95d570caad67924f1d0", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/property-info": "^5.4|^6.0" }, "require-dev": { - "symfony/cache": "^3.4|^4.0|^5.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." + "symfony/cache": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -8127,11 +8855,11 @@ "injection", "object", "property", - "property path", + "property-path", "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v4.4.44" + "source": "https://github.com/symfony/property-access/tree/v6.3.2" }, "funding": [ { @@ -8147,46 +8875,38 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2023-07-13T15:26:11+00:00" }, { "name": "symfony/property-info", - "version": "v5.4.24", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1" + "reference": "7f3a03716112269741fe2a809f8f791a371d1fcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/d43b85b00699b4484964c297575b5c6f9dc5f6e1", - "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1", + "url": "https://api.github.com/repos/symfony/property-info/zipball/7f3a03716112269741fe2a809f8f791a371d1fcd", + "reference": "7f3a03716112269741fe2a809f8f791a371d1fcd", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.1|^6.0" + "php": ">=8.1", + "symfony/string": "^5.4|^6.0" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4" + "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/dependency-injection": "<5.4" }, "require-dev": { "doctrine/annotations": "^1.10.4|^2", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" - }, - "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" + "symfony/cache": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -8222,7 +8942,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.4.24" + "source": "https://github.com/symfony/property-info/tree/v6.3.0" }, "funding": [ { @@ -8238,36 +8958,36 @@ "type": "tidelift" } ], - "time": "2023-05-15T20:11:03+00:00" + "time": "2023-05-19T08:06:44+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v2.1.0", + "version": "v2.1.4", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "81db2d4ae86e9f0049828d9343a72b9523884e5d" + "reference": "a125b93ef378c492e274f217874906fb9babdebb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/81db2d4ae86e9f0049828d9343a72b9523884e5d", - "reference": "81db2d4ae86e9f0049828d9343a72b9523884e5d", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/a125b93ef378c492e274f217874906fb9babdebb", + "reference": "a125b93ef378c492e274f217874906fb9babdebb", "shasum": "" }, "require": { "php": ">=7.1", "psr/http-message": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.0" + "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" }, "require-dev": { "nyholm/psr7": "^1.1", - "psr/log": "^1.1", - "symfony/browser-kit": "^4.4 || ^5.0", - "symfony/config": "^4.4 || ^5.0", - "symfony/event-dispatcher": "^4.4 || ^5.0", - "symfony/framework-bundle": "^4.4 || ^5.0", - "symfony/http-kernel": "^4.4 || ^5.0", - "symfony/phpunit-bridge": "^4.4.19 || ^5.2" + "psr/log": "^1.1 || ^2 || ^3", + "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", + "symfony/config": "^4.4 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", + "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.4@dev || ^6.0" }, "suggest": { "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" @@ -8310,7 +9030,7 @@ ], "support": { "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.0" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.4" }, "funding": [ { @@ -8326,41 +9046,41 @@ "type": "tidelift" } ], - "time": "2021-02-17T10:35:25+00:00" + "time": "2022-11-28T22:46:34+00:00" }, { "name": "symfony/routing", - "version": "v4.4.25", + "version": "v6.2.13", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434" + "reference": "1e54cc8e769d9aba461f0848bcbd17c81696bec9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3a3c2f197ad0846ac6413225fc78868ba1c61434", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434", + "url": "https://api.github.com/repos/symfony/routing/zipball/1e54cc8e769d9aba461f0848bcbd17c81696bec9", + "reference": "1e54cc8e769d9aba461f0848bcbd17c81696bec9", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=8.1" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "psr/log": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.2", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation loader", "symfony/config": "For using the all-in-one router or any loader", "symfony/expression-language": "For using expression matching", "symfony/http-foundation": "For using a Symfony Request object", @@ -8398,7 +9118,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.25" + "source": "https://github.com/symfony/routing/tree/v6.2.13" }, "funding": [ { @@ -8414,55 +9134,63 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2023-07-24T13:51:53+00:00" }, { "name": "symfony/serializer", - "version": "v4.4.25", + "version": "v6.2.13", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "6db3eb4f1bb437cd3730f52353ba4b568acaddf5" + "reference": "19083104e606ecf8a48baa8ed310c7a073887037" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/6db3eb4f1bb437cd3730f52353ba4b568acaddf5", - "reference": "6db3eb4f1bb437cd3730f52353ba4b568acaddf5", + "url": "https://api.github.com/repos/symfony/serializer/zipball/19083104e606ecf8a48baa8ed310c7a073887037", + "reference": "19083104e606ecf8a48baa8ed310c7a073887037", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "symfony/dependency-injection": "<3.4", - "symfony/property-access": "<3.4", - "symfony/property-info": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<5.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4.24|>=6,<6.2.11", + "symfony/uid": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^3.4.41|^4.4.9|^5.0.9", - "symfony/property-info": "^3.4.13|~4.0|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/filesystem": "^5.4|^6.0", + "symfony/form": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4.24|^6.2.11", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0", + "symfony/var-exporter": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation mapping.", "psr/cache-implementation": "For using the metadata cache.", "symfony/config": "For using the XML mapping loader.", - "symfony/http-foundation": "For using a MIME type guesser within the DataUriNormalizer.", + "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", "symfony/property-access": "For using the ObjectNormalizer.", "symfony/property-info": "To deserialize relations.", + "symfony/var-exporter": "For using the metadata compiler.", "symfony/yaml": "For using the default YAML mapping loader." }, "type": "library", @@ -8491,7 +9219,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v4.4.25" + "source": "https://github.com/symfony/serializer/tree/v6.2.13" }, "funding": [ { @@ -8507,25 +9235,28 @@ "type": "tidelift" } ], - "time": "2021-05-26T11:20:16+00:00" + "time": "2023-07-27T16:18:16+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.4.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + "reference": "a8c9cedf55f314f3a186041d19537303766df09a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", + "reference": "a8c9cedf55f314f3a186041d19537303766df09a", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" + "php": ">=8.1", + "psr/container": "^2.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -8533,7 +9264,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -8543,7 +9274,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8570,7 +9304,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" }, "funding": [ { @@ -8586,38 +9320,38 @@ "type": "tidelift" } ], - "time": "2021-04-01T10:43:52+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/string", - "version": "v5.4.31", + "version": "v6.2.13", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "2765096c03f39ddf54f6af532166e42aaa05b24b" + "reference": "d0a29e15c4225c128d8de89241f923345393c0cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/2765096c03f39ddf54f6af532166e42aaa05b24b", - "reference": "2765096c03f39ddf54f6af532166e42aaa05b24b", + "url": "https://api.github.com/repos/symfony/string/zipball/d0a29e15c4225c128d8de89241f923345393c0cf", + "reference": "d0a29e15c4225c128d8de89241f923345393c0cf", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.0" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/intl": "^6.2", + "symfony/translation-contracts": "^2.0|^3.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -8656,7 +9390,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.31" + "source": "https://github.com/symfony/string/tree/v6.2.13" }, "funding": [ { @@ -8672,54 +9406,61 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:19:44+00:00" + "time": "2023-07-05T08:41:15+00:00" }, { "name": "symfony/translation", - "version": "v4.4.25", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "dfe132c5c6d89f90ce7f961742cc532e9ca16dd4" + "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/dfe132c5c6d89f90ce7f961742cc532e9ca16dd4", - "reference": "dfe132c5c6d89f90ce7f961742cc532e9ca16dd4", + "url": "https://api.github.com/repos/symfony/translation/zipball/30212e7c87dcb79c83f6362b00bde0e0b1213499", + "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1.6|^2" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" }, "provide": { - "symfony/translation-implementation": "1.0|2.0" + "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "nikic/php-parser": "^4.13", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, @@ -8744,7 +9485,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.25" + "source": "https://github.com/symfony/translation/tree/v6.3.7" }, "funding": [ { @@ -8760,24 +9501,24 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2023-10-28T23:11:45+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.4.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95" + "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", + "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=8.1" }, "suggest": { "symfony/translation-implementation": "" @@ -8785,7 +9526,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -8795,7 +9536,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Translation\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8822,7 +9566,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" }, "funding": [ { @@ -8838,62 +9582,64 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/validator", - "version": "v4.4.25", + "version": "v6.2.13", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "29c14955e8b2e7351aaa11553cb36d4a689b7b11" + "reference": "f7c4a05e3f5bcbef2fb8a02bc41a2f4121cb3b79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/29c14955e8b2e7351aaa11553cb36d4a689b7b11", - "reference": "29c14955e8b2e7351aaa11553cb36d4a689b7b11", + "url": "https://api.github.com/repos/symfony/validator/zipball/f7c4a05e3f5bcbef2fb8a02bc41a2f4121cb3b79", + "reference": "f7c4a05e3f5bcbef2fb8a02bc41a2f4121cb3b79", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1|^2" + "symfony/translation-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/lexer": "<1.0.2", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.3", - "symfony/translation": ">=5.0", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/http-foundation": "^4.1|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^4.3|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "doctrine/annotations": "<1.13", + "doctrine/lexer": "<1.1", + "symfony/dependency-injection": "<5.4", + "symfony/expression-language": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/intl": "<5.4", + "symfony/property-info": "<5.4", + "symfony/translation": "<5.4", + "symfony/yaml": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.13|^2", + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader.", "egulias/email-validator": "Strict (RFC compliant) email validation", "psr/cache-implementation": "For using the mapping cache.", "symfony/config": "", - "symfony/expression-language": "For using the Expression validator", + "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", "symfony/http-foundation": "", "symfony/intl": "", "symfony/property-access": "For accessing properties within comparison constraints", @@ -8927,7 +9673,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v4.4.25" + "source": "https://github.com/symfony/validator/tree/v6.2.13" }, "funding": [ { @@ -8943,35 +9689,35 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2023-07-26T17:38:53+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.3.0", + "version": "v6.2.13", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "1d3953e627fe4b5f6df503f356b6545ada6351f3" + "reference": "297051faddf4fd701dea09df1bf9da47a387346c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1d3953e627fe4b5f6df503f356b6545ada6351f3", - "reference": "1d3953e627fe4b5f6df503f356b6545ada6351f3", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/297051faddf4fd701dea09df1bf9da47a387346c", + "reference": "297051faddf4fd701dea09df1bf9da47a387346c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15" + "php": ">=8.1", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<4.4" + "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", + "symfony/console": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -9015,7 +9761,81 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.2.13" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-21T07:04:05+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v6.2.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "e14c23915fdb9dfb4343d82e0094dec41a466c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/e14c23915fdb9dfb4343d82e0094dec41a466c0a", + "reference": "e14c23915fdb9dfb4343d82e0094dec41a466c0a", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/var-dumper": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "lazy-loading", + "proxy", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v6.2.13" }, "funding": [ { @@ -9031,35 +9851,38 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:28:50+00:00" + "time": "2023-07-26T17:35:55+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.25", + "version": "v6.2.10", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "81cdac5536925c1c4b7b50aabc9ff6330b9eb5fc" + "reference": "61916f3861b1e9705b18cfde723921a71dd1559d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/81cdac5536925c1c4b7b50aabc9ff6330b9eb5fc", - "reference": "81cdac5536925c1c4b7b50aabc9ff6330b9eb5fc", + "url": "https://api.github.com/repos/symfony/yaml/zipball/61916f3861b1e9705b18cfde723921a71dd1559d", + "reference": "61916f3861b1e9705b18cfde723921a71dd1559d", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=8.1", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" + "symfony/console": "^5.4|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", "autoload": { "psr-4": { @@ -9086,7 +9909,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.25" + "source": "https://github.com/symfony/yaml/tree/v6.2.10" }, "funding": [ { @@ -9102,7 +9925,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2023-04-28T13:25:36+00:00" }, { "name": "thecodingmachine/safe", @@ -9245,16 +10068,16 @@ }, { "name": "twig/twig", - "version": "v2.14.6", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "27e5cf2b05e3744accf39d4c68a3235d9966d260" + "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/27e5cf2b05e3744accf39d4c68a3235d9966d260", - "reference": "27e5cf2b05e3744accf39d4c68a3235d9966d260", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a6e0510cc793912b451fd40ab983a1d28f611c15", + "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15", "shasum": "" }, "require": { @@ -9264,18 +10087,15 @@ }, "require-dev": { "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9" + "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.14-dev" + "dev-master": "3.5-dev" } }, "autoload": { - "psr-0": { - "Twig_": "lib/" - }, "psr-4": { "Twig\\": "src/" } @@ -9297,85 +10117,30 @@ }, { "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v2.14.6" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2021-05-16T12:12:47+00:00" - }, - { - "name": "typo3/phar-stream-wrapper", - "version": "v3.1.6", - "source": { - "type": "git", - "url": "https://github.com/TYPO3/phar-stream-wrapper.git", - "reference": "60131cb573a1e478cfecd34e4ea38e3b31505f75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/TYPO3/phar-stream-wrapper/zipball/60131cb573a1e478cfecd34e4ea38e3b31505f75", - "reference": "60131cb573a1e478cfecd34e4ea38e3b31505f75", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "ext-xdebug": "*", - "phpspec/prophecy": "^1.10", - "symfony/phpunit-bridge": "^5.1" - }, - "suggest": { - "ext-fileinfo": "For PHP builtin file type guessing, otherwise uses internal processing" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "v3.x-dev" - } - }, - "autoload": { - "psr-4": { - "TYPO3\\PharStreamWrapper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } ], - "description": "Interceptors for PHP's native phar:// stream handling", - "homepage": "https://typo3.org/", + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", "keywords": [ - "phar", - "php", - "security", - "stream-wrapper" + "templating" ], "support": { - "issues": "https://github.com/TYPO3/phar-stream-wrapper/issues", - "source": "https://github.com/TYPO3/phar-stream-wrapper/tree/v3.1.6" + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.5.1" }, - "time": "2020-11-07T09:06:16+00:00" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2023-02-08T07:49:20+00:00" }, { "name": "webflo/drupal-finder", @@ -9479,57 +10244,6 @@ }, "time": "2022-06-03T18:03:27+00:00" }, - { - "name": "webmozart/path-util", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\PathUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" - }, - "abandoned": "symfony/filesystem", - "time": "2015-12-17T08:42:14+00:00" - }, { "name": "zaporylie/composer-drupal-optimizations", "version": "1.2.0", @@ -9644,31 +10358,38 @@ "time": "2022-03-28T14:22:43+00:00" }, { - "name": "behat/mink-goutte-driver", - "version": "v1.3.0", + "name": "behat/mink-browserkit-driver", + "version": "v2.1.0", "source": { "type": "git", - "url": "https://github.com/minkphp/MinkGoutteDriver.git", - "reference": "8139f520f417c81bf9d2f9a171fff400f6adc9ea" + "url": "https://github.com/minkphp/MinkBrowserKitDriver.git", + "reference": "d2768e6c17b293d86d8fcff54cbb9e6ad938fee1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/8139f520f417c81bf9d2f9a171fff400f6adc9ea", - "reference": "8139f520f417c81bf9d2f9a171fff400f6adc9ea", + "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/d2768e6c17b293d86d8fcff54cbb9e6ad938fee1", + "reference": "d2768e6c17b293d86d8fcff54cbb9e6ad938fee1", "shasum": "" }, "require": { - "behat/mink-browserkit-driver": "~1.2@dev", - "fabpot/goutte": "~1.0.4|~2.0|~3.1", - "php": ">=5.4" + "behat/mink": "^1.9.0@dev", + "php": ">=7.2", + "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", + "symfony/dom-crawler": "^4.4 || ^5.0 || ^6.0" }, "require-dev": { - "mink/driver-testsuite": "dev-master" + "mink/driver-testsuite": "dev-master", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/error-handler": "^4.4 || ^5.0 || ^6.0", + "symfony/http-client": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", + "symfony/mime": "^4.4 || ^5.0 || ^6.0", + "yoast/phpunit-polyfills": "^1.0" }, "type": "mink-driver", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -9687,47 +10408,49 @@ "homepage": "http://everzet.com" } ], - "description": "Goutte driver for Mink framework", + "description": "Symfony2 BrowserKit driver for Mink framework", "homepage": "https://mink.behat.org/", "keywords": [ + "Mink", + "Symfony2", "browser", - "goutte", - "headless", "testing" ], "support": { - "issues": "https://github.com/minkphp/MinkGoutteDriver/issues", - "source": "https://github.com/minkphp/MinkGoutteDriver/tree/v1.3.0" + "issues": "https://github.com/minkphp/MinkBrowserKitDriver/issues", + "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v2.1.0" }, - "abandoned": "behat/mink-browserkit-driver", - "time": "2021-10-12T11:35:46+00:00" + "time": "2022-03-28T14:33:51+00:00" }, { "name": "behat/mink-selenium2-driver", - "version": "v1.4.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/minkphp/MinkSelenium2Driver.git", - "reference": "312a967dd527f28980cce40850339cd5316da092" + "reference": "e5f8421654930da725499fb92983e6948c6f973e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkSelenium2Driver/zipball/312a967dd527f28980cce40850339cd5316da092", - "reference": "312a967dd527f28980cce40850339cd5316da092", + "url": "https://api.github.com/repos/minkphp/MinkSelenium2Driver/zipball/e5f8421654930da725499fb92983e6948c6f973e", + "reference": "e5f8421654930da725499fb92983e6948c6f973e", "shasum": "" }, "require": { - "behat/mink": "~1.7@dev", - "instaclick/php-webdriver": "~1.1", - "php": ">=5.4" + "behat/mink": "^1.9@dev", + "ext-json": "*", + "instaclick/php-webdriver": "^1.4", + "php": ">=7.2" }, "require-dev": { - "mink/driver-testsuite": "dev-master" + "mink/driver-testsuite": "dev-master", + "phpunit/phpunit": "^8.5.22 || ^9.5.11", + "symfony/error-handler": "^4.4 || ^5.0" }, "type": "mink-driver", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -9752,7 +10475,7 @@ } ], "description": "Selenium2 (WebDriver) driver for Mink framework", - "homepage": "http://mink.behat.org/", + "homepage": "https://mink.behat.org/", "keywords": [ "ajax", "browser", @@ -9763,9 +10486,9 @@ ], "support": { "issues": "https://github.com/minkphp/MinkSelenium2Driver/issues", - "source": "https://github.com/minkphp/MinkSelenium2Driver/tree/v1.4.0" + "source": "https://github.com/minkphp/MinkSelenium2Driver/tree/v1.6.0" }, - "time": "2020-03-11T14:43:21+00:00" + "time": "2022-03-28T14:55:17+00:00" }, { "name": "composer/ca-bundle", @@ -9843,41 +10566,123 @@ ], "time": "2023-08-30T09:31:38+00:00" }, + { + "name": "composer/class-map-generator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/composer/class-map-generator.git", + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/953cc4ea32e0c31f2185549c7d216d7921f03da9", + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9", + "shasum": "" + }, + "require": { + "composer/pcre": "^2.1 || ^3.1", + "php": "^7.2 || ^8.0", + "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.6", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/filesystem": "^5.4 || ^6", + "symfony/phpunit-bridge": "^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\ClassMapGenerator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Utilities to scan PHP code and generate class maps.", + "keywords": [ + "classmap" + ], + "support": { + "issues": "https://github.com/composer/class-map-generator/issues", + "source": "https://github.com/composer/class-map-generator/tree/1.1.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2023-06-30T13:58:57+00:00" + }, { "name": "composer/composer", - "version": "2.2.22", + "version": "2.6.5", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "fedc76ee3f3e3d57d20993b9f4c5fcfb2f8596aa" + "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/fedc76ee3f3e3d57d20993b9f4c5fcfb2f8596aa", - "reference": "fedc76ee3f3e3d57d20993b9f4c5fcfb2f8596aa", + "url": "https://api.github.com/repos/composer/composer/zipball/4b0fe89db9e65b1e64df633a992e70a7a215ab33", + "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0", + "composer/class-map-generator": "^1.0", "composer/metadata-minifier": "^1.0", - "composer/pcre": "^1.0", - "composer/semver": "^3.0", - "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^2.0 || ^3.0", + "composer/pcre": "^2.1 || ^3.1", + "composer/semver": "^3.2.5", + "composer/spdx-licenses": "^1.5.7", + "composer/xdebug-handler": "^2.0.2 || ^3.0.3", "justinrainbow/json-schema": "^5.2.11", - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0 || ^2.0", - "react/promise": "^1.2 || ^2.7", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "react/promise": "^2.8 || ^3", "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", - "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", - "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", - "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpspec/prophecy": "^1.10", - "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" + "seld/phar-utils": "^1.2", + "seld/signal-handler": "^2.0", + "symfony/console": "^5.4.11 || ^6.0.11 || ^7", + "symfony/filesystem": "^5.4 || ^6.0 || ^7", + "symfony/finder": "^5.4 || ^6.0 || ^7", + "symfony/polyfill-php73": "^1.24", + "symfony/polyfill-php80": "^1.24", + "symfony/polyfill-php81": "^1.24", + "symfony/process": "^5.4 || ^6.0 || ^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.9.3", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1", + "phpstan/phpstan-symfony": "^1.2.10", + "symfony/phpunit-bridge": "^6.0 || ^7" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -9890,12 +10695,17 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.2-dev" + "dev-main": "2.6-dev" + }, + "phpstan": { + "includes": [ + "phpstan/rules.neon" + ] } }, "autoload": { "psr-4": { - "Composer\\": "src/Composer" + "Composer\\": "src/Composer/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9924,7 +10734,8 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.2.22" + "security": "https://github.com/composer/composer/security/policy", + "source": "https://github.com/composer/composer/tree/2.6.5" }, "funding": [ { @@ -9940,7 +10751,7 @@ "type": "tidelift" } ], - "time": "2023-09-29T08:53:46+00:00" + "time": "2023-10-06T08:11:52+00:00" }, { "name": "composer/metadata-minifier", @@ -10013,30 +10824,30 @@ }, { "name": "composer/pcre", - "version": "1.0.1", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "phpstan/phpstan": "^1.3", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5" + "symfony/phpunit-bridge": "^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -10064,7 +10875,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/1.0.1" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -10080,20 +10891,20 @@ "type": "tidelift" } ], - "time": "2022-01-21T20:24:37+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.7", + "version": "1.5.8", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "c848241796da2abf65837d51dce1fae55a960149" + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", - "reference": "c848241796da2abf65837d51dce1fae55a960149", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", "shasum": "" }, "require": { @@ -10142,9 +10953,9 @@ "validator" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" + "source": "https://github.com/composer/spdx-licenses/tree/1.5.8" }, "funding": [ { @@ -10160,7 +10971,7 @@ "type": "tidelift" } ], - "time": "2022-05-23T07:37:50+00:00" + "time": "2023-11-20T07:44:33+00:00" }, { "name": "composer/xdebug-handler", @@ -10300,28 +11111,30 @@ }, { "name": "drupal/coder", - "version": "8.3.13", + "version": "8.3.22", "source": { "type": "git", "url": "https://github.com/pfrenssen/coder.git", - "reference": "d3286d571b19633cc296d438c36b9aed195de43c" + "reference": "ba6e62303d567863275fb086941f50a06dc7d08f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pfrenssen/coder/zipball/d3286d571b19633cc296d438c36b9aed195de43c", - "reference": "d3286d571b19633cc296d438c36b9aed195de43c", + "url": "https://api.github.com/repos/pfrenssen/coder/zipball/ba6e62303d567863275fb086941f50a06dc7d08f", + "reference": "ba6e62303d567863275fb086941f50a06dc7d08f", "shasum": "" }, "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1 || ^1.0.0", "ext-mbstring": "*", - "php": ">=7.0.8", - "sirbrillig/phpcs-variable-analysis": "^2.10", - "squizlabs/php_codesniffer": "^3.5.6", - "symfony/yaml": ">=2.0.5" + "php": ">=7.2", + "sirbrillig/phpcs-variable-analysis": "^2.11.7", + "slevomat/coding-standard": "^8.11", + "squizlabs/php_codesniffer": "^3.7.1", + "symfony/yaml": ">=3.4.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.63", - "phpunit/phpunit": "^6.0 || ^7.0" + "phpstan/phpstan": "^1.7.12", + "phpunit/phpunit": "^8.0" }, "type": "phpcodesniffer-standard", "autoload": { @@ -10334,280 +11147,83 @@ "license": [ "GPL-2.0-or-later" ], - "description": "Coder is a library to review Drupal code.", - "homepage": "https://www.drupal.org/project/coder", - "keywords": [ - "code review", - "phpcs", - "standards" - ], - "support": { - "issues": "https://www.drupal.org/project/issues/coder", - "source": "https://www.drupal.org/project/coder" - }, - "time": "2021-02-06T10:44:32+00:00" - }, - { - "name": "drupal/core-dev", - "version": "9.2.10", - "source": { - "type": "git", - "url": "https://github.com/drupal/core-dev.git", - "reference": "4b5b8556711315e180d72830733ddb07a57a2d73" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/drupal/core-dev/zipball/4b5b8556711315e180d72830733ddb07a57a2d73", - "reference": "4b5b8556711315e180d72830733ddb07a57a2d73", - "shasum": "" - }, - "require": { - "behat/mink": "^1.8", - "behat/mink-goutte-driver": "^1.2", - "behat/mink-selenium2-driver": "^1.4", - "composer/composer": "^2.0.2", - "drupal/coder": "^8.3.10", - "easyrdf/easyrdf": "^0.9 || ^1.0", - "fabpot/goutte": "^3.3", - "friends-of-behat/mink-browserkit-driver": "^1.4", - "instaclick/php-webdriver": "^1.4.1", - "justinrainbow/json-schema": "^5.2", - "mikey179/vfsstream": "^1.6.8", - "phpspec/prophecy": "^1.12", - "phpunit/phpunit": "^8.5.14 || ^9", - "symfony/browser-kit": "^4.4", - "symfony/css-selector": "^4.4", - "symfony/dom-crawler": "^4.4 !=4.4.5", - "symfony/error-handler": "^4.4", - "symfony/filesystem": "^4.4", - "symfony/finder": "^4.4", - "symfony/lock": "^4.4", - "symfony/phpunit-bridge": "^5.3.0", - "symfony/var-dumper": "^5.3.0" - }, - "conflict": { - "webflo/drupal-core-require-dev": "*" - }, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "require-dev dependencies from drupal/drupal; use in addition to drupal/core-recommended to run tests from drupal/core.", - "support": { - "source": "https://github.com/drupal/core-dev/tree/9.2.10" - }, - "time": "2021-06-01T16:41:50+00:00" - }, - { - "name": "easyrdf/easyrdf", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/easyrdf/easyrdf.git", - "reference": "c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/easyrdf/easyrdf/zipball/c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64", - "reference": "c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "ext-pcre": "*", - "ext-xmlreader": "*", - "lib-libxml": "*", - "php": ">=7.1.0" - }, - "require-dev": { - "code-lts/doctum": "^5", - "ml/json-ld": "~1.0", - "phpunit/phpunit": "^7", - "semsol/arc2": "^2.4", - "squizlabs/php_codesniffer": "3.*", - "zendframework/zend-http": "~2.3" - }, - "suggest": { - "ml/json-ld": "~1.0", - "semsol/arc2": "~2.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "EasyRdf\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nicholas Humfrey", - "email": "njh@aelius.com", - "homepage": "http://www.aelius.com/njh/", - "role": "Developer" - }, - { - "name": "Alexey Zakhlestin", - "email": "indeyets@gmail.com", - "homepage": "http://indeyets.ru/", - "role": "Developer" - } - ], - "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.", - "homepage": "http://www.easyrdf.org/", - "keywords": [ - "Linked Data", - "RDF", - "Semantic Web", - "Turtle", - "rdfa", - "sparql" - ], - "support": { - "forum": "http://groups.google.com/group/easyrdf/", - "issues": "http://github.com/easyrdf/easyrdf/issues", - "source": "https://github.com/easyrdf/easyrdf/tree/1.1.1" - }, - "time": "2020-12-02T08:47:31+00:00" - }, - { - "name": "fabpot/goutte", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/Goutte.git", - "reference": "80a23b64f44d54dd571d114c473d9d7e9ed84ca5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/80a23b64f44d54dd571d114c473d9d7e9ed84ca5", - "reference": "80a23b64f44d54dd571d114c473d9d7e9ed84ca5", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=7.1.3", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.0" - }, - "type": "application", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Goutte\\": "Goutte" - }, - "exclude-from-classmap": [ - "Goutte/Tests" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "A simple PHP Web Scraper", - "homepage": "https://github.com/FriendsOfPHP/Goutte", + "description": "Coder is a library to review Drupal code.", + "homepage": "https://www.drupal.org/project/coder", "keywords": [ - "scraper" + "code review", + "phpcs", + "standards" ], "support": { - "issues": "https://github.com/FriendsOfPHP/Goutte/issues", - "source": "https://github.com/FriendsOfPHP/Goutte/tree/v3.3.1" + "issues": "https://www.drupal.org/project/issues/coder", + "source": "https://www.drupal.org/project/coder" }, - "abandoned": "symfony/browser-kit", - "time": "2020-11-01T09:30:18+00:00" + "time": "2023-10-15T09:55:50+00:00" }, { - "name": "friends-of-behat/mink-browserkit-driver", - "version": "v1.6.1", + "name": "drupal/core-dev", + "version": "10.0.11", "source": { "type": "git", - "url": "https://github.com/FriendsOfBehat/MinkBrowserKitDriver.git", - "reference": "b3c29f18fe20487846e4c2733b066ec5e47f4f76" + "url": "https://github.com/drupal/core-dev.git", + "reference": "bd56c4060c1bd968835073cdf359fc07f486d11d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfBehat/MinkBrowserKitDriver/zipball/b3c29f18fe20487846e4c2733b066ec5e47f4f76", - "reference": "b3c29f18fe20487846e4c2733b066ec5e47f4f76", + "url": "https://api.github.com/repos/drupal/core-dev/zipball/bd56c4060c1bd968835073cdf359fc07f486d11d", + "reference": "bd56c4060c1bd968835073cdf359fc07f486d11d", "shasum": "" }, "require": { - "behat/mink": "^1.7", - "php": "^7.4|^8.0", - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0" - }, - "replace": { - "behat/mink-browserkit-driver": "self.version" - }, - "require-dev": { - "friends-of-behat/mink-driver-testsuite": "dev-master", - "symfony/http-kernel": "^4.4|^5.0|^6.0" - }, - "type": "mink-driver", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } + "behat/mink": "^1.10", + "behat/mink-browserkit-driver": "^2.1", + "behat/mink-selenium2-driver": "^1.4", + "composer/composer": "^2.4", + "drupal/coder": "^8.3.10", + "instaclick/php-webdriver": "^1.4.1", + "justinrainbow/json-schema": "^5.2", + "mglaman/phpstan-drupal": "^1.1.35", + "mikey179/vfsstream": "^1.6.11", + "phpspec/prophecy-phpunit": "^2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.10.1", + "phpunit/phpunit": "^9.5", + "symfony/browser-kit": "^6.2", + "symfony/css-selector": "^6.2", + "symfony/dom-crawler": "^6.2", + "symfony/error-handler": "^6.2", + "symfony/filesystem": "^6.2", + "symfony/finder": "^6.2", + "symfony/lock": "^6.2", + "symfony/phpunit-bridge": "^6.2", + "symfony/var-dumper": "^6.2" }, - "autoload": { - "psr-4": { - "Behat\\Mink\\Driver\\": "src/" - } + "conflict": { + "webflo/drupal-core-require-dev": "*" }, + "type": "metapackage", "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Symfony2 BrowserKit driver for Mink framework", - "homepage": "http://mink.behat.org/", - "keywords": [ - "Mink", - "Symfony2", - "browser", - "testing" + "GPL-2.0-or-later" ], + "description": "require-dev dependencies from drupal/drupal; use in addition to drupal/core-recommended to run tests from drupal/core.", "support": { - "source": "https://github.com/FriendsOfBehat/MinkBrowserKitDriver/tree/v1.6.1" + "source": "https://github.com/drupal/core-dev/tree/10.0.11" }, - "time": "2021-12-13T10:41:57+00:00" + "time": "2023-06-16T16:18:48+00:00" }, { "name": "instaclick/php-webdriver", - "version": "1.4.7", + "version": "1.4.16", "source": { "type": "git", "url": "https://github.com/instaclick/php-webdriver.git", - "reference": "b5f330e900e9b3edfc18024a5ec8c07136075712" + "reference": "a39a1f6dc0f4ddd8b2438fa5eb1f67755730d606" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/instaclick/php-webdriver/zipball/b5f330e900e9b3edfc18024a5ec8c07136075712", - "reference": "b5f330e900e9b3edfc18024a5ec8c07136075712", + "url": "https://api.github.com/repos/instaclick/php-webdriver/zipball/a39a1f6dc0f4ddd8b2438fa5eb1f67755730d606", + "reference": "a39a1f6dc0f4ddd8b2438fa5eb1f67755730d606", "shasum": "" }, "require": { @@ -10615,8 +11231,8 @@ "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "^4.8", - "satooshi/php-coveralls": "^1.0||^2.0" + "phpunit/phpunit": "^8.5 || ^9.5", + "satooshi/php-coveralls": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -10655,27 +11271,27 @@ ], "support": { "issues": "https://github.com/instaclick/php-webdriver/issues", - "source": "https://github.com/instaclick/php-webdriver/tree/1.x" + "source": "https://github.com/instaclick/php-webdriver/tree/1.4.16" }, - "time": "2019-09-25T09:05:11+00:00" + "time": "2022-10-28T13:30:35+00:00" }, { "name": "jangregor/phpstan-prophecy", - "version": "0.8.1", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/Jan0707/phpstan-prophecy.git", - "reference": "f01ca476840c370bbf9c224aed25fca60eecca9d" + "reference": "2bc7ca9460395690c6bf7332bdfb2f25d5cae8e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jan0707/phpstan-prophecy/zipball/f01ca476840c370bbf9c224aed25fca60eecca9d", - "reference": "f01ca476840c370bbf9c224aed25fca60eecca9d", + "url": "https://api.github.com/repos/Jan0707/phpstan-prophecy/zipball/2bc7ca9460395690c6bf7332bdfb2f25d5cae8e0", + "reference": "2bc7ca9460395690c6bf7332bdfb2f25d5cae8e0", "shasum": "" }, "require": { "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.12.6" + "phpstan/phpstan": "^1.0.0" }, "conflict": { "phpspec/prophecy": "<1.7.0,>=2.0.0", @@ -10714,19 +11330,15 @@ "description": "Provides a phpstan/phpstan extension for phpspec/prophecy", "support": { "issues": "https://github.com/Jan0707/phpstan-prophecy/issues", - "source": "https://github.com/Jan0707/phpstan-prophecy/tree/0.8.1" + "source": "https://github.com/Jan0707/phpstan-prophecy/tree/1.0.0" }, "funding": [ - { - "url": "https://www.buymeacoffee.com/localheinz", - "type": "custom" - }, { "url": "https://github.com/localheinz", "type": "github" } ], - "time": "2020-10-24T15:04:14+00:00" + "time": "2021-11-08T16:37:47+00:00" }, { "name": "justinrainbow/json-schema", @@ -10798,107 +11410,6 @@ }, "time": "2023-09-26T02:20:38+00:00" }, - { - "name": "mglaman/phpstan-drupal", - "version": "0.12.15", - "source": { - "type": "git", - "url": "https://github.com/mglaman/phpstan-drupal.git", - "reference": "1d65da838f3f5136e30e7a7023c235775f30c53e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mglaman/phpstan-drupal/zipball/1d65da838f3f5136e30e7a7023c235775f30c53e", - "reference": "1d65da838f3f5136e30e7a7023c235775f30c53e", - "shasum": "" - }, - "require": { - "nette/finder": "^2.5", - "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.12.65", - "symfony/yaml": "~3.4.5|^4.2", - "webflo/drupal-finder": "^1.2" - }, - "require-dev": { - "composer/installers": "^1.9", - "drupal/core-dev": "^8.8@alpha || ^9.0", - "drupal/core-recommended": "^8.8@alpha || ^9.0", - "drush/drush": "^9.6 | ^10.0", - "phpstan/phpstan-deprecation-rules": "~0.12.0", - "phpstan/phpstan-strict-rules": "^0.12.0", - "phpunit/phpunit": "^6.5 || ^7.5 || ^8.0 || ^9", - "squizlabs/php_codesniffer": "^3.3" - }, - "suggest": { - "phpstan/phpstan-deprecation-rules": "For catching deprecations, especially in Drupal core." - }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - }, - "installer-paths": { - "tests/fixtures/drupal/core": [ - "type:drupal-core" - ], - "tests/fixtures/drupal/libraries/{$name}": [ - "type:drupal-library" - ], - "tests/fixtures/drupal/modules/contrib/{$name}": [ - "type:drupal-module" - ], - "tests/fixtures/drupal/profiles/contrib/{$name}": [ - "type:drupal-profile" - ], - "tests/fixtures/drupal/themes/contrib/{$name}": [ - "type:drupal-theme" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "files": [ - "drupal-phpunit-hack.php" - ], - "psr-4": { - "PHPStan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Glaman", - "email": "nmd.matt@gmail.com" - } - ], - "description": "Drupal extension and rules for PHPStan", - "support": { - "issues": "https://github.com/mglaman/phpstan-drupal/issues", - "source": "https://github.com/mglaman/phpstan-drupal/tree/0.12.15" - }, - "funding": [ - { - "url": "https://github.com/mglaman", - "type": "github" - }, - { - "url": "https://opencollective.com/phpstan-drupal", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/mglaman/phpstan-drupal", - "type": "tidelift" - } - ], - "time": "2021-10-06T20:17:36+00:00" - }, { "name": "mikey179/vfsstream", "version": "v1.6.11", @@ -11010,156 +11521,82 @@ "time": "2023-03-08T13:26:56+00:00" }, { - "name": "nette/finder", - "version": "v2.5.2", + "name": "palantirnet/drupal-rector", + "version": "0.18.1", "source": { "type": "git", - "url": "https://github.com/nette/finder.git", - "reference": "4ad2c298eb8c687dd0e74ae84206a4186eeaed50" + "url": "https://github.com/palantirnet/drupal-rector.git", + "reference": "907a929fc22ed52b39b974acb2ca900373a84f09" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/finder/zipball/4ad2c298eb8c687dd0e74ae84206a4186eeaed50", - "reference": "4ad2c298eb8c687dd0e74ae84206a4186eeaed50", + "url": "https://api.github.com/repos/palantirnet/drupal-rector/zipball/907a929fc22ed52b39b974acb2ca900373a84f09", + "reference": "907a929fc22ed52b39b974acb2ca900373a84f09", "shasum": "" }, "require": { - "nette/utils": "^2.4 || ^3.0", - "php": ">=7.1" + "rector/rector": "~0.18.0", + "webflo/drupal-finder": "^1.2" }, - "conflict": { - "nette/nette": "<2.2" + "replace": { + "drupal8-rector/drupal8-rector": "*", + "palantirnet/drupal8-rector": "*" }, "require-dev": { - "nette/tester": "^2.0", - "phpstan/phpstan": "^0.12", - "tracy/tracy": "^2.3" + "cweagans/composer-patches": "^1.7.2", + "friendsofphp/php-cs-fixer": "^3.38", + "php": "^8.1", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpunit/phpunit": "^10.0", + "symfony/yaml": "^5 || ^6", + "symplify/rule-doc-generator": "^12.0", + "symplify/vendor-patches": "^11.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } + "enable-patching": true }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "DrupalRector\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" + "MIT" ], "authors": [ { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" + "name": "Dezső Biczó", + "email": "mxr576@gmail.com" }, { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🔍 Nette Finder: find files and directories with an intuitive API.", - "homepage": "https://nette.org", - "keywords": [ - "filesystem", - "glob", - "iterator", - "nette" - ], - "support": { - "issues": "https://github.com/nette/finder/issues", - "source": "https://github.com/nette/finder/tree/v2.5.2" - }, - "time": "2020-01-03T20:35:40+00:00" - }, - { - "name": "nette/utils", - "version": "v3.2.5", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "9cd80396ca58d7969ab44fc7afcf03624dfa526e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/9cd80396ca58d7969ab44fc7afcf03624dfa526e", - "reference": "9cd80396ca58d7969ab44fc7afcf03624dfa526e", - "shasum": "" - }, - "require": { - "php": ">=7.2 <8.2" - }, - "conflict": { - "nette/di": "<3.0.6" - }, - "require-dev": { - "nette/tester": "~2.0", - "phpstan/phpstan": "^0.12", - "tracy/tracy": "^2.3" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", - "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0-only", - "GPL-3.0-only" - ], - "authors": [ + "name": "Ofer Shaal", + "email": "shaal@palantir.net" + }, { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" + "name": "Daniel Montgomery", + "email": "montgomery@palantir.net" }, { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" + "name": "Matt Glaman", + "email": "nmd.matt@gmail.com" } ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", + "description": "Instant fixes for your Drupal code by using Rector.", "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" + "Code style", + "Drupal 8", + "ast", + "drupal 9", + "rector" ], "support": { - "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v3.2.5" + "source": "https://github.com/palantirnet/drupal-rector/tree/0.18.1" }, - "time": "2021-09-20T10:50:11+00:00" + "time": "2023-11-21T15:17:33+00:00" }, { "name": "phar-io/manifest", @@ -11470,28 +11907,27 @@ }, { "name": "phpstan/extension-installer", - "version": "1.1.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "66c7adc9dfa38b6b5838a9fb728b68a7d8348051" + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/66c7adc9dfa38b6b5838a9fb728b68a7d8348051", - "reference": "66c7adc9dfa38b6b5838a9fb728b68a7d8348051", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1 || ^2.0", - "php": "^7.1 || ^8.0", - "phpstan/phpstan": ">=0.11.6" + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.9.0" }, "require-dev": { - "composer/composer": "^1.8", - "phing/phing": "^2.16.3", + "composer/composer": "^2.0", "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-strict-rules": "^0.11 || ^0.12" + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" }, "type": "composer-plugin", "extra": { @@ -11509,73 +11945,9 @@ "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.1.0" - }, - "time": "2020-12-13T13:06:13+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "0.12.99", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.99" + "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "time": "2021-09-12T20:09:55+00:00" + "time": "2023-05-24T08:59:17+00:00" }, { "name": "phpunit/php-code-coverage", @@ -12001,23 +12373,24 @@ }, { "name": "react/promise", - "version": "v2.11.0", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831" + "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/1a8460931ea36dc5c76838fec5734d55c88c6831", - "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831", + "url": "https://api.github.com/repos/reactphp/promise/zipball/e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", + "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=7.1.0" }, "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" }, "type": "library", "autoload": { @@ -12061,7 +12434,7 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.11.0" + "source": "https://github.com/reactphp/promise/tree/v3.1.0" }, "funding": [ { @@ -12069,7 +12442,63 @@ "type": "open_collective" } ], - "time": "2023-11-16T16:16:50+00:00" + "time": "2023-11-16T16:21:57+00:00" + }, + { + "name": "rector/rector", + "version": "0.18.10", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "f36bc0a707fd8af301df5108740ce41f9db8eded" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/f36bc0a707fd8af301df5108740ce41f9db8eded", + "reference": "f36bc0a707fd8af301df5108740ce41f9db8eded", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.10.35" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/0.18.10" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2023-11-16T19:42:21+00:00" }, { "name": "sebastian/cli-parser", @@ -13147,30 +13576,92 @@ }, "time": "2022-08-31T10:31:18+00:00" }, + { + "name": "seld/signal-handler", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/signal-handler.git", + "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", + "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "require-dev": { + "phpstan/phpstan": "^1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^7.5.20 || ^8.5.23", + "psr/log": "^1 || ^2 || ^3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\Signal\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Simple unix signal handler that silently fails where signals are not supported for easy cross-platform development", + "keywords": [ + "posix", + "sigint", + "signal", + "sigterm", + "unix" + ], + "support": { + "issues": "https://github.com/Seldaek/signal-handler/issues", + "source": "https://github.com/Seldaek/signal-handler/tree/2.0.2" + }, + "time": "2023-09-03T09:24:00+00:00" + }, { "name": "sirbrillig/phpcs-variable-analysis", - "version": "v2.11.0", + "version": "v2.11.17", "source": { "type": "git", "url": "https://github.com/sirbrillig/phpcs-variable-analysis.git", - "reference": "e76e816236f401458dd8e16beecab905861b5867" + "reference": "3b71162a6bf0cde2bff1752e40a1788d8273d049" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/e76e816236f401458dd8e16beecab905861b5867", - "reference": "e76e816236f401458dd8e16beecab905861b5867", + "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/3b71162a6bf0cde2bff1752e40a1788d8273d049", + "reference": "3b71162a6bf0cde2bff1752e40a1788d8273d049", "shasum": "" }, "require": { "php": ">=5.4.0", - "squizlabs/php_codesniffer": "^3.5" + "squizlabs/php_codesniffer": "^3.5.6" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "limedeck/phpunit-detailed-printer": "^3.1 || ^4.0 || ^5.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^5.0 || ^6.5 || ^7.0 || ^8.0", - "sirbrillig/phpcs-import-detection": "^1.1" + "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.0", + "phpcsstandards/phpcsdevcs": "^1.1", + "phpstan/phpstan": "^1.7", + "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.5 || ^7.0 || ^8.0 || ^9.0", + "sirbrillig/phpcs-import-detection": "^1.1", + "vimeo/psalm": "^0.2 || ^0.3 || ^1.1 || ^4.24 || ^5.0@beta" }, "type": "phpcodesniffer-standard", "autoload": { @@ -13193,40 +13684,105 @@ } ], "description": "A PHPCS sniff to detect problems with variables.", + "keywords": [ + "phpcs", + "static analysis" + ], "support": { "issues": "https://github.com/sirbrillig/phpcs-variable-analysis/issues", "source": "https://github.com/sirbrillig/phpcs-variable-analysis", "wiki": "https://github.com/sirbrillig/phpcs-variable-analysis/wiki" }, - "time": "2021-03-09T22:32:14+00:00" + "time": "2023-08-05T23:46:11+00:00" + }, + { + "name": "slevomat/coding-standard", + "version": "8.14.1", + "source": { + "type": "git", + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/fea1fd6f137cc84f9cba0ae30d549615dbc6a926", + "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.23.1", + "squizlabs/php_codesniffer": "^3.7.1" + }, + "require-dev": { + "phing/phing": "2.17.4", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.10.37", + "phpstan/phpstan-deprecation-rules": "1.1.4", + "phpstan/phpstan-phpunit": "1.3.14", + "phpstan/phpstan-strict-rules": "1.5.1", + "phpunit/phpunit": "8.5.21|9.6.8|10.3.5" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "keywords": [ + "dev", + "phpcs" + ], + "support": { + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/8.14.1" + }, + "funding": [ + { + "url": "https://github.com/kukulich", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" + } + ], + "time": "2023-10-08T07:28:08+00:00" }, { "name": "symfony/browser-kit", - "version": "v4.4.44", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb" + "reference": "e270297dbee59168274c2b535ab1bccd593e6ffe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb", - "reference": "2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e270297dbee59168274c2b535ab1bccd593e6ffe", + "reference": "e270297dbee59168274c2b535ab1bccd593e6ffe", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/dom-crawler": "^5.4|^6.0" }, "require-dev": { - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/mime": "^4.3|^5.0", - "symfony/process": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/process": "" + "symfony/css-selector": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -13254,7 +13810,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v4.4.44" + "source": "https://github.com/symfony/browser-kit/tree/v6.3.8" }, "funding": [ { @@ -13270,25 +13826,24 @@ "type": "tidelift" } ], - "time": "2022-07-25T12:56:14+00:00" + "time": "2023-10-31T08:07:48+00:00" }, { "name": "symfony/css-selector", - "version": "v4.4.44", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed" + "reference": "883d961421ab1709877c10ac99451632a3d6fa57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -13320,7 +13875,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v4.4.44" + "source": "https://github.com/symfony/css-selector/tree/v6.3.2" }, "funding": [ { @@ -13336,37 +13891,30 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.45", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "4b8daf6c56801e6d664224261cb100b73edc78a5" + "reference": "3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4b8daf6c56801e6d664224261cb100b73edc78a5", - "reference": "4b8daf6c56801e6d664224261cb100b73edc78a5", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1", + "reference": "3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1", "shasum": "" }, "require": { - "php": ">=7.1.3", + "masterminds/html5": "^2.6", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "masterminds/html5": "<2.6" + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/css-selector": "" + "symfony/css-selector": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -13394,7 +13942,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.45" + "source": "https://github.com/symfony/dom-crawler/tree/v6.3.4" }, "funding": [ { @@ -13410,32 +13958,34 @@ "type": "tidelift" } ], - "time": "2022-08-03T12:57:57+00:00" + "time": "2023-08-01T07:43:40+00:00" }, { "name": "symfony/lock", - "version": "v4.4.25", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/lock.git", - "reference": "19da02c62477e20f59f38f020c9bd3a404541c7e" + "reference": "5379d56b6cedba2d9dfb86563c4ed73de5b194ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/19da02c62477e20f59f38f020c9bd3a404541c7e", - "reference": "19da02c62477e20f59f38f020c9bd3a404541c7e", + "url": "https://api.github.com/repos/symfony/lock/zipball/5379d56b6cedba2d9dfb86563c4ed73de5b194ca", + "reference": "5379d56b6cedba2d9dfb86563c4ed73de5b194ca", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "~1.0" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "doctrine/dbal": "<2.6" + "doctrine/dbal": "<2.13", + "symfony/cache": "<6.2" }, "require-dev": { - "doctrine/dbal": "^2.6|^3.0", - "predis/predis": "~1.0" + "doctrine/dbal": "^2.13|^3|^4", + "predis/predis": "^1.1|^2.0" }, "type": "library", "autoload": { @@ -13471,7 +14021,7 @@ "semaphore" ], "support": { - "source": "https://github.com/symfony/lock/tree/v4.4.25" + "source": "https://github.com/symfony/lock/tree/v6.3.8" }, "funding": [ { @@ -13487,34 +14037,32 @@ "type": "tidelift" } ], - "time": "2021-05-26T11:20:16+00:00" + "time": "2023-11-07T10:17:15+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v5.3.0", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "15cab721487b7bf43ad545a1e7d0095782e26f8c" + "reference": "45610900872a35b77db7698651f36129906041ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/15cab721487b7bf43ad545a1e7d0095782e26f8c", - "reference": "15cab721487b7bf43ad545a1e7d0095782e26f8c", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/45610900872a35b77db7698651f36129906041ea", + "reference": "45610900872a35b77db7698651f36129906041ea", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/deprecation-contracts": "^2.1" + "php": ">=7.1.3" }, "conflict": { "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0" - }, - "suggest": { - "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/polyfill-php81": "^1.27" }, "bin": [ "bin/simple-phpunit" @@ -13554,7 +14102,86 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v5.3.0" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.3.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-10-31T08:07:48+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" }, "funding": [ { @@ -13570,36 +14197,36 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:57:12+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "thecodingmachine/phpstan-safe-rule", - "version": "v1.0.1", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/thecodingmachine/phpstan-safe-rule.git", - "reference": "1a1ae26c29011d2d48636353ecadf7fc40997401" + "reference": "8a7b88e0d54f209a488095085f183e9174c40e1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/phpstan-safe-rule/zipball/1a1ae26c29011d2d48636353ecadf7fc40997401", - "reference": "1a1ae26c29011d2d48636353ecadf7fc40997401", + "url": "https://api.github.com/repos/thecodingmachine/phpstan-safe-rule/zipball/8a7b88e0d54f209a488095085f183e9174c40e1e", + "reference": "8a7b88e0d54f209a488095085f183e9174c40e1e", "shasum": "" }, "require": { "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.10 | ^0.11 | ^0.12", - "thecodingmachine/safe": "^1.0" + "phpstan/phpstan": "^1.0", + "thecodingmachine/safe": "^1.0 || ^2.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^7.5.2", + "phpunit/phpunit": "^7.5.2 || ^8.0", "squizlabs/php_codesniffer": "^3.4" }, "type": "phpstan-extension", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.1-dev" }, "phpstan": { "includes": [ @@ -13625,9 +14252,9 @@ "description": "A PHPStan rule to detect safety issues. Must be used in conjunction with thecodingmachine/safe", "support": { "issues": "https://github.com/thecodingmachine/phpstan-safe-rule/issues", - "source": "https://github.com/thecodingmachine/phpstan-safe-rule/tree/v1.0.1" + "source": "https://github.com/thecodingmachine/phpstan-safe-rule/tree/v1.2.0" }, - "time": "2020-08-30T11:41:12+00:00" + "time": "2022-01-17T10:12:29+00:00" }, { "name": "theseer/tokenizer", @@ -13678,6 +14305,57 @@ } ], "time": "2023-11-20T00:12:19+00:00" + }, + { + "name": "timeweb/phpstan-enum", + "version": "v3.1.1", + "source": { + "type": "git", + "url": "https://github.com/timeweb/phpstan-enum.git", + "reference": "72f54c981431039ee194ffdf46e8340fea49195a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/timeweb/phpstan-enum/zipball/72f54c981431039ee194ffdf46e8340fea49195a", + "reference": "72f54c981431039ee194ffdf46e8340fea49195a", + "shasum": "" + }, + "require": { + "myclabs/php-enum": "^1.2", + "php": "^7.1|^8.0", + "phpstan/phpstan": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0|^9.0" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Timeweb\\PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Enum class reflection extension for PHPStan", + "keywords": [ + "PHPStan", + "enum" + ], + "support": { + "issues": "https://github.com/timeweb/phpstan-enum/issues", + "source": "https://github.com/timeweb/phpstan-enum/tree/v3.1.1" + }, + "time": "2022-10-17T05:55:05+00:00" } ], "aliases": [], @@ -13685,8 +14363,8 @@ "stability-flags": { "drupal/customerror": 10, "drupal/default_content": 15, - "drupal/inline_all_css": 5, - "drupal/libraries": 10, + "drupal/gin": 5, + "drupal/gin_toolbar": 5, "drupal/openapi_rest": 5, "drupal/potion": 20 }, diff --git a/config/sync/admin_toolbar.settings.yml b/config/sync/admin_toolbar.settings.yml new file mode 100644 index 000000000..93a66955e --- /dev/null +++ b/config/sync/admin_toolbar.settings.yml @@ -0,0 +1,3 @@ +_core: + default_config_hash: jvTSppzcgH5wnzBhX5xnAExcp2I1CzkQ_aky65XNfYI +menu_depth: 4 diff --git a/config/sync/block.block.claro_breadcrumbs.yml b/config/sync/block.block.claro_breadcrumbs.yml index 61d607bfd..ef04a7d1d 100644 --- a/config/sync/block.block.claro_breadcrumbs.yml +++ b/config/sync/block.block.claro_breadcrumbs.yml @@ -17,6 +17,6 @@ plugin: system_breadcrumb_block settings: id: system_breadcrumb_block label: Breadcrumbs - provider: system label_display: '0' + provider: system visibility: { } diff --git a/config/sync/block.block.claro_content.yml b/config/sync/block.block.claro_content.yml index aeeaee581..b5d1bd551 100644 --- a/config/sync/block.block.claro_content.yml +++ b/config/sync/block.block.claro_content.yml @@ -17,6 +17,6 @@ plugin: system_main_block settings: id: system_main_block label: 'Main page content' - provider: system label_display: '0' + provider: system visibility: { } diff --git a/config/sync/block.block.claro_local_actions.yml b/config/sync/block.block.claro_local_actions.yml index 9e6c453bc..a764fcdc7 100644 --- a/config/sync/block.block.claro_local_actions.yml +++ b/config/sync/block.block.claro_local_actions.yml @@ -15,6 +15,6 @@ plugin: local_actions_block settings: id: local_actions_block label: 'Primary admin actions' - provider: core label_display: '0' + provider: core visibility: { } diff --git a/config/sync/block.block.claro_messages.yml b/config/sync/block.block.claro_messages.yml index 81ac4815a..f27567c07 100644 --- a/config/sync/block.block.claro_messages.yml +++ b/config/sync/block.block.claro_messages.yml @@ -17,6 +17,6 @@ plugin: system_messages_block settings: id: system_messages_block label: 'Status messages' - provider: system label_display: '0' + provider: system visibility: { } diff --git a/config/sync/block.block.claro_page_title.yml b/config/sync/block.block.claro_page_title.yml index 1efd3b0a2..dd961b700 100644 --- a/config/sync/block.block.claro_page_title.yml +++ b/config/sync/block.block.claro_page_title.yml @@ -15,6 +15,6 @@ plugin: page_title_block settings: id: page_title_block label: 'Page title' - provider: core label_display: '0' + provider: core visibility: { } diff --git a/config/sync/block.block.claro_primary_local_tasks.yml b/config/sync/block.block.claro_primary_local_tasks.yml index a6355cda8..cf1e40d98 100644 --- a/config/sync/block.block.claro_primary_local_tasks.yml +++ b/config/sync/block.block.claro_primary_local_tasks.yml @@ -15,8 +15,8 @@ plugin: local_tasks_block settings: id: local_tasks_block label: 'Primary tabs' - provider: core label_display: '0' + provider: core primary: true secondary: false visibility: { } diff --git a/config/sync/block.block.claro_secondary_local_tasks.yml b/config/sync/block.block.claro_secondary_local_tasks.yml index 2a27d31da..f4ca56610 100644 --- a/config/sync/block.block.claro_secondary_local_tasks.yml +++ b/config/sync/block.block.claro_secondary_local_tasks.yml @@ -15,8 +15,8 @@ plugin: local_tasks_block settings: id: local_tasks_block label: 'Secondary tabs' - provider: core label_display: '0' + provider: core primary: false secondary: true visibility: { } diff --git a/config/sync/block.block.gin_breadcrumbs.yml b/config/sync/block.block.gin_breadcrumbs.yml new file mode 100644 index 000000000..2605deadd --- /dev/null +++ b/config/sync/block.block.gin_breadcrumbs.yml @@ -0,0 +1,22 @@ +uuid: 89e87abd-5c20-4a30-94ac-a7ff60ed71d2 +langcode: en +status: true +dependencies: + module: + - system + theme: + - gin +_core: + default_config_hash: y9X3xgCsO59pQyzNLzY1D3SDJJxCHILLWkpPnmuTJ2E +id: gin_breadcrumbs +theme: gin +region: breadcrumb +weight: 0 +provider: null +plugin: system_breadcrumb_block +settings: + id: system_breadcrumb_block + label: Breadcrumbs + label_display: '0' + provider: system +visibility: { } diff --git a/config/sync/block.block.gin_content.yml b/config/sync/block.block.gin_content.yml new file mode 100644 index 000000000..6b76e3c5b --- /dev/null +++ b/config/sync/block.block.gin_content.yml @@ -0,0 +1,22 @@ +uuid: fd2967a6-c2bc-4975-a7f3-47103dea947d +langcode: en +status: true +dependencies: + module: + - system + theme: + - gin +_core: + default_config_hash: hBHXB7hC05XU7pDYzETt-GUcpFlogK1gkjyAsg0Ym58 +id: gin_content +theme: gin +region: content +weight: 0 +provider: null +plugin: system_main_block +settings: + id: system_main_block + label: 'Main page content' + label_display: '0' + provider: system +visibility: { } diff --git a/config/sync/block.block.gin_local_actions.yml b/config/sync/block.block.gin_local_actions.yml new file mode 100644 index 000000000..181cd1a4a --- /dev/null +++ b/config/sync/block.block.gin_local_actions.yml @@ -0,0 +1,20 @@ +uuid: dc4ee9fc-9ffb-4151-96cc-d1bddcfa40a7 +langcode: en +status: true +dependencies: + theme: + - gin +_core: + default_config_hash: OQ9aJ-4qVwK1x00o9EOYK4eFDjQr_HLpbPiJaPSVZiQ +id: gin_local_actions +theme: gin +region: content +weight: -10 +provider: null +plugin: local_actions_block +settings: + id: local_actions_block + label: 'Primary admin actions' + label_display: '0' + provider: core +visibility: { } diff --git a/config/sync/block.block.gin_messages.yml b/config/sync/block.block.gin_messages.yml new file mode 100644 index 000000000..b1f8342a3 --- /dev/null +++ b/config/sync/block.block.gin_messages.yml @@ -0,0 +1,22 @@ +uuid: ba4139d8-5061-4896-8691-c54119aab7e8 +langcode: en +status: true +dependencies: + module: + - system + theme: + - gin +_core: + default_config_hash: WvPhI8OwllG0gE69-F8qL3ai3nd5SbYD6JpmEuZcyok +id: gin_messages +theme: gin +region: highlighted +weight: 0 +provider: null +plugin: system_messages_block +settings: + id: system_messages_block + label: 'Status messages' + label_display: '0' + provider: system +visibility: { } diff --git a/config/sync/block.block.novel_page_title.yml b/config/sync/block.block.gin_page_title.yml similarity index 55% rename from config/sync/block.block.novel_page_title.yml rename to config/sync/block.block.gin_page_title.yml index 91758b584..836531a86 100644 --- a/config/sync/block.block.novel_page_title.yml +++ b/config/sync/block.block.gin_page_title.yml @@ -1,20 +1,20 @@ -uuid: 92c468ad-a3b1-41fc-9558-9038355eb5bb +uuid: 9598763a-754f-4864-9dab-8ae7adf80061 langcode: en status: true dependencies: theme: - - novel + - gin _core: - default_config_hash: 8yptDf6WrXxeyevUz4nP5vfr7BtxQqCBMninhV2IJ1g -id: novel_page_title -theme: novel -region: content + default_config_hash: HLQY2xgby8K3vN_98hiOSasOhm9pdCsH234-s0duJ8Q +id: gin_page_title +theme: gin +region: header weight: -30 provider: null plugin: page_title_block settings: id: page_title_block label: 'Page title' - provider: core label_display: '0' + provider: core visibility: { } diff --git a/config/sync/block.block.gin_primary_local_tasks.yml b/config/sync/block.block.gin_primary_local_tasks.yml new file mode 100644 index 000000000..8560fa270 --- /dev/null +++ b/config/sync/block.block.gin_primary_local_tasks.yml @@ -0,0 +1,22 @@ +uuid: 30db0b20-bb61-4837-8079-b7ef4027bd93 +langcode: en +status: true +dependencies: + theme: + - gin +_core: + default_config_hash: Hh01DLj9k7UnNdPpOQXHZHW7GHf2OPNDQyCJF7_R9ac +id: gin_primary_local_tasks +theme: gin +region: header +weight: 0 +provider: null +plugin: local_tasks_block +settings: + id: local_tasks_block + label: 'Primary tabs' + label_display: '0' + provider: core + primary: true + secondary: false +visibility: { } diff --git a/config/sync/block.block.gin_secondary_local_tasks.yml b/config/sync/block.block.gin_secondary_local_tasks.yml new file mode 100644 index 000000000..199a48959 --- /dev/null +++ b/config/sync/block.block.gin_secondary_local_tasks.yml @@ -0,0 +1,22 @@ +uuid: 5a2f8b98-4308-436f-9033-800cc460a4a2 +langcode: en +status: true +dependencies: + theme: + - gin +_core: + default_config_hash: BCWhood0xXFQYqxFgL1spXdb9KeIuXH1YvTdjIEedDg +id: gin_secondary_local_tasks +theme: gin +region: pre_content +weight: 0 +provider: null +plugin: local_tasks_block +settings: + id: local_tasks_block + label: 'Secondary tabs' + label_display: '0' + provider: core + primary: false + secondary: true +visibility: { } diff --git a/config/sync/block.block.novel_admin.yml b/config/sync/block.block.novel_admin.yml index 3c73bd996..8bac75937 100644 --- a/config/sync/block.block.novel_admin.yml +++ b/config/sync/block.block.novel_admin.yml @@ -19,8 +19,8 @@ plugin: 'system_menu_block:admin' settings: id: 'system_menu_block:admin' label: Administration - provider: system label_display: visible + provider: system level: 1 depth: 0 expand_all_items: false diff --git a/config/sync/block.block.novel_branding.yml b/config/sync/block.block.novel_branding.yml index bfa7b59cd..e8f9637d9 100644 --- a/config/sync/block.block.novel_branding.yml +++ b/config/sync/block.block.novel_branding.yml @@ -1,6 +1,6 @@ uuid: c4e1a667-54b2-4ff4-bad7-dc1549e7d793 langcode: en -status: true +status: false dependencies: module: - system @@ -17,8 +17,8 @@ plugin: system_branding_block settings: id: system_branding_block label: 'Site branding' - provider: system label_display: '0' + provider: system use_site_logo: true use_site_name: true use_site_slogan: true diff --git a/config/sync/block.block.novel_local_actions.yml b/config/sync/block.block.novel_local_actions.yml index c5da587dc..5447cf03e 100644 --- a/config/sync/block.block.novel_local_actions.yml +++ b/config/sync/block.block.novel_local_actions.yml @@ -15,6 +15,6 @@ plugin: local_actions_block settings: id: local_actions_block label: 'Primary admin actions' - provider: core label_display: '0' + provider: core visibility: { } diff --git a/config/sync/block.block.novel_local_tasks.yml b/config/sync/block.block.novel_local_tasks.yml index 1f9b61118..7a8f10ede 100644 --- a/config/sync/block.block.novel_local_tasks.yml +++ b/config/sync/block.block.novel_local_tasks.yml @@ -1,6 +1,6 @@ uuid: 692cc50a-dbda-4b8d-88e2-dfc872bc7a77 langcode: en -status: true +status: false dependencies: theme: - novel @@ -15,8 +15,8 @@ plugin: local_tasks_block settings: id: local_tasks_block label: Tabs - provider: core label_display: '0' + provider: core primary: true secondary: true visibility: { } diff --git a/config/sync/block.block.novel_messages.yml b/config/sync/block.block.novel_messages.yml index 5c8cc3d7d..b7453717e 100644 --- a/config/sync/block.block.novel_messages.yml +++ b/config/sync/block.block.novel_messages.yml @@ -17,6 +17,6 @@ plugin: system_messages_block settings: id: system_messages_block label: 'Status messages' - provider: system label_display: '0' + provider: system visibility: { } diff --git a/config/sync/block.block.novel_tools.yml b/config/sync/block.block.novel_tools.yml index 6e1edd828..f88600699 100644 --- a/config/sync/block.block.novel_tools.yml +++ b/config/sync/block.block.novel_tools.yml @@ -19,8 +19,8 @@ plugin: 'system_menu_block:tools' settings: id: 'system_menu_block:tools' label: Tools - provider: system label_display: visible + provider: system level: 1 depth: 0 expand_all_items: false diff --git a/config/sync/config_ignore.settings.yml b/config/sync/config_ignore.settings.yml index a0fb1db15..e422d1e42 100644 --- a/config/sync/config_ignore.settings.yml +++ b/config/sync/config_ignore.settings.yml @@ -1,54 +1,87 @@ +_core: + default_config_hash: UVH1aJ4b44UM-VdPVN7hNNuuVqfReJxwfVeDQH1Hvsk ignored_config_entities: - '*' - '~block.block.claro.*' - '~block.block.novel.*' + - ~block.block.gin_breadcrumbs + - ~block.block.gin_content + - ~block.block.gin_local_actions + - ~block.block.gin_messages + - ~block.block.gin_page_title + - ~block.block.gin_primary_local_tasks + - ~block.block.gin_secondary_local_tasks - ~config_ignore.settings - - '~core.date_format.*' + - '~core.base_field_override.node.article.*' - '~core.base_field_override.node.campaign.*' + - '~core.base_field_override.node.event.*' + - '~core.date_format.*' + - '~core.entity_form_display.node.article.*' - '~core.entity_form_display.node.campaign.*' + - '~core.entity_form_display.node.event.*' - '~core.entity_form_display.paragraph.campaign_rule.*' - '~core.entity_form_mode.user_register.*' + - '~core.entity_view_display.node.article.*' - '~core.entity_view_display.node.campaign.*' + - '~core.entity_view_display.node.event.*' - '~core.entity_view_display.paragraph.campaign_rule.*' + - '~core.entity_view_mode.block.*' - '~core.entity_view_mode.display.*' + - '~core.entity_view_mode.file.*' - '~core.entity_view_mode.node.*' - '~core.entity_view_mode.paragraph.*' + - '~core.entity_view_mode.path_alias.*' + - '~core.entity_view_mode.user.*' - ~core.menu.static_menu_link_overrides - ~dblog.settings - '~dpl_library_agency.general_settings:reservation_sms_notifications_disabled' - '~dpl_mapp.settings:domain' - '~field.field.node.campaign.*' - '~field.field.paragraph.campaign_rule.*' + - ~field.field.node.article.field_override_author + - ~field.field.node.article.field_show_override_author + - ~field.field.node.article.field_subtitle - ~field.settings - ~field.storage.node.body - ~field.storage.node.field_campaign_image - ~field.storage.node.field_campaign_rules + - ~field.storage.node.field_campaign_text + - ~field.storage.node.field_override_author + - ~field.storage.node.field_show_override_author + - ~field.storage.node.field_subtitle - ~field.storage.paragraph.field_campaign_rule_facet - ~field.storage.paragraph.field_campaign_rule_term - ~field.storage.paragraph.field_campaign_rule_term_ranking - ~file.settings - ~filter.format.plain_text - ~filter.settings - - ~inline_all_css.settings + - ~gin.settings - ~image.settings - ~image.style.campaign_image - ~image.style.large - ~image.style.medium - ~image.style.thumbnail + - ~job_scheduler.settings - '~jsonlog.settings:jsonlog_severity_threshold' - '~jsonlog.settings:jsonlog_truncate' - '~jsonlog.settings:jsonlog_stderr' - '~jsonlog.settings:jsonlog_newline_prepend' + - '~language.content_settings.node.event.*' - ~language.entity.da - ~language.entity.en - ~language.entity.und - ~language.entity.zxx - ~language.mappings - ~language.negotiation + - ~language.content_settings.node.article - ~language.types - ~locale.settings + - '~metatag.metatag_defaults.*' + - '~metatag.settings.*' - ~node.settings - ~node.type.campaign + - ~node.type.article + - ~node.type.event - ~paragraphs.paragraphs_type.campaign_rule - ~paragraphs.settings - ~purge_queuer_coretags @@ -96,6 +129,10 @@ ignored_config_entities: - ~favorites_list.settings - ~varnish_purger.settings.65fc931232 - ~varnish_purger.settings.30cd45a1b1 + - ~views.settings + - ~views.view.content + - ~views.view.files + - ~views.view.user_admin_people - ~dpl_loan_list.settings - ~dpl_fees.settings - ~dpl_recommender.settings @@ -103,5 +140,3 @@ ignored_config_entities: - ~dpl_reservation_list.settings - ~dpl_patron_redirect.settings - ~dpl_patron_reg.settings -_core: - default_config_hash: UVH1aJ4b44UM-VdPVN7hNNuuVqfReJxwfVeDQH1Hvsk diff --git a/config/sync/core.base_field_override.node.event.promote.yml b/config/sync/core.base_field_override.node.event.promote.yml new file mode 100644 index 000000000..a1c329cd9 --- /dev/null +++ b/config/sync/core.base_field_override.node.event.promote.yml @@ -0,0 +1,22 @@ +uuid: 381381f1-031b-433c-a82c-abd9db366720 +langcode: en +status: true +dependencies: + config: + - node.type.event +id: node.event.promote +field_name: promote +entity_type: node +bundle: event +label: 'Promoted to front page' +description: '' +required: false +translatable: true +default_value: + - + value: 0 +default_value_callback: '' +settings: + on_label: 'On' + off_label: 'Off' +field_type: boolean diff --git a/config/sync/core.date_format.date_full_month.yml b/config/sync/core.date_format.date_full_month.yml new file mode 100644 index 000000000..71b146a84 --- /dev/null +++ b/config/sync/core.date_format.date_full_month.yml @@ -0,0 +1,8 @@ +uuid: 978c615f-037a-422a-bdd7-f919ac256d3b +langcode: da +status: true +dependencies: { } +id: date_full_month +label: 'Date full month' +locked: false +pattern: 'd. F Y' diff --git a/config/sync/core.entity_form_display.node.article.default.yml b/config/sync/core.entity_form_display.node.article.default.yml index 95a89eb7a..2f8f6fba6 100644 --- a/config/sync/core.entity_form_display.node.article.default.yml +++ b/config/sync/core.entity_form_display.node.article.default.yml @@ -3,18 +3,106 @@ langcode: en status: true dependencies: config: + - field.field.node.article.field_canonical_url + - field.field.node.article.field_override_author + - field.field.node.article.field_paragraphs + - field.field.node.article.field_show_override_author + - field.field.node.article.field_subtitle - node.type.article + module: + - field_group + - link + - paragraphs + - paragraphs_ee + - paragraphs_features +third_party_settings: + field_group: + group_article_meta_tags: + children: + - field_canonical_url + label: 'Meta tags' + region: content + parent_name: '' + weight: 7 + format_type: details_sidebar + format_settings: + classes: '' + show_empty_fields: false + id: '' + open: false + description: '' + required_fields: true + weight: 0 id: node.article.default targetEntityType: node bundle: article mode: default content: - status: + field_canonical_url: + type: link_default + weight: 6 + region: content + settings: + placeholder_url: '' + placeholder_title: '' + third_party_settings: { } + field_override_author: + type: string_textfield + weight: 5 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } + field_paragraphs: + type: paragraphs + weight: 2 + region: content + settings: + title: Paragraph + title_plural: Paragraphs + edit_mode: closed + closed_mode: preview + autocollapse: none + closed_mode_threshold: 0 + add_mode: modal + form_display_mode: default + default_paragraph_type: _none + features: + add_above: '0' + collapse_edit_all: collapse_edit_all + duplicate: duplicate + third_party_settings: + paragraphs_ee: + paragraphs_ee: + dialog_off_canvas: false + dialog_style: tiles + paragraphs_features: + add_in_between: true + add_in_between_link_count: 0 + delete_confirmation: true + show_drag_and_drop: true + field_show_override_author: type: boolean_checkbox + weight: 4 + region: content settings: display_label: true + third_party_settings: { } + field_subtitle: + type: string_textarea weight: 1 region: content + settings: + rows: 3 + placeholder: '' + third_party_settings: { } + status: + type: boolean_checkbox + weight: 3 + region: content + settings: + display_label: true third_party_settings: { } title: type: string_textfield diff --git a/config/sync/core.entity_form_display.node.campaign.default.yml b/config/sync/core.entity_form_display.node.campaign.default.yml index 6da67b4cb..7458ff726 100644 --- a/config/sync/core.entity_form_display.node.campaign.default.yml +++ b/config/sync/core.entity_form_display.node.campaign.default.yml @@ -3,33 +3,22 @@ langcode: da status: true dependencies: config: - - field.field.node.campaign.body - field.field.node.campaign.field_campaign_image - field.field.node.campaign.field_campaign_link - field.field.node.campaign.field_campaign_rules - field.field.node.campaign.field_campaign_rules_logic + - field.field.node.campaign.field_campaign_text - image.style.thumbnail - node.type.campaign module: - image - link - paragraphs - - text id: node.campaign.default targetEntityType: node bundle: campaign mode: default content: - body: - type: text_textarea_with_summary - weight: 6 - settings: - rows: 9 - summary_rows: 3 - placeholder: '' - show_summary: false - third_party_settings: { } - region: content created: type: datetime_timestamp weight: 3 @@ -37,24 +26,25 @@ content: settings: { } third_party_settings: { } field_campaign_image: + type: image_image weight: 7 + region: content settings: progress_indicator: throbber preview_image_style: thumbnail third_party_settings: { } - type: image_image - region: content field_campaign_link: + type: link_default weight: 5 + region: content settings: placeholder_url: '' placeholder_title: '' third_party_settings: { } - type: link_default - region: content field_campaign_rules: type: paragraphs weight: 9 + region: content settings: title: Paragraph title_plural: Paragraphs @@ -69,13 +59,20 @@ content: collapse_edit_all: collapse_edit_all duplicate: duplicate third_party_settings: { } - region: content field_campaign_rules_logic: + type: options_select weight: 8 + region: content settings: { } third_party_settings: { } - type: options_select + field_campaign_text: + type: string_textarea + weight: 6 region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: { } langcode: type: language_select weight: 1 @@ -85,10 +82,10 @@ content: third_party_settings: { } status: type: boolean_checkbox - settings: - display_label: true weight: 4 region: content + settings: + display_label: true third_party_settings: { } title: type: string_textfield @@ -101,12 +98,12 @@ content: uid: type: entity_reference_autocomplete weight: 2 + region: content settings: match_operator: CONTAINS + match_limit: 10 size: 60 placeholder: '' - match_limit: 10 - region: content third_party_settings: { } hidden: promote: true diff --git a/config/sync/core.entity_form_display.node.event.default.yml b/config/sync/core.entity_form_display.node.event.default.yml new file mode 100644 index 000000000..3110744f1 --- /dev/null +++ b/config/sync/core.entity_form_display.node.event.default.yml @@ -0,0 +1,48 @@ +uuid: 3529ca93-bd2b-4fa1-a4be-693913a2fb26 +langcode: en +status: true +dependencies: + config: + - field.field.node.event.field_event_date + - field.field.node.event.field_event_state + - node.type.event + module: + - datetime_range +id: node.event.default +targetEntityType: node +bundle: event +mode: default +content: + field_event_date: + type: daterange_default + weight: 27 + region: content + settings: { } + third_party_settings: { } + field_event_state: + type: options_select + weight: 26 + region: content + settings: { } + third_party_settings: { } + status: + type: boolean_checkbox + weight: 1 + region: content + settings: + display_label: true + third_party_settings: { } + title: + type: string_textfield + weight: 0 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } +hidden: + created: true + langcode: true + promote: true + sticky: true + uid: true diff --git a/config/sync/core.entity_form_display.paragraph.campaign_rule.default.yml b/config/sync/core.entity_form_display.paragraph.campaign_rule.default.yml index 6d80dd189..6c08b3223 100644 --- a/config/sync/core.entity_form_display.paragraph.campaign_rule.default.yml +++ b/config/sync/core.entity_form_display.paragraph.campaign_rule.default.yml @@ -13,26 +13,26 @@ bundle: campaign_rule mode: default content: field_campaign_rule_facet: + type: options_select weight: 3 + region: content settings: { } third_party_settings: { } - type: options_select - region: content field_campaign_rule_ranking_max: + type: number weight: 6 + region: content settings: placeholder: '' third_party_settings: { } - type: number - region: content field_campaign_rule_term: + type: string_textfield weight: 5 + region: content settings: size: 60 placeholder: '' third_party_settings: { } - type: string_textfield - region: content hidden: created: true status: true diff --git a/config/sync/core.entity_form_display.paragraph.text_body.default.yml b/config/sync/core.entity_form_display.paragraph.text_body.default.yml new file mode 100644 index 000000000..1d7cc01ce --- /dev/null +++ b/config/sync/core.entity_form_display.paragraph.text_body.default.yml @@ -0,0 +1,25 @@ +uuid: 1f737997-0952-4a61-b880-e2050f2d1319 +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.text_body.field_body + - paragraphs.paragraphs_type.text_body + module: + - text +id: paragraph.text_body.default +targetEntityType: paragraph +bundle: text_body +mode: default +content: + field_body: + type: text_textarea + weight: 0 + region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: { } +hidden: + created: true + status: true diff --git a/config/sync/core.entity_view_display.node.article.default.yml b/config/sync/core.entity_view_display.node.article.default.yml index 7b2a5ff49..b32d1250b 100644 --- a/config/sync/core.entity_view_display.node.article.default.yml +++ b/config/sync/core.entity_view_display.node.article.default.yml @@ -3,6 +3,9 @@ langcode: en status: true dependencies: config: + - field.field.node.article.field_override_author + - field.field.node.article.field_show_override_author + - field.field.node.article.field_subtitle - node.type.article module: - user @@ -11,10 +14,37 @@ targetEntityType: node bundle: article mode: default content: - links: - weight: 100 + field_override_author: + type: string + label: above + settings: + link_to_entity: false + third_party_settings: { } + weight: 106 region: content + field_show_override_author: + type: boolean + label: above + settings: + format: default + format_custom_false: '' + format_custom_true: '' + third_party_settings: { } + weight: 107 + region: content + field_subtitle: + type: basic_string + label: above settings: { } third_party_settings: { } + weight: 101 + region: content + links: + settings: { } + third_party_settings: { } + weight: 100 + region: content hidden: + field_canonical_url: true + field_paragraphs: true langcode: true diff --git a/config/sync/core.entity_view_display.node.article.full.yml b/config/sync/core.entity_view_display.node.article.full.yml index 2d3e6a98a..53345933b 100644 --- a/config/sync/core.entity_view_display.node.article.full.yml +++ b/config/sync/core.entity_view_display.node.article.full.yml @@ -4,18 +4,43 @@ status: true dependencies: config: - core.entity_view_mode.node.full + - field.field.node.article.field_override_author + - field.field.node.article.field_show_override_author + - field.field.node.article.field_subtitle + - field.field.node.article.field_paragraphs - node.type.article module: + - entity_reference_revisions - user id: node.article.full targetEntityType: node bundle: article mode: full content: + field_paragraphs: + type: entity_reference_revisions_entity_view + label: hidden + settings: + view_mode: default + link: '' + third_party_settings: { } + weight: 0 + region: content + field_subtitle: + type: basic_string + label: hidden + settings: { } + third_party_settings: { } + weight: 0 + region: content links: - weight: 100 settings: { } third_party_settings: { } + weight: 1 region: content hidden: + field_canonical_url: true + field_override_author: true + field_show_override_author: true langcode: true + links: true diff --git a/config/sync/core.entity_view_display.node.article.teaser.yml b/config/sync/core.entity_view_display.node.article.teaser.yml index a3346b6fd..3b4dd6f93 100644 --- a/config/sync/core.entity_view_display.node.article.teaser.yml +++ b/config/sync/core.entity_view_display.node.article.teaser.yml @@ -4,6 +4,9 @@ status: false dependencies: config: - core.entity_view_mode.node.teaser + - field.field.node.article.field_override_author + - field.field.node.article.field_show_override_author + - field.field.node.article.field_subtitle - node.type.article module: - user @@ -13,9 +16,14 @@ bundle: article mode: teaser content: links: - weight: 100 settings: { } third_party_settings: { } + weight: 100 region: content hidden: + field_canonical_url: true + field_override_author: true + field_paragraphs: true + field_show_override_author: true + field_subtitle: true langcode: true diff --git a/config/sync/core.entity_view_display.node.campaign.default.yml b/config/sync/core.entity_view_display.node.campaign.default.yml index 8daa6398a..a6ea65130 100644 --- a/config/sync/core.entity_view_display.node.campaign.default.yml +++ b/config/sync/core.entity_view_display.node.campaign.default.yml @@ -3,42 +3,36 @@ langcode: en status: true dependencies: config: - - field.field.node.campaign.body - field.field.node.campaign.field_campaign_image - field.field.node.campaign.field_campaign_link - field.field.node.campaign.field_campaign_rules - field.field.node.campaign.field_campaign_rules_logic + - field.field.node.campaign.field_campaign_text - node.type.campaign module: - entity_reference_revisions - image - link - options - - text - user id: node.campaign.default targetEntityType: node bundle: campaign mode: default content: - body: - label: hidden - type: text_default - weight: 2 - settings: { } - third_party_settings: { } - region: content field_campaign_image: - weight: 3 + type: image label: above settings: - image_style: '' image_link: '' + image_style: '' + image_loading: + attribute: lazy third_party_settings: { } - type: image + weight: 3 region: content field_campaign_link: - weight: 1 + type: link label: above settings: trim_length: 80 @@ -47,28 +41,35 @@ content: rel: '' target: '' third_party_settings: { } - type: link + weight: 1 region: content field_campaign_rules: type: entity_reference_revisions_entity_view - weight: 4 label: above settings: view_mode: default link: '' third_party_settings: { } + weight: 4 region: content field_campaign_rules_logic: + type: list_default + label: above + settings: { } + third_party_settings: { } weight: 5 + region: content + field_campaign_text: + type: basic_string label: above settings: { } third_party_settings: { } - type: list_default + weight: 2 region: content links: - weight: 0 - region: content settings: { } third_party_settings: { } + weight: 0 + region: content hidden: langcode: true diff --git a/config/sync/core.entity_view_display.node.campaign.teaser.yml b/config/sync/core.entity_view_display.node.campaign.teaser.yml index d682ee115..5d5078922 100644 --- a/config/sync/core.entity_view_display.node.campaign.teaser.yml +++ b/config/sync/core.entity_view_display.node.campaign.teaser.yml @@ -4,36 +4,28 @@ status: true dependencies: config: - core.entity_view_mode.node.teaser - - field.field.node.campaign.body - field.field.node.campaign.field_campaign_image - field.field.node.campaign.field_campaign_link - field.field.node.campaign.field_campaign_rules - field.field.node.campaign.field_campaign_rules_logic + - field.field.node.campaign.field_campaign_text - node.type.campaign module: - - text - user id: node.campaign.teaser targetEntityType: node bundle: campaign mode: teaser content: - body: - label: hidden - type: text_summary_or_trimmed - weight: 101 - settings: - trim_length: 600 - third_party_settings: { } - region: content links: - weight: 100 settings: { } third_party_settings: { } + weight: 100 region: content hidden: field_campaign_image: true field_campaign_link: true field_campaign_rules: true field_campaign_rules_logic: true + field_campaign_text: true langcode: true diff --git a/config/sync/core.entity_view_display.node.event.default.yml b/config/sync/core.entity_view_display.node.event.default.yml new file mode 100644 index 000000000..824092af4 --- /dev/null +++ b/config/sync/core.entity_view_display.node.event.default.yml @@ -0,0 +1,24 @@ +uuid: a119ff04-62db-4617-8e54-253b48f7a61b +langcode: en +status: true +dependencies: + config: + - field.field.node.event.field_event_date + - field.field.node.event.field_event_state + - node.type.event + module: + - user +id: node.event.default +targetEntityType: node +bundle: event +mode: default +content: + links: + settings: { } + third_party_settings: { } + weight: 0 + region: content +hidden: + field_event_date: true + field_event_state: true + langcode: true diff --git a/config/sync/core.entity_view_display.node.event.teaser.yml b/config/sync/core.entity_view_display.node.event.teaser.yml new file mode 100644 index 000000000..74e23965d --- /dev/null +++ b/config/sync/core.entity_view_display.node.event.teaser.yml @@ -0,0 +1,25 @@ +uuid: 1b2c8b81-7895-43bd-a832-0d2b613aa541 +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.teaser + - field.field.node.event.field_event_date + - field.field.node.event.field_event_state + - node.type.event + module: + - user +id: node.event.teaser +targetEntityType: node +bundle: event +mode: teaser +content: + links: + settings: { } + third_party_settings: { } + weight: 100 + region: content +hidden: + field_event_date: true + field_event_state: true + langcode: true diff --git a/config/sync/core.entity_view_display.paragraph.campaign_rule.default.yml b/config/sync/core.entity_view_display.paragraph.campaign_rule.default.yml index 0288ee52a..32ed5285f 100644 --- a/config/sync/core.entity_view_display.paragraph.campaign_rule.default.yml +++ b/config/sync/core.entity_view_display.paragraph.campaign_rule.default.yml @@ -15,27 +15,27 @@ bundle: campaign_rule mode: default content: field_campaign_rule_facet: - weight: 3 + type: list_default label: above settings: { } third_party_settings: { } - type: list_default + weight: 3 region: content field_campaign_rule_ranking_max: - weight: 6 + type: number_integer label: above settings: thousand_separator: '' prefix_suffix: true third_party_settings: { } - type: number_integer + weight: 6 region: content field_campaign_rule_term: - weight: 5 + type: string label: above settings: link_to_entity: false third_party_settings: { } - type: string + weight: 5 region: content hidden: { } diff --git a/config/sync/core.entity_view_display.paragraph.text_body.default.yml b/config/sync/core.entity_view_display.paragraph.text_body.default.yml new file mode 100644 index 000000000..147c7318e --- /dev/null +++ b/config/sync/core.entity_view_display.paragraph.text_body.default.yml @@ -0,0 +1,22 @@ +uuid: 6a3366da-a29e-4098-b9b5-1400705ec860 +langcode: en +status: true +dependencies: + config: + - field.field.paragraph.text_body.field_body + - paragraphs.paragraphs_type.text_body + module: + - text +id: paragraph.text_body.default +targetEntityType: paragraph +bundle: text_body +mode: default +content: + field_body: + type: text_default + label: hidden + settings: { } + third_party_settings: { } + weight: 0 + region: content +hidden: { } diff --git a/config/sync/core.entity_view_display.paragraph.text_body.preview.yml b/config/sync/core.entity_view_display.paragraph.text_body.preview.yml new file mode 100644 index 000000000..cf9ffa57e --- /dev/null +++ b/config/sync/core.entity_view_display.paragraph.text_body.preview.yml @@ -0,0 +1,24 @@ +uuid: 270fb482-a8ca-4a3b-b3fe-3fb47c45e3c7 +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.paragraph.preview + - field.field.paragraph.text_body.field_body + - paragraphs.paragraphs_type.text_body + module: + - text +id: paragraph.text_body.preview +targetEntityType: paragraph +bundle: text_body +mode: preview +content: + field_body: + type: text_trimmed + label: above + settings: + trim_length: 600 + third_party_settings: { } + weight: 0 + region: content +hidden: { } diff --git a/config/sync/core.entity_view_mode.block.token.yml b/config/sync/core.entity_view_mode.block.token.yml new file mode 100644 index 000000000..4fda31355 --- /dev/null +++ b/config/sync/core.entity_view_mode.block.token.yml @@ -0,0 +1,10 @@ +uuid: de5d9c01-e7eb-40c7-9865-60d6735d2953 +langcode: en +status: true +dependencies: + module: + - block +id: block.token +label: Token +targetEntityType: block +cache: true diff --git a/config/sync/core.entity_view_mode.file.token.yml b/config/sync/core.entity_view_mode.file.token.yml new file mode 100644 index 000000000..41ac38acd --- /dev/null +++ b/config/sync/core.entity_view_mode.file.token.yml @@ -0,0 +1,10 @@ +uuid: 2bceed1c-7923-402e-8148-5af808b2184d +langcode: en +status: true +dependencies: + module: + - file +id: file.token +label: Token +targetEntityType: file +cache: true diff --git a/config/sync/core.entity_view_mode.node.token.yml b/config/sync/core.entity_view_mode.node.token.yml new file mode 100644 index 000000000..1a8eb37ed --- /dev/null +++ b/config/sync/core.entity_view_mode.node.token.yml @@ -0,0 +1,10 @@ +uuid: 057a2691-b2d3-4b86-ab7e-7e40c7d52804 +langcode: en +status: true +dependencies: + module: + - node +id: node.token +label: Token +targetEntityType: node +cache: true diff --git a/config/sync/core.entity_view_mode.paragraph.token.yml b/config/sync/core.entity_view_mode.paragraph.token.yml new file mode 100644 index 000000000..908b77392 --- /dev/null +++ b/config/sync/core.entity_view_mode.paragraph.token.yml @@ -0,0 +1,10 @@ +uuid: 57e6c650-f516-4607-9372-93df112f3f04 +langcode: en +status: true +dependencies: + module: + - paragraphs +id: paragraph.token +label: Token +targetEntityType: paragraph +cache: true diff --git a/config/sync/core.entity_view_mode.path_alias.token.yml b/config/sync/core.entity_view_mode.path_alias.token.yml new file mode 100644 index 000000000..a41835818 --- /dev/null +++ b/config/sync/core.entity_view_mode.path_alias.token.yml @@ -0,0 +1,10 @@ +uuid: 4b6af08f-f060-487b-9e45-3380ea2da032 +langcode: en +status: true +dependencies: + module: + - path_alias +id: path_alias.token +label: Token +targetEntityType: path_alias +cache: true diff --git a/config/sync/core.entity_view_mode.user.token.yml b/config/sync/core.entity_view_mode.user.token.yml new file mode 100644 index 000000000..2dd1f7b3c --- /dev/null +++ b/config/sync/core.entity_view_mode.user.token.yml @@ -0,0 +1,10 @@ +uuid: e79f737a-8035-43ee-bd26-01ac9d2891d1 +langcode: en +status: true +dependencies: + module: + - user +id: user.token +label: Token +targetEntityType: user +cache: true diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index d44a0f92a..5cfa38470 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -1,11 +1,19 @@ +_core: + default_config_hash: R4IF-ClDHXxblLcG0L7MgsLvfBIMAvi_skumNFQwkDc module: + admin_toolbar: 0 block: 0 breakpoint: 0 + ckeditor5: 0 config_filter: 0 config_ignore: 0 customerror: 0 + datetime: 0 + datetime_range: 0 + dpl_article: 0 dpl_campaign: 0 dpl_dashboard: 0 + dpl_event: 0 dpl_favorites_list: 0 dpl_favorites_list_material_component: 0 dpl_fbs: 0 @@ -28,22 +36,30 @@ module: dpl_something_similar: 0 dpl_url_proxy: 0 dynamic_page_cache: 0 + editor: 0 entity_reference_revisions: 0 + enum_field: 0 field: 0 + field_group: 0 file: 0 filter: 0 + gin_toolbar: 0 handy_cache_tags: 0 image: 0 - inline_all_css: 0 + job_scheduler: 0 jsonlog: 0 language: 0 link: 0 + linkit: 0 locale: 0 + metatag: 0 + mysql: 0 node: 0 openapi: 0 openapi_rest: 0 openid_connect: 0 options: 0 + paragraphs_features: 0 path_alias: 0 purge: 0 purge_drush: 0 @@ -58,6 +74,7 @@ module: serialization: 0 system: 0 text: 0 + token: 0 toolbar: 0 twig_tweak: 0 update: 0 @@ -66,11 +83,11 @@ module: varnish_purger: 0 views: 10 paragraphs: 11 + paragraphs_ee: 15 dpl_cms: 1000 theme: claro: 0 stable9: 0 novel: 0 + gin: 0 profile: dpl_cms -_core: - default_config_hash: R4IF-ClDHXxblLcG0L7MgsLvfBIMAvi_skumNFQwkDc diff --git a/config/sync/core.menu.static_menu_link_overrides.yml b/config/sync/core.menu.static_menu_link_overrides.yml index df14c4607..2261a221b 100644 --- a/config/sync/core.menu.static_menu_link_overrides.yml +++ b/config/sync/core.menu.static_menu_link_overrides.yml @@ -1,3 +1,3 @@ -definitions: { } _core: default_config_hash: jdY7AU0tU-QsjmiOw3W8vwpYMb-By--_MSFgbqKUTYM +definitions: { } diff --git a/config/sync/editor.editor.basic.yml b/config/sync/editor.editor.basic.yml new file mode 100644 index 000000000..95008b1b6 --- /dev/null +++ b/config/sync/editor.editor.basic.yml @@ -0,0 +1,37 @@ +uuid: 237e47ad-2012-49f9-927d-e1985e718402 +langcode: en +status: true +dependencies: + config: + - filter.format.basic + module: + - ckeditor5 +format: basic +editor: ckeditor5 +settings: + toolbar: + items: + - heading + - bold + - italic + - specialCharacters + - bulletedList + - numberedList + - insertTable + - link + - '|' + - undo + - redo + - removeFormat + plugins: + ckeditor5_heading: + enabled_headings: + - heading2 + - heading3 + ckeditor5_list: + reversed: true + startIndex: true + linkit_extension: + linkit_enabled: true + linkit_profile: default +image_upload: { } diff --git a/config/sync/field.field.node.article.field_canonical_url.yml b/config/sync/field.field.node.article.field_canonical_url.yml new file mode 100644 index 000000000..c42c958b7 --- /dev/null +++ b/config/sync/field.field.node.article.field_canonical_url.yml @@ -0,0 +1,23 @@ +uuid: 1fc91541-e90f-40ae-b7c3-826de8bdd1f2 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_canonical_url + - node.type.article + module: + - link +id: node.article.field_canonical_url +field_name: field_canonical_url +entity_type: node +bundle: article +label: 'Canonical url' +description: 'Please provide a canonical URL if this content has been duplicated from other websites. This helps signal to search engines that the preferred source of this content is the specified canonical URL, preventing potential duplicate content issues and ensuring proper attribution to the original source.' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + title: 0 + link_type: 16 +field_type: link diff --git a/config/sync/field.field.node.article.field_override_author.yml b/config/sync/field.field.node.article.field_override_author.yml new file mode 100644 index 000000000..27d43a56b --- /dev/null +++ b/config/sync/field.field.node.article.field_override_author.yml @@ -0,0 +1,19 @@ +uuid: db8e3dcc-93d1-4c4e-af0c-24dd345b1b1a +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_override_author + - node.type.article +id: node.article.field_override_author +field_name: field_override_author +entity_type: node +bundle: article +label: 'Override author' +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/config/sync/field.field.node.article.field_paragraphs.yml b/config/sync/field.field.node.article.field_paragraphs.yml new file mode 100644 index 000000000..8c34ad8ca --- /dev/null +++ b/config/sync/field.field.node.article.field_paragraphs.yml @@ -0,0 +1,34 @@ +uuid: 0d82ea7f-016f-438d-84e6-82c428916ef3 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_paragraphs + - node.type.article + - paragraphs.paragraphs_type.campaign_rule + module: + - entity_reference_revisions +id: node.article.field_paragraphs +field_name: field_paragraphs +entity_type: node +bundle: article +label: Paragraphs +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + handler: 'default:paragraph' + handler_settings: + target_bundles: + campaign_rule: campaign_rule + negate: 1 + target_bundles_drag_drop: + campaign_rule: + weight: 2 + enabled: true + text_body: + weight: 4 + enabled: false +field_type: entity_reference_revisions diff --git a/config/sync/field.field.node.article.field_show_override_author.yml b/config/sync/field.field.node.article.field_show_override_author.yml new file mode 100644 index 000000000..a20de6247 --- /dev/null +++ b/config/sync/field.field.node.article.field_show_override_author.yml @@ -0,0 +1,23 @@ +uuid: 273db154-2b0c-487a-b584-4cc51603c63c +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_show_override_author + - node.type.article +id: node.article.field_show_override_author +field_name: field_show_override_author +entity_type: node +bundle: article +label: "Override the author\t" +description: "By default, the author is set to the Drupal user that owns the content.
\r\nIf you want to override this, with a manual text, you can check this." +required: false +translatable: false +default_value: + - + value: 0 +default_value_callback: '' +settings: + on_label: 'On' + off_label: 'Off' +field_type: boolean diff --git a/config/sync/field.field.node.article.field_subtitle.yml b/config/sync/field.field.node.article.field_subtitle.yml new file mode 100644 index 000000000..8bc51fab5 --- /dev/null +++ b/config/sync/field.field.node.article.field_subtitle.yml @@ -0,0 +1,19 @@ +uuid: d6438c40-a743-4e6e-ad85-2afc0893be75 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_subtitle + - node.type.article +id: node.article.field_subtitle +field_name: field_subtitle +entity_type: node +bundle: article +label: Subtitle +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: string_long diff --git a/config/sync/field.field.node.campaign.body.yml b/config/sync/field.field.node.campaign.body.yml deleted file mode 100644 index 396e44356..000000000 --- a/config/sync/field.field.node.campaign.body.yml +++ /dev/null @@ -1,23 +0,0 @@ -uuid: 44e6838e-0633-4708-99c9-9574634ef9f8 -langcode: en -status: true -dependencies: - config: - - field.storage.node.body - - node.type.campaign - module: - - text -id: node.campaign.body -field_name: body -entity_type: node -bundle: campaign -label: Body -description: '' -required: false -translatable: true -default_value: { } -default_value_callback: '' -settings: - display_summary: true - required_summary: false -field_type: text_with_summary diff --git a/config/sync/field.field.node.campaign.field_campaign_image.yml b/config/sync/field.field.node.campaign.field_campaign_image.yml index 8ff9b7d18..d04eb6349 100644 --- a/config/sync/field.field.node.campaign.field_campaign_image.yml +++ b/config/sync/field.field.node.campaign.field_campaign_image.yml @@ -18,6 +18,8 @@ translatable: false default_value: { } default_value_callback: '' settings: + handler: 'default:file' + handler_settings: { } file_directory: '[date:custom:Y]-[date:custom:m]' file_extensions: 'png gif jpg jpeg' max_filesize: '' @@ -33,6 +35,4 @@ settings: title: '' width: null height: null - handler: 'default:file' - handler_settings: { } field_type: image diff --git a/config/sync/field.field.node.campaign.field_campaign_link.yml b/config/sync/field.field.node.campaign.field_campaign_link.yml index 5cd0c5b76..ca24ad880 100644 --- a/config/sync/field.field.node.campaign.field_campaign_link.yml +++ b/config/sync/field.field.node.campaign.field_campaign_link.yml @@ -18,6 +18,6 @@ translatable: false default_value: { } default_value_callback: '' settings: - link_type: 17 title: 0 + link_type: 17 field_type: link diff --git a/config/sync/field.field.node.campaign.field_campaign_rules.yml b/config/sync/field.field.node.campaign.field_campaign_rules.yml index f7728d435..38ceaef9a 100644 --- a/config/sync/field.field.node.campaign.field_campaign_rules.yml +++ b/config/sync/field.field.node.campaign.field_campaign_rules.yml @@ -21,11 +21,11 @@ default_value_callback: '' settings: handler: 'default:paragraph' handler_settings: - negate: 0 target_bundles: campaign_rule: campaign_rule + negate: 0 target_bundles_drag_drop: campaign_rule: - enabled: true weight: 2 + enabled: true field_type: entity_reference_revisions diff --git a/config/sync/field.field.node.campaign.field_campaign_text.yml b/config/sync/field.field.node.campaign.field_campaign_text.yml new file mode 100644 index 000000000..48db2e983 --- /dev/null +++ b/config/sync/field.field.node.campaign.field_campaign_text.yml @@ -0,0 +1,19 @@ +uuid: fb3b3ff5-0592-4de6-b5ce-48ab332f220d +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_campaign_text + - node.type.campaign +id: node.campaign.field_campaign_text +field_name: field_campaign_text +entity_type: node +bundle: campaign +label: Text +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: string_long diff --git a/config/sync/field.field.node.event.field_event_date.yml b/config/sync/field.field.node.event.field_event_date.yml new file mode 100644 index 000000000..b4d5140f4 --- /dev/null +++ b/config/sync/field.field.node.event.field_event_date.yml @@ -0,0 +1,21 @@ +uuid: 7daffd81-d3da-43b3-861c-f69b841aae6a +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_event_date + - node.type.event + module: + - datetime_range +id: node.event.field_event_date +field_name: field_event_date +entity_type: node +bundle: event +label: Date +description: '' +required: true +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: daterange diff --git a/config/sync/field.field.node.event.field_event_state.yml b/config/sync/field.field.node.event.field_event_state.yml new file mode 100644 index 000000000..82d9f2b16 --- /dev/null +++ b/config/sync/field.field.node.event.field_event_state.yml @@ -0,0 +1,23 @@ +uuid: fcba6bd5-ac95-4529-b9bc-c47811eb45c4 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_event_state + - node.type.event + module: + - enum_field +id: node.event.field_event_state +field_name: field_event_state +entity_type: node +bundle: event +label: State +description: '' +required: true +translatable: false +default_value: + - + value: Active +default_value_callback: '' +settings: { } +field_type: enum_string diff --git a/config/sync/field.field.paragraph.text_body.field_body.yml b/config/sync/field.field.paragraph.text_body.field_body.yml new file mode 100644 index 000000000..229afa09c --- /dev/null +++ b/config/sync/field.field.paragraph.text_body.field_body.yml @@ -0,0 +1,21 @@ +uuid: 7c34d14c-db16-44f7-8a2b-670b82a0bb61 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_body + - paragraphs.paragraphs_type.text_body + module: + - text +id: paragraph.text_body.field_body +field_name: field_body +entity_type: paragraph +bundle: text_body +label: Body +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: { } +field_type: text_long diff --git a/config/sync/field.settings.yml b/config/sync/field.settings.yml index 95c042d77..2225b8ffd 100644 --- a/config/sync/field.settings.yml +++ b/config/sync/field.settings.yml @@ -1,3 +1,3 @@ -purge_batch_size: 50 _core: default_config_hash: nJk0TAQBzlNo52ehiHI7bIEPLGi0BYqZvPdEn7Chfu0 +purge_batch_size: 50 diff --git a/config/sync/field.storage.node.field_campaign_image.yml b/config/sync/field.storage.node.field_campaign_image.yml index dc0303417..e440b83d9 100644 --- a/config/sync/field.storage.node.field_campaign_image.yml +++ b/config/sync/field.storage.node.field_campaign_image.yml @@ -11,6 +11,9 @@ field_name: field_campaign_image entity_type: node type: image settings: + target_type: file + display_field: false + display_default: false uri_scheme: public default_image: uuid: '' @@ -18,9 +21,6 @@ settings: title: '' width: null height: null - target_type: file - display_field: false - display_default: false module: image locked: false cardinality: 1 diff --git a/config/sync/field.storage.node.field_campaign_text.yml b/config/sync/field.storage.node.field_campaign_text.yml new file mode 100644 index 000000000..6a46caee6 --- /dev/null +++ b/config/sync/field.storage.node.field_campaign_text.yml @@ -0,0 +1,19 @@ +uuid: c6598ef2-0107-4f0a-a198-afd3d9ece14d +langcode: en +status: true +dependencies: + module: + - node +id: node.field_campaign_text +field_name: field_campaign_text +entity_type: node +type: string_long +settings: + case_sensitive: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.node.field_canonical_url.yml b/config/sync/field.storage.node.field_canonical_url.yml new file mode 100644 index 000000000..c777d41dd --- /dev/null +++ b/config/sync/field.storage.node.field_canonical_url.yml @@ -0,0 +1,19 @@ +uuid: 814bd3f2-e513-4080-9c0b-23a52e2ce6c6 +langcode: en +status: true +dependencies: + module: + - link + - node +id: node.field_canonical_url +field_name: field_canonical_url +entity_type: node +type: link +settings: { } +module: link +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.node.field_event_date.yml b/config/sync/field.storage.node.field_event_date.yml new file mode 100644 index 000000000..02414ac0e --- /dev/null +++ b/config/sync/field.storage.node.field_event_date.yml @@ -0,0 +1,20 @@ +uuid: fd9331a9-856f-47ee-a93c-65d6bca9308c +langcode: en +status: true +dependencies: + module: + - datetime_range + - node +id: node.field_event_date +field_name: field_event_date +entity_type: node +type: daterange +settings: + datetime_type: datetime +module: datetime_range +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.node.field_event_state.yml b/config/sync/field.storage.node.field_event_state.yml new file mode 100644 index 000000000..e37ccdd67 --- /dev/null +++ b/config/sync/field.storage.node.field_event_state.yml @@ -0,0 +1,20 @@ +uuid: 8b556ba8-e9cc-403c-9590-94b810a96428 +langcode: en +status: true +dependencies: + module: + - enum_field + - node +id: node.field_event_state +field_name: field_event_state +entity_type: node +type: enum_string +settings: + enum_class: \Drupal\dpl_event\EventState +module: enum_field +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.node.field_override_author.yml b/config/sync/field.storage.node.field_override_author.yml new file mode 100644 index 000000000..eaa96e419 --- /dev/null +++ b/config/sync/field.storage.node.field_override_author.yml @@ -0,0 +1,21 @@ +uuid: 23fe8692-79ae-43af-913b-60c720cf0914 +langcode: en +status: true +dependencies: + module: + - node +id: node.field_override_author +field_name: field_override_author +entity_type: node +type: string +settings: + max_length: 255 + case_sensitive: false + is_ascii: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.node.field_paragraphs.yml b/config/sync/field.storage.node.field_paragraphs.yml new file mode 100644 index 000000000..8357baa70 --- /dev/null +++ b/config/sync/field.storage.node.field_paragraphs.yml @@ -0,0 +1,21 @@ +uuid: 2bc4902a-1c48-4888-a724-3be71f1d3c10 +langcode: en +status: true +dependencies: + module: + - entity_reference_revisions + - node + - paragraphs +id: node.field_paragraphs +field_name: field_paragraphs +entity_type: node +type: entity_reference_revisions +settings: + target_type: paragraph +module: entity_reference_revisions +locked: false +cardinality: -1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.node.field_show_override_author.yml b/config/sync/field.storage.node.field_show_override_author.yml new file mode 100644 index 000000000..c914d4297 --- /dev/null +++ b/config/sync/field.storage.node.field_show_override_author.yml @@ -0,0 +1,18 @@ +uuid: 65f21349-be77-45a4-ae4a-a69f9e29ce69 +langcode: en +status: true +dependencies: + module: + - node +id: node.field_show_override_author +field_name: field_show_override_author +entity_type: node +type: boolean +settings: { } +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.node.field_subtitle.yml b/config/sync/field.storage.node.field_subtitle.yml new file mode 100644 index 000000000..99388b683 --- /dev/null +++ b/config/sync/field.storage.node.field_subtitle.yml @@ -0,0 +1,19 @@ +uuid: c5e19f00-ad81-41a6-87a8-50affcf9d8fe +langcode: en +status: true +dependencies: + module: + - node +id: node.field_subtitle +field_name: field_subtitle +entity_type: node +type: string_long +settings: + case_sensitive: false +module: core +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.paragraph.field_body.yml b/config/sync/field.storage.paragraph.field_body.yml new file mode 100644 index 000000000..638ecccc2 --- /dev/null +++ b/config/sync/field.storage.paragraph.field_body.yml @@ -0,0 +1,19 @@ +uuid: 91ea14f9-bcfe-4969-9250-286da4c4b441 +langcode: en +status: true +dependencies: + module: + - paragraphs + - text +id: paragraph.field_body +field_name: field_body +entity_type: paragraph +type: text_long +settings: { } +module: text +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false diff --git a/config/sync/field.storage.paragraph.field_campaign_rule_term.yml b/config/sync/field.storage.paragraph.field_campaign_rule_term.yml index 99cf53ba0..96414efb5 100644 --- a/config/sync/field.storage.paragraph.field_campaign_rule_term.yml +++ b/config/sync/field.storage.paragraph.field_campaign_rule_term.yml @@ -10,8 +10,8 @@ entity_type: paragraph type: string settings: max_length: 255 - is_ascii: false case_sensitive: false + is_ascii: false module: core locked: false cardinality: 1 diff --git a/config/sync/file.settings.yml b/config/sync/file.settings.yml index 33151657d..1ca5bd99c 100644 --- a/config/sync/file.settings.yml +++ b/config/sync/file.settings.yml @@ -1,8 +1,8 @@ +_core: + default_config_hash: 0aMkoXYnax5_tHI9C9zHs-K48KJ6K75PHtD9x-0nbgM description: type: textfield length: 128 icon: directory: core/modules/file/icons make_unused_managed_files_temporary: false -_core: - default_config_hash: 0aMkoXYnax5_tHI9C9zHs-K48KJ6K75PHtD9x-0nbgM diff --git a/config/sync/filter.format.basic.yml b/config/sync/filter.format.basic.yml new file mode 100644 index 000000000..c6d58aecf --- /dev/null +++ b/config/sync/filter.format.basic.yml @@ -0,0 +1,17 @@ +uuid: f3a20524-e4c0-45ec-9407-32b0fcbdd7e5 +langcode: en +status: true +dependencies: { } +name: Basic +format: basic +weight: 0 +filters: + filter_html: + id: filter_html + provider: filter + status: true + weight: -10 + settings: + allowed_html: '

    1. ' + filter_html_help: true + filter_html_nofollow: false diff --git a/config/sync/filter.settings.yml b/config/sync/filter.settings.yml index dfcfed362..9ce293937 100644 --- a/config/sync/filter.settings.yml +++ b/config/sync/filter.settings.yml @@ -1,4 +1,4 @@ -fallback_format: plain_text -always_show_fallback_choice: false _core: default_config_hash: FiPjM3WdB__ruFA7B6TLwni_UcZbmek5G4b2dxQItxA +fallback_format: plain_text +always_show_fallback_choice: false diff --git a/config/sync/gin.settings.yml b/config/sync/gin.settings.yml new file mode 100644 index 000000000..a2e0012f7 --- /dev/null +++ b/config/sync/gin.settings.yml @@ -0,0 +1,25 @@ +_core: + default_config_hash: UvSCt3S_NldJPFzvhSNOy9vWoPPFhmsmTC12vtVss9s +favicon: + use_default: true +features: + comment_user_picture: true + comment_user_verification: true + favicon: true + node_user_picture: false +logo: + use_default: true +third_party_settings: + shortcut: + module_link: true +preset_accent_color: blue +preset_focus_color: gin +enable_darkmode: '0' +classic_toolbar: horizontal +secondary_toolbar_frontend: true +high_contrast_mode: false +accent_color: '' +focus_color: '' +layout_density: default +show_description_toggle: false +show_user_theme_settings: false diff --git a/config/sync/image.settings.yml b/config/sync/image.settings.yml index 52ee4a8f4..b75749097 100644 --- a/config/sync/image.settings.yml +++ b/config/sync/image.settings.yml @@ -1,5 +1,5 @@ +_core: + default_config_hash: k-yDFHbqNfpe-Srg4sdCSqaosCl2D8uwyEY5esF8gEw preview_image: core/modules/image/sample.png allow_insecure_derivatives: false suppress_itok_output: false -_core: - default_config_hash: k-yDFHbqNfpe-Srg4sdCSqaosCl2D8uwyEY5esF8gEw diff --git a/config/sync/image.style.linkit_result_thumbnail.yml b/config/sync/image.style.linkit_result_thumbnail.yml new file mode 100644 index 000000000..7bbd32235 --- /dev/null +++ b/config/sync/image.style.linkit_result_thumbnail.yml @@ -0,0 +1,17 @@ +uuid: d6ecc9b4-7878-49f2-8457-ac59cb788d85 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: PY0kMp7KIxvU4kBi5mcnD_DHTKUc1OkYCfaPliXjpa8 +name: linkit_result_thumbnail +label: 'Linkit result thumbnail' +effects: + 2943df29-38ea-459c-ba1d-290489bb1807: + uuid: 2943df29-38ea-459c-ba1d-290489bb1807 + id: image_scale_and_crop + weight: 1 + data: + width: 50 + height: 50 + anchor: center-center diff --git a/config/sync/inline_all_css.settings.yml b/config/sync/inline_all_css.settings.yml deleted file mode 100644 index 23eecbbe9..000000000 --- a/config/sync/inline_all_css.settings.yml +++ /dev/null @@ -1,6 +0,0 @@ -enabled: true -enabled_themes: - - novel -minify: true -_core: - default_config_hash: I9yTY0I39Ydez8O6Mk7lr0TqDF2mtY5QCoszEOyq8X8 diff --git a/config/sync/job_scheduler.settings.yml b/config/sync/job_scheduler.settings.yml new file mode 100644 index 000000000..308a600fb --- /dev/null +++ b/config/sync/job_scheduler.settings.yml @@ -0,0 +1,5 @@ +_core: + default_config_hash: qxBT-Msn_bASr_36f7kcYEa73b1QKzrMnX-I07TaTlw +logging: true +limit: 200 +time: 30 diff --git a/config/sync/jsonlog.settings.yml b/config/sync/jsonlog.settings.yml index 89d98deba..eb5d3e39c 100644 --- a/config/sync/jsonlog.settings.yml +++ b/config/sync/jsonlog.settings.yml @@ -1,3 +1,5 @@ +_core: + default_config_hash: oZNaD81_Lm69pHa73xOTY2BCRKm1oIIotw0r0lqYBiI jsonlog_severity_threshold: 6 jsonlog_truncate: 0 jsonlog_siteid: c5375a474bad__drupal @@ -7,5 +9,3 @@ jsonlog_dir: '' jsonlog_stderr: true jsonlog_newline_prepend: true jsonlog_tags: '' -_core: - default_config_hash: oZNaD81_Lm69pHa73xOTY2BCRKm1oIIotw0r0lqYBiI diff --git a/config/sync/language.content_settings.node.event.yml b/config/sync/language.content_settings.node.event.yml new file mode 100644 index 000000000..94f2afb94 --- /dev/null +++ b/config/sync/language.content_settings.node.event.yml @@ -0,0 +1,11 @@ +uuid: 13b96c91-5204-414a-8a22-767c287ccc8e +langcode: en +status: true +dependencies: + config: + - node.type.event +id: node.event +target_entity_type_id: node +target_bundle: event +default_langcode: da +language_alterable: false diff --git a/config/sync/language.mappings.yml b/config/sync/language.mappings.yml index 96ee03bd7..bdfaae28d 100644 --- a/config/sync/language.mappings.yml +++ b/config/sync/language.mappings.yml @@ -1,3 +1,5 @@ +_core: + default_config_hash: EMWe7Yu4Q5eD-NUfNuQAWGBvYUNZPIinztEtONSmsDc map: 'no': nb pt: pt-pt @@ -9,5 +11,3 @@ map: zh-cn: zh-hans zh-sg: zh-hans zh-chs: zh-hans -_core: - default_config_hash: EMWe7Yu4Q5eD-NUfNuQAWGBvYUNZPIinztEtONSmsDc diff --git a/config/sync/language.negotiation.yml b/config/sync/language.negotiation.yml index d7902a33e..3f585978a 100644 --- a/config/sync/language.negotiation.yml +++ b/config/sync/language.negotiation.yml @@ -1,3 +1,5 @@ +_core: + default_config_hash: uEePITI9tV6WqzmsTb7MfPCi5yPWXSxAN1xeLcYFQbM session: parameter: language url: @@ -10,5 +12,3 @@ url: en: '' da: '' selected_langcode: da -_core: - default_config_hash: uEePITI9tV6WqzmsTb7MfPCi5yPWXSxAN1xeLcYFQbM diff --git a/config/sync/language.types.yml b/config/sync/language.types.yml index 859746292..d12832e52 100644 --- a/config/sync/language.types.yml +++ b/config/sync/language.types.yml @@ -1,3 +1,5 @@ +_core: + default_config_hash: dqouFqVseNJNvEjsoYKxbinFOITuCxYhi4y2OTNQP_8 all: - language_interface - language_content @@ -23,5 +25,3 @@ negotiation: language-user: -4 language-browser: -2 language-selected: 12 -_core: - default_config_hash: dqouFqVseNJNvEjsoYKxbinFOITuCxYhi4y2OTNQP_8 diff --git a/config/sync/language/da/block.block.gin_breadcrumbs.yml b/config/sync/language/da/block.block.gin_breadcrumbs.yml new file mode 100644 index 000000000..1241b5ee1 --- /dev/null +++ b/config/sync/language/da/block.block.gin_breadcrumbs.yml @@ -0,0 +1,2 @@ +settings: + label: Brødkrummer diff --git a/config/sync/language/da/block.block.gin_content.yml b/config/sync/language/da/block.block.gin_content.yml new file mode 100644 index 000000000..4c5fd576b --- /dev/null +++ b/config/sync/language/da/block.block.gin_content.yml @@ -0,0 +1,2 @@ +settings: + label: 'Primært sideindhold' diff --git a/config/sync/language/da/block.block.gin_local_actions.yml b/config/sync/language/da/block.block.gin_local_actions.yml new file mode 100644 index 000000000..66ecdb15c --- /dev/null +++ b/config/sync/language/da/block.block.gin_local_actions.yml @@ -0,0 +1,2 @@ +settings: + label: 'Primære administratorhandlinger' diff --git a/config/sync/language/da/block.block.gin_messages.yml b/config/sync/language/da/block.block.gin_messages.yml new file mode 100644 index 000000000..58aedfc7b --- /dev/null +++ b/config/sync/language/da/block.block.gin_messages.yml @@ -0,0 +1,2 @@ +settings: + label: Statusmeddelelser diff --git a/config/sync/language/da/block.block.gin_page_title.yml b/config/sync/language/da/block.block.gin_page_title.yml new file mode 100644 index 000000000..3dc208e62 --- /dev/null +++ b/config/sync/language/da/block.block.gin_page_title.yml @@ -0,0 +1,2 @@ +settings: + label: Sidetitel diff --git a/config/sync/language/da/block.block.gin_primary_local_tasks.yml b/config/sync/language/da/block.block.gin_primary_local_tasks.yml new file mode 100644 index 000000000..099c0d847 --- /dev/null +++ b/config/sync/language/da/block.block.gin_primary_local_tasks.yml @@ -0,0 +1,2 @@ +settings: + label: 'Primære faneblade' diff --git a/config/sync/language/da/block.block.gin_secondary_local_tasks.yml b/config/sync/language/da/block.block.gin_secondary_local_tasks.yml new file mode 100644 index 000000000..78b783120 --- /dev/null +++ b/config/sync/language/da/block.block.gin_secondary_local_tasks.yml @@ -0,0 +1,2 @@ +settings: + label: 'Sekundære faneblade' diff --git a/config/sync/language/da/linkit.linkit_profile.default.yml b/config/sync/language/da/linkit.linkit_profile.default.yml new file mode 100644 index 000000000..0cc498f9e --- /dev/null +++ b/config/sync/language/da/linkit.linkit_profile.default.yml @@ -0,0 +1 @@ +label: Standard diff --git a/config/sync/language/da/metatag.metatag_defaults.front.yml b/config/sync/language/da/metatag.metatag_defaults.front.yml new file mode 100644 index 000000000..1cdd7d533 --- /dev/null +++ b/config/sync/language/da/metatag.metatag_defaults.front.yml @@ -0,0 +1 @@ +label: Forside diff --git a/config/sync/language/da/metatag.metatag_defaults.global.yml b/config/sync/language/da/metatag.metatag_defaults.global.yml new file mode 100644 index 000000000..85a1911f0 --- /dev/null +++ b/config/sync/language/da/metatag.metatag_defaults.global.yml @@ -0,0 +1 @@ +label: Global diff --git a/config/sync/language/da/metatag.metatag_defaults.node.yml b/config/sync/language/da/metatag.metatag_defaults.node.yml new file mode 100644 index 000000000..e5d812592 --- /dev/null +++ b/config/sync/language/da/metatag.metatag_defaults.node.yml @@ -0,0 +1 @@ +label: Indhold diff --git a/config/sync/language/da/metatag.metatag_defaults.taxonomy_term.yml b/config/sync/language/da/metatag.metatag_defaults.taxonomy_term.yml new file mode 100644 index 000000000..f95361871 --- /dev/null +++ b/config/sync/language/da/metatag.metatag_defaults.taxonomy_term.yml @@ -0,0 +1 @@ +label: 'Ord i ordforråd' diff --git a/config/sync/language/da/metatag.metatag_defaults.user.yml b/config/sync/language/da/metatag.metatag_defaults.user.yml new file mode 100644 index 000000000..3f3837195 --- /dev/null +++ b/config/sync/language/da/metatag.metatag_defaults.user.yml @@ -0,0 +1 @@ +label: Bruger diff --git a/config/sync/language/da/user.mail.yml b/config/sync/language/da/user.mail.yml index ab291db1a..f84fc0a23 100644 --- a/config/sync/language/da/user.mail.yml +++ b/config/sync/language/da/user.mail.yml @@ -1,6 +1,7 @@ cancel_confirm: subject: 'Anmodning om opsigelse af konto for [user:display-name] på [site:name]' password_reset: + subject: 'Ny login-information for [user:display-name] på [site:name]' body: |- [user:display-name], @@ -13,8 +14,8 @@ password_reset: Dette link kan kun bruges til at logge ind én gang, og det sender dig til en side hvor du kan vælge en adgangskode. Linket udløber efter én dag og der sker ikke noget hvis det ikke bruges. -- Holdet bag [site:name] - subject: 'Ny login-information for [user:display-name] på [site:name]' register_admin_created: + subject: 'En administrator har oprettet en konto til dig på [site:name]' body: |- [user:display-name], @@ -30,8 +31,8 @@ register_admin_created: Adgangskode: Din adgangskode -- Holdet bag [site:name] - subject: 'En administrator har oprettet en konto til dig på [site:name]' register_no_approval_required: + subject: 'Kontoinformationer for [user:display-name] på [site:name] (blokeret)' body: |- [user:display-name], @@ -47,32 +48,31 @@ register_no_approval_required: Adgangskode: Din adgangskode -- Holdet bag [site:name] - subject: 'Kontoinformationer for [user:display-name] på [site:name] (blokeret)' register_pending_approval: + subject: 'Kontoinformation for [user:display-name] på [site:name] (afventer godkendelse af administrator)' body: |- [bruger:vist navn], Tak for din tilmelding på [site:name]. Din ansøgning om en konto afventer i øjeblikket godkendelse. Når den er godkendt, modtager du en anden e-mail med oplysninger om, hvordan du logger ind, angiver din adgangskode og andre detaljer. -- [site:name] holdet - subject: 'Kontoinformation for [user:display-name] på [site:name] (afventer godkendelse af administrator)' register_pending_approval_admin: + subject: 'Kontoinformation for [user:display-name] på [site:name] (afventer godkendelse af administrator)' body: |- [user:display-name] har anmodet om en konto. [user:edit-url] - subject: 'Kontoinformation for [user:display-name] på [site:name] (afventer godkendelse af administrator)' status_activated: - body: "[user:display-name],\r\n\r\nDin konto på [site:name] er blevet aktiveret.\r\n\r\nDu kan logge ind ved at klikke på følgende link eller ved at kopiere og indsætte det i din browser:\r\n\r\n[user:one-time-login-url]\r\n\r\nLinket kan kun bruges én gang, og det fører dig til en side, hvor du kan vælge din adgangskode.\r\n\r\nNår du har valgt en adgangskode kan du fremover logge ind på [site:login-url] med:\r\n\r\nBrugernavn: [user:account-name]\r\nAdgangskode: Din adgangskode\r\n\r\n-- Holdet bag [site:name]" subject: 'Kontoinformationer for [user:display-name] på [site:name] (godkendt)' + body: "[user:display-name],\r\n\r\nDin konto på [site:name] er blevet aktiveret.\r\n\r\nDu kan logge ind ved at klikke på følgende link eller ved at kopiere og indsætte det i din browser:\r\n\r\n[user:one-time-login-url]\r\n\r\nLinket kan kun bruges én gang, og det fører dig til en side, hvor du kan vælge din adgangskode.\r\n\r\nNår du har valgt en adgangskode kan du fremover logge ind på [site:login-url] med:\r\n\r\nBrugernavn: [user:account-name]\r\nAdgangskode: Din adgangskode\r\n\r\n-- Holdet bag [site:name]" status_blocked: - body: "[user:display-name],\r\n\r\nDin konto på [site:name] er blevet blokeret.\r\n\r\n-- [site:name] team" subject: 'Kontoinformationer for [user:display-name] på [site:name] (blokeret)' + body: "[user:display-name],\r\n\r\nDin konto på [site:name] er blevet blokeret.\r\n\r\n-- [site:name] team" status_canceled: + subject: 'Kontoinformationer for [user:display-name] på [site:name] (opsagt)' body: |- [user:display-name], Din konto på [site:name] er blevet lukket. - -- [site:name] holdet - subject: 'Kontoinformationer for [user:display-name] på [site:name] (opsagt)' + -- [site:name] holdet \ No newline at end of file diff --git a/config/sync/language/da/views.view.content.yml b/config/sync/language/da/views.view.content.yml index 9a0b526e6..f1ec8c4af 100644 --- a/config/sync/language/da/views.view.content.yml +++ b/config/sync/language/da/views.view.content.yml @@ -2,21 +2,9 @@ label: Indhold description: 'Find og håndtér indhold.' display: default: + display_title: Standard display_options: - exposed_form: - options: - submit_button: Filter - reset_button_label: Gendan - exposed_sorts_label: 'Sortér efter' - sort_asc_label: Stigende - sort_desc_label: Faldende - pager: - options: - tags: - previous: '‹ Forrige' - next: 'Næste ›' - first: '« Første' - last: 'Sidste »' + title: Indhold fields: title: label: Titel @@ -28,12 +16,29 @@ display: status: label: Status settings: - format_custom_true: Udgivet format_custom_false: 'Ikke udgivet' + format_custom_true: Udgivet changed: label: Opdateret operations: label: Handlinger + pager: + options: + tags: + next: 'Næste ›' + previous: '‹ Forrige' + first: '« Første' + last: 'Sidste »' + exposed_form: + options: + submit_button: Filter + reset_button_label: Gendan + exposed_sorts_label: 'Sortér efter' + sort_asc_label: Stigende + sort_desc_label: Faldende + empty: + area_text_custom: + content: 'Der er intet indhold at vise.' filters: title: expose: @@ -54,16 +59,11 @@ display: langcode: expose: label: Sprog - title: Indhold - empty: - area_text_custom: - content: 'Der er intet indhold at vise.' - display_title: Standard page_1: + display_title: Side display_options: menu: title: Indhold tab_options: title: Indhold description: 'Find og håndtér indhold' - display_title: Side diff --git a/config/sync/language/da/views.view.files.yml b/config/sync/language/da/views.view.files.yml index c5967dabe..dc8d5af6a 100644 --- a/config/sync/language/da/views.view.files.yml +++ b/config/sync/language/da/views.view.files.yml @@ -4,22 +4,7 @@ display: default: display_title: Standard display_options: - exposed_form: - options: - submit_button: Filter - reset_button_label: Gendan - exposed_sorts_label: 'Sortér efter' - sort_asc_label: Stigende - sort_desc_label: Faldende - pager: - options: - tags: - previous: '‹ Forrige' - next: 'Næste ›' - expose: - items_per_page_label: 'Antal elementer' - items_per_page_options_all_label: '- Alle -' - offset_label: Forskydning + title: Filer fields: fid: label: Fid @@ -41,6 +26,25 @@ display: label: Ændringsdato count: label: 'Brugt i' + pager: + options: + tags: + next: 'Næste ›' + previous: '‹ Forrige' + expose: + items_per_page_label: 'Antal elementer' + items_per_page_options_all_label: '- Alle -' + offset_label: Forskydning + exposed_form: + options: + submit_button: Filter + reset_button_label: Gendan + exposed_sorts_label: 'Sortér efter' + sort_asc_label: Stigende + sort_desc_label: Faldende + empty: + area_text_custom: + content: 'Ingen tilgængelige filer.' filters: filename: expose: @@ -51,10 +55,6 @@ display: status: expose: label: Status - title: Filer - empty: - area_text_custom: - content: 'Ingen tilgængelige filer.' page_1: display_title: Filoversigt display_options: @@ -63,15 +63,7 @@ display: page_2: display_title: 'File usage' display_options: - pager: - options: - tags: - previous: '‹ Forrige' - next: 'Næste ›' - expose: - items_per_page_label: 'Antal elementer' - items_per_page_options_all_label: '- Alle -' - offset_label: Forskydning + title: 'File usage' fields: entity_label: label: Entity @@ -81,7 +73,15 @@ display: label: 'Registrerer modul' count: label: 'Brug antal' - title: 'File usage' + pager: + options: + tags: + next: 'Næste ›' + previous: '‹ Forrige' + expose: + items_per_page_label: 'Antal elementer' + items_per_page_options_all_label: '- Alle -' + offset_label: Forskydning arguments: fid: exception: diff --git a/config/sync/language/da/views.view.user_admin_people.yml b/config/sync/language/da/views.view.user_admin_people.yml index 848b1b249..a80d56f6f 100644 --- a/config/sync/language/da/views.view.user_admin_people.yml +++ b/config/sync/language/da/views.view.user_admin_people.yml @@ -4,24 +4,7 @@ display: default: display_title: Standard display_options: - exposed_form: - options: - submit_button: Filter - reset_button_label: Gendan - exposed_sorts_label: 'Sortér efter' - sort_asc_label: Stigende - sort_desc_label: Faldende - pager: - options: - tags: - previous: '‹ Forrige' - next: 'Næste ›' - first: '« Første' - last: 'Sidste »' - expose: - items_per_page_label: 'Antal elementer' - items_per_page_options_all_label: '- Alle -' - offset_label: Forskydning + title: Personer fields: user_bulk_form: label: Masseopdatering @@ -30,8 +13,8 @@ display: status: label: Status settings: - format_custom_true: Aktiv format_custom_false: Blokeret + format_custom_true: Aktiv roles_target_id: label: Roller created: @@ -42,6 +25,27 @@ display: label: Handlinger mail: separator: ', ' + pager: + options: + tags: + next: 'Næste ›' + previous: '‹ Forrige' + first: '« Første' + last: 'Sidste »' + expose: + items_per_page_label: 'Antal elementer' + items_per_page_options_all_label: '- Alle -' + offset_label: Forskydning + exposed_form: + options: + submit_button: Filter + reset_button_label: Gendan + exposed_sorts_label: 'Sortér efter' + sort_asc_label: Stigende + sort_desc_label: Faldende + empty: + area_text_custom: + content: 'Ingen personer til rådighed.' filters: combine: expose: @@ -60,10 +64,6 @@ display: permission: expose: label: Tilladelse - title: Personer - empty: - area_text_custom: - content: 'Ingen personer til rådighed.' use_more_text: mere page_1: display_title: Side diff --git a/config/sync/linkit.linkit_profile.default.yml b/config/sync/linkit.linkit_profile.default.yml new file mode 100644 index 000000000..fef8d72b3 --- /dev/null +++ b/config/sync/linkit.linkit_profile.default.yml @@ -0,0 +1,23 @@ +uuid: e71d3779-473f-4f71-8ea8-5ac891067b62 +langcode: en +status: true +dependencies: + module: + - node +_core: + default_config_hash: 0Jw_BFJCCtWk187tIYvME58VFpYwPaAdrc4eRtAyHH0 +label: Default +id: default +description: 'A default Linkit profile' +matchers: + 556010a3-e317-48b3-b4ed-854c10f4b950: + id: 'entity:node' + uuid: 556010a3-e317-48b3-b4ed-854c10f4b950 + settings: + metadata: '#[node:nid]: "[node:content-type:name]" ([node:type-name]) - [node:published_status]' + bundles: { } + group_by_bundle: false + substitution_type: canonical + limit: 100 + include_unpublished: true + weight: 0 diff --git a/config/sync/locale.settings.yml b/config/sync/locale.settings.yml index cd1ac5151..970cc15e6 100644 --- a/config/sync/locale.settings.yml +++ b/config/sync/locale.settings.yml @@ -1,3 +1,5 @@ +_core: + default_config_hash: cSdYeE-_AQETCNZnl8BMFS9-sVn5--VzAYILkpPBUbM cache_strings: true translate_english: false javascript: @@ -11,5 +13,3 @@ translation: update_interval_days: 0 path: sites/default/files/translations import_enabled: true -_core: - default_config_hash: cSdYeE-_AQETCNZnl8BMFS9-sVn5--VzAYILkpPBUbM diff --git a/config/sync/metatag.metatag_defaults.403.yml b/config/sync/metatag.metatag_defaults.403.yml new file mode 100644 index 000000000..a288e6a02 --- /dev/null +++ b/config/sync/metatag.metatag_defaults.403.yml @@ -0,0 +1,12 @@ +uuid: 28ed9023-6163-4f78-b596-6063b224b9ea +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: RDCkFL0NDt75Gwioooxo1iuA1S50xTVsBOgX__c6wTw +id: '403' +label: '403 access denied' +tags: + robots: noindex + canonical_url: '[site:url]' + shortlink: '[site:url]' diff --git a/config/sync/metatag.metatag_defaults.404.yml b/config/sync/metatag.metatag_defaults.404.yml new file mode 100644 index 000000000..9826e4b48 --- /dev/null +++ b/config/sync/metatag.metatag_defaults.404.yml @@ -0,0 +1,11 @@ +uuid: 5190f9f0-dbe9-4875-8736-47afb27c2221 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: puBstSLDz8mbaWU357zaqQDBGMGsJzG0j-TQNQkjg20 +id: '404' +label: '404 page not found' +tags: + canonical_url: '[site:url]' + shortlink: '[site:url]' diff --git a/config/sync/metatag.metatag_defaults.front.yml b/config/sync/metatag.metatag_defaults.front.yml new file mode 100644 index 000000000..a95d28ef5 --- /dev/null +++ b/config/sync/metatag.metatag_defaults.front.yml @@ -0,0 +1,11 @@ +uuid: dd01ba9d-d442-4183-a32d-cc593998aac5 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: 1noCXlegCr5HFehQRF1ViXy1jhU1jZ_sNN99a8Sj5jo +id: front +label: 'Front page' +tags: + canonical_url: '[site:url]' + shortlink: '[site:url]' diff --git a/config/sync/metatag.metatag_defaults.global.yml b/config/sync/metatag.metatag_defaults.global.yml new file mode 100644 index 000000000..622d5b835 --- /dev/null +++ b/config/sync/metatag.metatag_defaults.global.yml @@ -0,0 +1,11 @@ +uuid: 754a659e-d83f-4420-a5b1-84c3fa9bbffb +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: sL588ui1E_8-2c_UupwyYxcqX2OVyMFp3HTLbbFqvPc +id: global +label: Global +tags: + canonical_url: '[current-page:url]' + title: '[current-page:title] | [site:name]' diff --git a/config/sync/metatag.metatag_defaults.node.yml b/config/sync/metatag.metatag_defaults.node.yml new file mode 100644 index 000000000..ac470824e --- /dev/null +++ b/config/sync/metatag.metatag_defaults.node.yml @@ -0,0 +1,12 @@ +uuid: 51dde779-23be-4b75-bb05-791c8b94c9b0 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: rpwvgyEURXLz_JjgMCrkS1rUv-0k3L79BpO-ReN7fDI +id: node +label: Content +tags: + canonical_url: '[node:field_canonical_url:uri]' + description: '[node:summary]' + title: '[node:title] | [site:name]' diff --git a/config/sync/metatag.metatag_defaults.taxonomy_term.yml b/config/sync/metatag.metatag_defaults.taxonomy_term.yml new file mode 100644 index 000000000..1163cd77c --- /dev/null +++ b/config/sync/metatag.metatag_defaults.taxonomy_term.yml @@ -0,0 +1,12 @@ +uuid: d5544dad-e445-487f-9448-30b10db54e00 +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: 92bXZdyYJ5xqukdfmGRr_CYcwm1vfuS8b8aJ7X_G7E0 +id: taxonomy_term +label: 'Taxonomy term' +tags: + canonical_url: '[term:url]' + description: '[term:description]' + title: '[term:name] | [site:name]' diff --git a/config/sync/metatag.metatag_defaults.user.yml b/config/sync/metatag.metatag_defaults.user.yml new file mode 100644 index 000000000..6f814d181 --- /dev/null +++ b/config/sync/metatag.metatag_defaults.user.yml @@ -0,0 +1,12 @@ +uuid: 685a5406-a296-4725-9a1b-75f48f27afee +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: MvQPTbQx0Vxwy0ordSHyixdZmLCMpvMdLD69dlwkrKc +id: user +label: User +tags: + canonical_url: '[user:url]' + description: '[site:name]' + title: '[user:display-name] | [site:name]' diff --git a/config/sync/metatag.settings.yml b/config/sync/metatag.settings.yml new file mode 100644 index 000000000..3f1fe5fc0 --- /dev/null +++ b/config/sync/metatag.settings.yml @@ -0,0 +1,8 @@ +_core: + default_config_hash: tKLBW2GXZVLFXqS9QgLyfTuxCLc1u_quKPQLtCia-Bw +entity_type_groups: { } +separator: '' +tag_trim_method: beforeValue +tag_trim_maxlength: { } +tag_scroll_max_height: '' +use_maxlength: true diff --git a/config/sync/node.settings.yml b/config/sync/node.settings.yml index 1657c1cb3..6fcede99e 100644 --- a/config/sync/node.settings.yml +++ b/config/sync/node.settings.yml @@ -1,3 +1,3 @@ -use_admin_theme: true _core: default_config_hash: 2OMXCScXUOLSYID9-phjO4q36nnnaMWNUlDxEqZzG1U +use_admin_theme: true diff --git a/config/sync/node.type.article.yml b/config/sync/node.type.article.yml index b4e1237e9..d819d7249 100644 --- a/config/sync/node.type.article.yml +++ b/config/sync/node.type.article.yml @@ -7,5 +7,5 @@ type: article description: 'Use articles for news-worthy content, that does not get updated regularly.' help: '' new_revision: false -preview_mode: 0 -display_submitted: false +preview_mode: 1 +display_submitted: true diff --git a/config/sync/node.type.event.yml b/config/sync/node.type.event.yml new file mode 100644 index 000000000..087c19acc --- /dev/null +++ b/config/sync/node.type.event.yml @@ -0,0 +1,11 @@ +uuid: 208eaa7b-e99d-48c7-88d2-75e57421179e +langcode: en +status: true +dependencies: { } +name: Event +type: event +description: 'Add time-specific activities or events' +help: '' +new_revision: false +preview_mode: 1 +display_submitted: false diff --git a/config/sync/openid_connect.settings.facebook.yml b/config/sync/openid_connect.settings.facebook.yml index 07181d592..e8eb5f854 100644 --- a/config/sync/openid_connect.settings.facebook.yml +++ b/config/sync/openid_connect.settings.facebook.yml @@ -1,7 +1,7 @@ +_core: + default_config_hash: XE2MqevnEK7g2Hi3bBsxJUUcbYQBm9AjQR6foDyycRY enabled: false settings: client_id: null client_secret: null api_version: null -_core: - default_config_hash: XE2MqevnEK7g2Hi3bBsxJUUcbYQBm9AjQR6foDyycRY diff --git a/config/sync/openid_connect.settings.generic.yml b/config/sync/openid_connect.settings.generic.yml index e4a8266ce..de3570110 100644 --- a/config/sync/openid_connect.settings.generic.yml +++ b/config/sync/openid_connect.settings.generic.yml @@ -1,3 +1,5 @@ +_core: + default_config_hash: FJ7FfwlYzcbFfG0AqVPlqsLJIRhkzS1Rv6eO1vssSkM enabled: false settings: client_id: null @@ -5,5 +7,3 @@ settings: authorization_endpoint: 'https://example.com/oauth2/authorize' token_endpoint: 'https://example.com/oauth2/token' userinfo_endpoint: 'https://example.com/oauth2/UserInfo' -_core: - default_config_hash: FJ7FfwlYzcbFfG0AqVPlqsLJIRhkzS1Rv6eO1vssSkM diff --git a/config/sync/openid_connect.settings.github.yml b/config/sync/openid_connect.settings.github.yml index b79d2515e..3125f8f10 100644 --- a/config/sync/openid_connect.settings.github.yml +++ b/config/sync/openid_connect.settings.github.yml @@ -1,6 +1,6 @@ +_core: + default_config_hash: h0ctmI-lSknN6e9qvO8PKjAPEeopeDR4FnxTYhGcD1k enabled: false settings: client_id: null client_secret: null -_core: - default_config_hash: h0ctmI-lSknN6e9qvO8PKjAPEeopeDR4FnxTYhGcD1k diff --git a/config/sync/openid_connect.settings.google.yml b/config/sync/openid_connect.settings.google.yml index b79d2515e..3125f8f10 100644 --- a/config/sync/openid_connect.settings.google.yml +++ b/config/sync/openid_connect.settings.google.yml @@ -1,6 +1,6 @@ +_core: + default_config_hash: h0ctmI-lSknN6e9qvO8PKjAPEeopeDR4FnxTYhGcD1k enabled: false settings: client_id: null client_secret: null -_core: - default_config_hash: h0ctmI-lSknN6e9qvO8PKjAPEeopeDR4FnxTYhGcD1k diff --git a/config/sync/openid_connect.settings.linkedin.yml b/config/sync/openid_connect.settings.linkedin.yml index b79d2515e..3125f8f10 100644 --- a/config/sync/openid_connect.settings.linkedin.yml +++ b/config/sync/openid_connect.settings.linkedin.yml @@ -1,6 +1,6 @@ +_core: + default_config_hash: h0ctmI-lSknN6e9qvO8PKjAPEeopeDR4FnxTYhGcD1k enabled: false settings: client_id: null client_secret: null -_core: - default_config_hash: h0ctmI-lSknN6e9qvO8PKjAPEeopeDR4FnxTYhGcD1k diff --git a/config/sync/openid_connect.settings.okta.yml b/config/sync/openid_connect.settings.okta.yml index 0635203d6..a8d1c1d07 100644 --- a/config/sync/openid_connect.settings.okta.yml +++ b/config/sync/openid_connect.settings.okta.yml @@ -1,7 +1,7 @@ +_core: + default_config_hash: 7F1ngE9fiONEo0Nk1cfez_GTGzhHBLuPaHlrDqYI_hg enabled: false settings: client_id: null client_secret: null okta_domain: null -_core: - default_config_hash: 7F1ngE9fiONEo0Nk1cfez_GTGzhHBLuPaHlrDqYI_hg diff --git a/config/sync/openid_connect.settings.yml b/config/sync/openid_connect.settings.yml index 645a36315..7b87e8667 100644 --- a/config/sync/openid_connect.settings.yml +++ b/config/sync/openid_connect.settings.yml @@ -1,8 +1,8 @@ +_core: + default_config_hash: YpBA3MmDuJpZ9SM3DE4kR0lTY89bf2y3g0sS7s3TQ4k always_save_userinfo: true connect_existing_users: false override_registration_settings: true user_login_display: below userinfo_mappings: timezone: zoneinfo -_core: - default_config_hash: YpBA3MmDuJpZ9SM3DE4kR0lTY89bf2y3g0sS7s3TQ4k diff --git a/config/sync/paragraphs.paragraphs_type.text_body.yml b/config/sync/paragraphs.paragraphs_type.text_body.yml new file mode 100644 index 000000000..420d7cd68 --- /dev/null +++ b/config/sync/paragraphs.paragraphs_type.text_body.yml @@ -0,0 +1,12 @@ +uuid: 5c571f89-7d31-4457-a051-c43ee49529d3 +langcode: en +status: true +dependencies: + content: + - 'file:file:c28418f1-8d4d-4a1f-8456-c6ad29e5aa34' +id: text_body +label: 'Text body' +icon_uuid: c28418f1-8d4d-4a1f-8456-c6ad29e5aa34 +icon_default: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wBDAAwICQoJBwwKCgoNDQwOEh4TEhAQEiQaGxUeKyYtLComKSkvNUQ6LzJAMykpO1E8QEZJTE1MLjlUWlNKWURLTEn/2wBDAQ0NDRIQEiMTEyNJMSkxSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUn/wAARCAEUAlgDASIAAhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAQFAgMGAQf/xABHEAACAQMDAgQEBQEEBwYFBQABAgMABBEFEiETMRRBUWEGIjJxFSOBkaFCUrHB0gczVZKTotEkJUNicuEWNLLw8TdldYKz/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A+nUpSsqUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpVFLrN+nxhFogtLYxyQm463VbcIwcH5cY3Z98UF7SlPPHn6UClMe1KBSvG4UkED0J7Zqk+GdTvtQm1aK+MLPZXht1MKFQQFBzgknv70F5Snnjz71FudRtra+s7KR/wA+8ZliQck7VLE/bA7+4oJVKHjvxj1pQKVRfFep3+lRWM1o0HTmu4reQSRlmwzdwc4HAPkavTxnyANApSlApSnnjzoFKeWaUClPX271jKJDEwhZFkIwpcZAPlkZGf3oMqVSfCOqXWr6M11edPqi4li/LXauFbA4yau6BSgORwc0/SgUpTzx60ClRb3ULaxktY53w91MIYlHJZj/AIDHJqV+hoFKU7d+KBSlRdT1C20vTpr67fZDCu5j5n2HqT2xQSqUHIBwRkedMH0oFKVS/ES6yzRfhbOF6UgzGyKRNx0y27un1ZA5oLqleLu2jfjdjnHbPnXtApVFcanfQ/Gdlpu6A2dzBLKMId4Kgd2zjv6Cr3sMmgUpg+hpQKU88edPLPlQKUqq+JtUl0nSRNbqjXE00dvFvBKhnbGT6gcnFBa0qDp0WqQz3SX9xDcQgqbeRU2ORj5twHHftjyqcOe3P2oFKYPoaUClO9O1ApUJpNSGtrELWL8N6BYzl/n6ufpx6YrO31C2udRurGFy81oqGYDsu7OB9+O3uKCVSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBXMTf/qpa/wD8S/8A/rXT1RXOhXsnxP8AjcOpxRutubaOJrbcFQnJydwyc0FzK6KChmWN2VipJGRgcnn0yK+d609hZ/CcV1ppnu7y1njYausJUSP1AGO8nLA5I4yK6qbQbu+uZpNS1QTRSWklqsUNv0ggfG5s7jk8CoEnwjqNz8Opol1raG1hVFi6VoFYhCCu/LHPbyxVD4stI5vi74cVmmUXE0qShJWUMqpkDAPHc9vWvPB2+i/6QdMh02MW8GoW0wnhTIRimCrY9ferLUdDvL7U9Lv21KJJNPLMFFtkSMwwx+rgY7D++s7/AEWe6+JLHV0vkjFmjIkJh3ZDfVltw5x24496IqPh1IfiXVtavtTjW4W1u2tLe3l+ZIUUckL23HzPeoel3P4Fo3xlc2cag2l7IYl7gHaAP0GavE+H7qx1m7v9H1CO3jvm33FvPB1F3/21wwwfbtWWl/DZs/xSK6vPG22pu0kySRBWLMADyDjGPLFBQ22jahf/AAvDJBYW66jPEk6am96et1Dht2dmcf8AlzjHFbNb0y3n+Ofhk31tC9xcQzC6K5xIyxjH6A5xVvp2hatptmunW2tp4GP5Yi9qGnjX+yG3bePIla36zoUt7cabeWd74e804t0pJkModWGGDDIJzjvmiq34osZ7R9LltNKN/pVmZDPYRHkkj5XCn6sc8e9SvhCfSbo39xpMjKkkiGS1dCjW7BcEbT2B78cd6ktpWpLc213FqwNxFG6SdWDKS7mBxgEbQMcYOfc81s0jR2stRvtSuZ0mvL7YJDHHsRVUYAAyT9yTzQVvx/xpemn/APdLf/6jW7WU00/EcbahK14xtysOmLAZcHdzLtHtxk/vUn4k0WXW4LWKO8W2WCdbjmHfuZfpHcYFR59Bv0+IJtXsNUihluoUiuEmtuop29mX5hj7c0RzXw3ZT6jJq6Saat9b29y9pbx3lyUNqgydqrtbB+bvnPAHlVhf6dr9v8M6PHdQjVXspc3ltHISblBkLyfqxwcHuR51Y2nw3faXfz3WmauB4sh7pLuDqB5PN12ldp57dqnXGlXjNZSwam63FqXLPNHvE28cggEYHHYduKK5/TtX0mCz1zVtIV4J4bQGXTpozG0LpuIO3sAdwzjjj3qPp2k3+q/CcU40+3fULuETLqb3pEwkPIbhMqAf6QcY4rpLXQd2qXmpalLDcT3VuLVkiiKRiLuRySST6k1o03QdU0m1Gn2OsotghPSEttvmiUnO0NuwfYkURWfElrctf/Cy3NzJHeSziK4kt5CASE52jsOSecZ5rD4qtovhjSSuirJby6veRQSMspGwYOSpOdpI4z35zV3qugz313pc0Wo9Mac/UQSxdRpGxjLHcPKpevaNba7pUlhdF1ViGWRDho2HZh70VRvoeoR3mnz6Zpllpr20wMrpdlutF2ZGGwbie+T511w+ofeqe1sNZ/LS+1mOWKMgkwW3Sklx/abcce+0DNWr7yjdNgr4+UkZAPlx50HDfCWgabq3wzcm+t+szXVwqs7t+X8x5QZwp88ituk3P4j/AKL7GbUtVe0XhZZySTIqyEbD5ncBjjk+9XegaHc6LpE9iuoJMzu8kcrQY2sxySRu55+1VqfBcsfw5ZaWmq4k0+5FzazdDgMCThl3fNyT6URot5YIPj/S106xnsYLq2mEqND0ll2gFTt9R6kA1jZaRbX/AMc/EVnctM9mkUB8OZWKsWUnJyc8EkgdsntwKtToGoza1Y6tc6vG9zaq6bFtcRlWxkAbsg9+ST9q36folxZ/Emoas18kgvgqvD0Nu0IMLht378c+1FWWn2cOnWEFlBv6MCBE3tuOB6muGv2i0291WP4n06d4buZ2g1eNTIIkIwq5HKbfb3r6DVCdG1RbK6sotUgNtcvIfzrYs0SuSSq/MAcZ43CgpPiHTdPnv/hJ9kVyJZkhM4/8WMR8foe9Sfix208aNoemQiKHULorIiSGPcowSm7kjdnkirG/+GFk0rS7Wwu2tpdKdHtpXTqA4GCGHGQfastS+HX1bTI4r3UJDfQzC4huoowvRcdtq/2fYk59aIiW+j6hBr1jeWVhZabbx7kuo4bjcJ0I4+UKBkHkGoWjaPYXvxf8S2t3AbiCGSAJFNIzqu5CTwT3z+3lXRWdnqvWjfUNUjlSM52W0HSEh/8AOSxJHsMCtGl6Jc2Gt6lqTX0cp1AqzR9DbtKjC4O7tjv6+1Fc78K6HYapo2qW1/G9yLS9ntbdpZGYxIv07eeMZ7iq7UmGp/6FLe9vh17mEKscr8sPzdmc+u0YrsNE0K60i0v4V1GOV7uZ5w5t8bJH7nG7kduOKj2/wiq/BUvw1cXvVhIIjmWLayfNuBIyc/N9uKIutO06y0+Miztkh3gbtuecVz3xxbpJf/D5LSqZdSjhcpKy5QgnHB/nvV5pVpqFuhOoait2+0IBHD00AHnjJJY+Zzj0FUvxysj3Hw6kMgjkOqptcruCnacHHnRUP4ltIPhrUtG1PSIhbPPeJazxRkhZ0b1HmRjv3qbeQ6VLrmpR3fV1e4kVQLZIOp4NNuMZzhcnnuDVh+Cz3mp2t9q11FP4Ml7eCCIpGrnje2SST6eQqNb/AA7fWWp38tjqyw2t/N15Y2t98iMe+xicfuDiiH+j65nu/gnT5biRpJMOm5jkkK7AZ/QCo2uzNqPxtpugTMwsTbvdzRqSOuQSFU47qMZx51a/DOjPoGkJppuxcRREmNunsYAkk55OeT7Vr1zQTqN9Z6laXXhNRsiRHNs3qynurLkZH6+dFVcthaWX+knSFtLaKAPZzlhGu0E8eQ4qFpEtz8Q6trF3c6Xb38dvdtawx3FxtWFV9E2kZPct3/arz8Bv5ddtNYuNVjae3RozGltiPa2MgfNkH3JP2odAurLWLrUNGv4rbxpDXFvPAZY2f+2uGBB/voKbU9N1Cw/0datDqMuWgMklp053YxxnG1S3BOMkc+VTvwuz0vR1+Iws0+o2li0nVeQ/mEx9mHbA8h2FWGpaJc6j8P3Omy6mxkuuJZ2iBAX+yiAgKOB5nz7mrC1tDHpaWV06XAEfSchNodcY7ZPl70RxWl6Xfax8JR3DafBLf3kXVGpSXhEyueQwwmVAOPlBxgYqbrsOrw/g15f6f+L29tCy3ttbndmUgfmhT9fY+XGasNM0DU9It/AafrKLp6sTEs1t1JYQTnarbgCPTINTJtLvEvoLqy1Eq0Vv0GW4QyCbnOWIIOfcetFRfg+bSbiG+n0iYmGWcM1u6lWt22gFSD2HBI8vSoP+kWytptPsJ5YVaRb6CPcc/SW5FXOj6OdPvL++nmWa8v3VpWjj2IAowoUZJ/UnJrD4k0WXW7a3gjvFtlhnWc5i37mXlR3GBREXWrLSrNtNilmMNpHM5GnxxmTxbEcDaOTg8+nrVbokMF18RfEGki2lttPmt4ZPDOuzpswILBQflzwePSrjVtCu7zVbDVbTUEt720RoyZId8cgbv8uQR+9NN0K6stfuNVl1PxD3UaRzI0AX6c424Pyj2OfvQc9pLlvgqf4elUfiMd3+HvnJy7NkS/7mW/8A61OeOG6+NoPhwrjTNPsROLck4mckAbv7QAOcHz5q4X4ftl+K314OwleARGLHylhxv++35a81TQ/FatbavZXAtdQt1Me9k3pLGe6OuRx7g5FFVLj8E+P7GxsQUsdUt5OrbKfkR0BO9R/TkYBxUPQtBstVu/iO0vWnltor5oo4mlbCfKPmBzktjABOcfrXS2mjuNXOrX9wlxeCLoxCNCkcKZydoJJJJ7kn2rXoOi3Gk3eoTy3yXAvpjO6iHZtc+h3HjHlQVaW6Wf8ApNtYITIIzpTsQ0jNyGC55PoBUT4e0PS2+NPiaJrGExwSW/TXBwuUJPn5nmr+TRJ3+LY9cF8gCQeHEHQz8hOT827vnzx+laZPh+7j1+81LT9TFqt+qC5Qwb2yowGQk4Bx6g0F/SvAMADJOPM969qBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBUHUdG0/U5YZL236rwHMZ3suw+owRz71OpQAMDApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlAqll1DUF/EbmMW7wWUrKYSpDsqqGJDZxnk+XlV1VPJpd5Ib6AXMKWt7KXchCZApUAqOcDgd/eglzapBCULxXHRfZ+eI/wAtd305P6jt2zWD6xbJO0RSciOYQSSCP5Ec4wCffI/eol/okt1PLiSDpMYzGZFZmhC4+VecAHHfvzUiXSnktruITKDcXa3AOD8oBQ4/5f5qj2XW7SKV0ZLgqkvQaRYiVD+Qz55yO3rW2LUo5beSRLe5LxSdN4en+YGwD2zjGCDnOK0tpbmOVesvz3y3QODwAVO378VhdaVPK1y0c0ZE1ysxjfcFdQgXa2Oe4z+lBtOs2ogikCTs0sjRLEseX3rnKkeR4PtXlpqO65nhmLF2ujDCiryAEUnPsMnJrVZ6M9tJbsZYsRXEs5WNCq4dSMAeWM16mjGLUpdQilC3D3G/JzgxkAFCP0zn1xQS7K/jvSxhim6fO2Vkwj4ODg59fXFVV3rc8F1eKs9nmCcRR2rKepLkKeDu7/MfLyqbY6dNBqUl07W8aupDJAGUSsSDuYHgEY8vU81qn0q7lOoQrNbC3vnLMWjZnQFQpxzjPHFQe6hqMlu8/TmLdK7giKLDkqrYyB/aJBr2fVt6IIBJDKt3FDLHKmGAY/r3HmKT6RKzTtFOgL3EMyb1Jx0wowfXO3+axfSrmUyXEs0PiXnhlwoOwLGeF9fXn3qo3rqccavvd55DcvDHHHFhiR/SBnnA/qOK1ya2nWs0gt5pRPI6OAnzRlQcgjPfP8c14dKmjlFxBNH10uZZlDqdpV+CpxzntyK8XSrmJ4blJoWuluHnk3KQjb12kDHIwMY+1FSo9Tt3ulhCy7WkMSzFPy2cZyoP6H24qLpusRtpcMt1ITKLYzzMqcIvPJx2zjgeeDXllootL0MIrSSJZGkR2U9UZJOPTgnv6Vjp2iSabAq200ZZ4ik4kUssjf0tjPlyMen2oPdT1SZbCJoILuF5Z0iyYgWAPOQCSORwPepK6tbLMIj1yokEJnMf5fU7bSfXPHbGeKi2+jTIgBlijRbmOdYY9xjQL3C57Z/aszpNwQ1r14vAtceII2nqfXv2Z7Y3effFBv8Axi2zNhJysLmNmEfBfdt2D1Yn0o2r26RgvHcLJ1RD0jHlw5G4DA9QO/atU2jmbT5rdpELNdNcoSpKg7twBHmPI0h0llFu2y1gaK5EzCBWwwClcZPnzQbE1KO4NsY3eEvcmB45Ivm3BSSp5+XtnPP817baxbXM0MaJOFmZkjkaPCMy5yufXg+3FYLpbi6WbrLgXzXWMHsU27fvXlvpbw2+nxmVWNpO0pIB+YHfwP8Ae/ig22+rwXNxFFHFcETBmjkKYRwvcg57dvLzr261a3tZpI3WZxCoaZ403LED2LH7c8Z45qm0J3iurVelHKzBlYBpN9spyxypG1eQAQP04qyu9NunlvBbTxJFfKBLvUlkO3aSuODkeR86Ddc6vb28jp055RGUV2iTcqlsbQTnzyP3Fbru9jtDEjJLJLKSEiiXLNjk/oPWufvB4bUrnZEkgj6XTtpGkDTFFG0gKMNz2J7Ec8Cru9tbiW6try2eNJ4QylJQSrK2MjI7EECgj2OrFrFJJkmlmlmlSOKOP5yquRyOMYGM5qYdQtl0037ORABkkqd3fGMd854x61WtoMnRgZnt5popJWIkQiNxI24jjkEcc81Mm03q6MLJDFA42upjQ7FcNuBx6ZFBrttSkl1C7V4LhI4YI3ELRfPkls4A75wK2fjFssMjyJPG0cqxPG0fzhmxt4Gc5yO1R5dMvrjxkslzCk1xFHGBEGCgKxJBOc4IJHGKxh0SROo2+3j33EM2yJCFUJjI9ycd6CV+MW/SZjFcLIswg6DJiTeRkDGccjnOa1y6p0b9TNvitvCNKyOmHDbwoGO+ecY8817cabI5vSBbSrcyI5jnUkYCBcZHY5Gc1F/+HjKLc3NyzvBAyI4LZRy+5WGTzt7DNBPm1a3hkKvHPhAplYR5WHPbcfL9M4rVq91PFeWFrD1l8RKwd4kDEAKTjnge/sDUd9Fke8e4kSynM+wzdVG4YAAlfY47HtVjdWhnvbOcMAtuzsVI+rcpX/Gg12+rWtxcRxqsoSVisUrJiOUjuFP6H744qBZavL07Ga7mURSWs0szbQOVZQD/AD2Het1rpVxF4O3lnia0sn3xbVIdsAhQ3lxny78dq0r8OiWCziupQy2sciAx5ByzAqw9xjP3oJ02rQQ/VFcHbGJJcR56KnsX9PtyeKjjWBBeX63KytBBMqiRI8pGpRTlj9yfWtcuizSXBnmFncyTIqzdZGxuUY3Lj1HcH96zudJupTfQpPAlteuDJ8h3ooVVIHlyF/T3oF7qUlvI2yUuEvo4WRYeQpUEqP7Wc9/es5tV6ggEAeKTxkcE0cqYZQQTj9Rg5FeT6VM0kskU0as14lym5SQNqhdp/asfwm4dvESTReJa6jnYKDsCoMBR59s8+tEbo9UjSL5mkuJXnkijSKLDHaTkYz2GO5NYNrSNc2ccFvNKtwXDEJhkK8EEeRB71iulTwtHPbzRGeOaZwJFO1lkOSpxyCMDn2pHpVxBJbXEc0TXCTSSy71IVup3xjkY4xRUmPVIJZxGiy7XZkjmKfluyg5AP6H74OK0afq8TaZDLdSEyC1WedwvC57Zx5nyFYWGiiyuFxHaPFGzNHKUbqjOcD0yM4z6Voh+GxDppskuNqTQBJ+Cd0gwVcZ/Yj0x6UE9tYto4ZJJ47iExlNySR/NhzhSAM5BPFealfyQaZFdIkkRaaJWR0y4UuARjnnFaE0hzbMhjs4ZGlictArchGDYOf49Kn6ham7hSNXCFZo5ckeSsGx/FBri1OOWKZlt7nqQuEeHp/mAkZHGe2DnOa1nWbUQRybJ9zytCIhHl+oASVI9ePtWq80qeaS6eOZAJ5o5DG2QrKq7SrEc4Pf9K8s9Ge3eFjJCOndvcFY0KrhkK7QPLGaCdc3qW6Rbo5WkmOEhRcuTjJ4zjjz5rQdYt8RBIriWSVWZY0iy3ynDAjyIJ8681bTfHNbyqImkgLEJMCUYMMEHHI7DBr2004291bTAQRiGKRGjiUhSWZWyM/aoPfxi2ZLdoVmnNwnUVIo8sE8yR5c8feo1hrO7TbMzJPPdTwGXbDFksAcE+QHcV5aaTdWPhntp4GkjhMEnUU7SNxYEY5yMnjzrbpulPZPaM0yv4e2aA4UjcSwOf4qiTb6lbXJjETM3Ug8Qp2/0Zx+/tXv4hb/hqX5LdF0V1+X5ju7AD1OQMVXwaRd2qWvh7iHfHbG2kLoSME53Ljz9jW+TSep8Pw6a0iloUjAcrlSyYIyPQ47UGbaxbJGTLHcRuJViMTR5cMwyvAzkH1FSLK9jvIpHRZIzG5SRJV2shHPP6EGoMWksEiPTtIHS5SZugrYYKDxk+fNS7W2a1kvZSd/XlMoVRyPlUY+/y/zQaoNYgnlREgusSRtLG/S4dB5jnPmPLPIodYtkiuHmjngNuqu6SR4baxwCACcj/pVFpSTPFHbQsnWlt2i6yNIXtRjPKnhecDAx7dqnjQZWiugWtoTPDHHtiRsAqxbJJ5Oc0E8avbBLgyJPE0G3ckkeGO44XA88nit1lepeSyxiGeJoWCuJVAwSM44JzwR+9V2u2jiK/ugQROkMeNpOza5JY45xz3HIxmtmgysZLlBHGyBlc3EbuwkY8EEtySAB245FBjpGsde2tVukmEszMiymPEbsCflB9cD7HFSYtXtZG/8AFSJlZkmkTCSBeSQftzz3HaotppFzGlpbzzwtbWshlGxSGdvmwDngAbj9612vw8sUD2siWpi6TxLMqES4YY58s4P6+1Bs/GWkvojHBcLAbWWba8WDJgrtK/ueOK3pqEs/w3JfrE0MvhmkAZeM7M5HqM1hBp149zFLeTwMIrd4AIkILbtvzHP/AKe1bbexnGgtp08kW7oGBXjBxjbtBIPnQJNUS1topbiKcqY0eSVI8omcck/9M4pc6xbW00sbpOegyrK6x5WPdjBJ9OfKoF7od1dxNG81uwe3SIF1ZuiwGCUHbn17/epl1pTzwanGJlBvShUkH5Nqgc/tUGrWNY8Pb3SWqytLCVVpVj3JGxI4J9cH9M1Lm1S3iuXiKylUcRvKqZjRj2BP6j7ZGah3mk3Uq3sEE8C293IJW3qS6N8uQMcEHaPtXraKBqUs4itJYppRK3WVi6HjIGOD2yM9veqjK31tXhlea1nQrcGCNQnMhyQAOe/HPlVnDJ1YVk2Om4fTIuGH3FVn4bciK7gxZzQTTtMEmVjncckHHbB7EVN022ktLCOCWXquufm54ySQBnnAHHPPFRUmlKUClKUClKUClPKqm3vJYotRkOJOnesg6soRUXC+Z7D/AK0FtSqW0+IY7mWIdFFR5egT11Zg+ccKO654z/FZxa6jWE97JAEii4CiUF9xbaFZeNpzjvQW9Kpxry9J/wDs6ySpLHHsgmV1O8kKQ33ByK8uNfW2leOWGMNAFM48QuVJ5wgIy+AQfKguaVEvbxoJ4LeCHrTzbiql9qhVxlicHjkeXnUVdYaU28cFmzXEzSIY2kC9NkxuBPPHuKC1pVVZay9y9rusniiuiyI5kBIdQSQQPL5Tg+3atmr6r+GL1HhRowu5i0yoxHmFU8sfPyoLGlVtne3U+s3tu0K+Hh2bXDc8rntjz/in4nI97dW0Nuha3yMPMFckLkHbj6TnGaCypVHb65KNOsWuIoRc3MfUG+dUQqAMsTjjJOMc1sGuGZENpZNMWtzcEGUKFAYqRnnJyOMd6C4pVTFrRZS8lo0cb2rXUJLgl1UDIIH0nketeDWLpn2LpjF3g8RGDOoBTzyccHkcc9+9Bb0qmn+IYUSNoo0bdbrcMJJljIVuQBnu3B47e9TLvUBDb20sMLTeJdUjUMF+oEgnP2oJtKp7m+e4sLmJ4VgmhlWOUNOqovZgdxHKkY4xnkitthqMC/DovWL9KFG35IZvlJB58+Rx+lBZ0qjOpTwak019C1vDHYtKYxIHzhx9vm8v171l/wDECLDO0kCl4kSTZDMsm4MwXGRwCCe380F1k+ppVPda4bR2ilt41mij6sqNcKNoJOAuR8zYBOO3vW+DVBcak1rFEu1QpLNKFcgruDBMcrzjOe+aCx596VT3Etw3xKsfTd4YbXqqqzbAW3EZI7HtjnjzpFryMJupCn5LRhzFMJFCucbsgeR7iguKVWy6ti4a3gtzLL1ujGN4UMQu5iT5Be33rA6y22NEsna5edrdojIAEdV3ct6Y5z79qC1pVHc6jdQmTw0bSSePSB1kkGBlVOF44HOP5qTq09xC2nGFGLvchWjD4DfI3BPpn+6gs6VTNqEs91ZRlGgljvTDPGHyD+UzDnzB4Nbk1f8A7zFlJCiswcrtmV2G0Z+YD6cjt3oLOlVNtrfUEEk9o0EFxA00chkDHCgE5A7cHI/wrUuoXk+oWMhtWhjlgmkSMzD8zhSu7jg8++M0F3Sq3S9Qlk0BNQvlWPEPVZlOdy4yTjy+1aIby8m1m16ts0CPayyLH1Q27lMZHkRn+e9Bc0qmXX0Ed4ZIF320PW2wzCQMMkYyOzZHatkusPbi6FxZMjwRLMqrIG3KxI5IHGCOe/HrQWtKpLvVOi+n3VxIkMBaUyGOYSI6iM4ORjPPYetbLnW/DlI3t0ScxdZ45Z1TauTgZPdjg8dvegt6VVapeObGwubTe3WuISFB2l1bJwafjDLvhe0IvFmWEQrICGLLuB3Y7YBPbyoLWlVn4u2OkbUi78QLcxGQbQxXcDux9JXntnyxXtlqxuZbeN7bptO8qDEgYDp9/LnJzQWVKrE1dpugltaGSaZpMI0gUKsbbSxOPXGBjzqNp2pXAsLdOkZrmZ52xJKFCqjnILc+oA/6UF5SqQazlEvDBNzZG4MKygqF3jnt9WDn+PepF5rUNrJKoTeEMaqxcKrO+SBk9sAZJ9DQWdKpl1I3l1YhCEK3bRSiOQOjflMwwR3HY/esotdRrCe8kgCRRcBRKC+4ttCsvG059aC3pVOuvL05P+zrJKkkceyCZXB3nC4bjzByK91ya7XSYdsW2WWeKORUm24BYZAbHn2z70FvSqyLUJS1zHFZkx2ZMbO84GWCg4BP35J/mtul6iuoCcbUV4HCNskDocgEEMO/BoJ1KpPxKe7udMlSBobSa4O1zIMyLsfGV8gcZHJ7Uj+IFnH5MUbdVHaDE6liVBPzL/TkAkd/fFBd5PqaVVQ3t5J8Lm9eJVuDbdQYcYJ253duPXFaNPvriKyht4bOS4nWBZ5t9xn6u2GPdjgnHAFBeU71Wx6uJ540trdpI2gS5aQttCo2fLuTx2rC11ea4kRfBALJbm5Q9cElfIHjAPI88ftQWtKp119PD3TtArPbGPKwzCQMHOBhuBnOeK2Nq7xLcrPZlJ4HjQIJAQ3UOFO7HHPf0x50FpSqn8YmVWD2OZFuhahUmByxXOckDjt/9ija2I4D1oFjuBcG36bTAJuC7s7yO2Oe2fLFBbUqJYX63tk1xGgLIzIyK4ILL6N2IPr71UWGqR2Vtflg0zwBJSqTCQMGO3gj+rI59aDoqVrt2leMGaIROT9Afdj05qmEt9dafc6nFevEY2kMMAVTHtQkYbIySdp5yMZ4oL2lU8uusImlhs+okccTybpQhHU+kDg57/8A5q4GccjB8xQKUpQKUpQKUpQKrJdHV2d0uXRjc+KTKKwVtu0jB7j+6rOlBX2ultazl0vJWRnMjo6ISzHuc4yATzgVrfREneZ7q5kmeSMRhwqowAYMDwOSCByf25NWlKCB+HNJCiXF00hSZJgwjVOVOQMD1r2TTib57mC5aEylTKvTVgxHAIyODjip1KCLe2XiZYp45mgnh3bJFAbg9wQe44H7VqttKit5raVZJGeAyMWbGZGf6if/AGqfSggwaXFDHZosjkWkjyLnHzFt2c/7xrXf6Ot5NO/ipIhcQiGUKqklRnGCRx359asqUESKx6OoSXUc7BZUVZIyoIJUYBz3HFYSab1tQjuZrl3WJi0cexRtyCMbgM45PFTqUFVHopigt0S8kElqpjikManEZx8pHY9hz3qSNPXr9Z5nZzbm3J2gZBOc4HnUylBXnSITDDH1ZMRWjWgPHKsAM/f5a2pYRpNHIHbKW3hgOORkc/fipdKCrTRlhEPhrp4njhWBmKK+9V7EgjgjJ596z1e1nuFslgZlaO5V2dQMoArc4PHmP3qxpQVZ0UHbJ4uQ3Im65mZFO5tu36e2AO3pW+LTIU0uXT5Hklil372YgMd5JPb3NTaUFYNHEhc3l3Ldb4DbkMqr8pIOeB3471kdLaSyktri8eVX24bpopG1gfIck4qxpQQbnTjLem6huGgldQkmEVwwGccHsRk80m04z30M8ty7JDIJI49ijacY+rGce1TqUEG90uK8edpJJF61v4chccDJOfvzWEWkpi58RO85uIRC+UVQFGcYA7fVVjSgrhpCJaW8cdxKs9u7SLcEAszNncWHY5ycivYdKjieGQzSPLHM87O2MyOylTn0GDwB6CrClBXzaUkizbZ5EkkuVuVcAHY4AA48xx/NbbyyN0lv/wBoeOSBxIsiqOW2kcg8Y5NS6UFdHpKp0nNxI0yXPiXkIGZG2lSCPIYOBjtisLXREtpID4qV0ty/TQqoA3gg5IGSee9WlKCvTSIBBZws7ulrE0IBx86su05/QV5aaUYJ7eSS8mnFsjRxK6qMKQByQMk4A5qxpQQrXTVg0ttPllaeAoYwGABCEYxkd/vWhdG3f/MX08+Ld7ZchVIRsZOQO/A5q0pQVP4GrwypNdyOZLfw2QiqFXOeAB3qXLZF7uS5juJIpXiWIMoB2gMWzz98VLpQVcWh2ytE0rdYpM85DIoVmZdp+UcAY/mi6MIum0F5Kjxx9LcyK+5MkqCD5rnAP75q0pQRb2yF3BFGZnjaKRZFdQM7l7cEYqN+DqUZ2upTdNMJvEYAIYDaML2xjIx7mrOlBRajpbrbIAZbhpLkTXEvTVzwpA+TsQOBjy71stLC6mhiaSVrV7WVvDssKqemVAIZOQPP9hVzSgrI9GECW/h7uaOaAyYlIViwdtzAg8HnH7VBvtKaJLOBBNNBF1WZ+isp3Mc8qePM8j/GuhpQVun2criO6vhibotAYwoAKFsjIHY4AyAcV5HokMenC1E0pZZRMsxwWVhwvlg4AAx6VZ0oIP4ezC2aS6ZpLeYyhhGqg5UqRgeWD960PoiTvM91cyTPJGIg4VUIAYMDwOSCByf25NWtKCD+HM8KpcXTSlZklBEapypyBgetb7y1W7jRHZlCSpKCPVTkCt9KCBPpUc1vdxdVx4mYTE4B2sNuODwR8o4NbbGy8LJPK07zSTsrOWAAyBjgDywKlUoKy30cQSWw8XM0Fq5eGEquFyCME4yQAxxWyz0sWgMSXDtbBSqQlF+UHy3YyQPKp9KCHb2Bi0o2D3DyJ0zErlQCq4wBx3IHnWp9JwVa2u5rduisDsiqd6r2PPYjJ596saUEGLT47MvJag7ltlgjjJwMLkrz6896ptP0u4aDwLRyR280JS5Z7dI2Bxxhh9Rz65GM109KCrOjK6z9a6kkecRBmCKoHTbcMAdqx1iweSG6lhV5GuWhEiKAcKh5IB+rv2PeralBS6fZTyBUmBjt7edJoPyViZiAd2VHlz3796ky6RHIZHWZ0la48QjgA7G2hSMHgggefrVjSgiyWXW0yWynmZxKjI0iqEPPoBxURtEWSOYT3cjtNEkRIRVChW3DAA471a0oNaxuLmWUzOyOBtjIGExnJHnz7+lQJdHD9aJLyaK0nYtLbqFwSfqAbGVB8wPU9qs6UHPahaXQ1Sae3t23qiC2xAsifKOPmJ+Tk/41fpu6a78b8Ddt7Z88VlSgUpSgUpSgUpSgVTS6nepJNKEt/DwXi2zKQ29gSoznOBjd759quajNp9s0cqFDtlmE7DceXBBB/wCUUEQ6nMLd5OmmVvxa+f07wufvzXmpC4bXdPW2aNZDFON0gJAHyeQxn963tpFm1y05WTJlE23qNsEg/q29s8VKaCNrqK5K/mxBlQ57BsZ/uFUVH4vcyabbTRmBLiRHJi6byFipwcBewyO57Zrba6ldXt3bJCkMcUlrHcuXyxG4kFR+3et/4NZbYwqyoI1ZPklZdysclTjuM1vtrG3tnRoUKlIVgXknCKcgfzQQZphb65ezF40CWMZ3SHCj5371DOtX4kuI1jjdoFEgPhZQZsg4UD+nseT34471b3Om2t1JI8yMxliEL4YgFQcj9QexrWNHtRJ1Q9yJSMPILhw0g8gxzyKDT+JzR6k8dwEghAJjR423SqE3ZVs7c9/l78VFh1u7e1e4MCshtXnUCGRRGQu4KzHhsjzGO1Wh063a7FwxlZlbeqNIxRWxjIXtnBNYxaVaxQyQKZuhIhj6RlYoqnuFHl/hQRvF6k01nABaLJdo8mSrERgBSB3+Y/N7VHXXLiWK1RUjjmljd5G6TyqNrbMALzyfM9h61cC1hE0E2074EKRnPYHGf7hUc6TadKJEEsRhLbHjkKsNxywz6E+VQRdSvLtvhtLqIeGnfp7lcHK5cAjyP/tWOpapc2Ln57eUwhOtGkTk8nBO7OE9RnNWc9pDcWRtJQzRFQpyx3cdjnvngHNRpNFs5S3UM77wu8GZsOV7FvU8Dn2qisuJbqKS+NrKsbNqkSEsCcgrGMcHt6+1dEoYIu8gtjkgYBPtUSXTLWUXAYSDxEiysVcjDrjDL6HgftW6G2SGSSRWkZpAoYu5b6Rgd+3v61BupSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApStS3MDXLWyzRmdV3NGGBYD1I8qDbStEV7azXL28VxG80f1IG5HrWyeVLe3knkJEcSl2IGcADJoM6V4jB0DryrAEfY17QKV4x2qWPYDJrC2njubaO4iJMcqh1JGMg8ig2UpjnFarW4juoBNCSUJZckY5BIP8g0G2lK1T3Edv0+qSOpIsa8Z+Y9qDbStUdzDJ9L4zIYgGBUlhnIGe/Y1toFKxjdJUDRsHU5wVORxwayoFKwmlWGCSaQkJGpdiBnAAya9idZYlkTJV1DA48jzQZUrXHMkkksak7oiA2VI5Iz38/wBK2UClavEReL8Lk9Xp9TGONucd/vW2gUpUe6vIraSGNxI0kzFUSNdxOO5+w9aCRSmKxkdIo2kkdURRlmY4AHvQZUqNFqFnNbyXEd1E0UX1vu4X7+lefiVj4UXPiouiW2h93n6eufaglUqNJqFnHapcvdRCB/ok3cN9vWpCMsiK6MGVhkMDkEetB7SlKBSlKBSleMwRCzZwASeKD2lYwyLNCkqZKuoZcgg4Pse1ZUClKxkdIkLyMEUdyxwKDKlYu6RrukYKMgZY45JwP5rRPfW9v1eqzDpFA3yH+s4X78/tQSaVhJLHHJHG7hWkYqgP9RAJwP0BrOgUpTzxQKUpQKUpQKVqtriO5jaSIkqrtGSRjlTg/wAittApSlApWEkyRPEr5BlbYuFJycZ/Tt51nQKVHS+tJLs2qXMTTjOYw3PHf9qR31pLNJDHcxNJECXUMPlA75+38UEilR7a/tLpXa3uYpFj+sq30j1Pt71sgnhuYRLBKksZzh0OQccd6DZSo93e21mENzMI95IXIJ3EcntSO9tpVhaKUSLOxVGQFgSAc5x27HvQSKVqtLiO8tknhJMb52kjHnj/AArXb31vciExMxEysyfIRkKcH7UEmleMQilmICgZJPYCisHUMpDKRkEc5FB7StS3EbXT2wJ6saK7DHkxIH9xrbQKUpQKUpQKUpQKUpQKpzd2g+Lo0FxCJPDNGRuGd+9SB98eVXFMD0FBzmmMjfg9shHibZpTcL/UnDBt3pliPvWOuSRNLqsd5cyRslsPCxiRlD5Q5IA+o7uD34rpcDJPmaYGc47UHK6xebEbpSNFcW0ULKWnYFs4PyIOCMcEmt+o9Ufit0J7gSWtzGIQshCqMJn5exzk966PAznHPalUUHWWLXZUM/iWmaRV2TMGhwh+Vo+23j6vUiq+zub+LQ8nqRzeBjNqqMSOmMB27fWO/ngEY866/AznAz2zSgqtB5knMdzDLAdm1I7hptjc5O5vUY49qrNI8RKEt7h5IIJfER2zRuRl97ZLY88fT9j511AAHYAfalQc0uoSy2ctzcdYLbxpayKshjHWLDexYdgOOfIE1qgmOzY0yvDDqcOxg7OqggHhm5IyT+9dVjjHrTAxjAxVHMT7ZHtZb2aRYo9TnQuZWUIuHAGc8eQH7edZ2r3E+qkSXUcVwLplKNcOGMWThRHjGCuCD685rpCARggEe9MDOcDPbNQcnaLBHokMa3yRyJO/WhnuXQOQX+UtnKeR98edSH1NUjndpZoFm0xWt45WJYv84OPVvp9+xro9oOcgHPfjvXvnnzoOVvJkkhuVv7mWNlsEa2TqMvUJQ7iMfUc4GOf5ry9lLOls910mNpAYWa56KxE53HGRuzjyz6cV1eBxx27e1QbnTFnmmkFxLGJ1CyooUhgBjjIOOD5VRXzSzRT31wk0nSsrmJ9u4kGLpqHHvwS33FR55blltJLmXZbXbSzN1Z2iUEkdNSy8j5eccAmujijSGFIo12oihVHoAMCsyARggEehqDmlMizATagiyNpjBbpSWH+s4YHzwCMn9a1tdt4NIYyqW63QS4lF07RMCmRiTkhScZ9+M811PnnzrwAAYAGPTHFUc9DHLNPp9vJeGS3kNwfyJmIZRt2qX4Jx61NvoEk+ItKZt/Al7OQOApHY/wD5q1xilQcxBIqaLZSXMsry3jENJNcvGg27sAkdhjsB3NWGj3Sr8OC4vZg0cRkDSPk/KrkDOeTwB35q3wCMEDFKDmHuIb23uNQEsbb57d5IUYM0cKPwXx58kn07eVSPxO1s5dR1AskkMkyLAQRiSQIAcHt7FvY1fgAdhXmBjGBgeWKo560e2tJ9OuZLuCSAeI6k6MOmszkMRny43Af+9b7WK4Hwmhg3pMgM0S8gkByyqfYrxj3q6wMYwMemK9qDnJb1LiDxMjsIL2ciAvO0UaIqnBYjnkgnHmcVjYNNeppcM1xM0beJD7XZeoEYBcnv2/WulIBGCARSgrL+M3GtWNs8kywPFKXWOQpuwUxkj71VWtx1IbBdTu5Y7QwyfmGUpvkV8DcwIOQoyPXmuooQCMEAj0oObtBcXzWUV3Nc7Ws5XIDtGXw4CM2MHO3BryyeeOLTrjxFw8l1YytMXkJDMFUg47AjJ7V0tKDm4lkvERZri5wulRy/LKy5k+b5jjua0TXNzOYvEXSQFrKKSGSSdohvIO5htGGIOOD+3NdXTAOMgHHIoOen8YTrE6SyyXNsiCFVY7QxiG4hfM9zzmodygl0i7ZLuOS3UROUiunlKneMsScEfL3HtmutrwADOAOe9UU+vJbvoUbJKzW6TRN1FlJ+TeMktnkY8/1qJqUo6eoqszPbRizZCXLKBv5Of05NdJgYxgY9K8wMYwMemKgrNamit77S5ZpFjjW5fLscAflt51E1m+t7gxxwXC/NC8kcwuGRCQcYUL9bZ8qubmWSKMGK1e4JOCqMq49/mIqN4y74/wC57jjt+dFx/wA1UUtjJLLZySHVEgka1PXYzO7o5x8zKQNhByOMd/ajXbG1iijKpbLcmOeQXbtE3yZXEncKT39+POrrxt4CT+D3GT3/ADouf+agvLsLtGjT49OtDj/6qCtgjlnuNPt5bxpYHW4b8iZiGUFdqluCceteKJQYrvr3Bl/FGhwZG2iMuRt29sYqz8bef7HuP+NF/mp428/2Pcf8aL/NQVGnzXEt6Hmu44rlZZBNG07F9o3cCPGAANpBHp71M+HpV6stv1RcOsaO1xHO0iSZJGSD9DeZFS/G3mc/g9xn160X+agvbwdtHuB58TRf5qCltXiR06FzJ446k46IkP8AqzKd2U7bduTnHfzrZbXDGa2bxMp1N7wpPAXOBHuOQU7BQuCDj055q28beZz+D3Ge3+ui/wA1Be3gOfwe4z69aL/NQVGmSeI1KMvd/mxvN1N11zKQSFAjzxjHYj96x0i4WQaU9veTT3MkTG7Uys+F2HlgeFIbbjt+tSIrSeMwq2n3skUD74o2lg+U845BycZPc/vUuzkuLOzitotIuSkSBAWmhyQO2fmoIen9WOy0OYzzvJdSKZ2eRju/Kc4x2x249q26DMovJLfr+Kcx9Q3CTM6t82PmU/Q3sPSpvjbz/Y9x/wAaL/NQXt4M40e455P50XP/ADUENr6zvdbht0uII1s5SRlgGkmII2qPQZOT5nj1qLp8kPT0iEsoks45Tdhv/DG0ht3plsHnv3q28Zd/7HuP+NF/mp4285/7nuOe/wCdFz/zUEPTL+yvb241FrmBU6IRIy43LEpJLuPLJPbyH3poV/ZR6U5NzEFW5kBwc43ytt7euRipnjLv/Y9x/wAaL/NUi1mlmDdWze3xjG90bd/uk1BW67J0tQ0xzdLagPL+awBA+T34qLp0siy2ipK0iPqMm6dQVFwDGzFsdsZ444+XiujxmlUcrozxoulra3MjXbTMJoeoSBHls5XsAPlwcdz51lYT3KWFitozGQWl0RGOxkVhtBHqDXUYGc4pgDyFQctuSeHpWN1cXIlspWugZWYhto2k8/KxbIwMceVY9aPpafElygsmtch3u3RerxkFhk5A7Kff0rqxxnHnzXm0YxtGPTFUcvPJexXbF5DJGLO3N3cQsQxQM+Svnz3J9AfPFbLy9Dauj28pR47uKIqZ2LOpxnCdghB7nvXS0wM9hUHNTG4TTry7WaYv41oWYyMBHCJOcY7fcDIFeqJWjt4kvQ1vLfKg8NcM+1em25d55wSM+2a6SvAABgAAegFUeRoI41Rc7VAAyc/yaypSoFKUoFKUoFRLa+Fxe3MCR/JbtsaQuOWwDgDv596l1zs+m7lvQtnjq6lEx2pgtH8mTkeX1fzQdAJEJUB0O76cMOft61pnu0gureBlOZ9+GyAF2rk5qh1a2drqSO3sOm0Lw9Aw2uSygqSd/ZQORgc/vVpqdoLrVNO6kAlhR5S+Vyo+TjP61RYF0Cby6hf7RPH71q8Uv4j4PY24w9bd5Y3bcVzpsp44bQSQsLWGW4HTNv1QmX+Q7PTbkA+Wfetj2N2kZhtTOXbTXjikdChDb8hf/KcHAzQdIrKwJVgwBwcHPNaLW8juIpZMdNY5XiJcjupxmq/Q7ZI55ZYxJGDGqGI2hgUEE/uR2zURklWFoZbIsjX87M725l2AklSF885xnsKDoiyqu5mUDGck4GKFlABZlAJAyTxXO6ZpzOdKjvLRmjhjuFZZk4X5xtBHbt2Fa7O1aFdO/ELKWa2jhkjWPpGTpvv4yvuvAPlQX1neR3djHdY6aSdg5HHJH+FbBcwm7NrvHWCByvsSR/ga5iKyuI7XTvEQMLdIHQxtbdbpuXzynlkcZ5/mp9hZJaazA0kEkhazjRLhoed6ls7j/SdpA5oLVLyNr6e1I2tCEO5iAG3ZwB+1byyhgpYBj2BPJqg1TTvEzazK1p1XNoggYrk7gr/T75x2rRq8VxPPJts2E0ZhMciW+5nxtJbqf045GBz+9B025c43DJ7DPNaLa8juJJ0A2tDK0WGIyxAByP3qJptmqahqNzJBiV7k7JGXkptXsfTOe1Vd1aF5L+NLGXxs16Hgn6RwoGz5t/kBg/f3oOgtLpbo3AVSvQmaE58yAOf5rcGUsVDKWHcZ5FVmnu1tPeJJBP8Am37bSsZIwyghs/2eDzVdZRTNrVrc+DaBg8wmVLfYFBBxl/68kA+lB0vasGkAid0xIUB+VSOSPL71V67KLj4VuZenKgeIHZIu1x8w4I8jUOaLbLez2WmEWxhjieJ7cgO2/ltnBbav79qC7sLhru2ErR9MliAM5BHqO1eWF7HfWkc6DbvBOwkbgASP8Kg/D0LwSX2Y3SJ5lePdD0gRsGSF8uRVdptoUXTki0+WK8hmaSaVoinyfNwW892VGP7sUHThlZiFYErwQDnFeLIjEhXViPIMDXLW8Uoka48NJahrKZZhHb9FY2wCF3H6iOeTxWoJbjTrpmRYLl7JY0ijt3jLBcZOWA3ElgCB5etB1yyI/wBLo32YGvQ6sMhlI9Qa5c20M8N3HHCq3E01u7wRW7xbY1dQSNwBI4OT5VK1GI202owwWUpS4sRFAsEWV3DfkccL9QPNBfFlXGWUZ4GTWm9uks7SWd+emjPtBALYGSBVHcaaZ49RaWzMj/h8awlkyd4V/p9849+1a9RtmddRF1YTXM89qq2riIvj5MFQf6TuyT2zmg6UODEJCQqlQ3J7VGvr4WqwBI+tJcSbI1DhQeCc5PlgVH1beNNgTw4lUugk3RGXpjH1bB3wcD9arLPTnZbFZrNikWoSsBJCBtjKsQcdlGccfag6VmVVyzBR55OKBlLFQw3DuM8iqy+sku9btzPbCaBbWUHeuV3Flxn3xmq20064httNa3tzDdNZSpLJjBDlV27z9/WoL68u47SxuLk/mC3QsyqRnjy9jS9u47OyluXGRHGZNgIBbAzgVzaWDnSbsRxTLOLJomhFoY9zcd2z87ZBwR6n1rbqlv1hqnVsJria4gXwjiEttGz6Qf6CGyTnHeqOiimMkroYnUKFIdsYbIzxz5VsDqVLBlKjuQeK5++s55W1BehIyyvaYwD8wBG79vOteo2otTqCxW+yB7i2aONY/kkPG4bR9Q45A54ojoxJGVLCRNo5J3DAr0uoXcWUDGck8Vynh0ZFMCrtW6Mt1Clox6e5TsPTIBYDv9yTjipttpqNdacJInmt0W4fEkOxUJZSo2nsO+AaKtLu+8Pd21skRklnJIG8KFUYyefuOKkmSMAkyIAO5LDiq+7tFl1+wnNuriOOXMhTO0/Lt5/fH61VwWfhtF06J9PXdJzcSNbdV0YA4yvmT2yeBQX97crZ2E90yllhjMhC9yAM8VtDr8oLAFhkAnk1Rw21wPgia1MMnW6EqLGy4bu20Y+2OKja1BPfGZIrNhL0ozA62+Xk4yfnONmORjg0HSh0KFg67R3bIwP1oXQIGLqFPYkjB/WucFlBJaTti4jRmi+SOxKKrKSQSn9Q8j9hWEkFxJ4SS5tFjthHImxLMyKrb+G6fddy/tyPOg6csqnBYDy5NAylioZSQM4B5qlsNOCakHmjeYQ2USRyzJzuBbPHk2Me4qLZabNBbaS1vbmC58LKksm3BDFBjef/AFetB0gZWJAYEqcEA9qZGM5GPXNUPw/aGKeJ2WSKWOApKnhTGCePqfOHOQSD7mtvhJ/xfwoibwZn8bv/AKc4+jPrv+aoLgyRgMS6Db9WWHy/f0r0sqjJYD7muRFtJJc2109iYlUOLiNbElYye2R3kwc884znzqxsdNUX9n1InliitG2NNFgKxkBUbT2IHYeQFUXbSxqHLOo2DLc/SPevIJ4ri3SeJw0bqGVvYjNc1p2mu6CO4RxcrFIsoNrgSkgj5pM4YE4I/wAKn28Ofg6S3gtnjlFqyNH0ijGTZg8Y5OfPzoLgyIM5dRg4PzDg+lesyqQGYDJwMnGTXPvo8BunHgEMZ07GNnBkye/q3PfvUaayuJOn4xZSsllFGjeFMzI2DuHqrZIOfbvxQdDqF5HY2ctxIN3TXdsBALfatlxcQ2xjEzheo4jXPmxz/wBK5vU7Rmj1OKaymubuXZ4eYQ7/AJAqjhuykEMSPfzq11+3jmSzlktuvHDcqzgR7yEwQeO5HIqCRNfiF1V4JAGuFgVsjDbhncOe1S2dUGWZVHbJOKoJYJhcyyiCTZ+JwyjCH6AijOPQGt+uxmaaKFrTqRtG/wCYLfrENwNoHZc98n0qi08TD4vwu8dbZv2+2cVsyOeRx3rn9MtTDqFjNdWjmVrCOPqGLcVkUnO444OPM1lqqzJPqyLbXEpu7NUhMcZYFgHBBPYdx3qC4vbqOzs5bh+RHGz7QQC2BnArarhkDZAGM9+1c1qVruGpLPYS3E01sq2rCIuFwmCoP9J3ZPl3FSriznN94VYnNre9KSZscIU+oH/1AIP3qi7LoCwLqCoyRkcD1NaZLtEvLa32ljcK7KwIwNoB/nNc3d201xeLcNYtG0dw5mRLPcNnIBJz+Zk7WwP24qZb2xguLF163Qzcnd0TEItwBAwfpHBxmgvg6MxUOpYHGAwzXqsrjKsrAHHBzXHWkHVsQIkWG+exMMAEDo0p4ZjvYAFsZ7HzJzV3oVukc8syB41ZEQx+E6Cggny8zzjNBPuryO2aFWG5pZViwCMruzgn24reGUsV3DcBkrnnH2rmYrUiS2R7CU3yah1JrjpHBXc3zb/MYIGPLHatmm2Uq6jGbnqJcxzvIzi1/wBYDu7y9ipBHHsBjig6OlKVApSlApSlApSlApSoralYrci2N3EJi2wJu53en3oJVKjG/sxeeENzF1846e7nPfH3x5d6wfVdPSYwvewLICQVL9iO4+/HagmUqINQhmS3ktZYJY5ZemWL48jkDjluO3FexalYzXC28d3C8rZwitknHf8AX2oJVKjJqFnJPJAl1E0sYJZQ3bHf9vP0rD8V0/otL4yIxhgu4HIJIyAPXj0oJlKiy6jYwxRSSXcSpNzG27hx6j2960W2r2x0u0u7uaKA3EYcKW498ew9aCxpWi5nMUcTIYj1JETLvtBDHy9T6DzpdXtrZlBc3CRb/p3Hv60G+lRnv7NLtbVrmMTsQAhPJJ7D71i+q6fHMYXvYFkBIKl8YI7g+9BLpUUalYm08ULqIwbtu/P9Xp659qPqVilslw13CIpASj7uGx3xQSqVW2usW0l1NbzTRRyrcGGNd3LjAwfuc1K8daeM8J4iPr9unnn1x98c4oNlxBFcwPBMgeNxhlPnWyoSalbpZxz3c8EQkYqNj7gSCRwcc9ufStdrq9u+lw3l1LFCsrMF+bIOGI49eBmgsaVqe5gjtxcPNGsJwRIWG3B7c/rUZdY0xtuL6D5n2D5vP09u4/egmSxpNE8UqB43UqynsQe4qJ+FWRVleN5dy7MyyM5C5BwCTxyAePQVtkvrSK6W1kuI1nbGEJ557fvUa81e3guYraOWKSdp0iaPdyoY8/qBziglW9nDbu0iB2kcAM8jl2IHYZJ7VvrRdXtrZgeJuI4sgkBjycd8Dz71hLqNlDbxzyXUSxSjMbbshx3yPWglUqLcalY2yK813Ciuu9SW+pfUeorxNRs5WkjguoJJY0LlQ/GPXPp2+1BLpUJtVs4beJ7q6t4meNZCA+Rg+YPmO/Nbbi/s7ZkWe5ijMgyoZu49ft70EilRLrUbaDqxCeDxCIzdN3xjC5+Y+Qx515Lqllb7VuLuCJyFJUv2z2/T3oJlKi3WpWNnJ07m6iibAOGPr2/eh1C0MzwJcRtOqk9MHntn+6glVqubaK6iEcykgMGBBIKkdiCOQaj2WoxT2NvNNJHHJLbi4ZN30rjk/b3rOLUrGa3knju4jFHje27AXPbPpQbLa1htt5iVtznLuzFmY+WSea3VB/GdMxnx8GN+z6/P/wC/PtWN5qsNj4h7loxHE8aDa+WJb1Hl6+4FBYUqK+pWKPEjXcQaUAoC31A8A+2fesmvrRbwWjXEYnPAjzzn0+/tQSKVFTUrGS5Fsl3C0zZAQNySO4+/B4qQ7pHG0jsFRRlmY4AHrQZUqKupWLWrXIuo+ip2lycYPkPvXp1GyFslwbuIQuSFfdwSO4+/B4oJNKiQ6rp88kccV5C7yjKKG5b/AN+DxUgyxiYQl16hUuEzyVBwT9uaDOlRZdSsYoYpXu4lSYZjYt9Y9R7e9aLfWLb8Mtbq8mit2uIhJtJ4Hr+g9aCxpUOXVdPhEZkvIUEi71Jbuvr7D71sN9aC4EBuIxK3ZM89s9vLigkUqJHqdhLDLMl5C0cQy7BuFB7H7H+a3Q3ME9v14pVaIZy+cAY759KDbSq261uzj0u6vIJ4pvDrkqGxyfpH6+tZSahJDpcFztiuJJXRF6TFEYs2AQTnigsKVBg1Jd88V5H4SWBQ7h3BUocgMG8xkEVsTUrF7c3C3cXSDbC5bADehz2NBKpUVNSsXtjcLdw9ENsLlsAN6HPY1hHq+nStGqXsLNK21AG5J9PY/egm0qOL+zN54QXMfiM46eec98ffHlUe51a3QKLaWKZ+tHG6hs7Qz7SfvQWFKjTahZwozyXMaqrmMnOfmHcfcVIR1kRXRgysMgjsRQe14yq6srAMrDBB7EV7Sgi2+nW1u6PGrkxrtTfIzhB6Lk8VKpSgUpSgUpSgUpSgUpSgUpSgVTS6dcNbXiiNd0uoJcL8w5QMhz+ymrmlBRPp94Y5bAQL05LzxPit44Xfv7d93G30962HTZzEFMaZ/E/FHkfRuJz98Vc0oKf8PufGdTYu38S8T9Q+jp7c/fPlXltp1xHaachRQ0F480mGHCkyc+5+YVc0oOf07SriBI4J0nY26uI5OupjJKkAhe/Oex7e9ZPpl1HaaSY1k3WcPTkjgkVGGVUEqTweR+uavqVRSW1lcWF1DcQWjyq0BiZGmXfGxcuST2IOeceg71Gi0q9t47JtkzFLQW8iW8yqVIJPduCDn+BXSUoK64sX8BYW8CcW80LEM2SFU88+fFYaxb3MkiS2cMviVjZY5o5VXaT/AEurd1yATVpSoKG+tNTurgq6MyrPFIhSULGFUqT8vctkN39q2HTZzEymNCTqYueSPo3Zz98eVXVKoppbXUInumgVtk151GETqHMfTA+UngHcOfPFa7DTLqKazeWMAQ3FxK2ZN5UPnac+Z5q9pUFDNY3siXtmLZRHdXfWE/UGFXKnJHfPy8V7Bps0eoOJ0uHhN2blXWdRGMtuGVPOQePer2vHRZEZHUMrDBVhkEVRzukRXCRWF/BB4lUWeMoHCld0pIYZ48sGkWl30EdlLtl3xJKkkdvMqsu59wIJ4I8j2rokRY0CIqqqjAVRgAewr2gqrjTmPw/FYwRkFTGdkjg4AcMQT2PGa16hptxOutdONC12sYiOQN20c59KuaVBRSaZP+I3IkS4lt7i4WYGOdVUfTwwPPBXy7+1eJZXyJHaeFUpHfeJNx1Fw67y2cd93OP071fUoIctvI+t2d0FBjiilVjnkFiuP7jVZYWN7pxtJxbCdo4HhaJZFBQl9wIJ4wex/Sr+lUUum6XcWstqZFjIjtJY2KnhWZw20ewGRn2rCHS7lLTTY+mga3spIZAGHDMqgD9wavaVBTW2nXEanfGufwxLbuD84zkfbkVF/CbuPAZJ5EmtIoJFgnVNpVSCDnuDk8j34ro6UFO+mzCDWUjQZuowkJLctiLaMn7+tYy6bcPFqYEak3FkkMfzDlgrAj2GSKuqUHL3e6K6vmdJmtYlha5ETJklFDc7iD6du/3qfHBdfiLSW0MkNvMWeYPIpSTK8Mq/UrE4z2HfvVnJaW0swmkt4XkXs7ICR+tbqo5mDQ76HSWtCVlae3j3mRh8skZGE4/oIGPbn1rff2F7qPjJzbCBpIEhWJ5FJfD7iSRxgdh+tX9KgqNQ06adtYMcaHxVqkUWSBkgNwfTuK13enXbpqJRATK1u8Y3gbungke3arulBQXOnXM97dSSQXJhvQm5I50XZgYKtny88jPesk0ydNRlWVbiSCS68QrpOqoOQfmU85BHl3q9pVFNFp1wttZp01DRX7zvhh9JZzn74YVKSU6lpE/UtAwffH0jIMSAEjIb0PrU+lQUS2upEwzvHJKtrcb4oZ5FMpQoVOWHBIJyMn7msodPumuYrmSFU3X5uWi3A9NemVHsTnBOPWrulBTLp1wIlHTUEambk8j6NxOfvg9qkXkV0mrQ3cFv116DwsN4XaSwIJz5ceXNWNKChsLG+0/wknhVnYWQtnVZADGwYnOT3U55x6DionhbmHw1mEfqJpwiuBCyZ2lsf1kDybkfr5V1NaZ7W2uSpnt4pSvYugbH71Rzptbi+S4ktbVpLK+hQx73C4ITaN+TkqO/Gcmp/wCETNFqkJcA3NvHDHMTycIVOfPv/fVyAAMAYApQUMenySQytcWV08nTWPa90vkwb5CO2CAQTj9Km2y6kNIuFdgbr5+h1ipOMfLvI4JqxpQc5Jpt/PFqDGOUNcWYhXrzKzFwWJzjgDnyq11eCeezjEEfUkjnik27guQrAnk1OpUFNLb6nK91fJGkNw0SQwxB1ZgobcxJ+nccnHkMCo6aXeO07NE2JLq3lAmlDsVTG4k9s8dq6GlUU1xp1xJeTyBFKPfQTDLDlVVQx/ilxptw8WoBI03T3sUycjlV6eT/AMpq5pUFFNaajcanE8qOUhvBKrdVRGIxnGFHJbB5zXp0u6OhpaJiKbxnWLIRlV6pbcPfbV5SqKI6fcQ2MVuLeV2tZG6E8EypIFI4Y54JOSGz3xnzq3tBOLOEXRQ3AQdQp23Y5xW6lQKUpQKUpQKUpQKUpQKUpQKUpQKUpQKoLjW54bq6USWZ6NyIUtjkSyg7e3Pf5j5eVX9Us+k3cov4A9oIL2UuXZWMiAqBwO2eODmgzvtSkt5JNku8R3sULKsJyFYAkee4nPcetZTarvWHw++OQXcUE0cqYZQ3t7jGDWM+kzs80kU0YZrqK4TeCeEUDBx5nFeNpVzI7XMkkPiXuYpiq52BY+AoPfOMnOO9VG9NTjjjYyO08jXEkUccUR3EqewGecAcngVrfW4uvZpDDNKtwzq2IzuQr3BHqD3FYjSriGVbiCWIzR3E0gV8hWSQ8qSOQe3NeR6VdQyW9yksL3K3Ek0oYEId4wQO54GPvRUyPU7eS5EKiXDMY0lKHpuwzlQ3meD+xqNYaxE2lwzXUn5otRcTMq8IPU47Z8h7VrsNE8HdKelbSRRyM6Skt1BnJAx2yM9/TyrHTtEl022EcEkL74dk6yhmSRx2b7YyCPTHpQZ6nqkyWcJghuoXmuFiJaDLKDySAeD7VJXVbbxAgJlP5nR6xjPTMn9nd2znj0zxUW30idFjDSRoiXSTrChZkjVRghSeeTzjsK9Gk3IUWnWh8CLjxGcHqfXv2en1efp5UEgaxaESkCYrExjLCI4L7tuwerZ8hXp1e1WNWdZ1cy9HpGI7w+3cBj3HIPao82jtLpj2xkQyeKa5QkHbkuWAPnjBxxXsGlMhtmEdvA0Vz1nWIsQw2FRyfPmg3JqUdw1qYZGjEk7QvHJEd24KSVPPynjOef5r221i0upoo4xMBNuEcjRlUYrnIBPnwf2rVHpciXUcxlTC3r3OMHsylcffmvLbS5ILfTUMisbOR5GwD84IYYH+9QbrbVre5uI4Yo7g9VWaOQxEI6juQfTt+4r261a1tZnjk6pEQBldIyyxA9tx8vX7c1TaBIY7i0TZHMzIyHbK5a2U/McoRhRkAEZ9McVY3em3bvfJbzQrBfgdUuCWjO3aSuODkAd+xoN9zq1vbzNGUnk2MqO0Ue5VZsbQT6nI/cVsubp4dRsrdVUrcGTcT3G1cjFUN2wttTumWNJBG8ey1eV1aUqowQoBDc9ifTntV1qNrdTXVnc2rQh7cuSs2cHcuPKgx1DUTZPcsD1OjamboiM5PJGd3p7Y96wi1jqX9vbG0uFEsJkLNGRt5A59ue/2pNptxdPPJPJEjTWRtmEYJAJJORny5oLG8a4tp5Db5WBraZVLY2kjlTjvx2PrQbE1i0dWbEyoI2lR3jIWRV7lfWvTq0PhhcLb3jxkFgVgJyoGd325/WoFtoLQ2kluUtMi3eGOcb95yu0Eg8DjvipF9pdxcC3RXheKODpNHLu2hsAbwB3Plg0GxdXjfUvDJDI0Rt1nEyqSpBz/ABgfvxW9dRtmWBgzYuITPH8vdQAT9u4qJa6XPbSW+JImQWa2sucg/Ln5l/fsa122k3qi2Wea3221s9uvTDZbIUBjnt9PagkLrVq8cTxxXMgm5iCwnMigAlgPQZFZtqMUMt20035cKxnZ0iGUtnA/8xJ8scVoudMmk0q0tFW2kaCIJvkLKVYKAGRl5FYSaNcMJX8UrTkW7JI6nl4vNh6E+lBnb6sDc3zTrLFDAIgsbxEPubPGPMk4xW86varFvkWdG6ohMTRHeHIyBgeo86iT6PcXgupLmSASTNC6KgYqpjzwexIOfLFZw6SyiBhHbQPHcrMwiLNuAUjGT580E+yvIr2FpIg67HKOki7WVh3BH7VIqDb2tzbTTNG8JWe6MzhgchCoGB75H2qdUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUClKUDJ9aUpQMn1pSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlApSlB//9k=' +description: 'A basic, formatted body of text.' +behavior_plugins: { } diff --git a/config/sync/paragraphs.settings.yml b/config/sync/paragraphs.settings.yml index cafb40940..c43733b43 100644 --- a/config/sync/paragraphs.settings.yml +++ b/config/sync/paragraphs.settings.yml @@ -1,3 +1,3 @@ -show_unpublished: true _core: default_config_hash: 7eR0sk71Eol86r_A7BMqn5_46wzenh5J1O5vZRCGKv8 +show_unpublished: true diff --git a/config/sync/paragraphs_features.settings.yml b/config/sync/paragraphs_features.settings.yml new file mode 100644 index 000000000..3c6e286db --- /dev/null +++ b/config/sync/paragraphs_features.settings.yml @@ -0,0 +1,3 @@ +_core: + default_config_hash: lQErqdedK_5v01xVINKpMQnPQNpp4vS6oMsdNYbPfTI +dropdown_to_button: false diff --git a/config/sync/purge.plugins.yml b/config/sync/purge.plugins.yml index b3b4e69e1..7b0f3d3e3 100644 --- a/config/sync/purge.plugins.yml +++ b/config/sync/purge.plugins.yml @@ -1,9 +1,9 @@ purgers: - - order_index: 2 instance_id: 65fc931232 plugin_id: varnishbundled + order_index: 2 - - order_index: 3 instance_id: 30cd45a1b1 plugin_id: varnishbundled + order_index: 3 diff --git a/config/sync/purge_queuer_coretags.settings.yml b/config/sync/purge_queuer_coretags.settings.yml index bb1dab68c..497d5ec33 100644 --- a/config/sync/purge_queuer_coretags.settings.yml +++ b/config/sync/purge_queuer_coretags.settings.yml @@ -1,3 +1,5 @@ +_core: + default_config_hash: lupV305oUaexr-RIL2JNFf1YeFYrY3pb5zHL1e6YRWw blacklist: - 4xx-response - 'config:core.extension' @@ -7,5 +9,3 @@ blacklist: - 'config:field.storage' - route_match - routes -_core: - default_config_hash: lupV305oUaexr-RIL2JNFf1YeFYrY3pb5zHL1e6YRWw diff --git a/config/sync/system.authorize.yml b/config/sync/system.authorize.yml deleted file mode 100644 index c469caee1..000000000 --- a/config/sync/system.authorize.yml +++ /dev/null @@ -1,3 +0,0 @@ -filetransfer_default: null -_core: - default_config_hash: z63ds8M4zPrylEgFRkRcOlfcsXWwfITzjD4cj1kRdfg diff --git a/config/sync/system.cron.yml b/config/sync/system.cron.yml index 6801fb591..49e58a00c 100644 --- a/config/sync/system.cron.yml +++ b/config/sync/system.cron.yml @@ -1,6 +1,6 @@ +_core: + default_config_hash: 5Pw921y1EPfFN98wykliBBLArm51pC-SmrXeYCe7d0Y threshold: requirements_warning: 172800 requirements_error: 1209600 logging: 1 -_core: - default_config_hash: 5Pw921y1EPfFN98wykliBBLArm51pC-SmrXeYCe7d0Y diff --git a/config/sync/system.date.yml b/config/sync/system.date.yml index 9559050a4..5527917c5 100644 --- a/config/sync/system.date.yml +++ b/config/sync/system.date.yml @@ -1,11 +1,11 @@ +_core: + default_config_hash: V9UurX2GPT05NWKG9f2GWQqFG2TRG8vczidwjpy7Woo +first_day: 1 country: default: DK -first_day: 1 timezone: default: Europe/Copenhagen user: configurable: false - warn: false default: 0 -_core: - default_config_hash: V9UurX2GPT05NWKG9f2GWQqFG2TRG8vczidwjpy7Woo + warn: false diff --git a/config/sync/system.diff.yml b/config/sync/system.diff.yml index c43dd916d..f2fff7b30 100644 --- a/config/sync/system.diff.yml +++ b/config/sync/system.diff.yml @@ -1,5 +1,5 @@ +_core: + default_config_hash: 1WanmaEhxW_vM8_5Ktsdntj8MaO9UBHXg0lN603PsWM context: lines_leading: 2 lines_trailing: 2 -_core: - default_config_hash: 1WanmaEhxW_vM8_5Ktsdntj8MaO9UBHXg0lN603PsWM diff --git a/config/sync/system.file.yml b/config/sync/system.file.yml index 5a6287026..de4742464 100644 --- a/config/sync/system.file.yml +++ b/config/sync/system.file.yml @@ -1,5 +1,5 @@ +_core: + default_config_hash: mguGHCYb9Dw5EcpfjwoShGV1Vjkbz3QuPRCLfxiye-g allow_insecure_uploads: false default_scheme: public temporary_maximum_age: 21600 -_core: - default_config_hash: mguGHCYb9Dw5EcpfjwoShGV1Vjkbz3QuPRCLfxiye-g diff --git a/config/sync/system.image.gd.yml b/config/sync/system.image.gd.yml index b676907e4..2d812667b 100644 --- a/config/sync/system.image.gd.yml +++ b/config/sync/system.image.gd.yml @@ -1,3 +1,3 @@ -jpeg_quality: 75 _core: default_config_hash: eNXaHfkJJUThHeF0nvkoXyPLRrKYGxgHRjORvT4F5rQ +jpeg_quality: 75 diff --git a/config/sync/system.image.yml b/config/sync/system.image.yml index 990d3dc79..2e18f7fc5 100644 --- a/config/sync/system.image.yml +++ b/config/sync/system.image.yml @@ -1,3 +1,3 @@ -toolkit: gd _core: default_config_hash: durWHaKeBaq4d9Wpi4RqwADj1OufDepcnJuhVLmKN24 +toolkit: gd diff --git a/config/sync/system.logging.yml b/config/sync/system.logging.yml index e95b28a48..d6164de51 100644 --- a/config/sync/system.logging.yml +++ b/config/sync/system.logging.yml @@ -1,3 +1,3 @@ -error_level: hide _core: default_config_hash: u3-njszl92FaxjrCMiq0yDcjAfcdx72w1zT1O9dx6aA +error_level: hide diff --git a/config/sync/system.mail.yml b/config/sync/system.mail.yml index 60ed34d5a..419e77e58 100644 --- a/config/sync/system.mail.yml +++ b/config/sync/system.mail.yml @@ -1,4 +1,4 @@ -interface: - default: php_mail _core: default_config_hash: rYgt7uhPafP2ngaN_ZUPFuyI4KdE0zU868zLNSlzKoE +interface: + default: php_mail diff --git a/config/sync/system.maintenance.yml b/config/sync/system.maintenance.yml index 79501fb1d..7bc5b985f 100644 --- a/config/sync/system.maintenance.yml +++ b/config/sync/system.maintenance.yml @@ -1,4 +1,4 @@ -message: '@site is currently under maintenance. We should be back shortly. Thank you for your patience.' -langcode: en _core: default_config_hash: Z5MXifrF77GEAgx0GQ6iWT8wStjFuY8BD9OruofWTJ8 +langcode: en +message: '@site is currently under maintenance. We should be back shortly. Thank you for your patience.' diff --git a/config/sync/system.performance.yml b/config/sync/system.performance.yml index a11e92c06..0fdf90a1c 100644 --- a/config/sync/system.performance.yml +++ b/config/sync/system.performance.yml @@ -1,3 +1,5 @@ +_core: + default_config_hash: b2cssrj-lOmATIbdehfCqfCFgVR0qCdxxWhwqa2KBVQ cache: page: max_age: 2764800 @@ -13,5 +15,3 @@ js: preprocess: true gzip: true stale_file_threshold: 2592000 -_core: - default_config_hash: b2cssrj-lOmATIbdehfCqfCFgVR0qCdxxWhwqa2KBVQ diff --git a/config/sync/system.rss.yml b/config/sync/system.rss.yml index 858f127d3..18b255d20 100644 --- a/config/sync/system.rss.yml +++ b/config/sync/system.rss.yml @@ -1,8 +1,8 @@ -channel: - description: '' -items: - limit: 10 - view_mode: rss -langcode: en _core: default_config_hash: TlH7NNk46phfxu1mSUfwg1C0YqaGsUCeD4l9JQnQlDU +langcode: en +items: + view_mode: rss + limit: 10 +channel: + description: '' diff --git a/config/sync/system.site.yml b/config/sync/system.site.yml index 80f88afe6..65463242c 100644 --- a/config/sync/system.site.yml +++ b/config/sync/system.site.yml @@ -1,3 +1,6 @@ +_core: + default_config_hash: yXadRE77Va-G6dxhd2kPYapAvbnSvTF6hO4oXiOEynI +langcode: en uuid: 13ef1a53-dfb4-4c82-9b64-44586a366729 name: 'DPL CMS' mail: admin@example.com @@ -8,7 +11,4 @@ page: front: /user/login admin_compact_mode: false weight_select_max: 100 -langcode: en default_langcode: en -_core: - default_config_hash: yXadRE77Va-G6dxhd2kPYapAvbnSvTF6hO4oXiOEynI diff --git a/config/sync/system.theme.global.yml b/config/sync/system.theme.global.yml index 0450b3a93..46e6002ca 100644 --- a/config/sync/system.theme.global.yml +++ b/config/sync/system.theme.global.yml @@ -1,3 +1,5 @@ +_core: + default_config_hash: KHk8rzK2GMRtdfoAeocFrll8Q7gGtiocl2GF5jnX9cY favicon: mimetype: image/vnd.microsoft.icon path: '' @@ -12,5 +14,3 @@ logo: path: '' url: '' use_default: true -_core: - default_config_hash: KHk8rzK2GMRtdfoAeocFrll8Q7gGtiocl2GF5jnX9cY diff --git a/config/sync/system.theme.yml b/config/sync/system.theme.yml index e5d141705..6ff067fe4 100644 --- a/config/sync/system.theme.yml +++ b/config/sync/system.theme.yml @@ -1,4 +1,4 @@ -admin: claro -default: novel _core: default_config_hash: 6lQ55NXM9ysybMQ6NzJj4dtiQ1dAkOYxdDompa-r_kk +admin: gin +default: novel diff --git a/config/sync/text.settings.yml b/config/sync/text.settings.yml index ef751a5ce..a295c7ea2 100644 --- a/config/sync/text.settings.yml +++ b/config/sync/text.settings.yml @@ -1,3 +1,3 @@ -default_summary_length: 600 _core: default_config_hash: Bkewb77RBOK3_aXMPsp8p87gbc03NvmC5gBLzPl7hVA +default_summary_length: 600 diff --git a/config/sync/update.settings.yml b/config/sync/update.settings.yml index aca754fef..61c8912e4 100644 --- a/config/sync/update.settings.yml +++ b/config/sync/update.settings.yml @@ -1,3 +1,5 @@ +_core: + default_config_hash: 2QzULf0zovJQx3J06Y9rufzzfi-CY2CTTlEfJJh2Qyw check: disabled_extensions: false interval_days: 1 @@ -9,5 +11,3 @@ notification: emails: - admin@example.com threshold: all -_core: - default_config_hash: 2QzULf0zovJQx3J06Y9rufzzfi-CY2CTTlEfJJh2Qyw diff --git a/config/sync/user.flood.yml b/config/sync/user.flood.yml index f165c9525..4eb3644f2 100644 --- a/config/sync/user.flood.yml +++ b/config/sync/user.flood.yml @@ -1,7 +1,7 @@ +_core: + default_config_hash: UYfMzeP1S8jKm9PSvxf7nQNe8DsNS-3bc2WSNNXBQWs uid_only: false ip_limit: 50 ip_window: 3600 user_limit: 5 user_window: 21600 -_core: - default_config_hash: UYfMzeP1S8jKm9PSvxf7nQNe8DsNS-3bc2WSNNXBQWs diff --git a/config/sync/user.mail.yml b/config/sync/user.mail.yml index 1296ecf67..645f713ac 100644 --- a/config/sync/user.mail.yml +++ b/config/sync/user.mail.yml @@ -1,4 +1,8 @@ +_core: + default_config_hash: IWzNdUVX2YSiflxrGSTLIiqTrhgIzbV2C-hRL5DniJM +langcode: en cancel_confirm: + subject: 'Account cancellation request for [user:display-name] at [site:name]' body: |- [user:display-name], @@ -13,8 +17,8 @@ cancel_confirm: This link expires in one day and nothing will happen if it is not used. -- [site:name] team - subject: 'Account cancellation request for [user:display-name] at [site:name]' password_reset: + subject: 'Replacement login information for [user:display-name] at [site:name]' body: |- [user:display-name], @@ -27,8 +31,8 @@ password_reset: This link can only be used once to log in and will lead you to a page where you can set your password. It expires after one day and nothing will happen if it's not used. -- [site:name] team - subject: 'Replacement login information for [user:display-name] at [site:name]' register_admin_created: + subject: 'An administrator created an account for you at [site:name]' body: |- [user:display-name], @@ -44,8 +48,8 @@ register_admin_created: password: Your password -- [site:name] team - subject: 'An administrator created an account for you at [site:name]' register_no_approval_required: + subject: 'Account details for [user:display-name] at [site:name]' body: |- [user:display-name], @@ -61,22 +65,22 @@ register_no_approval_required: password: Your password -- [site:name] team - subject: 'Account details for [user:display-name] at [site:name]' register_pending_approval: + subject: 'Account details for [user:display-name] at [site:name] (pending admin approval)' body: |- [user:display-name], Thank you for registering at [site:name]. Your application for an account is currently pending approval. Once it has been approved, you will receive another email containing information about how to log in, set your password, and other details. -- [site:name] team - subject: 'Account details for [user:display-name] at [site:name] (pending admin approval)' register_pending_approval_admin: + subject: 'Account details for [user:display-name] at [site:name] (pending admin approval)' body: |- [user:display-name] has applied for an account. [user:edit-url] - subject: 'Account details for [user:display-name] at [site:name] (pending admin approval)' status_activated: + subject: 'Account details for [user:display-name] at [site:name] (approved)' body: |- [user:display-name], @@ -94,23 +98,19 @@ status_activated: password: Your password -- [site:name] team - subject: 'Account details for [user:display-name] at [site:name] (approved)' status_blocked: + subject: 'Account details for [user:display-name] at [site:name] (blocked)' body: |- [user:display-name], Your account on [site:name] has been blocked. -- [site:name] team - subject: 'Account details for [user:display-name] at [site:name] (blocked)' status_canceled: + subject: 'Account details for [user:display-name] at [site:name] (canceled)' body: |- [user:display-name], Your account on [site:name] has been canceled. - -- [site:name] team - subject: 'Account details for [user:display-name] at [site:name] (canceled)' -langcode: en -_core: - default_config_hash: IWzNdUVX2YSiflxrGSTLIiqTrhgIzbV2C-hRL5DniJM + -- [site:name] team \ No newline at end of file diff --git a/config/sync/user.role.administrator.yml b/config/sync/user.role.administrator.yml index d66c1a295..01fd1be91 100644 --- a/config/sync/user.role.administrator.yml +++ b/config/sync/user.role.administrator.yml @@ -1,7 +1,27 @@ uuid: 27bd621e-0df6-4f6e-a65a-1d63e419b143 langcode: en status: true -dependencies: { } +dependencies: + config: + - filter.format.basic + - node.type.article + - node.type.campaign + - node.type.event + module: + - block + - dpl_instant_loan + - dpl_library_agency + - dpl_mapp + - dpl_url_proxy + - entity_reference_revisions + - filter + - language + - locale + - node + - openid_connect + - system + - toolbar + - update id: administrator label: Administrator weight: 2 @@ -26,16 +46,26 @@ permissions: - 'administer users' - 'create article content' - 'create campaign content' + - 'create event content' - 'delete any article content' - 'delete any campaign content' + - 'delete any event content' + - 'delete event revisions' - 'delete orphan revisions' - 'delete own article content' - 'delete own campaign content' + - 'delete own event content' - 'edit any article content' - 'edit any campaign content' + - 'edit any event content' - 'edit own article content' - 'edit own campaign content' + - 'edit own event content' + - 'revert event revisions' - 'translate interface' + - 'use text format basic' + - 'view event revisions' - 'view own unpublished content' - 'view the administration theme' + - 'view update notifications' - 'view user email addresses' diff --git a/config/sync/user.role.anonymous.yml b/config/sync/user.role.anonymous.yml index 0bbb717bd..f084a2c08 100644 --- a/config/sync/user.role.anonymous.yml +++ b/config/sync/user.role.anonymous.yml @@ -1,7 +1,14 @@ uuid: ac73cc4c-82c5-44f5-a4a9-b84be3bbe547 langcode: en status: true -dependencies: { } +dependencies: + config: + - rest.resource.campaign.match + - rest.resource.proxy-url + module: + - openapi + - rest + - system _core: default_config_hash: j5zLMOdJBqC0bMvSdth5UebkprJB8g_2FXHqhfpJzow id: anonymous diff --git a/config/sync/user.role.authenticated.yml b/config/sync/user.role.authenticated.yml index d8b88cde4..f1f0517e9 100644 --- a/config/sync/user.role.authenticated.yml +++ b/config/sync/user.role.authenticated.yml @@ -1,7 +1,9 @@ uuid: b19ce8e9-4029-4f88-85a9-5e81b6d3453c langcode: en status: true -dependencies: { } +dependencies: + module: + - system _core: default_config_hash: dJ0L2DNSj5q6XVZAGsuVDpJTh5UeYkIPwKrUOOpr8YI id: authenticated diff --git a/config/sync/user.role.editor.yml b/config/sync/user.role.editor.yml index c2a0d692d..a088492b0 100644 --- a/config/sync/user.role.editor.yml +++ b/config/sync/user.role.editor.yml @@ -1,7 +1,17 @@ uuid: 76b815c4-fb25-4d2b-b1a5-729919ef45ad langcode: en status: true -dependencies: { } +dependencies: + config: + - filter.format.basic + - node.type.article + - node.type.campaign + - node.type.event + module: + - filter + - node + - system + - toolbar id: editor label: Editor weight: 4 @@ -11,13 +21,22 @@ permissions: - 'access toolbar' - 'create article content' - 'create campaign content' + - 'create event content' - 'delete any article content' - 'delete any campaign content' + - 'delete any event content' + - 'delete event revisions' - 'delete own article content' - 'delete own campaign content' + - 'delete own event content' - 'edit any article content' - 'edit any campaign content' + - 'edit any event content' - 'edit own article content' - 'edit own campaign content' + - 'edit own event content' + - 'revert event revisions' + - 'use text format basic' + - 'view event revisions' - 'view own unpublished content' - 'view the administration theme' diff --git a/config/sync/user.role.local_administrator.yml b/config/sync/user.role.local_administrator.yml index b196d2456..ddfa78bc2 100644 --- a/config/sync/user.role.local_administrator.yml +++ b/config/sync/user.role.local_administrator.yml @@ -1,7 +1,20 @@ uuid: 7408de3c-bbe4-43db-86fa-a78fc72fa05a langcode: en status: true -dependencies: { } +dependencies: + config: + - filter.format.basic + - node.type.article + - node.type.campaign + - node.type.event + module: + - dpl_instant_loan + - dpl_library_agency + - dpl_url_proxy + - filter + - node + - system + - toolbar id: local_administrator label: 'Local Administrator' weight: 3 @@ -14,13 +27,22 @@ permissions: - 'administer url proxy configuration' - 'create article content' - 'create campaign content' + - 'create event content' - 'delete any article content' - 'delete any campaign content' + - 'delete any event content' + - 'delete event revisions' - 'delete own article content' - 'delete own campaign content' + - 'delete own event content' - 'edit any article content' - 'edit any campaign content' + - 'edit any event content' - 'edit own article content' - 'edit own campaign content' + - 'edit own event content' + - 'revert event revisions' + - 'use text format basic' + - 'view event revisions' - 'view own unpublished content' - 'view the administration theme' diff --git a/config/sync/user.role.mediator.yml b/config/sync/user.role.mediator.yml index 740ee4154..9d92d5404 100644 --- a/config/sync/user.role.mediator.yml +++ b/config/sync/user.role.mediator.yml @@ -1,7 +1,17 @@ uuid: 9cb4763e-19ed-475b-8582-2cddd9002d25 langcode: en status: true -dependencies: { } +dependencies: + config: + - filter.format.basic + - node.type.article + - node.type.campaign + - node.type.event + module: + - filter + - node + - system + - toolbar id: mediator label: Mediator weight: 5 @@ -11,13 +21,22 @@ permissions: - 'access toolbar' - 'create article content' - 'create campaign content' + - 'create event content' - 'delete any article content' - 'delete any campaign content' + - 'delete any event content' + - 'delete event revisions' - 'delete own article content' - 'delete own campaign content' + - 'delete own event content' - 'edit any article content' - 'edit any campaign content' + - 'edit any event content' - 'edit own article content' - 'edit own campaign content' + - 'edit own event content' + - 'revert event revisions' + - 'use text format basic' + - 'view event revisions' - 'view own unpublished content' - 'view the administration theme' diff --git a/config/sync/user.role.patron.yml b/config/sync/user.role.patron.yml index 0e5e09277..20535501e 100644 --- a/config/sync/user.role.patron.yml +++ b/config/sync/user.role.patron.yml @@ -1,7 +1,13 @@ uuid: 3d9d6604-7f39-467d-9bc6-0cd44e69fd96 langcode: en status: true -dependencies: { } +dependencies: + config: + - rest.resource.campaign.match + - rest.resource.proxy-url + module: + - node + - rest id: patron label: Patron weight: 6 diff --git a/config/sync/user.settings.yml b/config/sync/user.settings.yml index a6f47402a..b19be5140 100644 --- a/config/sync/user.settings.yml +++ b/config/sync/user.settings.yml @@ -1,3 +1,6 @@ +_core: + default_config_hash: w314Zp7B4NbrlV4KeeZLNSmTTpdJiv-KwZO2E1fSSK0 +langcode: en anonymous: Anonymous verify_mail: true notify: @@ -13,6 +16,3 @@ register: admin_only cancel_method: user_cancel_block password_reset_timeout: 86400 password_strength: true -langcode: en -_core: - default_config_hash: w314Zp7B4NbrlV4KeeZLNSmTTpdJiv-KwZO2E1fSSK0 diff --git a/config/sync/varnish_purger.settings.30cd45a1b1.yml b/config/sync/varnish_purger.settings.30cd45a1b1.yml index b6671f529..b5f8e063b 100644 --- a/config/sync/varnish_purger.settings.30cd45a1b1.yml +++ b/config/sync/varnish_purger.settings.30cd45a1b1.yml @@ -15,8 +15,8 @@ headers: { } body: null body_content_type: null runtime_measurement: true -timeout: !!float 1 -connect_timeout: !!float 1 -cooldown_time: !!float 0 +timeout: 1.0 +connect_timeout: 1.0 +cooldown_time: 0.0 max_requests: 100 http_errors: true diff --git a/config/sync/varnish_purger.settings.65fc931232.yml b/config/sync/varnish_purger.settings.65fc931232.yml index bbc9071d2..6f08c4d1a 100644 --- a/config/sync/varnish_purger.settings.65fc931232.yml +++ b/config/sync/varnish_purger.settings.65fc931232.yml @@ -18,8 +18,8 @@ headers: body: null body_content_type: null runtime_measurement: true -timeout: !!float 1 -connect_timeout: !!float 1 -cooldown_time: !!float 0 +timeout: 1.0 +connect_timeout: 1.0 +cooldown_time: 0.0 max_requests: 100 http_errors: true diff --git a/config/sync/views.settings.yml b/config/sync/views.settings.yml index 25f732bb8..e57e73a08 100644 --- a/config/sync/views.settings.yml +++ b/config/sync/views.settings.yml @@ -1,3 +1,5 @@ +_core: + default_config_hash: uZHsLrDp1ThO0RvupHKcPzLOyVvWexm58JTTHNDo7yc display_extenders: { } skip_cache: false sql_signature: false @@ -44,5 +46,3 @@ field_rewrite_elements: ins: INS q: Q s: S -_core: - default_config_hash: uZHsLrDp1ThO0RvupHKcPzLOyVvWexm58JTTHNDo7yc diff --git a/config/sync/views.view.content.yml b/config/sync/views.view.content.yml index 3a25d0128..22580712a 100644 --- a/config/sync/views.view.content.yml +++ b/config/sync/views.view.content.yml @@ -16,134 +16,19 @@ base_table: node_field_data base_field: nid display: default: + id: default + display_title: Default + display_plugin: default + position: 0 display_options: - access: - type: perm - options: - perm: 'access content overview' - cache: - type: tag - query: - type: views_query - exposed_form: - type: basic - options: - submit_button: Filter - reset_button: true - reset_button_label: Reset - exposed_sorts_label: 'Sort by' - expose_sort_order: true - sort_asc_label: Asc - sort_desc_label: Desc - pager: - type: full - options: - items_per_page: 50 - tags: - previous: '‹ Previous' - next: 'Next ›' - first: '« First' - last: 'Last »' - style: - type: table - options: - grouping: { } - row_class: '' - default_row_class: true - override: true - sticky: true - caption: '' - summary: '' - description: '' - columns: - node_bulk_form: node_bulk_form - title: title - type: type - name: name - status: status - changed: changed - edit_node: edit_node - delete_node: delete_node - dropbutton: dropbutton - timestamp: title - info: - node_bulk_form: - align: '' - separator: '' - empty_column: false - responsive: '' - title: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - type: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - name: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: priority-low - status: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - changed: - sortable: true - default_sort_order: desc - align: '' - separator: '' - empty_column: false - responsive: priority-low - edit_node: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - delete_node: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - dropbutton: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - timestamp: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - default: changed - empty_table: true - row: - type: fields + title: Content fields: node_bulk_form: id: node_bulk_form table: node field: node_bulk_form + entity_type: node + plugin_id: node_bulk_form label: '' exclude: false alter: @@ -154,12 +39,13 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: node_bulk_form - entity_type: node title: id: title table: node_field_data field: title + entity_type: node + entity_field: title + plugin_id: field label: Title exclude: false alter: @@ -170,12 +56,9 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - entity_type: node - entity_field: title type: string settings: link_to_entity: true - plugin_id: field type: id: type table: node_field_data @@ -183,6 +66,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: node + entity_field: type + plugin_id: field label: 'Content type' exclude: false alter: @@ -238,14 +124,14 @@ display: multi_type: separator separator: ', ' field_api_classes: false - entity_type: node - entity_field: type - plugin_id: field name: id: name table: users_field_data field: name relationship: uid + entity_type: user + entity_field: name + plugin_id: field label: Author exclude: false alter: @@ -256,14 +142,14 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: field type: user_name - entity_type: user - entity_field: name status: id: status table: node_field_data field: status + entity_type: node + entity_field: status + plugin_id: field label: Status exclude: false alter: @@ -277,15 +163,15 @@ display: type: boolean settings: format: custom - format_custom_true: Published format_custom_false: Unpublished - plugin_id: field - entity_type: node - entity_field: status + format_custom_true: Published changed: id: changed table: node_field_data field: changed + entity_type: node + entity_field: changed + plugin_id: field label: Updated exclude: false alter: @@ -301,9 +187,6 @@ display: date_format: short custom_date_format: '' timezone: '' - plugin_id: field - entity_type: node - entity_field: changed operations: id: operations table: node @@ -311,6 +194,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: entity_operations label: Operations exclude: false alter: @@ -353,7 +237,41 @@ display: empty_zero: false hide_alter_empty: true destination: true - plugin_id: entity_operations + pager: + type: full + options: + items_per_page: 50 + tags: + next: 'Next ›' + previous: '‹ Previous' + first: '« First' + last: 'Last »' + exposed_form: + type: basic + options: + submit_button: Filter + reset_button: true + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'access content overview' + cache: + type: tag + empty: + area_text_custom: + id: area_text_custom + table: views + field: area_text_custom + plugin_id: text_custom + empty: true + content: 'No content available.' + sorts: { } + arguments: { } filters: title: id: title @@ -362,6 +280,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: node + entity_field: title + plugin_id: string operator: contains value: '' group: 1 @@ -372,6 +293,8 @@ display: description: '' use_operator: false operator: title_op + operator_limit_selection: false + operator_list: { } identifier: title required: false remember: false @@ -380,8 +303,6 @@ display: authenticated: authenticated anonymous: '0' administrator: '0' - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -394,9 +315,6 @@ display: default_group: All default_group_multiple: { } group_items: { } - plugin_id: string - entity_type: node - entity_field: title type: id: type table: node_field_data @@ -404,6 +322,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: node + entity_field: type + plugin_id: bundle operator: in value: { } group: 1 @@ -414,6 +335,8 @@ display: description: '' use_operator: false operator: type_op + operator_limit_selection: false + operator_list: { } identifier: type required: false remember: false @@ -423,8 +346,6 @@ display: anonymous: '0' administrator: '0' reduce: false - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -437,9 +358,6 @@ display: default_group: All default_group_multiple: { } group_items: { } - plugin_id: bundle - entity_type: node - entity_field: type status: id: status table: node_field_data @@ -447,6 +365,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: node + entity_field: status + plugin_id: boolean operator: '=' value: '1' group: 1 @@ -457,14 +378,14 @@ display: description: '' use_operator: false operator: status_op + operator_limit_selection: false + operator_list: { } identifier: status required: false remember: false multiple: false remember_roles: authenticated: authenticated - operator_limit_selection: false - operator_list: { } is_grouped: true group_info: label: 'Published status' @@ -485,9 +406,6 @@ display: title: Unpublished operator: '=' value: '0' - plugin_id: boolean - entity_type: node - entity_field: status langcode: id: langcode table: node_field_data @@ -495,6 +413,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: node + entity_field: langcode + plugin_id: language operator: in value: { } group: 1 @@ -505,6 +426,8 @@ display: description: '' use_operator: false operator: langcode_op + operator_limit_selection: false + operator_list: { } identifier: langcode required: false remember: false @@ -514,8 +437,6 @@ display: anonymous: '0' administrator: '0' reduce: false - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -528,51 +449,131 @@ display: default_group: All default_group_multiple: { } group_items: { } - plugin_id: language - entity_type: node - entity_field: langcode status_extra: id: status_extra table: node_field_data field: status_extra + entity_type: node + plugin_id: node_status operator: '=' value: false - plugin_id: node_status group: 1 - entity_type: node expose: operator_limit_selection: false operator_list: { } - sorts: { } - title: Content - empty: - area_text_custom: - id: area_text_custom - table: views - field: area_text_custom - empty: true - content: 'No content available.' - plugin_id: text_custom - arguments: { } + filter_groups: + operator: AND + groups: + 1: AND + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + columns: + node_bulk_form: node_bulk_form + title: title + type: type + name: name + status: status + changed: changed + edit_node: edit_node + delete_node: delete_node + dropbutton: dropbutton + timestamp: title + default: changed + info: + node_bulk_form: + align: '' + separator: '' + empty_column: false + responsive: '' + title: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + type: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + name: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: priority-low + status: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + changed: + sortable: true + default_sort_order: desc + align: '' + separator: '' + empty_column: false + responsive: priority-low + edit_node: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + delete_node: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + dropbutton: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + timestamp: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + override: true + sticky: true + summary: '' + empty_table: true + caption: '' + description: '' + row: + type: fields + query: + type: views_query relationships: uid: id: uid table: node_field_data field: uid admin_label: author - required: true plugin_id: standard + required: true show_admin_links: false - filter_groups: - operator: AND - groups: - 1: AND display_extenders: { } - display_plugin: default - display_title: Default - id: default - position: 0 cache_metadata: + max-age: 0 contexts: - 'languages:language_content' - 'languages:language_interface' @@ -581,30 +582,30 @@ display: - user - 'user.node_grants:view' - user.permissions - max-age: 0 tags: { } page_1: + id: page_1 + display_title: Page + display_plugin: page + position: 1 display_options: + display_extenders: { } path: admin/content/node menu: type: 'default tab' title: Content description: '' - menu_name: admin weight: -10 + menu_name: admin context: '' tab_options: type: normal title: Content description: 'Find and manage content' - menu_name: admin weight: -10 - display_extenders: { } - display_plugin: page - display_title: Page - id: page_1 - position: 1 + menu_name: admin cache_metadata: + max-age: 0 contexts: - 'languages:language_content' - 'languages:language_interface' @@ -613,5 +614,4 @@ display: - user - 'user.node_grants:view' - user.permissions - max-age: 0 tags: { } diff --git a/config/sync/views.view.files.yml b/config/sync/views.view.files.yml index e1205bef7..4f44a8b9c 100644 --- a/config/sync/views.view.files.yml +++ b/config/sync/views.view.files.yml @@ -16,156 +16,34 @@ base_table: file_managed base_field: fid display: default: - display_plugin: default id: default display_title: Default + display_plugin: default position: 0 display_options: - access: - type: perm - options: - perm: 'access files overview' - cache: - type: tag - options: { } - query: - type: views_query - options: - disable_sql_rewrite: false - distinct: false - replica: false - query_comment: '' - query_tags: { } - exposed_form: - type: basic - options: - submit_button: Filter - reset_button: false - reset_button_label: Reset - exposed_sorts_label: 'Sort by' - expose_sort_order: true - sort_asc_label: Asc - sort_desc_label: Desc - pager: - type: mini - options: - items_per_page: 50 - offset: 0 - id: 0 - total_pages: 0 - tags: - previous: '‹ Previous' - next: 'Next ›' - expose: - items_per_page: false - items_per_page_label: 'Items per page' - items_per_page_options: '5, 10, 25, 50' - items_per_page_options_all: false - items_per_page_options_all_label: '- All -' - offset: false - offset_label: Offset - style: - type: table - options: - grouping: { } - row_class: '' - default_row_class: true - override: true - sticky: false - caption: '' - summary: '' - description: '' - columns: - fid: fid - filename: filename - filemime: filemime - filesize: filesize - status: status - created: created - changed: changed - count: count - info: - fid: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - filename: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - filemime: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: priority-medium - filesize: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: priority-low - status: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: priority-low - created: - sortable: true - default_sort_order: desc - align: '' - separator: '' - empty_column: false - responsive: '' - changed: - sortable: true - default_sort_order: desc - align: '' - separator: '' - empty_column: false - responsive: '' - count: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: priority-medium - default: changed - empty_table: true - row: - type: fields + title: Files fields: fid: id: fid table: file_managed field: fid + relationship: none + group_type: group + admin_label: '' + entity_type: file + entity_field: fid + plugin_id: field + label: Fid + exclude: true alter: alter_text: false make_link: false absolute: false - trim: false word_boundary: false ellipsis: false strip_tags: false + trim: false html: false - hide_empty: false - empty_zero: false - relationship: none - group_type: group - admin_label: '' - label: Fid - exclude: true element_type: '' element_class: '' element_label_type: '' @@ -175,10 +53,9 @@ display: element_wrapper_class: '' element_default_classes: true empty: '' + hide_empty: false + empty_zero: false hide_alter_empty: true - plugin_id: field - entity_type: file - entity_field: fid filename: id: filename table: file_managed @@ -186,6 +63,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: file + entity_field: filename + plugin_id: field label: Name exclude: false alter: @@ -239,9 +119,6 @@ display: multi_type: separator separator: ', ' field_api_classes: false - plugin_id: field - entity_type: file - entity_field: filename filemime: id: filemime table: file_managed @@ -249,6 +126,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: file + entity_field: filemime + plugin_id: field label: 'MIME type' exclude: false alter: @@ -291,9 +171,6 @@ display: empty_zero: false hide_alter_empty: true type: file_filemime - plugin_id: field - entity_type: file - entity_field: filemime filesize: id: filesize table: file_managed @@ -301,6 +178,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: file + entity_field: filesize + plugin_id: field label: Size exclude: false alter: @@ -343,9 +223,6 @@ display: empty_zero: false hide_alter_empty: true type: file_size - plugin_id: field - entity_type: file - entity_field: filesize status: id: status table: file_managed @@ -353,6 +230,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: file + entity_field: status + plugin_id: field label: Status exclude: false alter: @@ -399,9 +279,6 @@ display: format: custom format_custom_false: Temporary format_custom_true: Permanent - plugin_id: field - entity_type: file - entity_field: status created: id: created table: file_managed @@ -409,6 +286,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: file + entity_field: created + plugin_id: field label: 'Upload date' exclude: false alter: @@ -455,9 +335,6 @@ display: date_format: medium custom_date_format: '' timezone: '' - plugin_id: field - entity_type: file - entity_field: created changed: id: changed table: file_managed @@ -465,6 +342,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: file + entity_field: changed + plugin_id: field label: 'Changed date' exclude: false alter: @@ -511,9 +391,6 @@ display: date_format: medium custom_date_format: '' timezone: '' - plugin_id: field - entity_type: file - entity_field: changed count: id: count table: file_usage @@ -521,6 +398,7 @@ display: relationship: fid group_type: sum admin_label: '' + plugin_id: numeric label: 'Used in' exclude: false alter: @@ -570,7 +448,51 @@ display: format_plural_string: !!binary MSBwbGFjZQNAY291bnQgcGxhY2Vz prefix: '' suffix: '' - plugin_id: numeric + pager: + type: mini + options: + offset: 0 + items_per_page: 50 + total_pages: 0 + id: 0 + tags: + next: 'Next ›' + previous: '‹ Previous' + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + exposed_form: + type: basic + options: + submit_button: Filter + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'access files overview' + cache: + type: tag + options: { } + empty: + area_text_custom: + id: area_text_custom + table: views + field: area_text_custom + plugin_id: text_custom + empty: true + content: 'No files available.' + sorts: { } + arguments: { } filters: filename: id: filename @@ -579,6 +501,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: file + entity_field: filename + plugin_id: string operator: word value: '' group: 1 @@ -589,6 +514,8 @@ display: description: '' use_operator: false operator: filename_op + operator_limit_selection: false + operator_list: { } identifier: filename required: false remember: false @@ -597,8 +524,6 @@ display: authenticated: authenticated anonymous: '0' administrator: '0' - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -611,9 +536,6 @@ display: default_group: All default_group_multiple: { } group_items: { } - plugin_id: string - entity_type: file - entity_field: filename filemime: id: filemime table: file_managed @@ -621,6 +543,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: file + entity_field: filemime + plugin_id: string operator: word value: '' group: 1 @@ -631,6 +556,8 @@ display: description: '' use_operator: false operator: filemime_op + operator_limit_selection: false + operator_list: { } identifier: filemime required: false remember: false @@ -639,8 +566,6 @@ display: authenticated: authenticated anonymous: '0' administrator: '0' - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -653,9 +578,6 @@ display: default_group: All default_group_multiple: { } group_items: { } - plugin_id: string - entity_type: file - entity_field: filemime status: id: status table: file_managed @@ -663,6 +585,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: file + entity_field: status + plugin_id: file_status operator: in value: { } group: 1 @@ -673,6 +598,8 @@ display: description: '' use_operator: false operator: status_op + operator_limit_selection: false + operator_list: { } identifier: status required: false remember: false @@ -682,8 +609,6 @@ display: anonymous: '0' administrator: '0' reduce: false - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -696,21 +621,95 @@ display: default_group: All default_group_multiple: { } group_items: { } - plugin_id: file_status - entity_type: file - entity_field: status - sorts: { } - title: Files - header: { } - footer: { } - empty: - area_text_custom: - id: area_text_custom - table: views - field: area_text_custom - empty: true - content: 'No files available.' - plugin_id: text_custom + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + columns: + fid: fid + filename: filename + filemime: filemime + filesize: filesize + status: status + created: created + changed: changed + count: count + default: changed + info: + fid: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + filename: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + filemime: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: priority-medium + filesize: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: priority-low + status: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: priority-low + created: + sortable: true + default_sort_order: desc + align: '' + separator: '' + empty_column: false + responsive: '' + changed: + sortable: true + default_sort_order: desc + align: '' + separator: '' + empty_column: false + responsive: '' + count: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: priority-medium + override: true + sticky: false + summary: '' + empty_table: true + caption: '' + description: '' + row: + type: fields + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } relationships: fid: id: fid @@ -720,34 +719,26 @@ display: group_type: group admin_label: 'File usage' required: true - arguments: { } group_by: true show_admin_links: true + header: { } + footer: { } display_extenders: { } cache_metadata: + max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - url.query_args - user.permissions - max-age: -1 tags: { } page_1: - display_plugin: page id: page_1 display_title: 'Files overview' + display_plugin: page position: 1 display_options: - path: admin/content/files - menu: - type: tab - title: Files - description: '' - menu_name: admin - weight: 0 - context: '' - display_description: '' defaults: pager: true relationships: false @@ -760,59 +751,32 @@ display: group_type: group admin_label: 'File usage' required: false + display_description: '' display_extenders: { } + path: admin/content/files + menu: + type: tab + title: Files + description: '' + weight: 0 + menu_name: admin + context: '' cache_metadata: + max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - url.query_args - user.permissions - max-age: -1 tags: { } page_2: - display_plugin: page id: page_2 display_title: 'File usage' + display_plugin: page position: 2 display_options: - display_description: '' - path: admin/content/files/usage/% - empty: { } - defaults: - empty: false - pager: false - filters: false - filter_groups: false - fields: false - group_by: false - title: false - arguments: false - style: false - row: false - relationships: false - pager: - type: mini - options: - items_per_page: 10 - offset: 0 - id: 0 - total_pages: 0 - tags: - previous: '‹ Previous' - next: 'Next ›' - expose: - items_per_page: false - items_per_page_label: 'Items per page' - items_per_page_options: '5, 10, 25, 50' - items_per_page_options_all: false - items_per_page_options_all_label: '- All -' - offset: false - offset_label: Offset - filters: { } - filter_groups: - operator: AND - groups: { } + title: 'File usage' fields: entity_label: id: entity_label @@ -821,6 +785,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: entity_label label: Entity exclude: false alter: @@ -863,7 +828,6 @@ display: empty_zero: false hide_alter_empty: true link_to_entity: true - plugin_id: entity_label type: id: type table: file_usage @@ -871,6 +835,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: standard label: 'Entity type' exclude: false alter: @@ -912,7 +877,6 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: standard module: id: module table: file_usage @@ -920,6 +884,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: standard label: 'Registering module' exclude: false alter: @@ -961,7 +926,6 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: standard count: id: count table: file_usage @@ -969,6 +933,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: numeric label: 'Use count' exclude: false alter: @@ -1018,9 +983,25 @@ display: format_plural_string: !!binary MQNAY291bnQ= prefix: '' suffix: '' - plugin_id: numeric - group_by: false - title: 'File usage' + pager: + type: mini + options: + offset: 0 + items_per_page: 10 + total_pages: 0 + id: 0 + tags: + next: 'Next ›' + previous: '‹ Previous' + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + empty: { } arguments: fid: id: fid @@ -1029,6 +1010,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: file + entity_field: fid + plugin_id: file_fid default_action: 'not found' exception: value: all @@ -1043,8 +1027,8 @@ display: summary_options: base_path: '' count: true - items_per_page: 25 override: false + items_per_page: 25 summary: sort_order: asc number_of_records: 0 @@ -1056,25 +1040,22 @@ display: validate_options: { } break_phrase: false not: false - plugin_id: file_fid - entity_type: file - entity_field: fid + filters: { } + filter_groups: + operator: AND + groups: { } style: type: table options: grouping: { } row_class: '' default_row_class: true - override: true - sticky: false - caption: '' - summary: '' - description: '' columns: entity_label: entity_label type: type module: module count: count + default: entity_label info: entity_label: sortable: true @@ -1104,11 +1085,27 @@ display: separator: '' empty_column: false responsive: '' - default: entity_label + override: true + sticky: false + summary: '' empty_table: true + caption: '' + description: '' row: type: fields options: { } + defaults: + empty: false + title: false + pager: false + group_by: false + style: false + row: false + relationships: false + fields: false + arguments: false + filters: false + filter_groups: false relationships: fid: id: fid @@ -1118,12 +1115,15 @@ display: group_type: group admin_label: 'File usage' required: true + group_by: false + display_description: '' display_extenders: { } + path: admin/content/files/usage/% cache_metadata: + max-age: -1 contexts: - 'languages:language_interface' - url - url.query_args - user.permissions - max-age: -1 tags: { } diff --git a/config/sync/views.view.user_admin_people.yml b/config/sync/views.view.user_admin_people.yml index fda438f46..c9bdf8c95 100644 --- a/config/sync/views.view.user_admin_people.yml +++ b/config/sync/views.view.user_admin_people.yml @@ -15,131 +15,12 @@ base_table: users_field_data base_field: uid display: default: - display_plugin: default id: default display_title: Default + display_plugin: default position: 0 display_options: - access: - type: perm - options: - perm: 'administer users' - cache: - type: tag - query: - type: views_query - options: - disable_sql_rewrite: false - distinct: false - replica: false - query_comment: '' - query_tags: { } - exposed_form: - type: basic - options: - submit_button: Filter - reset_button: true - reset_button_label: Reset - exposed_sorts_label: 'Sort by' - expose_sort_order: true - sort_asc_label: Asc - sort_desc_label: Desc - pager: - type: full - options: - items_per_page: 50 - offset: 0 - id: 0 - total_pages: 0 - tags: - previous: '‹ Previous' - next: 'Next ›' - first: '« First' - last: 'Last »' - expose: - items_per_page: false - items_per_page_label: 'Items per page' - items_per_page_options: '5, 10, 25, 50' - items_per_page_options_all: false - items_per_page_options_all_label: '- All -' - offset: false - offset_label: Offset - quantity: 9 - style: - type: table - options: - grouping: { } - row_class: '' - default_row_class: true - override: true - sticky: false - summary: '' - columns: - user_bulk_form: user_bulk_form - name: name - status: status - rid: rid - created: created - access: access - edit_node: edit_node - dropbutton: dropbutton - info: - user_bulk_form: - align: '' - separator: '' - empty_column: false - responsive: '' - name: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - status: - sortable: true - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: priority-low - rid: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: priority-low - created: - sortable: true - default_sort_order: desc - align: '' - separator: '' - empty_column: false - responsive: priority-low - access: - sortable: true - default_sort_order: desc - align: '' - separator: '' - empty_column: false - responsive: priority-low - edit_node: - align: '' - separator: '' - empty_column: false - responsive: priority-low - dropbutton: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - default: created - empty_table: true - row: - type: fields + title: People fields: user_bulk_form: id: user_bulk_form @@ -148,6 +29,8 @@ display: relationship: none group_type: group admin_label: '' + entity_type: user + plugin_id: user_bulk_form label: 'Bulk update' exclude: false alter: @@ -189,8 +72,6 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: user_bulk_form - entity_type: user name: id: name table: users_field_data @@ -198,6 +79,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: user + entity_field: name + plugin_id: field label: Username exclude: false alter: @@ -239,10 +123,7 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: field type: user_name - entity_type: user - entity_field: name status: id: status table: users_field_data @@ -250,6 +131,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: user + entity_field: status + plugin_id: field label: Status exclude: false alter: @@ -291,14 +175,11 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: field type: boolean settings: format: custom - format_custom_true: Active format_custom_false: Blocked - entity_type: user - entity_field: status + format_custom_true: Active roles_target_id: id: roles_target_id table: user__roles @@ -306,6 +187,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: user_roles label: Roles exclude: false alter: @@ -349,7 +231,6 @@ display: hide_alter_empty: true type: ul separator: ', ' - plugin_id: user_roles created: id: created table: users_field_data @@ -357,6 +238,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: user + entity_field: created + plugin_id: field label: 'Member for' exclude: false alter: @@ -403,9 +287,6 @@ display: future_format: '@interval' past_format: '@interval' granularity: 2 - plugin_id: field - entity_type: user - entity_field: created access: id: access table: users_field_data @@ -413,6 +294,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: user + entity_field: access + plugin_id: field label: 'Last access' exclude: false alter: @@ -459,9 +343,6 @@ display: future_format: '@interval hence' past_format: '@interval ago' granularity: 2 - plugin_id: field - entity_type: user - entity_field: access operations: id: operations table: users @@ -469,6 +350,8 @@ display: relationship: none group_type: group admin_label: '' + entity_type: user + plugin_id: entity_operations label: Operations exclude: false alter: @@ -511,8 +394,6 @@ display: empty_zero: false hide_alter_empty: true destination: true - entity_type: user - plugin_id: entity_operations mail: id: mail table: users_field_data @@ -520,6 +401,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: user + entity_field: mail + plugin_id: field label: '' exclude: true alter: @@ -574,9 +458,72 @@ display: multi_type: separator separator: ', ' field_api_classes: false - plugin_id: field + pager: + type: full + options: + offset: 0 + items_per_page: 50 + total_pages: 0 + id: 0 + tags: + next: 'Next ›' + previous: '‹ Previous' + first: '« First' + last: 'Last »' + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + quantity: 9 + exposed_form: + type: basic + options: + submit_button: Filter + reset_button: true + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'administer users' + cache: + type: tag + empty: + area_text_custom: + id: area_text_custom + table: views + field: area_text_custom + relationship: none + group_type: group + admin_label: '' + plugin_id: text_custom + empty: true + content: 'No people available.' + tokenize: false + sorts: + created: + id: created + table: users_field_data + field: created + relationship: none + group_type: group + admin_label: '' entity_type: user - entity_field: mail + entity_field: created + plugin_id: date + order: DESC + expose: + label: '' + field_identifier: created + exposed: false + granularity: second filters: combine: id: combine @@ -585,6 +532,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: combine operator: contains value: '' group: 1 @@ -595,6 +543,8 @@ display: description: '' use_operator: false operator: combine_op + operator_limit_selection: false + operator_list: { } identifier: user required: false remember: false @@ -603,8 +553,6 @@ display: authenticated: authenticated anonymous: '0' administrator: '0' - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -620,7 +568,6 @@ display: fields: name: name mail: mail - plugin_id: combine status: id: status table: users_field_data @@ -628,6 +575,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: user + entity_field: status + plugin_id: boolean operator: '=' value: '1' group: 1 @@ -638,6 +588,8 @@ display: description: '' use_operator: false operator: status_op + operator_limit_selection: false + operator_list: { } identifier: status required: false remember: false @@ -646,8 +598,6 @@ display: authenticated: authenticated anonymous: '0' administrator: '0' - operator_limit_selection: false - operator_list: { } is_grouped: true group_info: label: Status @@ -668,9 +618,6 @@ display: title: Blocked operator: '=' value: '0' - plugin_id: boolean - entity_type: user - entity_field: status roles_target_id: id: roles_target_id table: user__roles @@ -678,6 +625,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: user_roles operator: or value: { } group: 1 @@ -688,6 +636,8 @@ display: description: '' use_operator: false operator: roles_target_id_op + operator_limit_selection: false + operator_list: { } identifier: role required: false remember: false @@ -697,8 +647,6 @@ display: anonymous: '0' administrator: '0' reduce: false - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -712,7 +660,6 @@ display: default_group_multiple: { } group_items: { } reduce_duplicates: false - plugin_id: user_roles permission: id: permission table: user__roles @@ -720,6 +667,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: user_permissions operator: or value: { } group: 1 @@ -730,6 +678,8 @@ display: description: '' use_operator: false operator: permission_op + operator_limit_selection: false + operator_list: { } identifier: permission required: false remember: false @@ -739,8 +689,6 @@ display: anonymous: '0' administrator: '0' reduce: false - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -754,7 +702,6 @@ display: default_group_multiple: { } group_items: { } reduce_duplicates: false - plugin_id: user_permissions default_langcode: id: default_langcode table: users_field_data @@ -762,6 +709,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: user + entity_field: default_langcode + plugin_id: boolean operator: '=' value: '1' group: 1 @@ -772,14 +722,14 @@ display: description: '' use_operator: false operator: '' + operator_limit_selection: false + operator_list: { } identifier: '' required: false remember: false multiple: false remember_roles: authenticated: authenticated - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -792,9 +742,6 @@ display: default_group: All default_group_multiple: { } group_items: { } - entity_type: user - entity_field: default_langcode - plugin_id: boolean uid_raw: id: uid_raw table: users_field_data @@ -802,6 +749,8 @@ display: relationship: none group_type: group admin_label: '' + entity_type: user + plugin_id: numeric operator: '!=' value: min: '' @@ -815,14 +764,14 @@ display: description: '' use_operator: false operator: '' + operator_limit_selection: false + operator_list: { } identifier: '' required: false remember: false multiple: false remember_roles: authenticated: authenticated - operator_limit_selection: false - operator_list: { } is_grouped: false group_info: label: '' @@ -835,92 +784,144 @@ display: default_group: All default_group_multiple: { } group_items: { } - plugin_id: numeric - entity_type: user - sorts: - created: - id: created - table: users_field_data - field: created - relationship: none - group_type: group - admin_label: '' - order: DESC - exposed: false - expose: - label: '' - granularity: second - plugin_id: date - entity_type: user - entity_field: created - title: People - empty: - area_text_custom: - id: area_text_custom - table: views - field: area_text_custom - relationship: none - group_type: group - admin_label: '' - empty: true - tokenize: false - content: 'No people available.' - plugin_id: text_custom + filter_groups: + operator: AND + groups: + 1: AND + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + columns: + user_bulk_form: user_bulk_form + name: name + status: status + rid: rid + created: created + access: access + edit_node: edit_node + dropbutton: dropbutton + default: created + info: + user_bulk_form: + align: '' + separator: '' + empty_column: false + responsive: '' + name: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + status: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: priority-low + rid: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: priority-low + created: + sortable: true + default_sort_order: desc + align: '' + separator: '' + empty_column: false + responsive: priority-low + access: + sortable: true + default_sort_order: desc + align: '' + separator: '' + empty_column: false + responsive: priority-low + edit_node: + align: '' + separator: '' + empty_column: false + responsive: priority-low + dropbutton: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + override: true + sticky: false + summary: '' + empty_table: true + row: + type: fields + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + css_class: '' + use_ajax: false + group_by: false + show_admin_links: true use_more: false use_more_always: false use_more_text: more + link_display: page_1 + link_url: '' display_comment: '' - use_ajax: false hide_attachment_summary: false - show_admin_links: true - group_by: false - link_url: '' - link_display: page_1 - css_class: '' - filter_groups: - operator: AND - groups: - 1: AND display_extenders: { } cache_metadata: + max-age: 0 contexts: - 'languages:language_content' - 'languages:language_interface' - url - url.query_args - user.permissions - max-age: 0 tags: { } page_1: - display_plugin: page id: page_1 display_title: Page + display_plugin: page position: 1 display_options: - path: admin/people/list + defaults: + show_admin_links: false show_admin_links: false + display_extenders: { } + path: admin/people/list menu: type: 'default tab' title: List description: 'Find and manage people interacting with your site.' - menu_name: admin weight: -10 + menu_name: admin context: '' tab_options: type: normal title: People description: 'Manage user accounts, roles, and permissions.' - menu_name: admin weight: 0 - defaults: - show_admin_links: false - display_extenders: { } + menu_name: admin cache_metadata: + max-age: 0 contexts: - 'languages:language_content' - 'languages:language_interface' - url - url.query_args - user.permissions - max-age: 0 tags: { } diff --git a/cypress/e2e/campaign.cy.ts b/cypress/e2e/campaign.cy.ts index 2fc329153..4938bf6e8 100644 --- a/cypress/e2e/campaign.cy.ts +++ b/cypress/e2e/campaign.cy.ts @@ -420,7 +420,7 @@ const createRankingOrCampaign = () => { const createCampaign = (callback: () => void) => { cy.visit("/node/add/campaign"); callback(); - cy.get("#edit-submit").click(); + cy.get('input[value="Save"]').click(); }; const deleteCampaign = (title: string) => { @@ -449,7 +449,7 @@ const createCampaignMainProperties = (name: string, logic: "AND" | "OR") => { cy.get("#edit-field-campaign-link-0-uri").type( `https://example.com/${campaignUri}` ); - cy.get("#edit-body-0-value").type(name); + cy.get("#edit-field-campaign-text-0-value").type(name); cy.get("#edit-field-campaign-rules-logic").select(logic); }; const createCampaignRule = ( diff --git a/cypress/e2e/smoke-test.cy.ts b/cypress/e2e/smoke-test.cy.ts index da22ccae7..6364cc496 100644 --- a/cypress/e2e/smoke-test.cy.ts +++ b/cypress/e2e/smoke-test.cy.ts @@ -4,9 +4,7 @@ describe("DPL CMS", () => { cy.contains("DPL CMS"); }); - // Test is failing because of an "access denied" error after end authentication. - // TODO: Fix this test. - it.skip("supports login", () => { + it("supports login", () => { cy.drupalLogin(); // We do not have a proper way to determine that the user is actually // logged in. For now we simply check whether the user is logged in. If that diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 838d0d256..d67923455 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -82,7 +82,7 @@ Cypress.Commands.add("drupalLogin", () => { .type(Cypress.env("DRUPAL_USERNAME")) .parent() .get('[name="pass"]') - .type(Cypress.env("DRUPAL_USERNAME")); + .type(Cypress.env("DRUPAL_PASSWORD")); cy.get('[value="Log in"]').click(); }); diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml index 72224a0f8..c269984c4 100644 --- a/docker-compose.ci.yml +++ b/docker-compose.ci.yml @@ -57,6 +57,7 @@ services: cli: environment: CI: true + LAGOON_ENVIRONMENT_TYPE: ci php: depends_on: @@ -65,3 +66,4 @@ services: http_proxy: http://wiremock:80 https_proxy: https://wiremock:443 CI: true + LAGOON_ENVIRONMENT_TYPE: ci diff --git a/docker-compose.yml b/docker-compose.yml index 28b42b53d..1d0d87b4a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -30,6 +30,7 @@ x-environment: # Environment variables which mimic what will be set in a Lagoon cluster locally LAGOON_PROJECT: 'dplcms' LAGOON_ENVIRONMENT: 'local' + LAGOON_ENVIRONMENT_TYPE: ${LAGOON_ENVIRONMENT_TYPE:-local} WEBROOT: web # Uncomment if you like to have the system behave like in production #LAGOON_ENVIRONMENT_TYPE: production @@ -60,7 +61,7 @@ services: build: context: . dockerfile: lagoon/cli.dockerfile - image: &cli-image uselagoon/php-8.0-cli-drupal:latest # this image will be reused as `CLI_IMAGE` in subsequent Docker builds + image: &cli-image uselagoon/php-8.1-cli-drupal:latest # this image will be reused as `CLI_IMAGE` in subsequent Docker builds << : *default-volumes # loads the defined volumes from the top user: root environment: @@ -108,8 +109,7 @@ services: <<: [*default-volumes, *default-user] environment: << : *default-environment # loads the defined environment variables from the top - # Uncomment to enable xdebug for web requests and then restart via `docker-compose up -d` - #XDEBUG_ENABLE: "true" + XDEBUG_ENABLE: ${XDEBUG_ENABLE:-false} labels: lagoon.type: nginx-php-persistent lagoon.name: nginx # we want this service be part of the nginx pod in Lagoon diff --git a/docs/local-development.md b/docs/local-development.md index 7b532cf03..3337c420f 100644 --- a/docs/local-development.md +++ b/docs/local-development.md @@ -1,6 +1,55 @@ # Local development -## Copy database from Lagoon environment to local setup +## Docker setup + +### Requirements + +In order to run local development you need: + +* [`go-task`](https://taskfile.dev) +* Docker +* Preferably support for `VIRTUAL_HOST` environment variables for Docker + containers. Examples: [Dory (OSX)](https://github.com/FreedomBen/dory) or + [`nginx-proxy`](https://github.com/nginx-proxy/nginx-proxy). + +### MacOS and Docker + +If you are using MacOS, you can use the standard +"[Docker for Mac](https://docs.docker.com/desktop/install/mac-install/)" +app, however there has been developers that have experienced it acting slow. + +Alternatively, you can use [Orbstack](https://orbstack.dev/), which is a +direct replacement for Docker for Mac, but is optimized to run much faster. + +### Docker for Mac + +If you do end up using Docker for Mac, it is +recommended to use [VirtioFS](https://virtio-fs.gitlab.io) on the mounted +volumes in docker-compose, to speed up the containers. + +![OSX preference pane providing access to VirtioFS](docs/images/virtiofs.png) + +## Howtos + +### Enable XDebug + +Prerequisites: + +* An IDE with support for XDebug e.g. JetBrains PhpStorm +* Optionally: [A browser extension to activate XDebug](https://xdebug.org/docs/step_debug#browser-extensions) + +For performance reasons XDebug is disabled by default. It can be enabled +temporarily through a task: + +1. Run `task dev:enable-xdebug` +2. Validate that XDebug is enabled by inspecting . + It should contain extended information about XDebug +3. Debug the application by setting breakpoints, listen for incoming + connections in your IDE and [activate XDebug from you client/browser](https://xdebug.org/docs/step_debug#web-application) +4. When you are finished, hit `enter` in the terminal where you enabled XDebug. + This will disable XDebug + +### Copy database from Lagoon environment to local setup Prerequisites: @@ -19,7 +68,7 @@ database, not any files from the site. 3. Start a local environment using `task dev:reset` 4. Import the database by running `task dev:restore:database` -## Copy files from Lagoon environment to local setup +### Copy files from Lagoon environment to local setup Prerequisites: diff --git a/docs/releases.md b/docs/releases.md new file mode 100644 index 000000000..2a1412dea --- /dev/null +++ b/docs/releases.md @@ -0,0 +1,29 @@ +# Releases + +## Building and publishing releases + +A release of dpl-cms can be build by pushing a tag that matches the following +pattern: + +```shell +# Replace with the version. +git tag + +# Eg. +git tag 1.2.3 +``` + +The actual release is performed by the `Publish source` Github action which +invokes `task source:deploy` which in turn uses the tasks `source:build` and +`source:push` to build and publish the release. + +Using the action should be the preferred choice for building and publishing +releases, but should you need to - it is possible to run the task manually +given you have the necessary permissions for pushing the resulting source-image. +Should you only need to produce the image, but not push it the task you can opt +for just invoking the `source:build` task. + +You can override the name of the built image and/or the destination registry +temporarily by providing a number of environment variables (see the +[Taskfile](Taskfile.yml)). To permanently change these configurations, eg. in +a fork, change the defaults directly in the `Taskfile.yml`. diff --git a/lagoon/cli.dockerfile b/lagoon/cli.dockerfile index 809d9ecc0..fe475cb72 100644 --- a/lagoon/cli.dockerfile +++ b/lagoon/cli.dockerfile @@ -1,4 +1,4 @@ -FROM uselagoon/php-8.0-cli-drupal:latest +FROM uselagoon/php-8.1-cli-drupal:latest COPY composer.* /app/ COPY assets /app/assets diff --git a/lagoon/php.dockerfile b/lagoon/php.dockerfile index 4e6635dcc..8ed4b0506 100644 --- a/lagoon/php.dockerfile +++ b/lagoon/php.dockerfile @@ -1,6 +1,6 @@ ARG CLI_IMAGE FROM ${CLI_IMAGE} as cli -FROM uselagoon/php-8.0-fpm:latest +FROM uselagoon/php-8.1-fpm:latest COPY --from=cli /app /app diff --git a/packages/fbs-client/.openapi-generator/FILES b/packages/fbs-client/.openapi-generator/FILES index a56f1f012..1099c0715 100644 --- a/packages/fbs-client/.openapi-generator/FILES +++ b/packages/fbs-client/.openapi-generator/FILES @@ -1,3 +1,4 @@ +.php-cs-fixer.dist.php README.md composer.json lib/Api/ExternalAgencyidPatronsApi.php diff --git a/packages/fbs-client/.openapi-generator/VERSION b/packages/fbs-client/.openapi-generator/VERSION index 804440660..3769235d3 100644 --- a/packages/fbs-client/.openapi-generator/VERSION +++ b/packages/fbs-client/.openapi-generator/VERSION @@ -1 +1 @@ -5.2.1 \ No newline at end of file +7.1.0 \ No newline at end of file diff --git a/packages/fbs-client/.php-cs-fixer.dist.php b/packages/fbs-client/.php-cs-fixer.dist.php new file mode 100644 index 000000000..af9cf39fd --- /dev/null +++ b/packages/fbs-client/.php-cs-fixer.dist.php @@ -0,0 +1,29 @@ +in(__DIR__) + ->exclude('vendor') + ->exclude('test') + ->exclude('tests') +; + +$config = new PhpCsFixer\Config(); +return $config->setRules([ + '@PSR12' => true, + 'phpdoc_order' => true, + 'array_syntax' => [ 'syntax' => 'short' ], + 'strict_comparison' => true, + 'strict_param' => true, + 'no_trailing_whitespace' => false, + 'no_trailing_whitespace_in_comment' => false, + 'braces' => false, + 'single_blank_line_at_eof' => false, + 'blank_line_after_namespace' => false, + 'no_leading_import_slash' => false, + ]) + ->setFinder($finder) +; diff --git a/packages/fbs-client/README.md b/packages/fbs-client/README.md index 65a6814ac..6653c4b9c 100644 --- a/packages/fbs-client/README.md +++ b/packages/fbs-client/README.md @@ -7,8 +7,8 @@ No description provided (generated by Openapi Generator https://github.com/opena ### Requirements -PHP 7.3 and later. -Should also work with PHP 8.0 but has not been tested. +PHP 7.4 and later. +Should also work with PHP 8.0. ### Composer @@ -154,6 +154,7 @@ Class | Method | HTTP request | Description ## Authorization +Authentication schemes defined for the API: ### oauth - **Type**: `OAuth` diff --git a/packages/fbs-client/composer.json b/packages/fbs-client/composer.json index f72614fe6..6687dba60 100644 --- a/packages/fbs-client/composer.json +++ b/packages/fbs-client/composer.json @@ -14,20 +14,21 @@ "license": "unlicense", "authors": [ { - "name": "OpenAPI-Generator contributors", + "name": "OpenAPI", "homepage": "https://openapi-generator.tech" } ], "require": { - "php": "^7.3 || ^8.0", + "php": "^7.4 || ^8.0", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "guzzlehttp/guzzle": "^6.2" + "guzzlehttp/guzzle": "^7.3", + "guzzlehttp/psr7": "^1.7 || ^2.0" }, "require-dev": { "phpunit/phpunit": "^8.0 || ^9.0", - "friendsofphp/php-cs-fixer": "^2.12" + "friendsofphp/php-cs-fixer": "^3.5" }, "autoload": { "psr-4": { "DanskernesDigitaleBibliotek\\FBS\\" : "lib/" } diff --git a/packages/fbs-client/lib/Api/ExternalAgencyidPatronsApi.php b/packages/fbs-client/lib/Api/ExternalAgencyidPatronsApi.php index 75762fd90..1084fa8af 100644 --- a/packages/fbs-client/lib/Api/ExternalAgencyidPatronsApi.php +++ b/packages/fbs-client/lib/Api/ExternalAgencyidPatronsApi.php @@ -1,7 +1,7 @@ [ + 'application/json', + ], + 'createWithGuardian' => [ + 'application/json', + ], + 'getPatronInformationByPatronIdV2' => [ + 'application/json', + ], + 'updateGuardian' => [ + 'application/json', + ], + 'updateV5' => [ + 'application/json', + ], + ]; + +/** * @param ClientInterface $client * @param Configuration $config * @param HeaderSelector $selector @@ -120,14 +140,15 @@ public function getConfig() * Create a new patron who is a person. * * @param \DanskernesDigitaleBibliotek\FBS\Model\CreatePatronRequestV3 $create_patron_request the patron to be created (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['createV4'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return \DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV4 */ - public function createV4($create_patron_request) + public function createV4($create_patron_request, string $contentType = self::contentTypes['createV4'][0]) { - list($response) = $this->createV4WithHttpInfo($create_patron_request); + list($response) = $this->createV4WithHttpInfo($create_patron_request, $contentType); return $response; } @@ -137,14 +158,15 @@ public function createV4($create_patron_request) * Create a new patron who is a person. * * @param \DanskernesDigitaleBibliotek\FBS\Model\CreatePatronRequestV3 $create_patron_request the patron to be created (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['createV4'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return array of \DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV4, HTTP status code, HTTP response headers (array of strings) */ - public function createV4WithHttpInfo($create_patron_request) + public function createV4WithHttpInfo($create_patron_request, string $contentType = self::contentTypes['createV4'][0]) { - $request = $this->createV4Request($create_patron_request); + $request = $this->createV4Request($create_patron_request, $contentType); try { $options = $this->createHttpClientOption(); @@ -157,6 +179,13 @@ public function createV4WithHttpInfo($create_patron_request) $e->getResponse() ? $e->getResponse()->getHeaders() : null, $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); + } catch (ConnectException $e) { + throw new ApiException( + "[{$e->getCode()}] {$e->getMessage()}", + (int) $e->getCode(), + null, + null + ); } $statusCode = $response->getStatusCode(); @@ -180,6 +209,21 @@ public function createV4WithHttpInfo($create_patron_request) $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ('\DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV4' !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -194,6 +238,21 @@ public function createV4WithHttpInfo($create_patron_request) $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -223,13 +282,14 @@ public function createV4WithHttpInfo($create_patron_request) * Create a new patron who is a person. * * @param \DanskernesDigitaleBibliotek\FBS\Model\CreatePatronRequestV3 $create_patron_request the patron to be created (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['createV4'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function createV4Async($create_patron_request) + public function createV4Async($create_patron_request, string $contentType = self::contentTypes['createV4'][0]) { - return $this->createV4AsyncWithHttpInfo($create_patron_request) + return $this->createV4AsyncWithHttpInfo($create_patron_request, $contentType) ->then( function ($response) { return $response[0]; @@ -243,14 +303,15 @@ function ($response) { * Create a new patron who is a person. * * @param \DanskernesDigitaleBibliotek\FBS\Model\CreatePatronRequestV3 $create_patron_request the patron to be created (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['createV4'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function createV4AsyncWithHttpInfo($create_patron_request) + public function createV4AsyncWithHttpInfo($create_patron_request, string $contentType = self::contentTypes['createV4'][0]) { $returnType = '\DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV4'; - $request = $this->createV4Request($create_patron_request); + $request = $this->createV4Request($create_patron_request, $contentType); return $this->client ->sendAsync($request, $this->createHttpClientOption()) @@ -260,6 +321,9 @@ function ($response) use ($returnType) { $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + $content = json_decode($content); + } } return [ @@ -289,12 +353,14 @@ function ($exception) { * Create request for operation 'createV4' * * @param \DanskernesDigitaleBibliotek\FBS\Model\CreatePatronRequestV3 $create_patron_request the patron to be created (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['createV4'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request */ - public function createV4Request($create_patron_request) + public function createV4Request($create_patron_request, string $contentType = self::contentTypes['createV4'][0]) { + // verify the required parameter 'create_patron_request' is set if ($create_patron_request === null || (is_array($create_patron_request) && count($create_patron_request) === 0)) { throw new \InvalidArgumentException( @@ -302,6 +368,7 @@ public function createV4Request($create_patron_request) ); } + $resourcePath = '/external/agencyid/patrons/v4'; $formParams = []; $queryParams = []; @@ -313,21 +380,17 @@ public function createV4Request($create_patron_request) - if ($multipart) { - $headers = $this->headerSelector->selectHeadersForMultipart( - ['*/*'] - ); - } else { - $headers = $this->headerSelector->selectHeaders( - ['*/*'], - [] - ); - } + $headers = $this->headerSelector->selectHeaders( + ['*/*', ], + $contentType, + $multipart + ); // for model (json/xml) if (isset($create_patron_request)) { - if ($headers['Content-Type'] === 'application/json') { - $httpBody = \GuzzleHttp\json_encode(ObjectSerializer::sanitizeForSerialization($create_patron_request)); + if (stripos($headers['Content-Type'], 'application/json') !== false) { + # if Content-Type contains "application/json", json_encode the body + $httpBody = \GuzzleHttp\Utils::jsonEncode(ObjectSerializer::sanitizeForSerialization($create_patron_request)); } else { $httpBody = $create_patron_request; } @@ -346,17 +409,17 @@ public function createV4Request($create_patron_request) // for HTTP post (form) $httpBody = new MultipartStream($multipartContents); - } elseif ($headers['Content-Type'] === 'application/json') { - $httpBody = \GuzzleHttp\json_encode($formParams); - + } elseif (stripos($headers['Content-Type'], 'application/json') !== false) { + # if Content-Type contains "application/json", json_encode the form parameters + $httpBody = \GuzzleHttp\Utils::jsonEncode($formParams); } else { // for HTTP post (form) - $httpBody = \GuzzleHttp\Psr7\build_query($formParams); + $httpBody = ObjectSerializer::buildQuery($formParams); } } // this endpoint requires OAuth (access token) - if ($this->config->getAccessToken() !== null) { + if (!empty($this->config->getAccessToken())) { $headers['Authorization'] = 'Bearer ' . $this->config->getAccessToken(); } @@ -371,10 +434,11 @@ public function createV4Request($create_patron_request) $headers ); - $query = \GuzzleHttp\Psr7\build_query($queryParams); + $operationHost = $this->config->getHost(); + $query = ObjectSerializer::buildQuery($queryParams); return new Request( 'POST', - $this->config->getHost() . $resourcePath . ($query ? "?{$query}" : ''), + $operationHost . $resourcePath . ($query ? "?{$query}" : ''), $headers, $httpBody ); @@ -386,14 +450,15 @@ public function createV4Request($create_patron_request) * Creates a person patron with a guardian (eg A financial responsible). * * @param \DanskernesDigitaleBibliotek\FBS\Model\PatronWithGuardianRequest $patron_with_guardian_request The payload with information for the patron to create (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['createWithGuardian'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return int */ - public function createWithGuardian($patron_with_guardian_request) + public function createWithGuardian($patron_with_guardian_request, string $contentType = self::contentTypes['createWithGuardian'][0]) { - list($response) = $this->createWithGuardianWithHttpInfo($patron_with_guardian_request); + list($response) = $this->createWithGuardianWithHttpInfo($patron_with_guardian_request, $contentType); return $response; } @@ -403,14 +468,15 @@ public function createWithGuardian($patron_with_guardian_request) * Creates a person patron with a guardian (eg A financial responsible). * * @param \DanskernesDigitaleBibliotek\FBS\Model\PatronWithGuardianRequest $patron_with_guardian_request The payload with information for the patron to create (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['createWithGuardian'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return array of int, HTTP status code, HTTP response headers (array of strings) */ - public function createWithGuardianWithHttpInfo($patron_with_guardian_request) + public function createWithGuardianWithHttpInfo($patron_with_guardian_request, string $contentType = self::contentTypes['createWithGuardian'][0]) { - $request = $this->createWithGuardianRequest($patron_with_guardian_request); + $request = $this->createWithGuardianRequest($patron_with_guardian_request, $contentType); try { $options = $this->createHttpClientOption(); @@ -423,6 +489,13 @@ public function createWithGuardianWithHttpInfo($patron_with_guardian_request) $e->getResponse() ? $e->getResponse()->getHeaders() : null, $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); + } catch (ConnectException $e) { + throw new ApiException( + "[{$e->getCode()}] {$e->getMessage()}", + (int) $e->getCode(), + null, + null + ); } $statusCode = $response->getStatusCode(); @@ -446,6 +519,21 @@ public function createWithGuardianWithHttpInfo($patron_with_guardian_request) $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ('int' !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -460,6 +548,21 @@ public function createWithGuardianWithHttpInfo($patron_with_guardian_request) $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -489,13 +592,14 @@ public function createWithGuardianWithHttpInfo($patron_with_guardian_request) * Creates a person patron with a guardian (eg A financial responsible). * * @param \DanskernesDigitaleBibliotek\FBS\Model\PatronWithGuardianRequest $patron_with_guardian_request The payload with information for the patron to create (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['createWithGuardian'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function createWithGuardianAsync($patron_with_guardian_request) + public function createWithGuardianAsync($patron_with_guardian_request, string $contentType = self::contentTypes['createWithGuardian'][0]) { - return $this->createWithGuardianAsyncWithHttpInfo($patron_with_guardian_request) + return $this->createWithGuardianAsyncWithHttpInfo($patron_with_guardian_request, $contentType) ->then( function ($response) { return $response[0]; @@ -509,14 +613,15 @@ function ($response) { * Creates a person patron with a guardian (eg A financial responsible). * * @param \DanskernesDigitaleBibliotek\FBS\Model\PatronWithGuardianRequest $patron_with_guardian_request The payload with information for the patron to create (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['createWithGuardian'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function createWithGuardianAsyncWithHttpInfo($patron_with_guardian_request) + public function createWithGuardianAsyncWithHttpInfo($patron_with_guardian_request, string $contentType = self::contentTypes['createWithGuardian'][0]) { $returnType = 'int'; - $request = $this->createWithGuardianRequest($patron_with_guardian_request); + $request = $this->createWithGuardianRequest($patron_with_guardian_request, $contentType); return $this->client ->sendAsync($request, $this->createHttpClientOption()) @@ -526,6 +631,9 @@ function ($response) use ($returnType) { $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + $content = json_decode($content); + } } return [ @@ -555,12 +663,14 @@ function ($exception) { * Create request for operation 'createWithGuardian' * * @param \DanskernesDigitaleBibliotek\FBS\Model\PatronWithGuardianRequest $patron_with_guardian_request The payload with information for the patron to create (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['createWithGuardian'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request */ - public function createWithGuardianRequest($patron_with_guardian_request) + public function createWithGuardianRequest($patron_with_guardian_request, string $contentType = self::contentTypes['createWithGuardian'][0]) { + // verify the required parameter 'patron_with_guardian_request' is set if ($patron_with_guardian_request === null || (is_array($patron_with_guardian_request) && count($patron_with_guardian_request) === 0)) { throw new \InvalidArgumentException( @@ -568,6 +678,7 @@ public function createWithGuardianRequest($patron_with_guardian_request) ); } + $resourcePath = '/external/agencyid/patrons/withGuardian/v1'; $formParams = []; $queryParams = []; @@ -579,21 +690,17 @@ public function createWithGuardianRequest($patron_with_guardian_request) - if ($multipart) { - $headers = $this->headerSelector->selectHeadersForMultipart( - ['*/*'] - ); - } else { - $headers = $this->headerSelector->selectHeaders( - ['*/*'], - [] - ); - } + $headers = $this->headerSelector->selectHeaders( + ['*/*', ], + $contentType, + $multipart + ); // for model (json/xml) if (isset($patron_with_guardian_request)) { - if ($headers['Content-Type'] === 'application/json') { - $httpBody = \GuzzleHttp\json_encode(ObjectSerializer::sanitizeForSerialization($patron_with_guardian_request)); + if (stripos($headers['Content-Type'], 'application/json') !== false) { + # if Content-Type contains "application/json", json_encode the body + $httpBody = \GuzzleHttp\Utils::jsonEncode(ObjectSerializer::sanitizeForSerialization($patron_with_guardian_request)); } else { $httpBody = $patron_with_guardian_request; } @@ -612,17 +719,17 @@ public function createWithGuardianRequest($patron_with_guardian_request) // for HTTP post (form) $httpBody = new MultipartStream($multipartContents); - } elseif ($headers['Content-Type'] === 'application/json') { - $httpBody = \GuzzleHttp\json_encode($formParams); - + } elseif (stripos($headers['Content-Type'], 'application/json') !== false) { + # if Content-Type contains "application/json", json_encode the form parameters + $httpBody = \GuzzleHttp\Utils::jsonEncode($formParams); } else { // for HTTP post (form) - $httpBody = \GuzzleHttp\Psr7\build_query($formParams); + $httpBody = ObjectSerializer::buildQuery($formParams); } } // this endpoint requires OAuth (access token) - if ($this->config->getAccessToken() !== null) { + if (!empty($this->config->getAccessToken())) { $headers['Authorization'] = 'Bearer ' . $this->config->getAccessToken(); } @@ -637,10 +744,11 @@ public function createWithGuardianRequest($patron_with_guardian_request) $headers ); - $query = \GuzzleHttp\Psr7\build_query($queryParams); + $operationHost = $this->config->getHost(); + $query = ObjectSerializer::buildQuery($queryParams); return new Request( 'POST', - $this->config->getHost() . $resourcePath . ($query ? "?{$query}" : ''), + $operationHost . $resourcePath . ($query ? "?{$query}" : ''), $headers, $httpBody ); @@ -651,14 +759,15 @@ public function createWithGuardianRequest($patron_with_guardian_request) * * Returns the patron details * + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getPatronInformationByPatronIdV2'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return \DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV6 */ - public function getPatronInformationByPatronIdV2() + public function getPatronInformationByPatronIdV2(string $contentType = self::contentTypes['getPatronInformationByPatronIdV2'][0]) { - list($response) = $this->getPatronInformationByPatronIdV2WithHttpInfo(); + list($response) = $this->getPatronInformationByPatronIdV2WithHttpInfo($contentType); return $response; } @@ -667,14 +776,15 @@ public function getPatronInformationByPatronIdV2() * * Returns the patron details * + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getPatronInformationByPatronIdV2'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return array of \DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV6, HTTP status code, HTTP response headers (array of strings) */ - public function getPatronInformationByPatronIdV2WithHttpInfo() + public function getPatronInformationByPatronIdV2WithHttpInfo(string $contentType = self::contentTypes['getPatronInformationByPatronIdV2'][0]) { - $request = $this->getPatronInformationByPatronIdV2Request(); + $request = $this->getPatronInformationByPatronIdV2Request($contentType); try { $options = $this->createHttpClientOption(); @@ -687,6 +797,13 @@ public function getPatronInformationByPatronIdV2WithHttpInfo() $e->getResponse() ? $e->getResponse()->getHeaders() : null, $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); + } catch (ConnectException $e) { + throw new ApiException( + "[{$e->getCode()}] {$e->getMessage()}", + (int) $e->getCode(), + null, + null + ); } $statusCode = $response->getStatusCode(); @@ -710,6 +827,21 @@ public function getPatronInformationByPatronIdV2WithHttpInfo() $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ('\DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV6' !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -724,6 +856,21 @@ public function getPatronInformationByPatronIdV2WithHttpInfo() $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -752,13 +899,14 @@ public function getPatronInformationByPatronIdV2WithHttpInfo() * * Returns the patron details * + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getPatronInformationByPatronIdV2'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function getPatronInformationByPatronIdV2Async() + public function getPatronInformationByPatronIdV2Async(string $contentType = self::contentTypes['getPatronInformationByPatronIdV2'][0]) { - return $this->getPatronInformationByPatronIdV2AsyncWithHttpInfo() + return $this->getPatronInformationByPatronIdV2AsyncWithHttpInfo($contentType) ->then( function ($response) { return $response[0]; @@ -771,14 +919,15 @@ function ($response) { * * Returns the patron details * + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getPatronInformationByPatronIdV2'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function getPatronInformationByPatronIdV2AsyncWithHttpInfo() + public function getPatronInformationByPatronIdV2AsyncWithHttpInfo(string $contentType = self::contentTypes['getPatronInformationByPatronIdV2'][0]) { $returnType = '\DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV6'; - $request = $this->getPatronInformationByPatronIdV2Request(); + $request = $this->getPatronInformationByPatronIdV2Request($contentType); return $this->client ->sendAsync($request, $this->createHttpClientOption()) @@ -788,6 +937,9 @@ function ($response) use ($returnType) { $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + $content = json_decode($content); + } } return [ @@ -816,13 +968,15 @@ function ($exception) { /** * Create request for operation 'getPatronInformationByPatronIdV2' * + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getPatronInformationByPatronIdV2'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request */ - public function getPatronInformationByPatronIdV2Request() + public function getPatronInformationByPatronIdV2Request(string $contentType = self::contentTypes['getPatronInformationByPatronIdV2'][0]) { + $resourcePath = '/external/agencyid/patrons/patronid/v2'; $formParams = []; $queryParams = []; @@ -834,16 +988,11 @@ public function getPatronInformationByPatronIdV2Request() - if ($multipart) { - $headers = $this->headerSelector->selectHeadersForMultipart( - ['*/*'] - ); - } else { - $headers = $this->headerSelector->selectHeaders( - ['*/*'], - [] - ); - } + $headers = $this->headerSelector->selectHeaders( + ['*/*', ], + $contentType, + $multipart + ); // for model (json/xml) if (count($formParams) > 0) { @@ -861,17 +1010,17 @@ public function getPatronInformationByPatronIdV2Request() // for HTTP post (form) $httpBody = new MultipartStream($multipartContents); - } elseif ($headers['Content-Type'] === 'application/json') { - $httpBody = \GuzzleHttp\json_encode($formParams); - + } elseif (stripos($headers['Content-Type'], 'application/json') !== false) { + # if Content-Type contains "application/json", json_encode the form parameters + $httpBody = \GuzzleHttp\Utils::jsonEncode($formParams); } else { // for HTTP post (form) - $httpBody = \GuzzleHttp\Psr7\build_query($formParams); + $httpBody = ObjectSerializer::buildQuery($formParams); } } // this endpoint requires OAuth (access token) - if ($this->config->getAccessToken() !== null) { + if (!empty($this->config->getAccessToken())) { $headers['Authorization'] = 'Bearer ' . $this->config->getAccessToken(); } @@ -886,10 +1035,11 @@ public function getPatronInformationByPatronIdV2Request() $headers ); - $query = \GuzzleHttp\Psr7\build_query($queryParams); + $operationHost = $this->config->getHost(); + $query = ObjectSerializer::buildQuery($queryParams); return new Request( 'GET', - $this->config->getHost() . $resourcePath . ($query ? "?{$query}" : ''), + $operationHost . $resourcePath . ($query ? "?{$query}" : ''), $headers, $httpBody ); @@ -901,14 +1051,15 @@ public function getPatronInformationByPatronIdV2Request() * Updates a person patron's guardian (eg A financial responsible). * * @param \DanskernesDigitaleBibliotek\FBS\Model\UpdateGuardianRequest $update_guardian_request The payload with information for the guardian update (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['updateGuardian'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return int */ - public function updateGuardian($update_guardian_request) + public function updateGuardian($update_guardian_request, string $contentType = self::contentTypes['updateGuardian'][0]) { - list($response) = $this->updateGuardianWithHttpInfo($update_guardian_request); + list($response) = $this->updateGuardianWithHttpInfo($update_guardian_request, $contentType); return $response; } @@ -918,14 +1069,15 @@ public function updateGuardian($update_guardian_request) * Updates a person patron's guardian (eg A financial responsible). * * @param \DanskernesDigitaleBibliotek\FBS\Model\UpdateGuardianRequest $update_guardian_request The payload with information for the guardian update (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['updateGuardian'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return array of int, HTTP status code, HTTP response headers (array of strings) */ - public function updateGuardianWithHttpInfo($update_guardian_request) + public function updateGuardianWithHttpInfo($update_guardian_request, string $contentType = self::contentTypes['updateGuardian'][0]) { - $request = $this->updateGuardianRequest($update_guardian_request); + $request = $this->updateGuardianRequest($update_guardian_request, $contentType); try { $options = $this->createHttpClientOption(); @@ -938,6 +1090,13 @@ public function updateGuardianWithHttpInfo($update_guardian_request) $e->getResponse() ? $e->getResponse()->getHeaders() : null, $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); + } catch (ConnectException $e) { + throw new ApiException( + "[{$e->getCode()}] {$e->getMessage()}", + (int) $e->getCode(), + null, + null + ); } $statusCode = $response->getStatusCode(); @@ -961,6 +1120,21 @@ public function updateGuardianWithHttpInfo($update_guardian_request) $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ('int' !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -975,6 +1149,21 @@ public function updateGuardianWithHttpInfo($update_guardian_request) $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -1004,13 +1193,14 @@ public function updateGuardianWithHttpInfo($update_guardian_request) * Updates a person patron's guardian (eg A financial responsible). * * @param \DanskernesDigitaleBibliotek\FBS\Model\UpdateGuardianRequest $update_guardian_request The payload with information for the guardian update (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['updateGuardian'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function updateGuardianAsync($update_guardian_request) + public function updateGuardianAsync($update_guardian_request, string $contentType = self::contentTypes['updateGuardian'][0]) { - return $this->updateGuardianAsyncWithHttpInfo($update_guardian_request) + return $this->updateGuardianAsyncWithHttpInfo($update_guardian_request, $contentType) ->then( function ($response) { return $response[0]; @@ -1024,14 +1214,15 @@ function ($response) { * Updates a person patron's guardian (eg A financial responsible). * * @param \DanskernesDigitaleBibliotek\FBS\Model\UpdateGuardianRequest $update_guardian_request The payload with information for the guardian update (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['updateGuardian'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function updateGuardianAsyncWithHttpInfo($update_guardian_request) + public function updateGuardianAsyncWithHttpInfo($update_guardian_request, string $contentType = self::contentTypes['updateGuardian'][0]) { $returnType = 'int'; - $request = $this->updateGuardianRequest($update_guardian_request); + $request = $this->updateGuardianRequest($update_guardian_request, $contentType); return $this->client ->sendAsync($request, $this->createHttpClientOption()) @@ -1041,6 +1232,9 @@ function ($response) use ($returnType) { $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + $content = json_decode($content); + } } return [ @@ -1070,12 +1264,14 @@ function ($exception) { * Create request for operation 'updateGuardian' * * @param \DanskernesDigitaleBibliotek\FBS\Model\UpdateGuardianRequest $update_guardian_request The payload with information for the guardian update (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['updateGuardian'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request */ - public function updateGuardianRequest($update_guardian_request) + public function updateGuardianRequest($update_guardian_request, string $contentType = self::contentTypes['updateGuardian'][0]) { + // verify the required parameter 'update_guardian_request' is set if ($update_guardian_request === null || (is_array($update_guardian_request) && count($update_guardian_request) === 0)) { throw new \InvalidArgumentException( @@ -1083,6 +1279,7 @@ public function updateGuardianRequest($update_guardian_request) ); } + $resourcePath = '/external/agencyid/patrons/withGuardian/v1'; $formParams = []; $queryParams = []; @@ -1094,21 +1291,17 @@ public function updateGuardianRequest($update_guardian_request) - if ($multipart) { - $headers = $this->headerSelector->selectHeadersForMultipart( - ['*/*'] - ); - } else { - $headers = $this->headerSelector->selectHeaders( - ['*/*'], - [] - ); - } + $headers = $this->headerSelector->selectHeaders( + ['*/*', ], + $contentType, + $multipart + ); // for model (json/xml) if (isset($update_guardian_request)) { - if ($headers['Content-Type'] === 'application/json') { - $httpBody = \GuzzleHttp\json_encode(ObjectSerializer::sanitizeForSerialization($update_guardian_request)); + if (stripos($headers['Content-Type'], 'application/json') !== false) { + # if Content-Type contains "application/json", json_encode the body + $httpBody = \GuzzleHttp\Utils::jsonEncode(ObjectSerializer::sanitizeForSerialization($update_guardian_request)); } else { $httpBody = $update_guardian_request; } @@ -1127,17 +1320,17 @@ public function updateGuardianRequest($update_guardian_request) // for HTTP post (form) $httpBody = new MultipartStream($multipartContents); - } elseif ($headers['Content-Type'] === 'application/json') { - $httpBody = \GuzzleHttp\json_encode($formParams); - + } elseif (stripos($headers['Content-Type'], 'application/json') !== false) { + # if Content-Type contains "application/json", json_encode the form parameters + $httpBody = \GuzzleHttp\Utils::jsonEncode($formParams); } else { // for HTTP post (form) - $httpBody = \GuzzleHttp\Psr7\build_query($formParams); + $httpBody = ObjectSerializer::buildQuery($formParams); } } // this endpoint requires OAuth (access token) - if ($this->config->getAccessToken() !== null) { + if (!empty($this->config->getAccessToken())) { $headers['Authorization'] = 'Bearer ' . $this->config->getAccessToken(); } @@ -1152,10 +1345,11 @@ public function updateGuardianRequest($update_guardian_request) $headers ); - $query = \GuzzleHttp\Psr7\build_query($queryParams); + $operationHost = $this->config->getHost(); + $query = ObjectSerializer::buildQuery($queryParams); return new Request( 'PUT', - $this->config->getHost() . $resourcePath . ($query ? "?{$query}" : ''), + $operationHost . $resourcePath . ($query ? "?{$query}" : ''), $headers, $httpBody ); @@ -1167,14 +1361,15 @@ public function updateGuardianRequest($update_guardian_request) * Update information about the patron. * * @param \DanskernesDigitaleBibliotek\FBS\Model\UpdatePatronRequestV4 $update_patron updated information about the patron (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['updateV5'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return \DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV6 */ - public function updateV5($update_patron) + public function updateV5($update_patron, string $contentType = self::contentTypes['updateV5'][0]) { - list($response) = $this->updateV5WithHttpInfo($update_patron); + list($response) = $this->updateV5WithHttpInfo($update_patron, $contentType); return $response; } @@ -1184,14 +1379,15 @@ public function updateV5($update_patron) * Update information about the patron. * * @param \DanskernesDigitaleBibliotek\FBS\Model\UpdatePatronRequestV4 $update_patron updated information about the patron (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['updateV5'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return array of \DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV6, HTTP status code, HTTP response headers (array of strings) */ - public function updateV5WithHttpInfo($update_patron) + public function updateV5WithHttpInfo($update_patron, string $contentType = self::contentTypes['updateV5'][0]) { - $request = $this->updateV5Request($update_patron); + $request = $this->updateV5Request($update_patron, $contentType); try { $options = $this->createHttpClientOption(); @@ -1204,6 +1400,13 @@ public function updateV5WithHttpInfo($update_patron) $e->getResponse() ? $e->getResponse()->getHeaders() : null, $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); + } catch (ConnectException $e) { + throw new ApiException( + "[{$e->getCode()}] {$e->getMessage()}", + (int) $e->getCode(), + null, + null + ); } $statusCode = $response->getStatusCode(); @@ -1227,6 +1430,21 @@ public function updateV5WithHttpInfo($update_patron) $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ('\DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV6' !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -1241,6 +1459,21 @@ public function updateV5WithHttpInfo($update_patron) $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -1270,13 +1503,14 @@ public function updateV5WithHttpInfo($update_patron) * Update information about the patron. * * @param \DanskernesDigitaleBibliotek\FBS\Model\UpdatePatronRequestV4 $update_patron updated information about the patron (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['updateV5'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function updateV5Async($update_patron) + public function updateV5Async($update_patron, string $contentType = self::contentTypes['updateV5'][0]) { - return $this->updateV5AsyncWithHttpInfo($update_patron) + return $this->updateV5AsyncWithHttpInfo($update_patron, $contentType) ->then( function ($response) { return $response[0]; @@ -1290,14 +1524,15 @@ function ($response) { * Update information about the patron. * * @param \DanskernesDigitaleBibliotek\FBS\Model\UpdatePatronRequestV4 $update_patron updated information about the patron (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['updateV5'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function updateV5AsyncWithHttpInfo($update_patron) + public function updateV5AsyncWithHttpInfo($update_patron, string $contentType = self::contentTypes['updateV5'][0]) { $returnType = '\DanskernesDigitaleBibliotek\FBS\Model\AuthenticatedPatronV6'; - $request = $this->updateV5Request($update_patron); + $request = $this->updateV5Request($update_patron, $contentType); return $this->client ->sendAsync($request, $this->createHttpClientOption()) @@ -1307,6 +1542,9 @@ function ($response) use ($returnType) { $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + $content = json_decode($content); + } } return [ @@ -1336,12 +1574,14 @@ function ($exception) { * Create request for operation 'updateV5' * * @param \DanskernesDigitaleBibliotek\FBS\Model\UpdatePatronRequestV4 $update_patron updated information about the patron (required) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['updateV5'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request */ - public function updateV5Request($update_patron) + public function updateV5Request($update_patron, string $contentType = self::contentTypes['updateV5'][0]) { + // verify the required parameter 'update_patron' is set if ($update_patron === null || (is_array($update_patron) && count($update_patron) === 0)) { throw new \InvalidArgumentException( @@ -1349,6 +1589,7 @@ public function updateV5Request($update_patron) ); } + $resourcePath = '/external/agencyid/patrons/patronid/v5'; $formParams = []; $queryParams = []; @@ -1360,21 +1601,17 @@ public function updateV5Request($update_patron) - if ($multipart) { - $headers = $this->headerSelector->selectHeadersForMultipart( - ['*/*'] - ); - } else { - $headers = $this->headerSelector->selectHeaders( - ['*/*'], - [] - ); - } + $headers = $this->headerSelector->selectHeaders( + ['*/*', ], + $contentType, + $multipart + ); // for model (json/xml) if (isset($update_patron)) { - if ($headers['Content-Type'] === 'application/json') { - $httpBody = \GuzzleHttp\json_encode(ObjectSerializer::sanitizeForSerialization($update_patron)); + if (stripos($headers['Content-Type'], 'application/json') !== false) { + # if Content-Type contains "application/json", json_encode the body + $httpBody = \GuzzleHttp\Utils::jsonEncode(ObjectSerializer::sanitizeForSerialization($update_patron)); } else { $httpBody = $update_patron; } @@ -1393,17 +1630,17 @@ public function updateV5Request($update_patron) // for HTTP post (form) $httpBody = new MultipartStream($multipartContents); - } elseif ($headers['Content-Type'] === 'application/json') { - $httpBody = \GuzzleHttp\json_encode($formParams); - + } elseif (stripos($headers['Content-Type'], 'application/json') !== false) { + # if Content-Type contains "application/json", json_encode the form parameters + $httpBody = \GuzzleHttp\Utils::jsonEncode($formParams); } else { // for HTTP post (form) - $httpBody = \GuzzleHttp\Psr7\build_query($formParams); + $httpBody = ObjectSerializer::buildQuery($formParams); } } // this endpoint requires OAuth (access token) - if ($this->config->getAccessToken() !== null) { + if (!empty($this->config->getAccessToken())) { $headers['Authorization'] = 'Bearer ' . $this->config->getAccessToken(); } @@ -1418,10 +1655,11 @@ public function updateV5Request($update_patron) $headers ); - $query = \GuzzleHttp\Psr7\build_query($queryParams); + $operationHost = $this->config->getHost(); + $query = ObjectSerializer::buildQuery($queryParams); return new Request( 'PUT', - $this->config->getHost() . $resourcePath . ($query ? "?{$query}" : ''), + $operationHost . $resourcePath . ($query ? "?{$query}" : ''), $headers, $httpBody ); diff --git a/packages/fbs-client/lib/Api/ExternalV1AgencyidApi.php b/packages/fbs-client/lib/Api/ExternalV1AgencyidApi.php index d0f74107c..e34fc15a7 100644 --- a/packages/fbs-client/lib/Api/ExternalV1AgencyidApi.php +++ b/packages/fbs-client/lib/Api/ExternalV1AgencyidApi.php @@ -1,7 +1,7 @@ [ + 'application/json', + ], + ]; + +/** * @param ClientInterface $client * @param Configuration $config * @param HeaderSelector $selector @@ -120,14 +128,15 @@ public function getConfig() * Get branches for an agency. * * @param string[] $exclude Identifies the branchIds which are excluded from the result (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getBranches'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return \DanskernesDigitaleBibliotek\FBS\Model\AgencyBranch[] */ - public function getBranches($exclude = null) + public function getBranches($exclude = null, string $contentType = self::contentTypes['getBranches'][0]) { - list($response) = $this->getBranchesWithHttpInfo($exclude); + list($response) = $this->getBranchesWithHttpInfo($exclude, $contentType); return $response; } @@ -137,14 +146,15 @@ public function getBranches($exclude = null) * Get branches for an agency. * * @param string[] $exclude Identifies the branchIds which are excluded from the result (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getBranches'] to see the possible values for this operation * - * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response + * @throws \DanskernesDigitaleBibliotek\FBS\ApiException on non-2xx response or if the response body is not in the expected format * @throws \InvalidArgumentException * @return array of \DanskernesDigitaleBibliotek\FBS\Model\AgencyBranch[], HTTP status code, HTTP response headers (array of strings) */ - public function getBranchesWithHttpInfo($exclude = null) + public function getBranchesWithHttpInfo($exclude = null, string $contentType = self::contentTypes['getBranches'][0]) { - $request = $this->getBranchesRequest($exclude); + $request = $this->getBranchesRequest($exclude, $contentType); try { $options = $this->createHttpClientOption(); @@ -157,6 +167,13 @@ public function getBranchesWithHttpInfo($exclude = null) $e->getResponse() ? $e->getResponse()->getHeaders() : null, $e->getResponse() ? (string) $e->getResponse()->getBody() : null ); + } catch (ConnectException $e) { + throw new ApiException( + "[{$e->getCode()}] {$e->getMessage()}", + (int) $e->getCode(), + null, + null + ); } $statusCode = $response->getStatusCode(); @@ -180,6 +197,21 @@ public function getBranchesWithHttpInfo($exclude = null) $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ('\DanskernesDigitaleBibliotek\FBS\Model\AgencyBranch[]' !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -194,6 +226,21 @@ public function getBranchesWithHttpInfo($exclude = null) $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + try { + $content = json_decode($content, false, 512, JSON_THROW_ON_ERROR); + } catch (\JsonException $exception) { + throw new ApiException( + sprintf( + 'Error JSON decoding server response (%s)', + $request->getUri() + ), + $statusCode, + $response->getHeaders(), + $content + ); + } + } } return [ @@ -223,13 +270,14 @@ public function getBranchesWithHttpInfo($exclude = null) * Get branches for an agency. * * @param string[] $exclude Identifies the branchIds which are excluded from the result (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getBranches'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function getBranchesAsync($exclude = null) + public function getBranchesAsync($exclude = null, string $contentType = self::contentTypes['getBranches'][0]) { - return $this->getBranchesAsyncWithHttpInfo($exclude) + return $this->getBranchesAsyncWithHttpInfo($exclude, $contentType) ->then( function ($response) { return $response[0]; @@ -243,14 +291,15 @@ function ($response) { * Get branches for an agency. * * @param string[] $exclude Identifies the branchIds which are excluded from the result (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getBranches'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Promise\PromiseInterface */ - public function getBranchesAsyncWithHttpInfo($exclude = null) + public function getBranchesAsyncWithHttpInfo($exclude = null, string $contentType = self::contentTypes['getBranches'][0]) { $returnType = '\DanskernesDigitaleBibliotek\FBS\Model\AgencyBranch[]'; - $request = $this->getBranchesRequest($exclude); + $request = $this->getBranchesRequest($exclude, $contentType); return $this->client ->sendAsync($request, $this->createHttpClientOption()) @@ -260,6 +309,9 @@ function ($response) use ($returnType) { $content = $response->getBody(); //stream goes to serializer } else { $content = (string) $response->getBody(); + if ($returnType !== 'string') { + $content = json_decode($content); + } } return [ @@ -289,13 +341,16 @@ function ($exception) { * Create request for operation 'getBranches' * * @param string[] $exclude Identifies the branchIds which are excluded from the result (optional) + * @param string $contentType The value for the Content-Type header. Check self::contentTypes['getBranches'] to see the possible values for this operation * * @throws \InvalidArgumentException * @return \GuzzleHttp\Psr7\Request */ - public function getBranchesRequest($exclude = null) + public function getBranchesRequest($exclude = null, string $contentType = self::contentTypes['getBranches'][0]) { + + $resourcePath = '/external/v1/agencyid/branches'; $formParams = []; $queryParams = []; @@ -304,26 +359,23 @@ public function getBranchesRequest($exclude = null) $multipart = false; // query params - if (is_array($exclude)) { - $exclude = ObjectSerializer::serializeCollection($exclude, 'form', true); - } - if ($exclude !== null) { - $queryParams['exclude'] = $exclude; - } + $queryParams = array_merge($queryParams, ObjectSerializer::toQueryValue( + $exclude, + 'exclude', // param base name + 'array', // openApiType + 'form', // style + false, // explode + false // required + ) ?? []); - if ($multipart) { - $headers = $this->headerSelector->selectHeadersForMultipart( - ['*/*'] - ); - } else { - $headers = $this->headerSelector->selectHeaders( - ['*/*'], - [] - ); - } + $headers = $this->headerSelector->selectHeaders( + ['*/*', ], + $contentType, + $multipart + ); // for model (json/xml) if (count($formParams) > 0) { @@ -341,17 +393,17 @@ public function getBranchesRequest($exclude = null) // for HTTP post (form) $httpBody = new MultipartStream($multipartContents); - } elseif ($headers['Content-Type'] === 'application/json') { - $httpBody = \GuzzleHttp\json_encode($formParams); - + } elseif (stripos($headers['Content-Type'], 'application/json') !== false) { + # if Content-Type contains "application/json", json_encode the form parameters + $httpBody = \GuzzleHttp\Utils::jsonEncode($formParams); } else { // for HTTP post (form) - $httpBody = \GuzzleHttp\Psr7\build_query($formParams); + $httpBody = ObjectSerializer::buildQuery($formParams); } } // this endpoint requires OAuth (access token) - if ($this->config->getAccessToken() !== null) { + if (!empty($this->config->getAccessToken())) { $headers['Authorization'] = 'Bearer ' . $this->config->getAccessToken(); } @@ -366,10 +418,11 @@ public function getBranchesRequest($exclude = null) $headers ); - $query = \GuzzleHttp\Psr7\build_query($queryParams); + $operationHost = $this->config->getHost(); + $query = ObjectSerializer::buildQuery($queryParams); return new Request( 'GET', - $this->config->getHost() . $resourcePath . ($query ? "?{$query}" : ''), + $operationHost . $resourcePath . ($query ? "?{$query}" : ''), $headers, $httpBody ); diff --git a/packages/fbs-client/lib/ApiException.php b/packages/fbs-client/lib/ApiException.php index fe2b77f18..972fe1f28 100644 --- a/packages/fbs-client/lib/ApiException.php +++ b/packages/fbs-client/lib/ApiException.php @@ -1,7 +1,7 @@ accessToken; } + /** + * Sets boolean format for query string. + * + * @param string $booleanFormatForQueryString Boolean format for query string + * + * @return $this + */ + public function setBooleanFormatForQueryString(string $booleanFormat) + { + $this->booleanFormatForQueryString = $booleanFormat; + + return $this; + } + + /** + * Gets boolean format for query string. + * + * @return string Boolean format for query string + */ + public function getBooleanFormatForQueryString(): string + { + return $this->booleanFormatForQueryString; + } + /** * Sets the username for HTTP basic authentication * @@ -377,7 +411,7 @@ public static function getDefaultConfiguration() } /** - * Sets the detault configuration instance + * Sets the default configuration instance * * @param Configuration $config An instance of the Configuration Object * @@ -445,32 +479,31 @@ public function getHostSettings() } /** - * Returns URL based on the index and variables - * - * @param int $index index of the host settings - * @param array|null $variables hash of variable and the corresponding value (optional) - * @return string URL based on host settings - */ - public function getHostFromSettings($index, $variables = null) + * Returns URL based on host settings, index and variables + * + * @param array $hostSettings array of host settings, generated from getHostSettings() or equivalent from the API clients + * @param int $hostIndex index of the host settings + * @param array|null $variables hash of variable and the corresponding value (optional) + * @return string URL based on host settings + */ + public static function getHostString(array $hostsSettings, $hostIndex, array $variables = null) { if (null === $variables) { $variables = []; } - $hosts = $this->getHostSettings(); - // check array index out of bound - if ($index < 0 || $index >= sizeof($hosts)) { - throw new \InvalidArgumentException("Invalid index $index when selecting the host. Must be less than ".sizeof($hosts)); + if ($hostIndex < 0 || $hostIndex >= count($hostsSettings)) { + throw new \InvalidArgumentException("Invalid index $hostIndex when selecting the host. Must be less than ".count($hostsSettings)); } - $host = $hosts[$index]; + $host = $hostsSettings[$hostIndex]; $url = $host["url"]; // go through variable and assign a value foreach ($host["variables"] ?? [] as $name => $variable) { if (array_key_exists($name, $variables)) { // check to see if it's in the variables provided by the user - if (in_array($variables[$name], $variable["enum_values"], true)) { // check to see if the value is in the enum + if (!isset($variable['enum_values']) || in_array($variables[$name], $variable["enum_values"], true)) { // check to see if the value is in the enum $url = str_replace("{".$name."}", $variables[$name], $url); } else { throw new \InvalidArgumentException("The variable `$name` in the host URL has invalid value ".$variables[$name].". Must be ".join(',', $variable["enum_values"])."."); @@ -483,4 +516,16 @@ public function getHostFromSettings($index, $variables = null) return $url; } + + /** + * Returns URL based on the index and variables + * + * @param int $index index of the host settings + * @param array|null $variables hash of variable and the corresponding value (optional) + * @return string URL based on host settings + */ + public function getHostFromSettings($index, $variables = null) + { + return self::getHostString($this->getHostSettings(), $index, $variables); + } } diff --git a/packages/fbs-client/lib/HeaderSelector.php b/packages/fbs-client/lib/HeaderSelector.php index 32d2bf66d..3ac056bf6 100644 --- a/packages/fbs-client/lib/HeaderSelector.php +++ b/packages/fbs-client/lib/HeaderSelector.php @@ -1,7 +1,7 @@ selectContentTypeHeader($contentTypes); - return $headers; - } + if (!$isMultipart) { + if($contentType === '') { + $contentType = 'application/json'; + } - /** - * @param string[] $accept - * @return array - */ - public function selectHeadersForMultipart($accept) - { - $headers = $this->selectHeaders($accept, []); + $headers['Content-Type'] = $contentType; + } - unset($headers['Content-Type']); return $headers; } /** - * Return the header 'Accept' based on an array of Accept provided + * Return the header 'Accept' based on an array of Accept provided. * * @param string[] $accept Array of header * * @return null|string Accept (e.g. application/json) */ - private function selectAcceptHeader($accept) + private function selectAcceptHeader(array $accept): ?string { - if (count($accept) === 0 || (count($accept) === 1 && $accept[0] === '')) { + # filter out empty entries + $accept = array_filter($accept); + + if (count($accept) === 0) { return null; - } elseif ($jsonAccept = preg_grep('~(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$~', $accept)) { - return implode(',', $jsonAccept); - } else { + } + + # If there's only one Accept header, just use it + if (count($accept) === 1) { + return reset($accept); + } + + # If none of the available Accept headers is of type "json", then just use all them + $headersWithJson = preg_grep('~(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$~', $accept); + if (count($headersWithJson) === 0) { return implode(',', $accept); } + + # If we got here, then we need add quality values (weight), as described in IETF RFC 9110, Items 12.4.2/12.5.1, + # to give the highest priority to json-like headers - recalculating the existing ones, if needed + return $this->getAcceptHeaderWithAdjustedWeight($accept, $headersWithJson); } /** - * Return the content type based on an array of content-type provided + * Create an Accept header string from the given "Accept" headers array, recalculating all weights + * + * @param string[] $accept Array of Accept Headers + * @param string[] $headersWithJson Array of Accept Headers of type "json" + * + * @return string "Accept" Header (e.g. "application/json, text/html; q=0.9") + */ + private function getAcceptHeaderWithAdjustedWeight(array $accept, array $headersWithJson): string + { + $processedHeaders = [ + 'withApplicationJson' => [], + 'withJson' => [], + 'withoutJson' => [], + ]; + + foreach ($accept as $header) { + + $headerData = $this->getHeaderAndWeight($header); + + if (stripos($headerData['header'], 'application/json') === 0) { + $processedHeaders['withApplicationJson'][] = $headerData; + } elseif (in_array($header, $headersWithJson, true)) { + $processedHeaders['withJson'][] = $headerData; + } else { + $processedHeaders['withoutJson'][] = $headerData; + } + } + + $acceptHeaders = []; + $currentWeight = 1000; + + $hasMoreThan28Headers = count($accept) > 28; + + foreach($processedHeaders as $headers) { + if (count($headers) > 0) { + $acceptHeaders[] = $this->adjustWeight($headers, $currentWeight, $hasMoreThan28Headers); + } + } + + $acceptHeaders = array_merge(...$acceptHeaders); + + return implode(',', $acceptHeaders); + } + + /** + * Given an Accept header, returns an associative array splitting the header and its weight * - * @param string[] $contentType Array fo content-type + * @param string $header "Accept" Header * - * @return string Content-Type (e.g. application/json) + * @return array with the header and its weight */ - private function selectContentTypeHeader($contentType) + private function getHeaderAndWeight(string $header): array { - if (count($contentType) === 0 || (count($contentType) === 1 && $contentType[0] === '')) { - return 'application/json'; - } elseif (preg_grep("/application\/json/i", $contentType)) { - return 'application/json'; + # matches headers with weight, splitting the header and the weight in $outputArray + if (preg_match('/(.*);\s*q=(1(?:\.0+)?|0\.\d+)$/', $header, $outputArray) === 1) { + $headerData = [ + 'header' => $outputArray[1], + 'weight' => (int)($outputArray[2] * 1000), + ]; } else { - return implode(',', $contentType); + $headerData = [ + 'header' => trim($header), + 'weight' => 1000, + ]; } + + return $headerData; + } + + /** + * @param array[] $headers + * @param float $currentWeight + * @param bool $hasMoreThan28Headers + * @return string[] array of adjusted "Accept" headers + */ + private function adjustWeight(array $headers, float &$currentWeight, bool $hasMoreThan28Headers): array + { + usort($headers, function (array $a, array $b) { + return $b['weight'] - $a['weight']; + }); + + $acceptHeaders = []; + foreach ($headers as $index => $header) { + if($index > 0 && $headers[$index - 1]['weight'] > $header['weight']) + { + $currentWeight = $this->getNextWeight($currentWeight, $hasMoreThan28Headers); + } + + $weight = $currentWeight; + + $acceptHeaders[] = $this->buildAcceptHeader($header['header'], $weight); + } + + $currentWeight = $this->getNextWeight($currentWeight, $hasMoreThan28Headers); + + return $acceptHeaders; + } + + /** + * @param string $header + * @param int $weight + * @return string + */ + private function buildAcceptHeader(string $header, int $weight): string + { + if($weight === 1000) { + return $header; + } + + return trim($header, '; ') . ';q=' . rtrim(sprintf('%0.3f', $weight / 1000), '0'); } -} + /** + * Calculate the next weight, based on the current one. + * + * If there are less than 28 "Accept" headers, the weights will be decreased by 1 on its highest significant digit, using the + * following formula: + * + * next weight = current weight - 10 ^ (floor(log(current weight - 1))) + * + * ( current weight minus ( 10 raised to the power of ( floor of (log to the base 10 of ( current weight minus 1 ) ) ) ) ) + * + * Starting from 1000, this generates the following series: + * + * 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 + * + * The resulting quality codes are closer to the average "normal" usage of them (like "q=0.9", "q=0.8" and so on), but it only works + * if there is a maximum of 28 "Accept" headers. If we have more than that (which is extremely unlikely), then we fall back to a 1-by-1 + * decrement rule, which will result in quality codes like "q=0.999", "q=0.998" etc. + * + * @param int $currentWeight varying from 1 to 1000 (will be divided by 1000 to build the quality value) + * @param bool $hasMoreThan28Headers + * @return int + */ + public function getNextWeight(int $currentWeight, bool $hasMoreThan28Headers): int + { + if ($currentWeight <= 1) { + return 1; + } + + if ($hasMoreThan28Headers) { + return $currentWeight - 1; + } + + return $currentWeight - 10 ** floor( log10($currentWeight - 1) ); + } +} diff --git a/packages/fbs-client/lib/Model/AddressV2.php b/packages/fbs-client/lib/Model/AddressV2.php index e5867c30e..4668e4a01 100644 --- a/packages/fbs-client/lib/Model/AddressV2.php +++ b/packages/fbs-client/lib/Model/AddressV2.php @@ -2,7 +2,7 @@ /** * AddressV2 * - * PHP version 7.3 + * PHP version 7.4 * * @category Class * @package DanskernesDigitaleBibliotek\FBS @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1 + * OpenAPI Generator version: 7.1.0 */ /** @@ -38,9 +38,7 @@ * @package DanskernesDigitaleBibliotek\FBS * @author OpenAPI Generator team * @link https://openapi-generator.tech - * @implements \ArrayAccess - * @template TKey int|null - * @template TValue mixed|null + * @implements \ArrayAccess */ class AddressV2 implements ModelInterface, ArrayAccess, \JsonSerializable { @@ -81,6 +79,26 @@ class AddressV2 implements ModelInterface, ArrayAccess, \JsonSerializable 'street' => null ]; + /** + * Array of nullable properties. Used for (de)serialization + * + * @var boolean[] + */ + protected static array $openAPINullables = [ + 'city' => false, + 'co_name' => false, + 'country' => false, + 'postal_code' => false, + 'street' => false + ]; + + /** + * If a nullable field gets set to null, insert it here + * + * @var boolean[] + */ + protected array $openAPINullablesSetToNull = []; + /** * Array of property to type mappings. Used for (de)serialization * @@ -101,6 +119,58 @@ public static function openAPIFormats() return self::$openAPIFormats; } + /** + * Array of nullable properties + * + * @return array + */ + protected static function openAPINullables(): array + { + return self::$openAPINullables; + } + + /** + * Array of nullable field names deliberately set to null + * + * @return boolean[] + */ + private function getOpenAPINullablesSetToNull(): array + { + return $this->openAPINullablesSetToNull; + } + + /** + * Setter - Array of nullable field names deliberately set to null + * + * @param boolean[] $openAPINullablesSetToNull + */ + private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void + { + $this->openAPINullablesSetToNull = $openAPINullablesSetToNull; + } + + /** + * Checks if a property is nullable + * + * @param string $property + * @return bool + */ + public static function isNullable(string $property): bool + { + return self::openAPINullables()[$property] ?? false; + } + + /** + * Checks if a nullable property is set to null. + * + * @param string $property + * @return bool + */ + public function isNullableSetToNull(string $property): bool + { + return in_array($property, $this->getOpenAPINullablesSetToNull(), true); + } + /** * Array of attributes where the key is the local name, * and the value is the original name @@ -198,11 +268,29 @@ public function getModelName() */ public function __construct(array $data = null) { - $this->container['city'] = $data['city'] ?? null; - $this->container['co_name'] = $data['co_name'] ?? null; - $this->container['country'] = $data['country'] ?? null; - $this->container['postal_code'] = $data['postal_code'] ?? null; - $this->container['street'] = $data['street'] ?? null; + $this->setIfExists('city', $data ?? [], null); + $this->setIfExists('co_name', $data ?? [], null); + $this->setIfExists('country', $data ?? [], null); + $this->setIfExists('postal_code', $data ?? [], null); + $this->setIfExists('street', $data ?? [], null); + } + + /** + * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName + * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the + * $this->openAPINullablesSetToNull array + * + * @param string $variableName + * @param array $fields + * @param mixed $defaultValue + */ + private function setIfExists(string $variableName, array $fields, $defaultValue): void + { + if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) { + $this->openAPINullablesSetToNull[] = $variableName; + } + + $this->container[$variableName] = $fields[$variableName] ?? $defaultValue; } /** @@ -263,6 +351,9 @@ public function getCity() */ public function setCity($city) { + if (is_null($city)) { + throw new \InvalidArgumentException('non-nullable city cannot be null'); + } $this->container['city'] = $city; return $this; @@ -287,6 +378,9 @@ public function getCoName() */ public function setCoName($co_name) { + if (is_null($co_name)) { + throw new \InvalidArgumentException('non-nullable co_name cannot be null'); + } $this->container['co_name'] = $co_name; return $this; @@ -311,6 +405,9 @@ public function getCountry() */ public function setCountry($country) { + if (is_null($country)) { + throw new \InvalidArgumentException('non-nullable country cannot be null'); + } $this->container['country'] = $country; return $this; @@ -335,6 +432,9 @@ public function getPostalCode() */ public function setPostalCode($postal_code) { + if (is_null($postal_code)) { + throw new \InvalidArgumentException('non-nullable postal_code cannot be null'); + } $this->container['postal_code'] = $postal_code; return $this; @@ -359,6 +459,9 @@ public function getStreet() */ public function setStreet($street) { + if (is_null($street)) { + throw new \InvalidArgumentException('non-nullable street cannot be null'); + } $this->container['street'] = $street; return $this; @@ -370,7 +473,7 @@ public function setStreet($street) * * @return boolean */ - public function offsetExists($offset) + public function offsetExists($offset): bool { return isset($this->container[$offset]); } @@ -382,6 +485,7 @@ public function offsetExists($offset) * * @return mixed|null */ + #[\ReturnTypeWillChange] public function offsetGet($offset) { return $this->container[$offset] ?? null; @@ -395,7 +499,7 @@ public function offsetGet($offset) * * @return void */ - public function offsetSet($offset, $value) + public function offsetSet($offset, $value): void { if (is_null($offset)) { $this->container[] = $value; @@ -411,7 +515,7 @@ public function offsetSet($offset, $value) * * @return void */ - public function offsetUnset($offset) + public function offsetUnset($offset): void { unset($this->container[$offset]); } @@ -423,6 +527,7 @@ public function offsetUnset($offset) * @return mixed Returns data which can be serialized by json_encode(), which is a value * of any type other than a resource. */ + #[\ReturnTypeWillChange] public function jsonSerialize() { return ObjectSerializer::sanitizeForSerialization($this); diff --git a/packages/fbs-client/lib/Model/AgencyBranch.php b/packages/fbs-client/lib/Model/AgencyBranch.php index 23d26061a..0fe227c3d 100644 --- a/packages/fbs-client/lib/Model/AgencyBranch.php +++ b/packages/fbs-client/lib/Model/AgencyBranch.php @@ -2,7 +2,7 @@ /** * AgencyBranch * - * PHP version 7.3 + * PHP version 7.4 * * @category Class * @package DanskernesDigitaleBibliotek\FBS @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1 + * OpenAPI Generator version: 7.1.0 */ /** @@ -38,9 +38,7 @@ * @package DanskernesDigitaleBibliotek\FBS * @author OpenAPI Generator team * @link https://openapi-generator.tech - * @implements \ArrayAccess - * @template TKey int|null - * @template TValue mixed|null + * @implements \ArrayAccess */ class AgencyBranch implements ModelInterface, ArrayAccess, \JsonSerializable { @@ -75,6 +73,23 @@ class AgencyBranch implements ModelInterface, ArrayAccess, \JsonSerializable 'title' => null ]; + /** + * Array of nullable properties. Used for (de)serialization + * + * @var boolean[] + */ + protected static array $openAPINullables = [ + 'branch_id' => false, + 'title' => false + ]; + + /** + * If a nullable field gets set to null, insert it here + * + * @var boolean[] + */ + protected array $openAPINullablesSetToNull = []; + /** * Array of property to type mappings. Used for (de)serialization * @@ -95,6 +110,58 @@ public static function openAPIFormats() return self::$openAPIFormats; } + /** + * Array of nullable properties + * + * @return array + */ + protected static function openAPINullables(): array + { + return self::$openAPINullables; + } + + /** + * Array of nullable field names deliberately set to null + * + * @return boolean[] + */ + private function getOpenAPINullablesSetToNull(): array + { + return $this->openAPINullablesSetToNull; + } + + /** + * Setter - Array of nullable field names deliberately set to null + * + * @param boolean[] $openAPINullablesSetToNull + */ + private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void + { + $this->openAPINullablesSetToNull = $openAPINullablesSetToNull; + } + + /** + * Checks if a property is nullable + * + * @param string $property + * @return bool + */ + public static function isNullable(string $property): bool + { + return self::openAPINullables()[$property] ?? false; + } + + /** + * Checks if a nullable property is set to null. + * + * @param string $property + * @return bool + */ + public function isNullableSetToNull(string $property): bool + { + return in_array($property, $this->getOpenAPINullablesSetToNull(), true); + } + /** * Array of attributes where the key is the local name, * and the value is the original name @@ -183,8 +250,26 @@ public function getModelName() */ public function __construct(array $data = null) { - $this->container['branch_id'] = $data['branch_id'] ?? null; - $this->container['title'] = $data['title'] ?? null; + $this->setIfExists('branch_id', $data ?? [], null); + $this->setIfExists('title', $data ?? [], null); + } + + /** + * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName + * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the + * $this->openAPINullablesSetToNull array + * + * @param string $variableName + * @param array $fields + * @param mixed $defaultValue + */ + private function setIfExists(string $variableName, array $fields, $defaultValue): void + { + if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) { + $this->openAPINullablesSetToNull[] = $variableName; + } + + $this->container[$variableName] = $fields[$variableName] ?? $defaultValue; } /** @@ -236,6 +321,9 @@ public function getBranchId() */ public function setBranchId($branch_id) { + if (is_null($branch_id)) { + throw new \InvalidArgumentException('non-nullable branch_id cannot be null'); + } $this->container['branch_id'] = $branch_id; return $this; @@ -260,6 +348,9 @@ public function getTitle() */ public function setTitle($title) { + if (is_null($title)) { + throw new \InvalidArgumentException('non-nullable title cannot be null'); + } $this->container['title'] = $title; return $this; @@ -271,7 +362,7 @@ public function setTitle($title) * * @return boolean */ - public function offsetExists($offset) + public function offsetExists($offset): bool { return isset($this->container[$offset]); } @@ -283,6 +374,7 @@ public function offsetExists($offset) * * @return mixed|null */ + #[\ReturnTypeWillChange] public function offsetGet($offset) { return $this->container[$offset] ?? null; @@ -296,7 +388,7 @@ public function offsetGet($offset) * * @return void */ - public function offsetSet($offset, $value) + public function offsetSet($offset, $value): void { if (is_null($offset)) { $this->container[] = $value; @@ -312,7 +404,7 @@ public function offsetSet($offset, $value) * * @return void */ - public function offsetUnset($offset) + public function offsetUnset($offset): void { unset($this->container[$offset]); } @@ -324,6 +416,7 @@ public function offsetUnset($offset) * @return mixed Returns data which can be serialized by json_encode(), which is a value * of any type other than a resource. */ + #[\ReturnTypeWillChange] public function jsonSerialize() { return ObjectSerializer::sanitizeForSerialization($this); diff --git a/packages/fbs-client/lib/Model/AuthenticatedPatronV6.php b/packages/fbs-client/lib/Model/AuthenticatedPatronV6.php index 3bb4fc688..d0dd898ac 100644 --- a/packages/fbs-client/lib/Model/AuthenticatedPatronV6.php +++ b/packages/fbs-client/lib/Model/AuthenticatedPatronV6.php @@ -2,7 +2,7 @@ /** * AuthenticatedPatronV6 * - * PHP version 7.3 + * PHP version 7.4 * * @category Class * @package DanskernesDigitaleBibliotek\FBS @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1 + * OpenAPI Generator version: 7.1.0 */ /** @@ -38,9 +38,7 @@ * @package DanskernesDigitaleBibliotek\FBS * @author OpenAPI Generator team * @link https://openapi-generator.tech - * @implements \ArrayAccess - * @template TKey int|null - * @template TValue mixed|null + * @implements \ArrayAccess */ class AuthenticatedPatronV6 implements ModelInterface, ArrayAccess, \JsonSerializable { @@ -75,6 +73,23 @@ class AuthenticatedPatronV6 implements ModelInterface, ArrayAccess, \JsonSeriali 'patron' => null ]; + /** + * Array of nullable properties. Used for (de)serialization + * + * @var boolean[] + */ + protected static array $openAPINullables = [ + 'authenticate_status' => false, + 'patron' => false + ]; + + /** + * If a nullable field gets set to null, insert it here + * + * @var boolean[] + */ + protected array $openAPINullablesSetToNull = []; + /** * Array of property to type mappings. Used for (de)serialization * @@ -95,6 +110,58 @@ public static function openAPIFormats() return self::$openAPIFormats; } + /** + * Array of nullable properties + * + * @return array + */ + protected static function openAPINullables(): array + { + return self::$openAPINullables; + } + + /** + * Array of nullable field names deliberately set to null + * + * @return boolean[] + */ + private function getOpenAPINullablesSetToNull(): array + { + return $this->openAPINullablesSetToNull; + } + + /** + * Setter - Array of nullable field names deliberately set to null + * + * @param boolean[] $openAPINullablesSetToNull + */ + private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void + { + $this->openAPINullablesSetToNull = $openAPINullablesSetToNull; + } + + /** + * Checks if a property is nullable + * + * @param string $property + * @return bool + */ + public static function isNullable(string $property): bool + { + return self::openAPINullables()[$property] ?? false; + } + + /** + * Checks if a nullable property is set to null. + * + * @param string $property + * @return bool + */ + public function isNullableSetToNull(string $property): bool + { + return in_array($property, $this->getOpenAPINullablesSetToNull(), true); + } + /** * Array of attributes where the key is the local name, * and the value is the original name @@ -167,9 +234,9 @@ public function getModelName() return self::$openAPIModelName; } - const AUTHENTICATE_STATUS_VALID = 'VALID'; - const AUTHENTICATE_STATUS_INVALID = 'INVALID'; - const AUTHENTICATE_STATUS_LOANER_LOCKED_OUT = 'LOANER_LOCKED_OUT'; + public const AUTHENTICATE_STATUS_VALID = 'VALID'; + public const AUTHENTICATE_STATUS_INVALID = 'INVALID'; + public const AUTHENTICATE_STATUS_LOANER_LOCKED_OUT = 'LOANER_LOCKED_OUT'; /** * Gets allowable values of the enum @@ -200,8 +267,26 @@ public function getAuthenticateStatusAllowableValues() */ public function __construct(array $data = null) { - $this->container['authenticate_status'] = $data['authenticate_status'] ?? null; - $this->container['patron'] = $data['patron'] ?? null; + $this->setIfExists('authenticate_status', $data ?? [], null); + $this->setIfExists('patron', $data ?? [], null); + } + + /** + * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName + * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the + * $this->openAPINullablesSetToNull array + * + * @param string $variableName + * @param array $fields + * @param mixed $defaultValue + */ + private function setIfExists(string $variableName, array $fields, $defaultValue): void + { + if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) { + $this->openAPINullablesSetToNull[] = $variableName; + } + + $this->container[$variableName] = $fields[$variableName] ?? $defaultValue; } /** @@ -259,6 +344,9 @@ public function getAuthenticateStatus() */ public function setAuthenticateStatus($authenticate_status) { + if (is_null($authenticate_status)) { + throw new \InvalidArgumentException('non-nullable authenticate_status cannot be null'); + } $allowedValues = $this->getAuthenticateStatusAllowableValues(); if (!in_array($authenticate_status, $allowedValues, true)) { throw new \InvalidArgumentException( @@ -293,6 +381,9 @@ public function getPatron() */ public function setPatron($patron) { + if (is_null($patron)) { + throw new \InvalidArgumentException('non-nullable patron cannot be null'); + } $this->container['patron'] = $patron; return $this; @@ -304,7 +395,7 @@ public function setPatron($patron) * * @return boolean */ - public function offsetExists($offset) + public function offsetExists($offset): bool { return isset($this->container[$offset]); } @@ -316,6 +407,7 @@ public function offsetExists($offset) * * @return mixed|null */ + #[\ReturnTypeWillChange] public function offsetGet($offset) { return $this->container[$offset] ?? null; @@ -329,7 +421,7 @@ public function offsetGet($offset) * * @return void */ - public function offsetSet($offset, $value) + public function offsetSet($offset, $value): void { if (is_null($offset)) { $this->container[] = $value; @@ -345,7 +437,7 @@ public function offsetSet($offset, $value) * * @return void */ - public function offsetUnset($offset) + public function offsetUnset($offset): void { unset($this->container[$offset]); } @@ -357,6 +449,7 @@ public function offsetUnset($offset) * @return mixed Returns data which can be serialized by json_encode(), which is a value * of any type other than a resource. */ + #[\ReturnTypeWillChange] public function jsonSerialize() { return ObjectSerializer::sanitizeForSerialization($this); diff --git a/packages/fbs-client/lib/Model/BlockStatus.php b/packages/fbs-client/lib/Model/BlockStatus.php index 8acab28d0..c287edf54 100644 --- a/packages/fbs-client/lib/Model/BlockStatus.php +++ b/packages/fbs-client/lib/Model/BlockStatus.php @@ -2,7 +2,7 @@ /** * BlockStatus * - * PHP version 7.3 + * PHP version 7.4 * * @category Class * @package DanskernesDigitaleBibliotek\FBS @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1 + * OpenAPI Generator version: 7.1.0 */ /** @@ -38,9 +38,7 @@ * @package DanskernesDigitaleBibliotek\FBS * @author OpenAPI Generator team * @link https://openapi-generator.tech - * @implements \ArrayAccess - * @template TKey int|null - * @template TValue mixed|null + * @implements \ArrayAccess */ class BlockStatus implements ModelInterface, ArrayAccess, \JsonSerializable { @@ -77,6 +75,24 @@ class BlockStatus implements ModelInterface, ArrayAccess, \JsonSerializable 'message' => null ]; + /** + * Array of nullable properties. Used for (de)serialization + * + * @var boolean[] + */ + protected static array $openAPINullables = [ + 'blocked_reason' => false, + 'blocked_since' => false, + 'message' => false + ]; + + /** + * If a nullable field gets set to null, insert it here + * + * @var boolean[] + */ + protected array $openAPINullablesSetToNull = []; + /** * Array of property to type mappings. Used for (de)serialization * @@ -97,6 +113,58 @@ public static function openAPIFormats() return self::$openAPIFormats; } + /** + * Array of nullable properties + * + * @return array + */ + protected static function openAPINullables(): array + { + return self::$openAPINullables; + } + + /** + * Array of nullable field names deliberately set to null + * + * @return boolean[] + */ + private function getOpenAPINullablesSetToNull(): array + { + return $this->openAPINullablesSetToNull; + } + + /** + * Setter - Array of nullable field names deliberately set to null + * + * @param boolean[] $openAPINullablesSetToNull + */ + private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void + { + $this->openAPINullablesSetToNull = $openAPINullablesSetToNull; + } + + /** + * Checks if a property is nullable + * + * @param string $property + * @return bool + */ + public static function isNullable(string $property): bool + { + return self::openAPINullables()[$property] ?? false; + } + + /** + * Checks if a nullable property is set to null. + * + * @param string $property + * @return bool + */ + public function isNullableSetToNull(string $property): bool + { + return in_array($property, $this->getOpenAPINullablesSetToNull(), true); + } + /** * Array of attributes where the key is the local name, * and the value is the original name @@ -188,9 +256,27 @@ public function getModelName() */ public function __construct(array $data = null) { - $this->container['blocked_reason'] = $data['blocked_reason'] ?? null; - $this->container['blocked_since'] = $data['blocked_since'] ?? null; - $this->container['message'] = $data['message'] ?? null; + $this->setIfExists('blocked_reason', $data ?? [], null); + $this->setIfExists('blocked_since', $data ?? [], null); + $this->setIfExists('message', $data ?? [], null); + } + + /** + * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName + * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the + * $this->openAPINullablesSetToNull array + * + * @param string $variableName + * @param array $fields + * @param mixed $defaultValue + */ + private function setIfExists(string $variableName, array $fields, $defaultValue): void + { + if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) { + $this->openAPINullablesSetToNull[] = $variableName; + } + + $this->container[$variableName] = $fields[$variableName] ?? $defaultValue; } /** @@ -245,6 +331,9 @@ public function getBlockedReason() */ public function setBlockedReason($blocked_reason) { + if (is_null($blocked_reason)) { + throw new \InvalidArgumentException('non-nullable blocked_reason cannot be null'); + } $this->container['blocked_reason'] = $blocked_reason; return $this; @@ -269,6 +358,9 @@ public function getBlockedSince() */ public function setBlockedSince($blocked_since) { + if (is_null($blocked_since)) { + throw new \InvalidArgumentException('non-nullable blocked_since cannot be null'); + } $this->container['blocked_since'] = $blocked_since; return $this; @@ -293,6 +385,9 @@ public function getMessage() */ public function setMessage($message) { + if (is_null($message)) { + throw new \InvalidArgumentException('non-nullable message cannot be null'); + } $this->container['message'] = $message; return $this; @@ -304,7 +399,7 @@ public function setMessage($message) * * @return boolean */ - public function offsetExists($offset) + public function offsetExists($offset): bool { return isset($this->container[$offset]); } @@ -316,6 +411,7 @@ public function offsetExists($offset) * * @return mixed|null */ + #[\ReturnTypeWillChange] public function offsetGet($offset) { return $this->container[$offset] ?? null; @@ -329,7 +425,7 @@ public function offsetGet($offset) * * @return void */ - public function offsetSet($offset, $value) + public function offsetSet($offset, $value): void { if (is_null($offset)) { $this->container[] = $value; @@ -345,7 +441,7 @@ public function offsetSet($offset, $value) * * @return void */ - public function offsetUnset($offset) + public function offsetUnset($offset): void { unset($this->container[$offset]); } @@ -357,6 +453,7 @@ public function offsetUnset($offset) * @return mixed Returns data which can be serialized by json_encode(), which is a value * of any type other than a resource. */ + #[\ReturnTypeWillChange] public function jsonSerialize() { return ObjectSerializer::sanitizeForSerialization($this); diff --git a/packages/fbs-client/lib/Model/ModelInterface.php b/packages/fbs-client/lib/Model/ModelInterface.php index 129eb105e..cc388eacb 100644 --- a/packages/fbs-client/lib/Model/ModelInterface.php +++ b/packages/fbs-client/lib/Model/ModelInterface.php @@ -2,7 +2,7 @@ /** * ModelInterface * - * PHP version 7.3 + * PHP version 7.4 * * @category Class * @package DanskernesDigitaleBibliotek\FBS\Model @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1 + * OpenAPI Generator version: 7.1.0 */ /** @@ -92,4 +92,20 @@ public function listInvalidProperties(); * @return bool */ public function valid(); + + /** + * Checks if a property is nullable + * + * @param string $property + * @return bool + */ + public static function isNullable(string $property): bool; + + /** + * Checks if a nullable property is set to null. + * + * @param string $property + * @return bool + */ + public function isNullableSetToNull(string $property): bool; } diff --git a/packages/fbs-client/lib/Model/PatronV5.php b/packages/fbs-client/lib/Model/PatronV5.php index d8adb4996..050d8eebe 100644 --- a/packages/fbs-client/lib/Model/PatronV5.php +++ b/packages/fbs-client/lib/Model/PatronV5.php @@ -2,7 +2,7 @@ /** * PatronV5 * - * PHP version 7.3 + * PHP version 7.4 * * @category Class * @package DanskernesDigitaleBibliotek\FBS @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1 + * OpenAPI Generator version: 7.1.0 */ /** @@ -38,9 +38,7 @@ * @package DanskernesDigitaleBibliotek\FBS * @author OpenAPI Generator team * @link https://openapi-generator.tech - * @implements \ArrayAccess - * @template TKey int|null - * @template TValue mixed|null + * @implements \ArrayAccess */ class PatronV5 implements ModelInterface, ArrayAccess, \JsonSerializable { @@ -107,6 +105,39 @@ class PatronV5 implements ModelInterface, ArrayAccess, \JsonSerializable 'secondary_address' => null ]; + /** + * Array of nullable properties. Used for (de)serialization + * + * @var boolean[] + */ + protected static array $openAPINullables = [ + 'address' => false, + 'allow_bookings' => false, + 'birthday' => false, + 'block_status' => false, + 'default_interest_period' => false, + 'email_address' => false, + 'name' => false, + 'notification_protocols' => false, + 'on_hold' => false, + 'patron_id' => false, + 'phone_number' => false, + 'preferred_language' => false, + 'preferred_pickup_branch' => false, + 'receive_email' => false, + 'receive_postal_mail' => false, + 'receive_sms' => false, + 'resident' => false, + 'secondary_address' => false + ]; + + /** + * If a nullable field gets set to null, insert it here + * + * @var boolean[] + */ + protected array $openAPINullablesSetToNull = []; + /** * Array of property to type mappings. Used for (de)serialization * @@ -127,6 +158,58 @@ public static function openAPIFormats() return self::$openAPIFormats; } + /** + * Array of nullable properties + * + * @return array + */ + protected static function openAPINullables(): array + { + return self::$openAPINullables; + } + + /** + * Array of nullable field names deliberately set to null + * + * @return boolean[] + */ + private function getOpenAPINullablesSetToNull(): array + { + return $this->openAPINullablesSetToNull; + } + + /** + * Setter - Array of nullable field names deliberately set to null + * + * @param boolean[] $openAPINullablesSetToNull + */ + private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void + { + $this->openAPINullablesSetToNull = $openAPINullablesSetToNull; + } + + /** + * Checks if a property is nullable + * + * @param string $property + * @return bool + */ + public static function isNullable(string $property): bool + { + return self::openAPINullables()[$property] ?? false; + } + + /** + * Checks if a nullable property is set to null. + * + * @param string $property + * @return bool + */ + public function isNullableSetToNull(string $property): bool + { + return in_array($property, $this->getOpenAPINullablesSetToNull(), true); + } + /** * Array of attributes where the key is the local name, * and the value is the original name @@ -263,24 +346,42 @@ public function getModelName() */ public function __construct(array $data = null) { - $this->container['address'] = $data['address'] ?? null; - $this->container['allow_bookings'] = $data['allow_bookings'] ?? null; - $this->container['birthday'] = $data['birthday'] ?? null; - $this->container['block_status'] = $data['block_status'] ?? null; - $this->container['default_interest_period'] = $data['default_interest_period'] ?? null; - $this->container['email_address'] = $data['email_address'] ?? null; - $this->container['name'] = $data['name'] ?? null; - $this->container['notification_protocols'] = $data['notification_protocols'] ?? null; - $this->container['on_hold'] = $data['on_hold'] ?? null; - $this->container['patron_id'] = $data['patron_id'] ?? null; - $this->container['phone_number'] = $data['phone_number'] ?? null; - $this->container['preferred_language'] = $data['preferred_language'] ?? null; - $this->container['preferred_pickup_branch'] = $data['preferred_pickup_branch'] ?? null; - $this->container['receive_email'] = $data['receive_email'] ?? null; - $this->container['receive_postal_mail'] = $data['receive_postal_mail'] ?? null; - $this->container['receive_sms'] = $data['receive_sms'] ?? null; - $this->container['resident'] = $data['resident'] ?? null; - $this->container['secondary_address'] = $data['secondary_address'] ?? null; + $this->setIfExists('address', $data ?? [], null); + $this->setIfExists('allow_bookings', $data ?? [], null); + $this->setIfExists('birthday', $data ?? [], null); + $this->setIfExists('block_status', $data ?? [], null); + $this->setIfExists('default_interest_period', $data ?? [], null); + $this->setIfExists('email_address', $data ?? [], null); + $this->setIfExists('name', $data ?? [], null); + $this->setIfExists('notification_protocols', $data ?? [], null); + $this->setIfExists('on_hold', $data ?? [], null); + $this->setIfExists('patron_id', $data ?? [], null); + $this->setIfExists('phone_number', $data ?? [], null); + $this->setIfExists('preferred_language', $data ?? [], null); + $this->setIfExists('preferred_pickup_branch', $data ?? [], null); + $this->setIfExists('receive_email', $data ?? [], null); + $this->setIfExists('receive_postal_mail', $data ?? [], null); + $this->setIfExists('receive_sms', $data ?? [], null); + $this->setIfExists('resident', $data ?? [], null); + $this->setIfExists('secondary_address', $data ?? [], null); + } + + /** + * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName + * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the + * $this->openAPINullablesSetToNull array + * + * @param string $variableName + * @param array $fields + * @param mixed $defaultValue + */ + private function setIfExists(string $variableName, array $fields, $defaultValue): void + { + if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) { + $this->openAPINullablesSetToNull[] = $variableName; + } + + $this->container[$variableName] = $fields[$variableName] ?? $defaultValue; } /** @@ -347,6 +448,9 @@ public function getAddress() */ public function setAddress($address) { + if (is_null($address)) { + throw new \InvalidArgumentException('non-nullable address cannot be null'); + } $this->container['address'] = $address; return $this; @@ -371,6 +475,9 @@ public function getAllowBookings() */ public function setAllowBookings($allow_bookings) { + if (is_null($allow_bookings)) { + throw new \InvalidArgumentException('non-nullable allow_bookings cannot be null'); + } $this->container['allow_bookings'] = $allow_bookings; return $this; @@ -395,6 +502,9 @@ public function getBirthday() */ public function setBirthday($birthday) { + if (is_null($birthday)) { + throw new \InvalidArgumentException('non-nullable birthday cannot be null'); + } $this->container['birthday'] = $birthday; return $this; @@ -419,6 +529,9 @@ public function getBlockStatus() */ public function setBlockStatus($block_status) { + if (is_null($block_status)) { + throw new \InvalidArgumentException('non-nullable block_status cannot be null'); + } $this->container['block_status'] = $block_status; return $this; @@ -443,6 +556,9 @@ public function getDefaultInterestPeriod() */ public function setDefaultInterestPeriod($default_interest_period) { + if (is_null($default_interest_period)) { + throw new \InvalidArgumentException('non-nullable default_interest_period cannot be null'); + } $this->container['default_interest_period'] = $default_interest_period; return $this; @@ -467,6 +583,9 @@ public function getEmailAddress() */ public function setEmailAddress($email_address) { + if (is_null($email_address)) { + throw new \InvalidArgumentException('non-nullable email_address cannot be null'); + } $this->container['email_address'] = $email_address; return $this; @@ -491,6 +610,9 @@ public function getName() */ public function setName($name) { + if (is_null($name)) { + throw new \InvalidArgumentException('non-nullable name cannot be null'); + } $this->container['name'] = $name; return $this; @@ -515,6 +637,9 @@ public function getNotificationProtocols() */ public function setNotificationProtocols($notification_protocols) { + if (is_null($notification_protocols)) { + throw new \InvalidArgumentException('non-nullable notification_protocols cannot be null'); + } $this->container['notification_protocols'] = $notification_protocols; return $this; @@ -539,6 +664,9 @@ public function getOnHold() */ public function setOnHold($on_hold) { + if (is_null($on_hold)) { + throw new \InvalidArgumentException('non-nullable on_hold cannot be null'); + } $this->container['on_hold'] = $on_hold; return $this; @@ -563,6 +691,9 @@ public function getPatronId() */ public function setPatronId($patron_id) { + if (is_null($patron_id)) { + throw new \InvalidArgumentException('non-nullable patron_id cannot be null'); + } $this->container['patron_id'] = $patron_id; return $this; @@ -587,6 +718,9 @@ public function getPhoneNumber() */ public function setPhoneNumber($phone_number) { + if (is_null($phone_number)) { + throw new \InvalidArgumentException('non-nullable phone_number cannot be null'); + } $this->container['phone_number'] = $phone_number; return $this; @@ -611,6 +745,9 @@ public function getPreferredLanguage() */ public function setPreferredLanguage($preferred_language) { + if (is_null($preferred_language)) { + throw new \InvalidArgumentException('non-nullable preferred_language cannot be null'); + } $this->container['preferred_language'] = $preferred_language; return $this; @@ -635,6 +772,9 @@ public function getPreferredPickupBranch() */ public function setPreferredPickupBranch($preferred_pickup_branch) { + if (is_null($preferred_pickup_branch)) { + throw new \InvalidArgumentException('non-nullable preferred_pickup_branch cannot be null'); + } $this->container['preferred_pickup_branch'] = $preferred_pickup_branch; return $this; @@ -659,6 +799,9 @@ public function getReceiveEmail() */ public function setReceiveEmail($receive_email) { + if (is_null($receive_email)) { + throw new \InvalidArgumentException('non-nullable receive_email cannot be null'); + } $this->container['receive_email'] = $receive_email; return $this; @@ -683,6 +826,9 @@ public function getReceivePostalMail() */ public function setReceivePostalMail($receive_postal_mail) { + if (is_null($receive_postal_mail)) { + throw new \InvalidArgumentException('non-nullable receive_postal_mail cannot be null'); + } $this->container['receive_postal_mail'] = $receive_postal_mail; return $this; @@ -707,6 +853,9 @@ public function getReceiveSms() */ public function setReceiveSms($receive_sms) { + if (is_null($receive_sms)) { + throw new \InvalidArgumentException('non-nullable receive_sms cannot be null'); + } $this->container['receive_sms'] = $receive_sms; return $this; @@ -731,6 +880,9 @@ public function getResident() */ public function setResident($resident) { + if (is_null($resident)) { + throw new \InvalidArgumentException('non-nullable resident cannot be null'); + } $this->container['resident'] = $resident; return $this; @@ -755,6 +907,9 @@ public function getSecondaryAddress() */ public function setSecondaryAddress($secondary_address) { + if (is_null($secondary_address)) { + throw new \InvalidArgumentException('non-nullable secondary_address cannot be null'); + } $this->container['secondary_address'] = $secondary_address; return $this; @@ -766,7 +921,7 @@ public function setSecondaryAddress($secondary_address) * * @return boolean */ - public function offsetExists($offset) + public function offsetExists($offset): bool { return isset($this->container[$offset]); } @@ -778,6 +933,7 @@ public function offsetExists($offset) * * @return mixed|null */ + #[\ReturnTypeWillChange] public function offsetGet($offset) { return $this->container[$offset] ?? null; @@ -791,7 +947,7 @@ public function offsetGet($offset) * * @return void */ - public function offsetSet($offset, $value) + public function offsetSet($offset, $value): void { if (is_null($offset)) { $this->container[] = $value; @@ -807,7 +963,7 @@ public function offsetSet($offset, $value) * * @return void */ - public function offsetUnset($offset) + public function offsetUnset($offset): void { unset($this->container[$offset]); } @@ -819,6 +975,7 @@ public function offsetUnset($offset) * @return mixed Returns data which can be serialized by json_encode(), which is a value * of any type other than a resource. */ + #[\ReturnTypeWillChange] public function jsonSerialize() { return ObjectSerializer::sanitizeForSerialization($this); diff --git a/packages/fbs-client/lib/Model/Period.php b/packages/fbs-client/lib/Model/Period.php index 074aeb43e..94b803d76 100644 --- a/packages/fbs-client/lib/Model/Period.php +++ b/packages/fbs-client/lib/Model/Period.php @@ -2,7 +2,7 @@ /** * Period * - * PHP version 7.3 + * PHP version 7.4 * * @category Class * @package DanskernesDigitaleBibliotek\FBS @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1 + * OpenAPI Generator version: 7.1.0 */ /** @@ -38,9 +38,7 @@ * @package DanskernesDigitaleBibliotek\FBS * @author OpenAPI Generator team * @link https://openapi-generator.tech - * @implements \ArrayAccess - * @template TKey int|null - * @template TValue mixed|null + * @implements \ArrayAccess */ class Period implements ModelInterface, ArrayAccess, \JsonSerializable { @@ -75,6 +73,23 @@ class Period implements ModelInterface, ArrayAccess, \JsonSerializable 'to' => null ]; + /** + * Array of nullable properties. Used for (de)serialization + * + * @var boolean[] + */ + protected static array $openAPINullables = [ + 'from' => false, + 'to' => false + ]; + + /** + * If a nullable field gets set to null, insert it here + * + * @var boolean[] + */ + protected array $openAPINullablesSetToNull = []; + /** * Array of property to type mappings. Used for (de)serialization * @@ -95,6 +110,58 @@ public static function openAPIFormats() return self::$openAPIFormats; } + /** + * Array of nullable properties + * + * @return array + */ + protected static function openAPINullables(): array + { + return self::$openAPINullables; + } + + /** + * Array of nullable field names deliberately set to null + * + * @return boolean[] + */ + private function getOpenAPINullablesSetToNull(): array + { + return $this->openAPINullablesSetToNull; + } + + /** + * Setter - Array of nullable field names deliberately set to null + * + * @param boolean[] $openAPINullablesSetToNull + */ + private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void + { + $this->openAPINullablesSetToNull = $openAPINullablesSetToNull; + } + + /** + * Checks if a property is nullable + * + * @param string $property + * @return bool + */ + public static function isNullable(string $property): bool + { + return self::openAPINullables()[$property] ?? false; + } + + /** + * Checks if a nullable property is set to null. + * + * @param string $property + * @return bool + */ + public function isNullableSetToNull(string $property): bool + { + return in_array($property, $this->getOpenAPINullablesSetToNull(), true); + } + /** * Array of attributes where the key is the local name, * and the value is the original name @@ -183,8 +250,26 @@ public function getModelName() */ public function __construct(array $data = null) { - $this->container['from'] = $data['from'] ?? null; - $this->container['to'] = $data['to'] ?? null; + $this->setIfExists('from', $data ?? [], null); + $this->setIfExists('to', $data ?? [], null); + } + + /** + * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName + * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the + * $this->openAPINullablesSetToNull array + * + * @param string $variableName + * @param array $fields + * @param mixed $defaultValue + */ + private function setIfExists(string $variableName, array $fields, $defaultValue): void + { + if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) { + $this->openAPINullablesSetToNull[] = $variableName; + } + + $this->container[$variableName] = $fields[$variableName] ?? $defaultValue; } /** @@ -230,6 +315,9 @@ public function getFrom() */ public function setFrom($from) { + if (is_null($from)) { + throw new \InvalidArgumentException('non-nullable from cannot be null'); + } $this->container['from'] = $from; return $this; @@ -254,6 +342,9 @@ public function getTo() */ public function setTo($to) { + if (is_null($to)) { + throw new \InvalidArgumentException('non-nullable to cannot be null'); + } $this->container['to'] = $to; return $this; @@ -265,7 +356,7 @@ public function setTo($to) * * @return boolean */ - public function offsetExists($offset) + public function offsetExists($offset): bool { return isset($this->container[$offset]); } @@ -277,6 +368,7 @@ public function offsetExists($offset) * * @return mixed|null */ + #[\ReturnTypeWillChange] public function offsetGet($offset) { return $this->container[$offset] ?? null; @@ -290,7 +382,7 @@ public function offsetGet($offset) * * @return void */ - public function offsetSet($offset, $value) + public function offsetSet($offset, $value): void { if (is_null($offset)) { $this->container[] = $value; @@ -306,7 +398,7 @@ public function offsetSet($offset, $value) * * @return void */ - public function offsetUnset($offset) + public function offsetUnset($offset): void { unset($this->container[$offset]); } @@ -318,6 +410,7 @@ public function offsetUnset($offset) * @return mixed Returns data which can be serialized by json_encode(), which is a value * of any type other than a resource. */ + #[\ReturnTypeWillChange] public function jsonSerialize() { return ObjectSerializer::sanitizeForSerialization($this); diff --git a/packages/fbs-client/lib/ObjectSerializer.php b/packages/fbs-client/lib/ObjectSerializer.php index 613f3906b..dd889e5ee 100644 --- a/packages/fbs-client/lib/ObjectSerializer.php +++ b/packages/fbs-client/lib/ObjectSerializer.php @@ -2,7 +2,7 @@ /** * ObjectSerializer * - * PHP version 7.3 + * PHP version 7.4 * * @category Class * @package DanskernesDigitaleBibliotek\FBS @@ -17,7 +17,7 @@ * * The version of the OpenAPI document: 1.0 * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 5.2.1 + * OpenAPI Generator version: 7.1.0 */ /** @@ -28,6 +28,7 @@ namespace DanskernesDigitaleBibliotek\FBS; +use GuzzleHttp\Psr7\Utils; use DanskernesDigitaleBibliotek\FBS\Model\ModelInterface; /** @@ -86,7 +87,7 @@ public static function sanitizeForSerialization($data, $type = null, $format = n foreach ($data::openAPITypes() as $property => $openAPIType) { $getter = $data::getters()[$property]; $value = $data->$getter(); - if ($value !== null && !in_array($openAPIType, ['DateTime', 'array', 'bool', 'boolean', 'byte', 'double', 'float', 'int', 'integer', 'mixed', 'number', 'object', 'string', 'void'], true)) { + if ($value !== null && !in_array($openAPIType, ['\DateTime', '\SplFileObject', 'array', 'bool', 'boolean', 'byte', 'float', 'int', 'integer', 'mixed', 'number', 'object', 'string', 'void'], true)) { $callable = [$openAPIType, 'getAllowableEnumValues']; if (is_callable($callable)) { /** array $callable */ @@ -97,7 +98,7 @@ public static function sanitizeForSerialization($data, $type = null, $format = n } } } - if ($value !== null) { + if (($data::isNullable($property) && $data->isNullableSetToNull($property)) || $value !== null) { $values[$data::attributeMap()[$property]] = self::sanitizeForSerialization($value, $openAPIType, $formats[$property]); } } @@ -129,6 +130,20 @@ public static function sanitizeFilename($filename) } } + /** + * Shorter timestamp microseconds to 6 digits length. + * + * @param string $timestamp Original timestamp + * + * @return string the shorten timestamp + */ + public static function sanitizeTimestamp($timestamp) + { + if (!is_string($timestamp)) return $timestamp; + + return preg_replace('/(:\d{2}.\d{6})\d*/', '$1', $timestamp); + } + /** * Take value and turn it into a string suitable for inclusion in * the path, by url-encoding. @@ -143,22 +158,141 @@ public static function toPathValue($value) } /** - * Take value and turn it into a string suitable for inclusion in - * the query, by imploding comma-separated if it's an object. - * If it's a string, pass through unchanged. It will be url-encoded - * later. + * Checks if a value is empty, based on its OpenAPI type. * - * @param string[]|string|\DateTime $object an object to be serialized to a string + * @param mixed $value + * @param string $openApiType * - * @return string the serialized object + * @return bool true if $value is empty */ - public static function toQueryValue($object) + private static function isEmptyValue($value, string $openApiType): bool { - if (is_array($object)) { - return implode(',', $object); - } else { - return self::toString($object); + # If empty() returns false, it is not empty regardless of its type. + if (!empty($value)) { + return false; + } + + # Null is always empty, as we cannot send a real "null" value in a query parameter. + if ($value === null) { + return true; + } + + switch ($openApiType) { + # For numeric values, false and '' are considered empty. + # This comparison is safe for floating point values, since the previous call to empty() will + # filter out values that don't match 0. + case 'int': + case 'integer': + return $value !== 0; + + case 'number': + case 'float': + return $value !== 0 && $value !== 0.0; + + # For boolean values, '' is considered empty + case 'bool': + case 'boolean': + return !in_array($value, [false, 0], true); + + # For all the other types, any value at this point can be considered empty. + default: + return true; + } + } + + /** + * Take query parameter properties and turn it into an array suitable for + * native http_build_query or GuzzleHttp\Psr7\Query::build. + * + * @param mixed $value Parameter value + * @param string $paramName Parameter name + * @param string $openApiType OpenAPIType eg. array or object + * @param string $style Parameter serialization style + * @param bool $explode Parameter explode option + * @param bool $required Whether query param is required or not + * + * @return array + */ + public static function toQueryValue( + $value, + string $paramName, + string $openApiType = 'string', + string $style = 'form', + bool $explode = true, + bool $required = true + ): array { + + # Check if we should omit this parameter from the query. This should only happen when: + # - Parameter is NOT required; AND + # - its value is set to a value that is equivalent to "empty", depending on its OpenAPI type. For + # example, 0 as "int" or "boolean" is NOT an empty value. + if (self::isEmptyValue($value, $openApiType)) { + if ($required) { + return ["{$paramName}" => '']; + } else { + return []; + } + } + + # Handle DateTime objects in query + if($openApiType === "\\DateTime" && $value instanceof \DateTime) { + return ["{$paramName}" => $value->format(self::$dateTimeFormat)]; + } + + $query = []; + $value = (in_array($openApiType, ['object', 'array'], true)) ? (array)$value : $value; + + // since \GuzzleHttp\Psr7\Query::build fails with nested arrays + // need to flatten array first + $flattenArray = function ($arr, $name, &$result = []) use (&$flattenArray, $style, $explode) { + if (!is_array($arr)) return $arr; + + foreach ($arr as $k => $v) { + $prop = ($style === 'deepObject') ? $prop = "{$name}[{$k}]" : $k; + + if (is_array($v)) { + $flattenArray($v, $prop, $result); + } else { + if ($style !== 'deepObject' && !$explode) { + // push key itself + $result[] = $prop; + } + $result[$prop] = $v; + } + } + return $result; + }; + + $value = $flattenArray($value, $paramName); + + if ($openApiType === 'object' && ($style === 'deepObject' || $explode)) { + return $value; + } + + if ('boolean' === $openApiType && is_bool($value)) { + $value = self::convertBoolToQueryStringFormat($value); } + + // handle style in serializeCollection + $query[$paramName] = ($explode) ? $value : self::serializeCollection((array)$value, $style); + + return $query; + } + + /** + * Convert boolean value to format for query string. + * + * @param bool $value Boolean value + * + * @return int|string Boolean value in format + */ + public static function convertBoolToQueryStringFormat(bool $value) + { + if (Configuration::BOOLEAN_FORMAT_STRING == Configuration::getDefaultConfiguration()->getBooleanFormatForQueryString()) { + return $value ? 'true' : 'false'; + } + + return (int) $value; } /** @@ -215,7 +349,7 @@ public static function toString($value) } elseif (is_bool($value)) { return $value ? 'true' : 'false'; } else { - return $value; + return (string) $value; } } @@ -305,10 +439,13 @@ public static function deserialize($data, $class, $httpHeaders = null) if ($class === 'object') { settype($data, 'array'); return $data; + } elseif ($class === 'mixed') { + settype($data, gettype($data)); + return $data; } if ($class === '\DateTime') { - // Some API's return an invalid, empty string as a + // Some APIs return an invalid, empty string as a // date-time property. DateTime::__construct() will return // the current time for empty input which is probably not // what is meant. The invalid empty string is probably to @@ -318,29 +455,27 @@ public static function deserialize($data, $class, $httpHeaders = null) try { return new \DateTime($data); } catch (\Exception $exception) { - // Some API's return a date-time with too high nanosecond - // precision for php's DateTime to handle. This conversion - // (string -> unix timestamp -> DateTime) is a workaround - // for the problem. - return (new \DateTime())->setTimestamp(strtotime($data)); + // Some APIs return a date-time with too high nanosecond + // precision for php's DateTime to handle. + // With provided regexp 6 digits of microseconds saved + return new \DateTime(self::sanitizeTimestamp($data)); } } else { return null; } } - /** @psalm-suppress ParadoxicalCondition */ - if (in_array($class, ['DateTime', 'array', 'bool', 'boolean', 'byte', 'double', 'float', 'int', 'integer', 'mixed', 'number', 'object', 'string', 'void'], true)) { - settype($data, $class); - return $data; - } - if ($class === '\SplFileObject') { + $data = Utils::streamFor($data); + /** @var \Psr\Http\Message\StreamInterface $data */ // determine file name - if (array_key_exists('Content-Disposition', $httpHeaders) && - preg_match('/inline; filename=[\'"]?([^\'"\s]+)[\'"]?$/i', $httpHeaders['Content-Disposition'], $match)) { + if ( + is_array($httpHeaders) + && array_key_exists('Content-Disposition', $httpHeaders) + && preg_match('/inline; filename=[\'"]?([^\'"\s]+)[\'"]?$/i', $httpHeaders['Content-Disposition'], $match) + ) { $filename = Configuration::getDefaultConfiguration()->getTempFolderPath() . DIRECTORY_SEPARATOR . self::sanitizeFilename($match[1]); } else { $filename = tempnam(Configuration::getDefaultConfiguration()->getTempFolderPath(), ''); @@ -353,7 +488,16 @@ public static function deserialize($data, $class, $httpHeaders = null) fclose($file); return new \SplFileObject($filename, 'r'); - } elseif (method_exists($class, 'getAllowableEnumValues')) { + } + + /** @psalm-suppress ParadoxicalCondition */ + if (in_array($class, ['\DateTime', '\SplFileObject', 'array', 'bool', 'boolean', 'byte', 'float', 'int', 'integer', 'mixed', 'number', 'object', 'string', 'void'], true)) { + settype($data, $class); + return $data; + } + + + if (method_exists($class, 'getAllowableEnumValues')) { if (!in_array($data, $class::getAllowableEnumValues(), true)) { $imploded = implode("', '", $class::getAllowableEnumValues()); throw new \InvalidArgumentException("Invalid value for enum '$class', must be one of: '$imploded'"); @@ -361,6 +505,11 @@ public static function deserialize($data, $class, $httpHeaders = null) return $data; } else { $data = is_string($data) ? json_decode($data) : $data; + + if (is_array($data)) { + $data = (object)$data; + } + // If a discriminator is defined and points to a valid subclass, use it. $discriminator = $class::DISCRIMINATOR; if (!empty($discriminator) && isset($data->{$discriminator}) && is_string($data->{$discriminator})) { @@ -375,7 +524,15 @@ public static function deserialize($data, $class, $httpHeaders = null) foreach ($instance::openAPITypes() as $property => $type) { $propertySetter = $instance::setters()[$property]; - if (!isset($propertySetter) || !isset($data->{$instance::attributeMap()[$property]})) { + if (!isset($propertySetter)) { + continue; + } + + if (!isset($data->{$instance::attributeMap()[$property]})) { + if ($instance::isNullable($property)) { + $instance->$propertySetter(null); + } + continue; } @@ -387,4 +544,24 @@ public static function deserialize($data, $class, $httpHeaders = null) return $instance; } } + + /** + * Native `http_build_query` wrapper. + * @see https://www.php.net/manual/en/function.http-build-query + * + * @param array|object $data May be an array or object containing properties. + * @param string $numeric_prefix If numeric indices are used in the base array and this parameter is provided, it will be prepended to the numeric index for elements in the base array only. + * @param string|null $arg_separator arg_separator.output is used to separate arguments but may be overridden by specifying this parameter. + * @param int $encoding_type Encoding type. By default, PHP_QUERY_RFC1738. + * + * @return string + */ + public static function buildQuery( + $data, + string $numeric_prefix = '', + ?string $arg_separator = null, + int $encoding_type = \PHP_QUERY_RFC3986 + ): string { + return \GuzzleHttp\Psr7\Query::build($data, $encoding_type); + } } diff --git a/patches/potion-rector-d10-7140243.patch b/patches/potion-rector-d10-7140243.patch new file mode 100644 index 000000000..cb645d58a --- /dev/null +++ b/patches/potion-rector-d10-7140243.patch @@ -0,0 +1,365 @@ +From 71402431790fc5304c21612f57beebef05cfe06f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Kasper=20Garn=C3=A6s?= +Date: Thu, 23 Nov 2023 21:13:43 +0100 +Subject: [PATCH] Updated for Drupal 10 compatability + +This is the result of running Rector on an unpatched version of the +module: +vendor/bin/rector process web/modules/contrib/potion/ + +Then the following changes have been made: + +- Info file is updated to mark the module as D10 compatible +- src/Twig/NodeVisitor/TranslationNodeVisitor.php have been updated: + strings wrapped in arrays used as arguments to getNode() have been + converted to strings to match the function argument type. +--- + potion.info.yml | 2 +- + src/Extractor/TwigExtractor.php | 10 ++-- + .../Extension/TransExtractorExtension.php | 3 +- + .../NodeVisitor/TranslationNodeVisitor.php | 46 +++++++++++-------- + .../Extractor/AnnotationExtractorTest.php | 2 +- + .../src/Kernel/Extractor/PhpExtractorTest.php | 2 +- + .../Kernel/Extractor/TwigExtractorTest.php | 6 +-- + .../Kernel/Extractor/YamlExtractorTest.php | 2 +- + .../src/Kernel/TranslationsExtractorTest.php | 2 +- + tests/src/Kernel/TranslationsFillTest.php | 2 +- + tests/src/Kernel/TranslationsImportTest.php | 2 +- + 11 files changed, 46 insertions(+), 33 deletions(-) + +diff --git a/potion.info.yml b/potion.info.yml +index 4315290..752866b 100644 +--- a/potion.info.yml ++++ b/potion.info.yml +@@ -2,7 +2,7 @@ name: Potion + description: 'Provides a normalized way to collect internationalization strings to export, merge & create .po files from versatile sources such as Twig, PHP or YML files.' + package: Multilingual + type: module +-core_version_requirement: ^8 || ^9 ++core_version_requirement: ^9 || ^10 + dependencies: + - drupal:locale + - drupal:language +diff --git a/src/Extractor/TwigExtractor.php b/src/Extractor/TwigExtractor.php +index e8cffcc..fcb27f5 100644 +--- a/src/Extractor/TwigExtractor.php ++++ b/src/Extractor/TwigExtractor.php +@@ -2,6 +2,8 @@ + + namespace Drupal\potion\Extractor; + ++use Twig\Environment; ++use Twig\Error\Error; + use Twig\Source; + use Symfony\Component\Finder\Finder; + use Drupal\potion\Exception\ExtractorException; +@@ -14,17 +16,17 @@ class TwigExtractor extends ExtractorBase implements ExtractableInterface { + /** + * The twig environment. + * +- * @var \Twig_Environment ++ * @var \Twig\Environment + */ + private $twig; + + /** + * Constructor. + * +- * @param \Twig_Environment $twig ++ * @param \Twig\Environment $twig + * Twig Env. + */ +- public function __construct(\Twig_Environment $twig) { ++ public function __construct(Environment $twig) { + parent::__construct(); + + $this->twig = $twig; +@@ -41,7 +43,7 @@ class TwigExtractor extends ExtractorBase implements ExtractableInterface { + $file_catalogue = $this->extractFromTemplate($file->getContents()); + $this->catalogue->merge($file_catalogue); + } +- catch (\Twig_Error $e) { ++ catch (Error $e) { + throw new ExtractorException($e->getMessage(), $e->getCode(), $e); + } + } +diff --git a/src/Twig/Extension/TransExtractorExtension.php b/src/Twig/Extension/TransExtractorExtension.php +index 0ba3e67..5f954ed 100644 +--- a/src/Twig/Extension/TransExtractorExtension.php ++++ b/src/Twig/Extension/TransExtractorExtension.php +@@ -2,6 +2,7 @@ + + namespace Drupal\potion\Twig\Extension; + ++use Twig\Extension\AbstractExtension; + use Drupal\potion\Twig\NodeVisitor\TranslationNodeVisitor; + + /** +@@ -12,7 +13,7 @@ use Drupal\potion\Twig\NodeVisitor\TranslationNodeVisitor; + * + * @see \Drupal\Core\CoreServiceProvider + */ +-class TransExtractorExtension extends \Twig_Extension { ++class TransExtractorExtension extends AbstractExtension { + /** + * The NodeVisitor to extracts translation messages from twig. + * +diff --git a/src/Twig/NodeVisitor/TranslationNodeVisitor.php b/src/Twig/NodeVisitor/TranslationNodeVisitor.php +index adb19ae..f8e3798 100644 +--- a/src/Twig/NodeVisitor/TranslationNodeVisitor.php ++++ b/src/Twig/NodeVisitor/TranslationNodeVisitor.php +@@ -2,6 +2,16 @@ + + namespace Drupal\potion\Twig\NodeVisitor; + ++use Twig\Node\Node; ++use Twig\Environment; ++use Twig\Node\Expression\FilterExpression; ++use Twig\Node\Expression\ConstantExpression; ++use Twig\Node\Expression\ArrayExpression; ++use Twig\Node\SetTempNode; ++use Twig\Node\PrintNode; ++use Twig\Node\Expression\FunctionExpression; ++use Twig\Node\Expression\GetAttrExpression; ++use Twig\Node\Expression\NameExpression; + use Drupal\Core\Template\TwigNodeTrans; + use Twig\NodeVisitor\AbstractNodeVisitor; + use Drupal\potion\MessageCatalogue; +@@ -72,16 +82,16 @@ class TranslationNodeVisitor extends AbstractNodeVisitor { + /** + * {@inheritdoc} + */ +- protected function doEnterNode(\Twig_Node $node, \Twig_Environment $env) { ++ protected function doEnterNode(Node $node, Environment $env) { + if (!$this->enabled) { + return $node; + } + + // If we are on a `|trans` or `|t`. + if ( +- $node instanceof \Twig_Node_Expression_Filter && ++ $node instanceof FilterExpression && + in_array($node->getNode('filter')->getAttribute('value'), ['trans', 't']) && +- $node->getNode('node') instanceof \Twig_Node_Expression_Constant ++ $node->getNode('node') instanceof ConstantExpression + ) { + // Save the extracted translations in the messages collection. + $this->catalogue->add($node->getNode('node')->getAttribute('value')); +@@ -98,7 +108,7 @@ class TranslationNodeVisitor extends AbstractNodeVisitor { + // Eg. `%trans%`, plural, multilines, ... + // Get context on non-filter case (`%trans%`, plural, multilines, ...). + $context = NULL; +- if ($node->hasNode('options') && $node->getNode('options') instanceof \Twig_Node_Expression_Array) { ++ if ($node->hasNode('options') && $node->getNode('options') instanceof ArrayExpression) { + $context = $this->getContext($node->getNode('options')); + } + +@@ -142,7 +152,7 @@ class TranslationNodeVisitor extends AbstractNodeVisitor { + * {% plural count %}Hello {{ count }} moons.{{ node.id }} + * {% endtrans %}`. + */ +- if ($node->hasNode('plural') && $node->getNode('plural') instanceof \Twig_Node) { ++ if ($node->hasNode('plural') && $node->getNode('plural') instanceof Node) { + $singular = ''; + if ($node->getNode('body')->hasAttribute('data')) { + $singular .= $node->getNode('body')->getAttribute('data'); +@@ -161,7 +171,7 @@ class TranslationNodeVisitor extends AbstractNodeVisitor { + /** + * {@inheritdoc} + */ +- protected function doLeaveNode(\Twig_Node $node, \Twig_Environment $env) { ++ protected function doLeaveNode(Node $node, Environment $env) { + return $node; + } + +@@ -175,27 +185,27 @@ class TranslationNodeVisitor extends AbstractNodeVisitor { + /** + * Extracts the text for complex form of "trans" tag. + * +- * @param \Twig_Node $body ++ * @param \Twig\Node\Node $body + * The node to compile. + * + * @return string + * The translations strings. + * +- * @throws \Twig_Error_Syntax ++ * @throws \Twig\Error\SyntaxError + * + * @see \Drupal\Core\Template\TwigNodeTrans::compileString + */ +- protected function compileString(\Twig_Node $body) { ++ protected function compileString(Node $body) { + $message = ''; + + foreach ($body as $node) { +- if (get_class($node) === 'Twig_Node' && $node->getNode(0) instanceof \Twig_Node_SetTemp) { ++ if (get_class($node) === 'Twig_Node' && $node->getNode(0) instanceof SetTempNode) { + $node = $node->getNode(1); + } + +- if ($node instanceof \Twig_Node_Print) { ++ if ($node instanceof PrintNode) { + $n = $node->getNode('expr'); +- while ($n instanceof \Twig_Node_Expression_Filter) { ++ while ($n instanceof FilterExpression) { + $n = $n->getNode('node'); + } + +@@ -205,7 +215,7 @@ class TranslationNodeVisitor extends AbstractNodeVisitor { + $args = $n; + + // Support TwigExtension->renderVar() function in chain. +- if ($args instanceof \Twig_Node_Expression_Function) { ++ if ($args instanceof FunctionExpression) { + $args = $n->getNode('arguments')->getNode(0); + } + +@@ -215,7 +225,7 @@ class TranslationNodeVisitor extends AbstractNodeVisitor { + // safe for templates. + // @see TwigExtension::getFilters() + $argPrefix = '@'; +- while ($args instanceof \Twig_Node_Expression_Filter) { ++ while ($args instanceof FilterExpression) { + switch ($args->getNode('filter')->getAttribute('value')) { + case 'placeholder': + $argPrefix = '%'; +@@ -226,13 +236,13 @@ class TranslationNodeVisitor extends AbstractNodeVisitor { + if ($args instanceof CheckToStringNode) { + $args = $args->getNode('expr'); + } +- if ($args instanceof \Twig_Node_Expression_GetAttr) { ++ if ($args instanceof GetAttrExpression) { + $argName = []; + // Assemble a valid argument name by walking through expression. + $argName[] = $args->getNode('attribute')->getAttribute('value'); + while ($args->hasNode('node')) { + $args = $args->getNode('node'); +- if ($args instanceof \Twig_Node_Expression_Name) { ++ if ($args instanceof NameExpression) { + $argName[] = $args->getAttribute('name'); + } + else { +@@ -263,13 +273,13 @@ class TranslationNodeVisitor extends AbstractNodeVisitor { + /** + * Retrieive the context values from a NodeExpression array. + * +- * @param \Twig_Node_Expression_Array $options ++ * @param \Twig\Node\Expression\ArrayExpression $options + * A collection of \Twig_Node_Expression_Constant. + * + * @return string + * The context this translation belongs to. + */ +- protected function getContext(\Twig_Node_Expression_Array $options) { ++ protected function getContext(ArrayExpression $options) { + $args = $options->getKeyValuePairs(); + foreach ($args as $pair) { + if ($pair['key']->getAttribute('value') == 'context') { +diff --git a/tests/src/Kernel/Extractor/AnnotationExtractorTest.php b/tests/src/Kernel/Extractor/AnnotationExtractorTest.php +index cf8b146..dac22c2 100644 +--- a/tests/src/Kernel/Extractor/AnnotationExtractorTest.php ++++ b/tests/src/Kernel/Extractor/AnnotationExtractorTest.php +@@ -55,7 +55,7 @@ class AnnotationExtractorTest extends KernelTestBase { + parent::setUp(); + + /** @var string $extractionPath */ +- $this->extractionPath = drupal_get_path('module', 'potion_test'); ++ $this->extractionPath = \Drupal::service('extension.list.module')->getPath('potion_test'); + + /** @var \Drupal\potion\Extractor\AnnotationExtractor $annotationExtractor */ + $this->annotationExtractor = $this->container->get('potion.extractor.annotation'); +diff --git a/tests/src/Kernel/Extractor/PhpExtractorTest.php b/tests/src/Kernel/Extractor/PhpExtractorTest.php +index fd819f6..9cb95d0 100644 +--- a/tests/src/Kernel/Extractor/PhpExtractorTest.php ++++ b/tests/src/Kernel/Extractor/PhpExtractorTest.php +@@ -55,7 +55,7 @@ class PhpExtractorTest extends KernelTestBase { + parent::setUp(); + + /** @var string $extractionPath */ +- $this->extractionPath = drupal_get_path('module', 'potion_test'); ++ $this->extractionPath = \Drupal::service('extension.list.module')->getPath('potion_test'); + + /** @var \Drupal\potion\Extractor\PhpExtractor $phpExtractor */ + $this->phpExtractor = $this->container->get('potion.extractor.php'); +diff --git a/tests/src/Kernel/Extractor/TwigExtractorTest.php b/tests/src/Kernel/Extractor/TwigExtractorTest.php +index 2d26711..fdca155 100644 +--- a/tests/src/Kernel/Extractor/TwigExtractorTest.php ++++ b/tests/src/Kernel/Extractor/TwigExtractorTest.php +@@ -35,7 +35,7 @@ class TwigExtractorTest extends KernelTestBase { + /** + * The Twig environment loaded with the sandbox extension. + * +- * @var \Twig_Environment ++ * @var \Twig\Environment + */ + private $twig; + +@@ -55,11 +55,11 @@ class TwigExtractorTest extends KernelTestBase { + protected function setUp(): void { + parent::setUp(); + +- /** @var \Twig_Environment $twig */ ++ /** @var \Twig\Environment $twig */ + $this->twig = $this->container->get('twig'); + + /** @var string $extractionPath */ +- $this->extractionPath = drupal_get_path('module', 'potion_test') . DIRECTORY_SEPARATOR . 'templates'; ++ $this->extractionPath = \Drupal::service('extension.list.module')->getPath('potion_test') . DIRECTORY_SEPARATOR . 'templates'; + + $po_items = [ + [ +diff --git a/tests/src/Kernel/Extractor/YamlExtractorTest.php b/tests/src/Kernel/Extractor/YamlExtractorTest.php +index 412b3d6..00babe8 100644 +--- a/tests/src/Kernel/Extractor/YamlExtractorTest.php ++++ b/tests/src/Kernel/Extractor/YamlExtractorTest.php +@@ -55,7 +55,7 @@ class YamlExtractorTest extends KernelTestBase { + parent::setUp(); + + /** @var string $extractionPath */ +- $this->extractionPath = drupal_get_path('module', 'potion_test'); ++ $this->extractionPath = \Drupal::service('extension.list.module')->getPath('potion_test'); + + /** @var \Drupal\potion\Extractor\YamlExtractor $yamlExtractor */ + $this->yamlExtractor = $this->container->get('potion.extractor.yaml'); +diff --git a/tests/src/Kernel/TranslationsExtractorTest.php b/tests/src/Kernel/TranslationsExtractorTest.php +index 137a01a..a9c6495 100644 +--- a/tests/src/Kernel/TranslationsExtractorTest.php ++++ b/tests/src/Kernel/TranslationsExtractorTest.php +@@ -59,7 +59,7 @@ class TranslationsExtractorTest extends TranslationsTestsBase { + $this->fileSystem = $this->container->get('file_system'); + + /** @var string $extractionPath */ +- $this->extractionPath = drupal_get_path('module', 'potion_test'); ++ $this->extractionPath = \Drupal::service('extension.list.module')->getPath('potion_test'); + } + + /** +diff --git a/tests/src/Kernel/TranslationsFillTest.php b/tests/src/Kernel/TranslationsFillTest.php +index 6f1124d..4bfe1e0 100644 +--- a/tests/src/Kernel/TranslationsFillTest.php ++++ b/tests/src/Kernel/TranslationsFillTest.php +@@ -48,7 +48,7 @@ class TranslationsFillTest extends TranslationsTestsBase { + $this->translationsFill = $this->container->get('potion.translations.fill'); + + /** @var string $translationsPath */ +- $this->translationsPath = drupal_get_path('module', 'potion_test') . DIRECTORY_SEPARATOR . 'assets'; ++ $this->translationsPath = \Drupal::service('extension.list.module')->getPath('potion_test') . DIRECTORY_SEPARATOR . 'assets'; + } + + /** +diff --git a/tests/src/Kernel/TranslationsImportTest.php b/tests/src/Kernel/TranslationsImportTest.php +index 61a4198..a777c1d 100644 +--- a/tests/src/Kernel/TranslationsImportTest.php ++++ b/tests/src/Kernel/TranslationsImportTest.php +@@ -47,7 +47,7 @@ class TranslationsImportTest extends TranslationsTestsBase { + $this->translationsImport = $this->container->get('potion.translations.import'); + + /** @var string $translationsPath */ +- $this->translationsPath = drupal_get_path('module', 'potion_test') . DIRECTORY_SEPARATOR . 'assets'; ++ $this->translationsPath = \Drupal::service('extension.list.module')->getPath('potion_test') . DIRECTORY_SEPARATOR . 'assets'; + } + + /** +-- +2.39.3 (Apple Git-145)+GitX diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 000000000..9d963d3ee --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,52 @@ +parameters: + ignoreErrors: + - + message: "#^Call to deprecated method legacyConfig\\(\\) of class Drupal\\\\dpl_react\\\\DplReactConfigBase\\.$#" + count: 1 + path: web/modules/custom/dpl_dashboard/src/DplDashboardSettings.php + + - + message: "#^Call to deprecated method legacyConfig\\(\\) of class Drupal\\\\dpl_react\\\\DplReactConfigBase\\.$#" + count: 1 + path: web/modules/custom/dpl_favorites_list/src/DplFavoritesListSettings.php + + - + message: "#^Call to deprecated method legacyConfig\\(\\) of class Drupal\\\\dpl_react\\\\DplReactConfigBase\\.$#" + count: 1 + path: web/modules/custom/dpl_fees/src/DplFeesSettings.php + + - + message: "#^Call to deprecated method legacyConfig\\(\\) of class Drupal\\\\dpl_react\\\\DplReactConfigBase\\.$#" + count: 1 + path: web/modules/custom/dpl_loans/src/DplLoansSettings.php + + - + message: "#^Call to deprecated method legacyConfig\\(\\) of class Drupal\\\\dpl_react\\\\DplReactConfigBase\\.$#" + count: 1 + path: web/modules/custom/dpl_patron_menu/src/DplMenuSettings.php + + - + message: "#^Call to deprecated method legacyConfig\\(\\) of class Drupal\\\\dpl_react\\\\DplReactConfigBase\\.$#" + count: 1 + path: web/modules/custom/dpl_patron_page/src/DplPatronPageSettings.php + + - + message: "#^Call to deprecated method legacyConfig\\(\\) of class Drupal\\\\dpl_react\\\\DplReactConfigBase\\.$#" + count: 1 + path: web/modules/custom/dpl_patron_reg/src/DplPatronRegSettings.php + + - + message: "#^Call to deprecated method legacyConfig\\(\\) of class Drupal\\\\dpl_react\\\\DplReactConfigBase\\.$#" + count: 1 + path: web/modules/custom/dpl_publizon/src/DplPublizonSettings.php + + - + message: "#^Call to deprecated method legacyConfig\\(\\) of class Drupal\\\\dpl_react\\\\DplReactConfigBase\\.$#" + count: 1 + path: web/modules/custom/dpl_recommender/src/DplRecommenderSettings.php + + - + message: "#^Call to deprecated method legacyConfig\\(\\) of class Drupal\\\\dpl_react\\\\DplReactConfigBase\\.$#" + count: 1 + path: web/modules/custom/dpl_reservations/src/DplReservationsSettings.php + diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 7625fff09..80eb2f403 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,5 +1,5 @@ parameters: - level: max + level: 8 paths: - web/modules/custom - web/profiles/dpl_cms @@ -11,10 +11,10 @@ parameters: - '#.*\:\:(buildForm|getEditableConfigNames|submitForm|validateForm)\(\) .* no value type specified in iterable type array\.#' # Drupal preprocess functions uses variables array which we cannot provide more detailed typing of. - '#Function .*_preprocess_.*\(\) has parameter \$variables with no value type specified in iterable type array\.#' - # Drupal has many different iterable interfaces we do not want to provide - # iterable typing for. - - '#no value type specified in iterable type Drupal\\.*Interface#' - - '#no value type specified in iterable type Drupal\\.*\\Plugin\\Field\\FieldType\\.*Item#' + # Drupal hook_page_attachments functions uses page array which we cannot provide more detailed typing of. + - '#Function .*_page_attachments\(\) has parameter \$page with no value type specified in iterable type array\.#' + # Drupal hook_requirements() implementation returns array which we cannot provide more detailed typing of. + - '#Function .*_requirements\(\) return type has no value type specified in iterable type array\.#' # Ignore block inject create configuration parameter. - '#Drupal\\.*\\Plugin\\Block\\.*Block::__construct\(\) .* no value type specified in iterable type array\.#' - '#Drupal\\.*\\Plugin\\Block\\.*Block::create\(\) .* no value type specified in iterable type array\.#' @@ -23,4 +23,5 @@ parameters: # Needed to make locale_translation_batch_fetch_finished() discoverable. - web/core/modules/locale/locale.batch.inc - +includes: + - phpstan-baseline.neon diff --git a/rector.php b/rector.php new file mode 100644 index 000000000..85d0b687f --- /dev/null +++ b/rector.php @@ -0,0 +1,35 @@ +sets([ + Drupal8SetList::DRUPAL_8, + Drupal9SetList::DRUPAL_9, + Drupal10SetList::DRUPAL_10, + ]); + + $drupalFinder = new DrupalFinder(); + $drupalFinder->locateRoot(__DIR__); + $drupalRoot = $drupalFinder->getDrupalRoot(); + $rectorConfig->autoloadPaths([ + $drupalRoot . '/core', + $drupalRoot . '/modules', + $drupalRoot . '/profiles', + $drupalRoot . '/themes' + ]); + + $rectorConfig->skip(['*/upgrade_status/tests/modules/*']); + $rectorConfig->fileExtensions(['php', 'module', 'theme', 'install', 'profile', 'inc', 'engine']); + $rectorConfig->importNames(true, false); + $rectorConfig->importShortClasses(false); +}; diff --git a/web/modules/custom/dpl_article/dpl_article.info.yml b/web/modules/custom/dpl_article/dpl_article.info.yml new file mode 100644 index 000000000..1b024a53e --- /dev/null +++ b/web/modules/custom/dpl_article/dpl_article.info.yml @@ -0,0 +1,5 @@ +name: "Article" +type: module +description: "Functionality related to creating article content." +package: "DPL" +core_version_requirement: ^10 diff --git a/web/modules/custom/dpl_article/dpl_article.module b/web/modules/custom/dpl_article/dpl_article.module new file mode 100644 index 000000000..f22acd846 --- /dev/null +++ b/web/modules/custom/dpl_article/dpl_article.module @@ -0,0 +1,57 @@ +bundle() !== 'article') { + return; + } + + // Check if the 'show override author' field exists and is set. + if ($node->hasField('field_show_override_author')) { + $has_override = $node->get('field_show_override_author') + ->getString() === '1'; + if ($has_override && $node->hasField('field_override_author')) { + $variables['author_name'] = $node->get('field_override_author') + ->getString(); + } + } +} + +/** + * Implements hook_form_alter(). + * + * Modifies node forms to control the visibility of articles fields. + * + * @param array $form + * An associative array containing the structure of the form. + * @param \Drupal\Core\Form\FormStateInterface $form_state + * The current state of the form. + * @param string $form_id + * The unique identifier of the form. + */ +function dpl_article_form_alter(array &$form, FormStateInterface $form_state, string $form_id): void { + // Target only article node creation or edit forms. + if (!str_starts_with($form_id, 'node_article_')) { + return; + } + + // Toggle visibility of 'override author' field based on a checkbox. + if (isset($form['field_show_override_author'])) { + $form['field_override_author']['#states'] = [ + 'visible' => [':input[name="field_show_override_author[value]"]' => ['checked' => TRUE]], + ]; + } +} diff --git a/web/modules/custom/dpl_campaign/dpl_campaign.info.yml b/web/modules/custom/dpl_campaign/dpl_campaign.info.yml index ab0714e83..23af7fc97 100644 --- a/web/modules/custom/dpl_campaign/dpl_campaign.info.yml +++ b/web/modules/custom/dpl_campaign/dpl_campaign.info.yml @@ -1,9 +1,8 @@ name: "dpl_campaign" type: module description: "A module that deliveres possibility for campaign CRUD and integration with Dpl React Apps" -core: 8.x package: "DPL" -core_version_requirement: ^9 || ^8 +core_version_requirement: ^9 || ^10 dependencies: - drupal:serialization - handy_cache_tags:handy_cache_tags diff --git a/web/modules/custom/dpl_campaign/src/Plugin/rest/resource/MatchResource.php b/web/modules/custom/dpl_campaign/src/Plugin/rest/resource/MatchResource.php index c98b4e0a3..81b4ed77a 100644 --- a/web/modules/custom/dpl_campaign/src/Plugin/rest/resource/MatchResource.php +++ b/web/modules/custom/dpl_campaign/src/Plugin/rest/resource/MatchResource.php @@ -211,9 +211,9 @@ protected function transformFacetsToRules(array $facets): array { // Store the facet name so we can check for duplicates. $known_facets[] = $facet->name; - return array_map(function (Value $value, int $index) use ($facet) { + return array_map(function (Value $value, int|string $index) use ($facet) { // With values being sorted the index will correspond to the rank. - return new Rule($facet->name, $value->term, $index + 1); + return new Rule($facet->name, $value->term, intval($index) + 1); }, $sorted_values, array_keys($sorted_values)); }, $facets)); } @@ -234,8 +234,8 @@ protected function formatCampaignOutput(NodeInterface $campaign): array { $output['title'] = $campaign->get('title')->getValue()[0]['value']; } - if (!$campaign->get('body')->isEmpty()) { - $output['text'] = $campaign->get('body')->getValue()[0]['value']; + if (!$campaign->get('field_campaign_text')->isEmpty()) { + $output['text'] = $campaign->get('field_campaign_text')->getValue()[0]['value']; } if (!$campaign->get('field_campaign_image')->isEmpty()) { @@ -276,12 +276,12 @@ protected function formatCampaignOutput(NodeInterface $campaign): array { protected function findCampaign(array $rules, string $rules_logic): ?NodeInterface { $storage = $this->entityTypeManager->getStorage('node'); $query = $storage->getQuery(); - $query->accessCheck(FALSE) + $entity_ids = $query->accessCheck(FALSE) ->condition('type', 'campaign') ->condition('status', 1) - ->condition('field_campaign_rules_logic', $rules_logic); + ->condition('field_campaign_rules_logic', $rules_logic) + ->execute(); - $entity_ids = $query->execute(); if (!is_array($entity_ids)) { return NULL; } diff --git a/web/modules/custom/dpl_config_import/dpl_config_import.info.yml b/web/modules/custom/dpl_config_import/dpl_config_import.info.yml index 24bdd2855..027d1058b 100644 --- a/web/modules/custom/dpl_config_import/dpl_config_import.info.yml +++ b/web/modules/custom/dpl_config_import/dpl_config_import.info.yml @@ -2,6 +2,5 @@ name: Configuration Import type: module description: Import configuration from YAML files. package: DPL -core: 8.x -core_version_requirement: ^8 || ^9 +core_version_requirement: ^9 || ^10 configure: dpl_config_upload.upload_form diff --git a/web/modules/custom/dpl_config_import/src/Form/UploadForm.php b/web/modules/custom/dpl_config_import/src/Form/UploadForm.php index 7ad859d8e..47f9c41d2 100644 --- a/web/modules/custom/dpl_config_import/src/Form/UploadForm.php +++ b/web/modules/custom/dpl_config_import/src/Form/UploadForm.php @@ -105,8 +105,8 @@ public function submitForm(array &$form, FormStateInterface $form_state): void { } $configuration = $yaml_data['configuration'] ?? []; - array_map(function ($value, string $key) { - $config = $this->config->getEditable($key); + array_map(function ($value, int|string $key) { + $config = $this->config->getEditable((string) $key); $new_config = NestedArray::mergeDeepArray([$config->getRawData(), $value], TRUE); $config->setData($new_config); $config->save(); diff --git a/web/modules/custom/dpl_dashboard/dpl_dashboard.info.yml b/web/modules/custom/dpl_dashboard/dpl_dashboard.info.yml index b107dba8b..c13037ecc 100644 --- a/web/modules/custom/dpl_dashboard/dpl_dashboard.info.yml +++ b/web/modules/custom/dpl_dashboard/dpl_dashboard.info.yml @@ -9,4 +9,4 @@ dependencies: - dpl_react:dpl_react - dpl_react_apps:dpl_react_apps type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_dashboard/src/Plugin/Block/DashboardBlock.php b/web/modules/custom/dpl_dashboard/src/Plugin/Block/DashboardBlock.php index 9089f0160..0a2d219d8 100644 --- a/web/modules/custom/dpl_dashboard/src/Plugin/Block/DashboardBlock.php +++ b/web/modules/custom/dpl_dashboard/src/Plugin/Block/DashboardBlock.php @@ -6,12 +6,12 @@ use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\dpl_dashboard\DplDashboardSettings; +use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; +use Drupal\dpl_library_agency\BranchSettings; use Drupal\dpl_library_agency\Form\GeneralSettingsForm; use Drupal\dpl_react\DplReactConfigInterface; use Drupal\dpl_react_apps\Controller\DplReactAppsController; use Symfony\Component\DependencyInjection\ContainerInterface; -use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; -use Drupal\dpl_library_agency\BranchSettings; /** * Provides user intermediate list. diff --git a/web/modules/custom/dpl_event/dpl_event.info.yml b/web/modules/custom/dpl_event/dpl_event.info.yml new file mode 100644 index 000000000..50b44e04a --- /dev/null +++ b/web/modules/custom/dpl_event/dpl_event.info.yml @@ -0,0 +1,9 @@ +name: "Event" +type: module +description: "Custom handling related to events." +package: DPL +core_version_requirement: ^10 + +dependencies: + - drupal:enum_field + - drupal:job_scheduler diff --git a/web/modules/custom/dpl_event/dpl_event.module b/web/modules/custom/dpl_event/dpl_event.module new file mode 100644 index 000000000..ffed04051 --- /dev/null +++ b/web/modules/custom/dpl_event/dpl_event.module @@ -0,0 +1,119 @@ + + * Job scheduler information. + */ +function dpl_event_cron_job_scheduler_info(): array { + return [ + "dpl_event_set_occurred" => [ + "worker callback" => 'dpl_event_set_occurred_callback', + ], + ]; +} + +/** + * Implements hook_node_insert(). + */ +function dpl_event_node_insert(NodeInterface $node): void { + if (dpl_event_node_is_event($node) && dpl_event_event_is_active($node)) { + dpl_event_schedule_set_occurred($node); + } +} + +/** + * Implements hook_node_update(). + */ +function dpl_event_node_update(NodeInterface $node): void { + if (dpl_event_node_is_event($node) && dpl_event_event_is_active($node)) { + dpl_event_schedule_set_occurred($node); + } +} + +/** + * Determine whether a node is of the event type managed by this module. + */ +function dpl_event_node_is_event(NodeInterface $node): bool { + return $node->getType() === "event"; +} + +/** + * Determine if an event is considered active. + * + * An event is considered active if it has not occurred or been cancelled. + */ +function dpl_event_event_is_active(NodeInterface $event): bool { + /** @var \Drupal\enum_field\Plugin\Field\FieldType\EnumItemList $event_state */ + $event_state = $event->get("field_event_state"); + return !(in_array(EventState::Cancelled, $event_state->enums()) + || in_array(EventState::Occurred, $event_state->enums())); +} + +/** + * Schedule setting an event to occurred in the future. + */ +function dpl_event_schedule_set_occurred(NodeInterface $event): void { + $now_timestamp = \Drupal::time()->getCurrentTime(); + + $event_date = $event->get('field_event_date')->get(0); + if (!$event_date) { + return; + } + $event_date_values = $event_date->getValue(); + if (!$event_date_values || empty($event_date_values["end_value"])) { + return; + } + $event_end_date = new DateTimeImmutable($event_date_values["end_value"]); + $event_end_timestamp = $event_end_date->getTimestamp(); + + $job = [ + 'name' => 'dpl_event_set_occurred', + 'type' => 'event', + 'id' => $event->id(), + // The period is the number of seconds to wait between job executions. A + // negative period means that the job will be executed as soon as + // possible. By setting periodic false the job is only executed once. + 'period' => $event_end_timestamp - $now_timestamp, + 'periodic' => FALSE, + ]; + + /** @var \Drupal\job_scheduler\JobSchedulerInterface $scheduler */ + $scheduler = \Drupal::service('job_scheduler.manager'); + // Remove any preexisting job with the same name, type and id. + $scheduler->remove($job); + // Schedule the new update. + $scheduler->set($job); + + \Drupal::logger('dpl_event')->debug( + 'Scheduled "occurred" update for event %event_id at %end_time', + ['%event_id' => $event->id(), '%end_time' => $event_end_date->format('c')] + ); +} + +/** + * Callback to be executed for scheduled jobs. + */ +function dpl_event_set_occurred_callback(JobSchedule $job): void { + $event = \Drupal::entityTypeManager()->getStorage('node')->load($job->getId()); + if (!$event) { + return; + } + + // Set state to occurred for events we consider active. + if (dpl_event_event_is_active($event)) { + $event->set("field_event_state", EventState::Occurred); + $event->save(); + } +} diff --git a/web/modules/custom/dpl_event/src/EventState.php b/web/modules/custom/dpl_event/src/EventState.php new file mode 100644 index 000000000..e05f7b4ed --- /dev/null +++ b/web/modules/custom/dpl_event/src/EventState.php @@ -0,0 +1,49 @@ + 'dpl_event']; + + return match($this) { + EventState::TicketSaleNotOpen => $translation->translate('Ticket sale not open', [], $options)->render(), + EventState::Active => $translation->translate('Active', [], $options)->render(), + EventState::SoldOut => $translation->translate('Sold out', [], $options)->render(), + EventState::Cancelled => $translation->translate('Canceled', [], $options)->render(), + EventState::Occurred => $translation->translate('Occurred', [], $options)->render(), + }; + } + +} diff --git a/web/modules/custom/dpl_example_content/dpl_example_content.info.yml b/web/modules/custom/dpl_example_content/dpl_example_content.info.yml index 18307edbc..623cf27da 100644 --- a/web/modules/custom/dpl_example_content/dpl_example_content.info.yml +++ b/web/modules/custom/dpl_example_content/dpl_example_content.info.yml @@ -2,7 +2,7 @@ name: Example content for DPL CMS type: module description: Provides example content for demo sites. package: DPL -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 dependencies: - default_content:default_content default_content: diff --git a/web/modules/custom/dpl_favorites_list/dpl_favorites_list.info.yml b/web/modules/custom/dpl_favorites_list/dpl_favorites_list.info.yml index c1a3548bd..7a764581e 100644 --- a/web/modules/custom/dpl_favorites_list/dpl_favorites_list.info.yml +++ b/web/modules/custom/dpl_favorites_list/dpl_favorites_list.info.yml @@ -8,4 +8,4 @@ dependencies: - dpl_react:dpl_react - dpl_react_apps:dpl_react_apps type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_favorites_list/src/Plugin/Block/FavoritesListBlock.php b/web/modules/custom/dpl_favorites_list/src/Plugin/Block/FavoritesListBlock.php index 37c2b215e..3c837708e 100644 --- a/web/modules/custom/dpl_favorites_list/src/Plugin/Block/FavoritesListBlock.php +++ b/web/modules/custom/dpl_favorites_list/src/Plugin/Block/FavoritesListBlock.php @@ -5,11 +5,11 @@ use Drupal\Core\Block\BlockBase; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\dpl_favorites_list\DplFavoritesListSettings; +use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; +use Drupal\dpl_library_agency\BranchSettings; use Drupal\dpl_react\DplReactConfigInterface; use Drupal\dpl_react_apps\Controller\DplReactAppsController; use Symfony\Component\DependencyInjection\ContainerInterface; -use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; -use Drupal\dpl_library_agency\BranchSettings; /** * Provides user favorites list. diff --git a/web/modules/custom/dpl_favorites_list_material_component/dpl_favorites_list_material_component.info.yml b/web/modules/custom/dpl_favorites_list_material_component/dpl_favorites_list_material_component.info.yml index 2cf530fcb..53a5f82ca 100644 --- a/web/modules/custom/dpl_favorites_list_material_component/dpl_favorites_list_material_component.info.yml +++ b/web/modules/custom/dpl_favorites_list_material_component/dpl_favorites_list_material_component.info.yml @@ -6,4 +6,4 @@ dependencies: - dpl_react:dpl_react - dpl_react_apps:dpl_react_apps type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_favorites_list_material_component/src/Plugin/Block/FavoritesListMaterialComponentBlock.php b/web/modules/custom/dpl_favorites_list_material_component/src/Plugin/Block/FavoritesListMaterialComponentBlock.php index da7bf93c4..f5aa010e6 100644 --- a/web/modules/custom/dpl_favorites_list_material_component/src/Plugin/Block/FavoritesListMaterialComponentBlock.php +++ b/web/modules/custom/dpl_favorites_list_material_component/src/Plugin/Block/FavoritesListMaterialComponentBlock.php @@ -19,28 +19,6 @@ */ class FavoritesListMaterialComponentBlock extends BlockBase implements ContainerFactoryPluginInterface { - /** - * FavoritesListMaterialComponentBlock constructor. - * - * @param mixed[] $configuration - * A configuration array containing information about the plugin instance. - * @param string $plugin_id - * The plugin ID for the plugin instance. - * @param mixed $plugin_definition - * The plugin implementation definition. - * @param \Drupal\Core\Config\ConfigFactoryInterface $configFactory - * Drupal config factory to get FBS and Publizon settings. - */ - public function __construct( - array $configuration, - $plugin_id, - $plugin_definition, - private ConfigFactoryInterface $configFactory, - ) { - parent::__construct($configuration, $plugin_id, $plugin_definition); - $this->configuration = $configuration; - } - /** * {@inheritDoc} * @@ -61,7 +39,6 @@ public static function create(ContainerInterface $container, array $configuratio $configuration, $plugin_id, $plugin_definition, - $container->get('config.factory'), ); } diff --git a/web/modules/custom/dpl_fbs/dpl_fbs.info.yml b/web/modules/custom/dpl_fbs/dpl_fbs.info.yml index 9d79bd714..8838a176f 100644 --- a/web/modules/custom/dpl_fbs/dpl_fbs.info.yml +++ b/web/modules/custom/dpl_fbs/dpl_fbs.info.yml @@ -2,4 +2,4 @@ name: DPL FBS description: Handle FBS configuration package: DPL type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_fees/dpl_fees.info.yml b/web/modules/custom/dpl_fees/dpl_fees.info.yml index a0615debd..c76a5e9a5 100644 --- a/web/modules/custom/dpl_fees/dpl_fees.info.yml +++ b/web/modules/custom/dpl_fees/dpl_fees.info.yml @@ -9,4 +9,4 @@ dependencies: - dpl_react_apps:dpl_react_apps - dpl_library_agency:dpl_library_agency type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_instant_loan/dpl_instant_loan.info.yml b/web/modules/custom/dpl_instant_loan/dpl_instant_loan.info.yml index 20891dcf0..cb36b6ad8 100644 --- a/web/modules/custom/dpl_instant_loan/dpl_instant_loan.info.yml +++ b/web/modules/custom/dpl_instant_loan/dpl_instant_loan.info.yml @@ -1,4 +1,4 @@ name: Instant Loan type: module description: Supports promoting materials available for instant loans to patrons. -core_version_requirement: ^8 || ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_instant_loan/src/Form/DplInstantLoanSettingsForm.php b/web/modules/custom/dpl_instant_loan/src/Form/DplInstantLoanSettingsForm.php index c9fe40e2e..a3ca1789c 100644 --- a/web/modules/custom/dpl_instant_loan/src/Form/DplInstantLoanSettingsForm.php +++ b/web/modules/custom/dpl_instant_loan/src/Form/DplInstantLoanSettingsForm.php @@ -3,10 +3,10 @@ namespace Drupal\dpl_instant_loan\Form; use Drupal\Core\Config\ConfigFactoryInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\dpl_react\DplReactConfigInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; use function Safe\preg_split; /** @@ -116,7 +116,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { public function submitForm(array &$form, FormStateInterface $form_state): void { $this->config($this->configService->getConfigKey()) ->set('enabled', $form_state->getValue('enabled')) - ->set('match_strings', preg_split("/\s*[\r\n]+\s*/", $form_state->getValue('match_strings')) ?? []) + ->set('match_strings', preg_split("/\s*[\r\n]+\s*/", $form_state->getValue('match_strings'))) ->set('threshold', $form_state->getValue('threshold')) ->save(); diff --git a/web/modules/custom/dpl_library_agency/dpl_library_agency.info.yml b/web/modules/custom/dpl_library_agency/dpl_library_agency.info.yml index 28d755b61..63b052ee5 100644 --- a/web/modules/custom/dpl_library_agency/dpl_library_agency.info.yml +++ b/web/modules/custom/dpl_library_agency/dpl_library_agency.info.yml @@ -1,9 +1,8 @@ name: "DPL Library Agency" type: module description: "Module for handling library agency configuration and functionality" -core: 8.x package: "DPL" -core_version_requirement: ^9 || ^8 +core_version_requirement: ^9 || ^10 dependencies: - dpl_fbs:dpl_fbs - dpl_library_token:dpl_library_token diff --git a/web/modules/custom/dpl_library_token/dpl_library_token.info.yml b/web/modules/custom/dpl_library_token/dpl_library_token.info.yml index f00c99f31..61cee7411 100644 --- a/web/modules/custom/dpl_library_token/dpl_library_token.info.yml +++ b/web/modules/custom/dpl_library_token/dpl_library_token.info.yml @@ -3,7 +3,7 @@ description: Handles fetching and storage of a library token package: DPL type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 dependencies: - dpl_login:dpl_login diff --git a/web/modules/custom/dpl_library_token/src/LibraryToken.php b/web/modules/custom/dpl_library_token/src/LibraryToken.php index 18041a2cc..7018ab951 100644 --- a/web/modules/custom/dpl_library_token/src/LibraryToken.php +++ b/web/modules/custom/dpl_library_token/src/LibraryToken.php @@ -3,6 +3,7 @@ namespace Drupal\dpl_library_token; use Drupal\dpl_library_token\Exception\LibraryTokenResponseException; +use Safe\Exceptions\JsonException; use function Safe\json_decode as json_decode; /** @@ -38,8 +39,8 @@ public static function createFromResponseBody(string $response_body): self { try { $token_data = json_decode($response_body, TRUE); } - catch (\JsonException $e) { - throw new LibraryTokenResponseException('Could not decode library token response', $e); + catch (JsonException $e) { + throw new LibraryTokenResponseException('Syntax error', $e->getCode(), $e); } if (empty($token_data['access_token'])) { throw new LibraryTokenResponseException('Access token is missing'); diff --git a/web/modules/custom/dpl_library_token/src/LibraryTokenHandler.php b/web/modules/custom/dpl_library_token/src/LibraryTokenHandler.php index 9e7680926..aa8f79009 100644 --- a/web/modules/custom/dpl_library_token/src/LibraryTokenHandler.php +++ b/web/modules/custom/dpl_library_token/src/LibraryTokenHandler.php @@ -2,13 +2,13 @@ namespace Drupal\dpl_library_token; +use Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface; +use Drupal\Core\Logger\LoggerChannelFactoryInterface; use Drupal\dpl_login\Adgangsplatformen\Config; -use Psr\Log\LogLevel; use GuzzleHttp\ClientInterface; use GuzzleHttp\Exception\RequestException; -use Drupal\Core\Logger\LoggerChannelFactoryInterface; -use Drupal\Core\KeyValueStore\KeyValueExpirableFactoryInterface; -use function Safe\sprintf as sprintf; +use Psr\Log\LogLevel; +use function Safe\sprintf; /** * Library Token Handler Service. diff --git a/web/modules/custom/dpl_library_token/tests/src/Unit/LibraryTokenHandlerTest.php b/web/modules/custom/dpl_library_token/tests/src/Unit/LibraryTokenHandlerTest.php index 644740048..c6d6cc06b 100644 --- a/web/modules/custom/dpl_library_token/tests/src/Unit/LibraryTokenHandlerTest.php +++ b/web/modules/custom/dpl_library_token/tests/src/Unit/LibraryTokenHandlerTest.php @@ -158,7 +158,7 @@ public function testItComplainsIfConfigurationIsNotSet(?array $settings, string /** * Dataprovider with settings and expected exception messages. * - * @return array[] + * @return mixed[] */ public function provideExceptionMessages(): array { return [ diff --git a/web/modules/custom/dpl_loans/dpl_loans.info.yml b/web/modules/custom/dpl_loans/dpl_loans.info.yml index aca500c48..f8bd8ff32 100644 --- a/web/modules/custom/dpl_loans/dpl_loans.info.yml +++ b/web/modules/custom/dpl_loans/dpl_loans.info.yml @@ -8,4 +8,4 @@ dependencies: - dpl_react:dpl_react - dpl_library_agency:dpl_library_agency type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_login/dpl_login.info.yml b/web/modules/custom/dpl_login/dpl_login.info.yml index 4f6fbd319..82a159d01 100644 --- a/web/modules/custom/dpl_login/dpl_login.info.yml +++ b/web/modules/custom/dpl_login/dpl_login.info.yml @@ -3,7 +3,7 @@ description: Handles authentication/login via Adgangsplatformen package: DPL type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 dependencies: - dpl_fbs:dpl_fbs diff --git a/web/modules/custom/dpl_login/dpl_login.module b/web/modules/custom/dpl_login/dpl_login.module index df9e1064c..e44f8c032 100644 --- a/web/modules/custom/dpl_login/dpl_login.module +++ b/web/modules/custom/dpl_login/dpl_login.module @@ -129,11 +129,6 @@ function dpl_login_openid_connect_post_authorize(AccountInterface $account, arra * The user account being saved. * @param mixed[] $context * Various openid_connect context. Tokens etc. - * - * We are ignoring the function declaration - * because PhpStan gives us an iterable error on UserInterface - * which we cannot handle for the moment. - * @phpstan-ignore-next-line */ function dpl_login_openid_connect_userinfo_save(UserInterface $account, array $context): void { // If the user is new we attach a role to the user. @@ -157,7 +152,7 @@ function _dpl_login_user_has_been_processed(array $openid_connect_context): bool // about the user. // Or if we are sure that the user is an already created user // then we do not attach any information. - return !$openid_connect_context['is_new'] ?? FALSE; + return (isset($openid_connect_context['is_new'])) ? !$openid_connect_context['is_new'] : FALSE; } /** diff --git a/web/modules/custom/dpl_login/src/Controller/DplLoginController.php b/web/modules/custom/dpl_login/src/Controller/DplLoginController.php index fcf9fd038..5ad381186 100644 --- a/web/modules/custom/dpl_login/src/Controller/DplLoginController.php +++ b/web/modules/custom/dpl_login/src/Controller/DplLoginController.php @@ -2,13 +2,13 @@ namespace Drupal\dpl_login\Controller; -use Drupal\Core\Url; -use Drupal\dpl_login\Adgangsplatformen\Config; -use Drupal\dpl_login\UserTokensProvider; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Routing\TrustedRedirectResponse; use Drupal\Core\StringTranslation\StringTranslationTrait; +use Drupal\Core\Url; +use Drupal\dpl_login\Adgangsplatformen\Config; use Drupal\dpl_login\Exception\MissingConfigurationException; +use Drupal\dpl_login\UserTokensProvider; use Drupal\openid_connect\OpenIDConnectClaims; use Drupal\openid_connect\Plugin\OpenIDConnectClientInterface; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -124,11 +124,6 @@ public function logout(): TrustedRedirectResponse|RedirectResponse { return $this->redirect(''); } - // Create url for logout service that it should redirect back to. - // Since toString(TRUE) is called - // we know that the return value of toString() is GeneratedUrl - // and consequently we are able to call getGeneratedUrl in the end. - /* @phpstan-ignore-next-line */ $redirect_uri = Url::fromRoute('', [], ["absolute" => TRUE]) ->toString(TRUE) ->getGeneratedUrl(); @@ -142,7 +137,7 @@ public function logout(): TrustedRedirectResponse|RedirectResponse { ], ]); - return TrustedRedirectResponse::create($url->toUriString()); + return new TrustedRedirectResponse($url->toUriString()); } /** diff --git a/web/modules/custom/dpl_login/src/Plugin/OpenIDConnectClient/Adgangsplatformen.php b/web/modules/custom/dpl_login/src/Plugin/OpenIDConnectClient/Adgangsplatformen.php index 2ab562038..ce3cdc9a5 100644 --- a/web/modules/custom/dpl_login/src/Plugin/OpenIDConnectClient/Adgangsplatformen.php +++ b/web/modules/custom/dpl_login/src/Plugin/OpenIDConnectClient/Adgangsplatformen.php @@ -3,8 +3,8 @@ namespace Drupal\dpl_login\Plugin\OpenIDConnectClient; use Drupal\Core\Form\FormStateInterface; -use Drupal\openid_connect\Plugin\OpenIDConnectClientBase; use Drupal\Core\GeneratedUrl; +use Drupal\openid_connect\Plugin\OpenIDConnectClientBase; /** * Adgangsplatformen openid_connect plugin. diff --git a/web/modules/custom/dpl_login/tests/src/Unit/DplLoginControllerTest.php b/web/modules/custom/dpl_login/tests/src/Unit/DplLoginControllerTest.php index 74ef16e53..a8cbac616 100644 --- a/web/modules/custom/dpl_login/tests/src/Unit/DplLoginControllerTest.php +++ b/web/modules/custom/dpl_login/tests/src/Unit/DplLoginControllerTest.php @@ -2,27 +2,27 @@ namespace Drupal\Tests\dpl_login\Unit; -use Drupal\dpl_login\Adgangsplatformen\Config; -use phpmock\Mock; -use phpmock\MockBuilder; -use Prophecy\Argument; -use Psr\Log\LoggerInterface; -use Drupal\Core\GeneratedUrl; -use Drupal\Tests\UnitTestCase; -use Drupal\dpl_login\AccessToken; -use Drupal\Core\Routing\UrlGenerator; -use Drupal\Core\Config\ImmutableConfig; -use Drupal\dpl_login\UserTokensProvider; use Drupal\Core\Config\ConfigFactoryInterface; -use Drupal\Core\Routing\TrustedRedirectResponse; -use Drupal\dpl_login\Controller\DplLoginController; +use Drupal\Core\Config\ImmutableConfig; use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\Core\GeneratedUrl; use Drupal\Core\Logger\LoggerChannelFactoryInterface; +use Drupal\Core\Routing\TrustedRedirectResponse; +use Drupal\Core\Routing\UrlGenerator; use Drupal\Core\Utility\UnroutedUrlAssemblerInterface; -use Symfony\Component\HttpFoundation\RedirectResponse; +use Drupal\dpl_login\AccessToken; +use Drupal\dpl_login\Adgangsplatformen\Config; +use Drupal\dpl_login\Controller\DplLoginController; use Drupal\dpl_login\Exception\MissingConfigurationException; +use Drupal\dpl_login\UserTokensProvider; use Drupal\openid_connect\OpenIDConnectClaims; use Drupal\openid_connect\Plugin\OpenIDConnectClientBase; +use Drupal\Tests\UnitTestCase; +use phpmock\Mock; +use phpmock\MockBuilder; +use Prophecy\Argument; +use Psr\Log\LoggerInterface; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Response; /** diff --git a/web/modules/custom/dpl_mapp/dpl_mapp.info.yml b/web/modules/custom/dpl_mapp/dpl_mapp.info.yml index c2d1f8193..c50c7faf9 100644 --- a/web/modules/custom/dpl_mapp/dpl_mapp.info.yml +++ b/web/modules/custom/dpl_mapp/dpl_mapp.info.yml @@ -2,5 +2,5 @@ name: Mapp Intelligence type: module description: Integration with Mapp Intelligence to track site usage. package: DPL -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 configure: dpl_mapp.settings_form diff --git a/web/modules/custom/dpl_patron_menu/dpl_patron_menu.info.yml b/web/modules/custom/dpl_patron_menu/dpl_patron_menu.info.yml index 94fad050f..13497f8b2 100644 --- a/web/modules/custom/dpl_patron_menu/dpl_patron_menu.info.yml +++ b/web/modules/custom/dpl_patron_menu/dpl_patron_menu.info.yml @@ -13,4 +13,4 @@ dependencies: - dpl_react_apps:dpl_react_apps type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_patron_menu/src/Plugin/Block/PatronMenuBlock.php b/web/modules/custom/dpl_patron_menu/src/Plugin/Block/PatronMenuBlock.php index bcd4f24c3..f09df107e 100644 --- a/web/modules/custom/dpl_patron_menu/src/Plugin/Block/PatronMenuBlock.php +++ b/web/modules/custom/dpl_patron_menu/src/Plugin/Block/PatronMenuBlock.php @@ -6,12 +6,12 @@ use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Url; -use Drupal\dpl_library_agency\Form\GeneralSettingsForm; -use Drupal\dpl_react_apps\Controller\DplReactAppsController; -use Symfony\Component\DependencyInjection\ContainerInterface; use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; use Drupal\dpl_library_agency\BranchSettings; +use Drupal\dpl_library_agency\Form\GeneralSettingsForm; use Drupal\dpl_react\DplReactConfigInterface; +use Drupal\dpl_react_apps\Controller\DplReactAppsController; +use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides patron menu. @@ -95,40 +95,47 @@ public function build(): array { // generated menu. A place for further improvements. $menu = [ [ - "name" => $this->t("Dashboard", ["context" => 'Patron menu']), + "name" => $this->t("Dashboard", [], ["context" => 'Patron menu']), "link" => dpl_react_apps_ensure_url_is_string( Url::fromRoute('dpl_dashboard.list', [], ['absolute' => TRUE])->toString() ), "dataId" => "40", ], [ - "name" => $this->t("Loans", ["context" => 'Patron menu']), + "name" => $this->t("Loans", [], ["context" => 'Patron menu']), "link" => dpl_react_apps_ensure_url_is_string( Url::fromRoute('dpl_loans.list', [], ['absolute' => TRUE])->toString() ), "dataId" => "1", ], [ - "name" => $this->t("Reservations", ["context" => 'Patron menu']), + "name" => $this->t("Reservations", [], ["context" => 'Patron menu']), "link" => dpl_react_apps_ensure_url_is_string( Url::fromRoute('dpl_reservations.list', [], ['absolute' => TRUE])->toString() ), "dataId" => "2", ], [ - "name" => $this->t("My list", ["context" => 'Patron menu']), + "name" => $this->t("My list", [], ["context" => 'Patron menu']), "link" => dpl_react_apps_ensure_url_is_string( Url::fromRoute('dpl_favorites_list.list', [], ['absolute' => TRUE])->toString() ), "dataId" => "20", ], [ - "name" => $this->t("Fees & Replacement costs", ["context" => 'Patron menu']), + "name" => $this->t("Fees & Replacement costs", [], ["context" => 'Patron menu']), "link" => dpl_react_apps_ensure_url_is_string( Url::fromRoute('dpl_fees.list', [], ['absolute' => TRUE])->toString() ), "dataId" => "4", ], + [ + "name" => $this->t("My account", [], ["context" => 'Patron menu']), + "link" => dpl_react_apps_ensure_url_is_string( + Url::fromRoute('dpl_dashboard.list', [], ['absolute' => TRUE])->toString() + ), + "dataId" => "40", + ], ]; $data = [ diff --git a/web/modules/custom/dpl_patron_page/dpl_patron_page.info.yml b/web/modules/custom/dpl_patron_page/dpl_patron_page.info.yml index c761ba795..5beeae3f1 100644 --- a/web/modules/custom/dpl_patron_page/dpl_patron_page.info.yml +++ b/web/modules/custom/dpl_patron_page/dpl_patron_page.info.yml @@ -9,4 +9,4 @@ dependencies: - dpl_react:dpl_react - dpl_react_apps:dpl_react_apps type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_patron_page/src/Plugin/Block/PatronPageBlock.php b/web/modules/custom/dpl_patron_page/src/Plugin/Block/PatronPageBlock.php index 67da3efe2..78cb0c6a1 100644 --- a/web/modules/custom/dpl_patron_page/src/Plugin/Block/PatronPageBlock.php +++ b/web/modules/custom/dpl_patron_page/src/Plugin/Block/PatronPageBlock.php @@ -5,14 +5,14 @@ use Drupal\Core\Block\BlockBase; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; +use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; +use Drupal\dpl_library_agency\BranchSettings; use Drupal\dpl_library_agency\Form\GeneralSettingsForm; +use Drupal\dpl_library_agency\ReservationSettings; use Drupal\dpl_patron_page\DplPatronPageSettings; use Drupal\dpl_react\DplReactConfigInterface; use Drupal\dpl_react_apps\Controller\DplReactAppsController; use Symfony\Component\DependencyInjection\ContainerInterface; -use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; -use Drupal\dpl_library_agency\BranchSettings; -use Drupal\dpl_library_agency\ReservationSettings; /** * Provides patron page. diff --git a/web/modules/custom/dpl_patron_redirect/dpl_patron_redirect.info.yml b/web/modules/custom/dpl_patron_redirect/dpl_patron_redirect.info.yml index 708522d1a..427a58292 100644 --- a/web/modules/custom/dpl_patron_redirect/dpl_patron_redirect.info.yml +++ b/web/modules/custom/dpl_patron_redirect/dpl_patron_redirect.info.yml @@ -4,4 +4,4 @@ package: DPL type: module dependencies: - dpl_login:dpl_login -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_patron_redirect/src/EventSubscriber/RedirectPatronSubscriber.php b/web/modules/custom/dpl_patron_redirect/src/EventSubscriber/RedirectPatronSubscriber.php index e31f582fe..83ae14e50 100644 --- a/web/modules/custom/dpl_patron_redirect/src/EventSubscriber/RedirectPatronSubscriber.php +++ b/web/modules/custom/dpl_patron_redirect/src/EventSubscriber/RedirectPatronSubscriber.php @@ -11,9 +11,9 @@ use Drupal\Core\Session\AccountProxyInterface; use Drupal\Core\Url; use Drupal\path_alias\AliasManagerInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * Event subscriber subscribing to KernelEvents::REQUEST. @@ -88,7 +88,6 @@ public function checkAuthStatus(RequestEvent $event): void { $url = Url::fromRoute('dpl_login.login')->toString(TRUE); $response = new TrustedRedirectResponse($url->getGeneratedUrl(), 307); $event->setResponse($response); - $event->stopPropagation(); } } } @@ -99,7 +98,7 @@ public function checkAuthStatus(RequestEvent $event): void { * @return mixed[] * The event function to call for this subscriber. */ - public static function getSubscribedEvents() { + public static function getSubscribedEvents(): array { $events[KernelEvents::REQUEST][] = ['checkAuthStatus']; return $events; } diff --git a/web/modules/custom/dpl_patron_reg/dpl_patron_reg.info.yml b/web/modules/custom/dpl_patron_reg/dpl_patron_reg.info.yml index 65a348675..c2a805884 100644 --- a/web/modules/custom/dpl_patron_reg/dpl_patron_reg.info.yml +++ b/web/modules/custom/dpl_patron_reg/dpl_patron_reg.info.yml @@ -2,7 +2,7 @@ name: Patron registration description: Enable registration of new patrons package: DPL type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 dependencies: - dpl_library_agency:dpl_library_agency - dpl_patron_page:dpl_patron_page diff --git a/web/modules/custom/dpl_patron_reg/src/Controller/DplPatronRegController.php b/web/modules/custom/dpl_patron_reg/src/Controller/DplPatronRegController.php index 202006d11..3138f3c1b 100644 --- a/web/modules/custom/dpl_patron_reg/src/Controller/DplPatronRegController.php +++ b/web/modules/custom/dpl_patron_reg/src/Controller/DplPatronRegController.php @@ -9,15 +9,15 @@ use Drupal\Core\Render\RendererInterface; use Drupal\Core\Routing\TrustedRedirectResponse; use Drupal\Core\Url; +use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; +use Drupal\dpl_library_agency\BranchSettings; +use Drupal\dpl_login\UserTokensProvider; use Drupal\dpl_react\DplReactConfigInterface; use Drupal\openid_connect\OpenIDConnectClaims; use Drupal\openid_connect\OpenIDConnectSession; use Drupal\openid_connect\Plugin\OpenIDConnectClientManager; use Symfony\Component\DependencyInjection\ContainerInterface; -use Drupal\dpl_login\UserTokensProvider; use Symfony\Component\HttpFoundation\Request; -use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; -use Drupal\dpl_library_agency\BranchSettings; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; /** diff --git a/web/modules/custom/dpl_patron_reg/src/Plugin/Block/PatronRegistrationBlock.php b/web/modules/custom/dpl_patron_reg/src/Plugin/Block/PatronRegistrationBlock.php index 2b7bcc2a9..90c75b91c 100644 --- a/web/modules/custom/dpl_patron_reg/src/Plugin/Block/PatronRegistrationBlock.php +++ b/web/modules/custom/dpl_patron_reg/src/Plugin/Block/PatronRegistrationBlock.php @@ -4,8 +4,8 @@ use Drupal\Core\Block\BlockBase; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; -use Drupal\dpl_library_agency\BranchSettings; use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; +use Drupal\dpl_library_agency\BranchSettings; use Drupal\dpl_library_agency\ReservationSettings; use Drupal\dpl_patron_page\DplPatronPageSettings; use Drupal\dpl_patron_reg\DplPatronRegSettings; diff --git a/web/modules/custom/dpl_publizon/dpl_publizon.info.yml b/web/modules/custom/dpl_publizon/dpl_publizon.info.yml index fd9486f37..673805487 100644 --- a/web/modules/custom/dpl_publizon/dpl_publizon.info.yml +++ b/web/modules/custom/dpl_publizon/dpl_publizon.info.yml @@ -2,4 +2,4 @@ name: DPL Publizon description: Handle publizon configuration package: DPL type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_react/dpl_react.info.yml b/web/modules/custom/dpl_react/dpl_react.info.yml index e2522d629..5893844e6 100644 --- a/web/modules/custom/dpl_react/dpl_react.info.yml +++ b/web/modules/custom/dpl_react/dpl_react.info.yml @@ -3,4 +3,4 @@ description: General handling of importing and using the DDB react components as package: DDB type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_react/dpl_react.libraries.yml b/web/modules/custom/dpl_react/dpl_react.libraries.yml index 5f6ff01d7..fbad5e6af 100644 --- a/web/modules/custom/dpl_react/dpl_react.libraries.yml +++ b/web/modules/custom/dpl_react/dpl_react.libraries.yml @@ -206,7 +206,6 @@ base: /libraries/dpl-react/components.css: {} handler: - version: 1.0 js: js/handler.js: {} dependencies: diff --git a/web/modules/custom/dpl_react/src/Controller/DplReactController.php b/web/modules/custom/dpl_react/src/Controller/DplReactController.php index 3a55dab68..a51f2e210 100644 --- a/web/modules/custom/dpl_react/src/Controller/DplReactController.php +++ b/web/modules/custom/dpl_react/src/Controller/DplReactController.php @@ -3,11 +3,11 @@ namespace Drupal\dpl_react\Controller; use Drupal\Core\Controller\ControllerBase; -use Symfony\Component\HttpFoundation\Response; use Drupal\dpl_library_token\LibraryTokenHandler; use Drupal\dpl_login\UserTokensProvider; use Symfony\Component\DependencyInjection\ContainerInterface; -use function Safe\sprintf as sprintf; +use Symfony\Component\HttpFoundation\Response; +use function Safe\sprintf; /** * DDB React Controller. diff --git a/web/modules/custom/dpl_react_apps/dpl_react_apps.info.yml b/web/modules/custom/dpl_react_apps/dpl_react_apps.info.yml index 272eb20ba..e5481e744 100644 --- a/web/modules/custom/dpl_react_apps/dpl_react_apps.info.yml +++ b/web/modules/custom/dpl_react_apps/dpl_react_apps.info.yml @@ -11,4 +11,4 @@ dependencies: - dpl_fees:dpl_fees type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_react_apps/dpl_react_apps.module b/web/modules/custom/dpl_react_apps/dpl_react_apps.module index a58a7a6cd..1f12eedb5 100644 --- a/web/modules/custom/dpl_react_apps/dpl_react_apps.module +++ b/web/modules/custom/dpl_react_apps/dpl_react_apps.module @@ -141,9 +141,12 @@ function dpl_react_apps_preprocess_dpl_react_app(array &$variables): void { ]; \Drupal::moduleHandler()->invokeAll('dpl_react_apps_data', [&$data]); foreach ($data as $scope => $values) { - if (empty($values)) { + if (!is_array($values)) { continue; } + // PHPStan thinks values will always be empty - probably because it does + // not know what is going on in invokeAll(). Ignore this. + // @phpstan-ignore-next-line empty.expr foreach ($values as $key => $value) { $variables['attributes'] += [ implode('-', ['data', $key, rtrim($scope, 's')]) => $value, diff --git a/web/modules/custom/dpl_react_apps/src/Controller/DplReactAppsController.php b/web/modules/custom/dpl_react_apps/src/Controller/DplReactAppsController.php index 932f53e28..0ee81db0f 100644 --- a/web/modules/custom/dpl_react_apps/src/Controller/DplReactAppsController.php +++ b/web/modules/custom/dpl_react_apps/src/Controller/DplReactAppsController.php @@ -276,7 +276,7 @@ public function work(string $wid): array { // @todo Remove when instant loans branches are used. 'blacklisted-instant-loan-branches-config' => "", 'branches-config' => $this->buildBranchesJsonProp($this->branchRepository->getBranches()), - 'sms-notifications-for-reservations-enabled-config' => (int) $this->reservationSettings->smsNotificationsIsEnabled() ?? ReservationSettings::RESERVATION_SMS_NOTIFICATIONS_ENABLED, + 'sms-notifications-for-reservations-enabled-config' => (int) $this->reservationSettings->smsNotificationsIsEnabled(), 'instant-loan-config' => $this->instantLoanSettings->getConfig(), "interest-periods-config" => $this->getInterestPeriods(), diff --git a/web/modules/custom/dpl_recommender/dpl_recommender.info.yml b/web/modules/custom/dpl_recommender/dpl_recommender.info.yml index e7c5f108d..670932c9b 100644 --- a/web/modules/custom/dpl_recommender/dpl_recommender.info.yml +++ b/web/modules/custom/dpl_recommender/dpl_recommender.info.yml @@ -8,4 +8,4 @@ dependencies: - dpl_react:dpl_react - dpl_react_apps:dpl_react_apps type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_reservations/dpl_reservations.info.yml b/web/modules/custom/dpl_reservations/dpl_reservations.info.yml index db400f631..6930b230e 100644 --- a/web/modules/custom/dpl_reservations/dpl_reservations.info.yml +++ b/web/modules/custom/dpl_reservations/dpl_reservations.info.yml @@ -9,4 +9,4 @@ dependencies: - dpl_react_apps:dpl_react_apps - dpl_library_agency:dpl_library_agency type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_reservations/src/Plugin/Block/ReservationListBlock.php b/web/modules/custom/dpl_reservations/src/Plugin/Block/ReservationListBlock.php index 2086ed72e..f2a1b9d81 100644 --- a/web/modules/custom/dpl_reservations/src/Plugin/Block/ReservationListBlock.php +++ b/web/modules/custom/dpl_reservations/src/Plugin/Block/ReservationListBlock.php @@ -5,13 +5,13 @@ use Drupal\Core\Block\BlockBase; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; +use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; +use Drupal\dpl_library_agency\BranchSettings; +use Drupal\dpl_library_agency\Form\GeneralSettingsForm; use Drupal\dpl_react\DplReactConfigInterface; use Drupal\dpl_react_apps\Controller\DplReactAppsController; use Drupal\dpl_reservations\DplReservationsSettings; use Symfony\Component\DependencyInjection\ContainerInterface; -use Drupal\dpl_library_agency\Branch\BranchRepositoryInterface; -use Drupal\dpl_library_agency\BranchSettings; -use Drupal\dpl_library_agency\Form\GeneralSettingsForm; /** * Provides user reservations list. diff --git a/web/modules/custom/dpl_something_similar/dpl_something_similar.info.yml b/web/modules/custom/dpl_something_similar/dpl_something_similar.info.yml index 60b39b29d..16b451e51 100644 --- a/web/modules/custom/dpl_something_similar/dpl_something_similar.info.yml +++ b/web/modules/custom/dpl_something_similar/dpl_something_similar.info.yml @@ -8,4 +8,4 @@ dependencies: - dpl_react:dpl_react - dpl_react_apps:dpl_react_apps type: module -core_version_requirement: ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_something_similar/src/Plugin/Block/SomethingSimilarBlock.php b/web/modules/custom/dpl_something_similar/src/Plugin/Block/SomethingSimilarBlock.php index 00b2ed1f5..5f93ff2bc 100644 --- a/web/modules/custom/dpl_something_similar/src/Plugin/Block/SomethingSimilarBlock.php +++ b/web/modules/custom/dpl_something_similar/src/Plugin/Block/SomethingSimilarBlock.php @@ -18,31 +18,6 @@ */ class SomethingSimilarBlock extends BlockBase implements ContainerFactoryPluginInterface { - /** - * Drupal config factory. - * - * @var \Drupal\Core\Config\ConfigFactoryInterface - */ - private ConfigFactoryInterface $configFactory; - - /** - * SomethingSimilarBlock constructor. - * - * @param mixed[] $configuration - * A configuration array containing information about the plugin instance. - * @param string $plugin_id - * The plugin ID for the plugin instance. - * @param mixed $plugin_definition - * The plugin implementation definition. - * @param \Drupal\Core\Config\ConfigFactoryInterface $configFactory - * Drupal config factory to get FBS and Publizon settings. - */ - public function __construct(array $configuration, $plugin_id, $plugin_definition, ConfigFactoryInterface $configFactory) { - parent::__construct($configuration, $plugin_id, $plugin_definition); - $this->configuration = $configuration; - $this->configFactory = $configFactory; - } - /** * {@inheritDoc} * @@ -63,7 +38,6 @@ public static function create(ContainerInterface $container, array $configuratio $configuration, $plugin_id, $plugin_definition, - $container->get('config.factory'), ); } diff --git a/web/modules/custom/dpl_url_proxy/dpl_url_proxy.info.yml b/web/modules/custom/dpl_url_proxy/dpl_url_proxy.info.yml index 50dc664ba..b3d2242f2 100644 --- a/web/modules/custom/dpl_url_proxy/dpl_url_proxy.info.yml +++ b/web/modules/custom/dpl_url_proxy/dpl_url_proxy.info.yml @@ -1,6 +1,5 @@ name: "DPL Url Proxy" type: module description: "Module for generating specially formatted external urls" -core: 8.x package: "DPL" -core_version_requirement: ^8 | ^9 +core_version_requirement: ^9 || ^10 diff --git a/web/modules/custom/dpl_url_proxy/src/Form/ProxyUrlConfigurationForm.php b/web/modules/custom/dpl_url_proxy/src/Form/ProxyUrlConfigurationForm.php index 1a8a45921..ece46312e 100644 --- a/web/modules/custom/dpl_url_proxy/src/Form/ProxyUrlConfigurationForm.php +++ b/web/modules/custom/dpl_url_proxy/src/Form/ProxyUrlConfigurationForm.php @@ -176,9 +176,7 @@ public function buildForm(array $form, FormStateInterface $form_state): array { $form['hostnames'][$index]['disable_prefix'] = [ '#type' => 'checkbox', '#title' => $this->t('Do not use proxy prefix for this hostname', [], ['context' => 'Url Proxy']), - '#default_value' => isset($saved_values['hostnames'][$index]['disable_prefix']) - ? $saved_values['hostnames'][$index]['disable_prefix'] - : FALSE, + '#default_value' => $saved_values['hostnames'][$index]['disable_prefix'] ?? FALSE, ]; $form['hostnames'][$index]['remove_this'] = [ diff --git a/web/modules/custom/dpl_url_proxy/tests/src/Unit/UrlProxyResourceTest.php b/web/modules/custom/dpl_url_proxy/tests/src/Unit/UrlProxyResourceTest.php index a018999fd..a99d117a0 100644 --- a/web/modules/custom/dpl_url_proxy/tests/src/Unit/UrlProxyResourceTest.php +++ b/web/modules/custom/dpl_url_proxy/tests/src/Unit/UrlProxyResourceTest.php @@ -2,8 +2,6 @@ namespace Drupal\Tests\dpl_library_token\Unit; -use Prophecy\Argument; -use Drupal\Tests\UnitTestCase; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Config\ConfigManagerInterface; use Drupal\Core\Config\ImmutableConfig; @@ -13,6 +11,8 @@ use Drupal\Core\StringTranslation\TranslationManager; use Drupal\dpl_url_proxy\DplUrlProxyInterface; use Drupal\dpl_url_proxy\Plugin\rest\resource\UrlProxyResource; +use Drupal\Tests\UnitTestCase; +use Prophecy\Argument; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\HttpException; @@ -111,7 +111,7 @@ public function testThatExceptionIsThrownIfPrefixIsNotSet(): void { * @param mixed[] $conf * The proxy url configuration to use. * - * @dataProvider testThatEndpointChangesUrlProvider + * @dataProvider thatEndpointChangesUrlProvider */ public function testThatEndpointChangesUrl(array $input, array $expected_output, array $conf): void { $config = $this->prophesize(ImmutableConfig::class); @@ -143,7 +143,7 @@ public function testThatEndpointChangesUrl(array $input, array $expected_output, * @return mixed[] * The test data. */ - public function testThatEndpointChangesUrlProvider(): array { + public function thatEndpointChangesUrlProvider(): array { $conf = [ 'prefix' => 'http://bib101.bibbaser.dk/login?url=', 'hostnames' => [ diff --git a/web/profiles/dpl_cms/dpl_cms.info.yml b/web/profiles/dpl_cms/dpl_cms.info.yml index 12bd21418..1147159bb 100644 --- a/web/profiles/dpl_cms/dpl_cms.info.yml +++ b/web/profiles/dpl_cms/dpl_cms.info.yml @@ -1,7 +1,7 @@ name: DPL CMS type: profile description: "Web platform for the Danish Public Libraries" -core_version_requirement: "^9" +core_version_requirement: ^9 || ^10 distribution: name: DPL CMS diff --git a/web/profiles/dpl_cms/src/Updater/Module.php b/web/profiles/dpl_cms/src/Updater/Module.php index 00eb4bfde..f767e0efd 100644 --- a/web/profiles/dpl_cms/src/Updater/Module.php +++ b/web/profiles/dpl_cms/src/Updater/Module.php @@ -2,8 +2,8 @@ namespace Drupal\dpl_cms\Updater; -use Drupal\Core\Updater\UpdaterInterface; use Drupal\Core\Updater\Module as UpdaterModule; +use Drupal\Core\Updater\UpdaterInterface; /** * Extending the core updater module class. diff --git a/web/sites/default/.gitignore b/web/sites/default/.gitignore index e48acd319..2d668ff9d 100644 --- a/web/sites/default/.gitignore +++ b/web/sites/default/.gitignore @@ -2,4 +2,6 @@ /development.settings.php /default.development.services.yml /default.services.yml +/local.settings.php +/local.services.yml /settings.lagoon.php diff --git a/web/sites/default/default.settings.php b/web/sites/default/default.settings.php index 64c749d4d..20d789369 100644 --- a/web/sites/default/default.settings.php +++ b/web/sites/default/default.settings.php @@ -138,49 +138,31 @@ * request as needed. The fourth line creates a new database with a name of * "extra". * - * You can optionally set prefixes for some or all database table names - * by using the 'prefix' setting. If a prefix is specified, the table - * name will be prepended with its value. Be sure to use valid database - * characters only, usually alphanumeric and underscore. If no prefixes - * are desired, leave it as an empty string ''. - * - * To have all database names prefixed, set 'prefix' as a string: + * For MySQL, MariaDB or equivalent databases the 'isolation_level' option can + * be set. The recommended transaction isolation level for Drupal sites is + * 'READ COMMITTED'. The 'REPEATABLE READ' option is supported but can result + * in deadlocks, the other two options are 'READ UNCOMMITTED' and 'SERIALIZABLE'. + * They are available but not supported; use them at your own risk. For more + * info: + * https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html + * + * On your settings.php, change the isolation level: * @code - * 'prefix' => 'main_', + * $databases['default']['default']['init_commands'] = [ + * 'isolation_level' => 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', + * ]; * @endcode * - * Per-table prefixes are deprecated as of Drupal 8.2, and will be removed in - * Drupal 9.0. After that, only a single prefix for all tables will be - * supported. + * You can optionally set a prefix for all database table names by using the + * 'prefix' setting. If a prefix is specified, the table name will be prepended + * with its value. Be sure to use valid database characters only, usually + * alphanumeric and underscore. If no prefix is desired, do not set the 'prefix' + * key or set its value to an empty string ''. * - * To provide prefixes for specific tables, set 'prefix' as an array. - * The array's keys are the table names and the values are the prefixes. - * The 'default' element is mandatory and holds the prefix for any tables - * not specified elsewhere in the array. Example: - * @code - * 'prefix' => [ - * 'default' => 'main_', - * 'users' => 'shared_', - * 'sessions' => 'shared_', - * 'role' => 'shared_', - * 'authmap' => 'shared_', - * ], - * @endcode - * You can also use a reference to a schema/database as a prefix. This may be - * useful if your Drupal installation exists in a schema that is not the default - * or you want to access several databases from the same code base at the same - * time. - * Example: + * For example, to have all database table prefixed with 'main_', set: * @code - * 'prefix' => [ - * 'default' => 'main.', - * 'users' => 'shared.', - * 'sessions' => 'shared.', - * 'role' => 'shared.', - * 'authmap' => 'shared.', - * ]; + * 'prefix' => 'main_', * @endcode - * NOTE: MySQL and SQLite's definition of a schema is a database. * * Advanced users can add or override initial commands to execute when * connecting to the database server, as well as PDO connection settings. For @@ -203,9 +185,9 @@ * information on these defaults and the potential issues. * * More details can be found in the constructor methods for each driver: - * - \Drupal\Core\Database\Driver\mysql\Connection::__construct() - * - \Drupal\Core\Database\Driver\pgsql\Connection::__construct() - * - \Drupal\Core\Database\Driver\sqlite\Connection::__construct() + * - \Drupal\mysql\Driver\Database\mysql\Connection::__construct() + * - \Drupal\pgsql\Driver\Database\pgsql\Connection::__construct() + * - \Drupal\sqlite\Driver\Database\sqlite\Connection::__construct() * * Sample Database configuration format for PostgreSQL (pgsql): * @code @@ -376,10 +358,13 @@ # $settings['reverse_proxy'] = TRUE; /** - * Specify every reverse proxy IP address in your environment. - * This setting is required if $settings['reverse_proxy'] is TRUE. + * Reverse proxy addresses. + * + * Specify every reverse proxy IP address in your environment, as an array of + * IPv4/IPv6 addresses or subnets in CIDR notation. This setting is required if + * $settings['reverse_proxy'] is TRUE. */ -# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...]; +# $settings['reverse_proxy_addresses'] = ['a.b.c.d', 'e.f.g.h/24', ...]; /** * Reverse proxy trusted headers. @@ -523,6 +508,48 @@ */ # $settings['file_public_path'] = 'sites/default/files'; +/** + * Additional public file schemes: + * + * Public schemes are URI schemes that allow download access to all users for + * all files within that scheme. + * + * The "public" scheme is always public, and the "private" scheme is always + * private, but other schemes, such as "https", "s3", "example", or others, + * can be either public or private depending on the site. By default, they're + * private, and access to individual files is controlled via + * hook_file_download(). + * + * Typically, if a scheme should be public, a module makes it public by + * implementing hook_file_download(), and granting access to all users for all + * files. This could be either the same module that provides the stream wrapper + * for the scheme, or a different module that decides to make the scheme + * public. However, in cases where a site needs to make a scheme public, but + * is unable to add code in a module to do so, the scheme may be added to this + * variable, the result of which is that system_file_download() grants public + * access to all files within that scheme. + */ +# $settings['file_additional_public_schemes'] = ['example']; + +/** + * File schemes whose paths should not be normalized: + * + * Normally, Drupal normalizes '/./' and '/../' segments in file URIs in order + * to prevent unintended file access. For example, 'private://css/../image.png' + * is normalized to 'private://image.png' before checking access to the file. + * + * On Windows, Drupal also replaces '\' with '/' in URIs for the local + * filesystem. + * + * If file URIs with one or more scheme should not be normalized like this, then + * list the schemes here. For example, if 'porcelain://china/./plate.png' should + * not be normalized to 'porcelain://china/plate.png', then add 'porcelain' to + * this array. In this case, make sure that the module providing the 'porcelain' + * scheme does not allow unintended file access when using '/../' to move up the + * directory tree. + */ +# $settings['file_sa_core_2023_005_schemes'] = ['porcelain']; + /** * Private file path: * @@ -586,7 +613,7 @@ * * Note: This setting does not apply to installation and update pages. */ -# $settings['maintenance_theme'] = 'bartik'; +# $settings['maintenance_theme'] = 'claro'; /** * PHP settings: @@ -611,21 +638,6 @@ # ini_set('pcre.backtrack_limit', 200000); # ini_set('pcre.recursion_limit', 200000); -/** - * Add Permissions-Policy header to disable Google FLoC. - * - * By default, Drupal sends the 'Permissions-Policy: interest-cohort=()' header - * to disable Google's Federated Learning of Cohorts feature, introduced in - * Chrome 89. - * - * See https://en.wikipedia.org/wiki/Federated_Learning_of_Cohorts for more - * information about FLoC. - * - * If you don't wish to disable FLoC in Chrome, you can set this value - * to FALSE. - */ -# $settings['block_interest_cohort'] = TRUE; - /** * Configuration overrides. * @@ -651,33 +663,6 @@ # $config['system.site']['name'] = 'My Drupal site'; # $config['user.settings']['anonymous'] = 'Visitor'; -/** - * Fast 404 pages: - * - * Drupal can generate fully themed 404 pages. However, some of these responses - * are for images or other resource files that are not displayed to the user. - * This can waste bandwidth, and also generate server load. - * - * The options below return a simple, fast 404 page for URLs matching a - * specific pattern: - * - $config['system.performance']['fast_404']['exclude_paths']: A regular - * expression to match paths to exclude, such as images generated by image - * styles, or dynamically-resized images. The default pattern provided below - * also excludes the private file system. If you need to add more paths, you - * can add '|path' to the expression. - * - $config['system.performance']['fast_404']['paths']: A regular expression to - * match paths that should return a simple 404 page, rather than the fully - * themed 404 page. If you don't have any aliases ending in htm or html you - * can add '|s?html?' to the expression. - * - $config['system.performance']['fast_404']['html']: The html to return for - * simple 404 pages. - * - * Remove the leading hash signs if you would like to alter this functionality. - */ -# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//'; -# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i'; -# $config['system.performance']['fast_404']['html'] = '404 Not Found

      Not Found

      The requested URL "@path" was not found on this server.

      '; - /** * Load services definition file. */ @@ -736,6 +721,8 @@ * @endcode * will allow the site to run off of all variants of example.com and * example.org, with all subdomains included. + * + * @see https://www.drupal.org/docs/installing-drupal/trusted-host-settings */ /** @@ -785,6 +772,49 @@ */ $settings['migrate_node_migrate_type_classic'] = FALSE; +/** + * The default settings for migration sources. + * + * These settings are used as the default settings on the Credential form at + * /upgrade/credentials. + * + * - migrate_source_version - The version of the source database. This can be + * '6' or '7'. Defaults to '7'. + * - migrate_source_connection - The key in the $databases array for the source + * site. + * - migrate_file_public_path - The location of the source Drupal 6 or Drupal 7 + * public files. This can be a local file directory containing the source + * Drupal 6 or Drupal 7 site (e.g /var/www/docroot), or the site address + * (e.g http://example.com). + * - migrate_file_private_path - The location of the source Drupal 7 private + * files. This can be a local file directory containing the source Drupal 7 + * site (e.g /var/www/docroot), or empty to use the same value as Public + * files directory. + * + * Sample configuration for a drupal 6 source site with the source files in a + * local directory. + * + * @code + * $settings['migrate_source_version'] = '6'; + * $settings['migrate_source_connection'] = 'migrate'; + * $settings['migrate_file_public_path'] = '/var/www/drupal6'; + * @endcode + * + * Sample configuration for a drupal 7 source site with public source files on + * the source site and the private files in a local directory. + * + * @code + * $settings['migrate_source_version'] = '7'; + * $settings['migrate_source_connection'] = 'migrate'; + * $settings['migrate_file_public_path'] = 'https://drupal7.com'; + * $settings['migrate_file_private_path'] = '/var/www/drupal7'; + * @endcode + */ +# $settings['migrate_source_connection'] = ''; +# $settings['migrate_source_version'] = ''; +# $settings['migrate_file_public_path'] = ''; +# $settings['migrate_file_private_path'] = ''; + /** * Load local development override configuration, if available. * diff --git a/web/sites/example.settings.local.php b/web/sites/example.settings.local.php index 73671ab16..7cb0e6857 100644 --- a/web/sites/example.settings.local.php +++ b/web/sites/example.settings.local.php @@ -26,14 +26,14 @@ * @see http://php.net/assert * @see https://www.drupal.org/node/2492225 * - * If you are using PHP 7.0 it is strongly recommended that you set - * zend.assertions=1 in the PHP.ini file (It cannot be changed from .htaccess - * or runtime) on development machines and to 0 in production. + * It is strongly recommended that you set zend.assertions=1 in the PHP.ini file + * (It cannot be changed from .htaccess or runtime) on development machines and + * to 0 or -1 in production. * * @see https://wiki.php.net/rfc/expectations */ assert_options(ASSERT_ACTIVE, TRUE); -\Drupal\Component\Assertion\Handle::register(); +assert_options(ASSERT_EXCEPTION, TRUE); /** * Enable local development services. diff --git a/web/themes/custom/novel/novel.info.yml b/web/themes/custom/novel/novel.info.yml index 0502a4845..de209ef33 100644 --- a/web/themes/custom/novel/novel.info.yml +++ b/web/themes/custom/novel/novel.info.yml @@ -2,7 +2,7 @@ name: Novel type: theme base theme: stable9 description: "Custom theme for the Danish Public Libraries" -core_version_requirement: ^8 || ^9 +core_version_requirement: ^9 || ^10 # We want to add dpl_react as a module dependency # but we get an error upon theme install. diff --git a/web/themes/custom/novel/novel.libraries.yml b/web/themes/custom/novel/novel.libraries.yml index 77555c933..07b2242ca 100644 --- a/web/themes/custom/novel/novel.libraries.yml +++ b/web/themes/custom/novel/novel.libraries.yml @@ -1,5 +1,4 @@ base: - version: "1.0" css: theme: assets/dpl-design-system/css/base.css: {} diff --git a/web/themes/custom/novel/novel.theme b/web/themes/custom/novel/novel.theme index 8aa263792..55af5a9f4 100644 --- a/web/themes/custom/novel/novel.theme +++ b/web/themes/custom/novel/novel.theme @@ -53,7 +53,7 @@ function novel_preprocess_dpl_react_app__search_header(array &$variables): void )); $variables += [ - 'search_icon' => $search_svg ?? NULL, + 'search_icon' => $search_svg, 'search_action' => $variables['data']['search-url'] ?? "", 'input_placeholder_text' => $variables['data']['input-placeholder-text'] ?? "", ]; diff --git a/web/themes/custom/novel/templates/fields/field--field-subtitle.html.twig b/web/themes/custom/novel/templates/fields/field--field-subtitle.html.twig new file mode 100644 index 000000000..d3af79df1 --- /dev/null +++ b/web/themes/custom/novel/templates/fields/field--field-subtitle.html.twig @@ -0,0 +1,5 @@ +{% for item in items %} + + {{ item.content }} +

      +{% endfor %} diff --git a/web/themes/custom/novel/templates/fields/username.html.twig b/web/themes/custom/novel/templates/fields/username.html.twig new file mode 100644 index 000000000..1a4ade7f9 --- /dev/null +++ b/web/themes/custom/novel/templates/fields/username.html.twig @@ -0,0 +1,5 @@ +{% if link_path -%} + {{ name }}{{ extra }} +{%- else -%} + {{ name }}{{ extra }} +{%- endif -%} diff --git a/web/themes/custom/novel/templates/layout/node--article--full.html.twig b/web/themes/custom/novel/templates/layout/node--article--full.html.twig new file mode 100644 index 000000000..0f05ad76f --- /dev/null +++ b/web/themes/custom/novel/templates/layout/node--article--full.html.twig @@ -0,0 +1,17 @@ +
      +
      +

      {{ label }}

      + + {{ content.field_subtitle }} + +

      + {{ 'By @username'|t({'@username': author_name}) }} + + +

      +
      + + {{ content|without('field_subtitle') }} +
      diff --git a/web/themes/custom/novel/templates/paragraphs/paragraph--text-body.html.twig b/web/themes/custom/novel/templates/paragraphs/paragraph--text-body.html.twig new file mode 100644 index 000000000..8060fc392 --- /dev/null +++ b/web/themes/custom/novel/templates/paragraphs/paragraph--text-body.html.twig @@ -0,0 +1,3 @@ + + {{ content }} +