diff --git a/.github/workflows/build-3.x.yml b/.github/workflows/build-3.x.yml new file mode 100644 index 00000000..fc12c2ad --- /dev/null +++ b/.github/workflows/build-3.x.yml @@ -0,0 +1,74 @@ +# This is a basic workflow to help you get started with Actions + +name: CI + +# Controls when the action will run. +on: + # Triggers the workflow on push or pull request events but only for the 7.x branch + push: + branches: [ 3.x ] + pull_request: + branches: [ 3.x ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + strategy: + matrix: + php-versions: ["7.3", "7.4"] + + name: PHP ${{ matrix.php-versions }} + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Checkout code + uses: actions/checkout@v2 + with: + path: build_dir + + - name: Checkout islandora_ci + uses: actions/checkout@v2 + with: + repository: islandora/islandora_ci + ref: github-actions + path: islandora_ci + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + tools: composer:v2 + + - name: Set environment variables + run: | + echo "SCRIPT_DIR=$GITHUB_WORKSPACE/islandora_ci" >> $GITHUB_ENV + + - name: Cache Composer dependencies + uses: actions/cache@v2 + with: + path: /tmp/composer-cache + key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }} + + - name: composer install + run: | + cd $GITHUB_WORKSPACE/build_dir + for D in */; do (cd $D; composer install) done + + - name: line endings + run: $SCRIPT_DIR/line_endings.sh $GITHUB_WORKSPACE + + - name: test scripts + run: | + cd $GITHUB_WORKSPACE/build_dir + .scripts/tester + + - name: codecov + uses: codecov/codecov-action@v1 + diff --git a/Homarus/.env b/Homarus/.env new file mode 100644 index 00000000..3a9196ee --- /dev/null +++ b/Homarus/.env @@ -0,0 +1,21 @@ +# In all environments, the following files are loaded if they exist, +# the latter taking precedence over the former: +# +# * .env contains default values for the environment variables needed by the app +# * .env.local uncommitted file with local overrides +# * .env.$APP_ENV committed environment-specific defaults +# * .env.$APP_ENV.local uncommitted environment-specific overrides +# +# Real environment variables win over .env files. +# +# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. +# +# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). +# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET=2debbf0f3bc4a9484b577b8952dc3477 +#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 +#TRUSTED_HOSTS='^(localhost|example\.com)$' +###< symfony/framework-bundle ### diff --git a/Homarus/.env.test b/Homarus/.env.test new file mode 100644 index 00000000..9e7162f0 --- /dev/null +++ b/Homarus/.env.test @@ -0,0 +1,6 @@ +# define your env variables for the test env here +KERNEL_CLASS='App\Kernel' +APP_SECRET='$ecretf0rt3st' +SYMFONY_DEPRECATIONS_HELPER=999999 +PANTHER_APP_ENV=panther +PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots diff --git a/Homarus/README.md b/Homarus/README.md index 21bf39cc..cd2ff632 100644 --- a/Homarus/README.md +++ b/Homarus/README.md @@ -1,32 +1,27 @@ -![homarus](https://user-images.githubusercontent.com/2371345/48797524-c8c14300-ecd8-11e8-907d-9628fb6afacc.png) -# Homarus +![homarus](https://user-images.githubusercontent.com/2371345/48797524-c8c14300-ecd8-11e8-907d-9628fb6afacc.png) +# Homarus ## Introduction [FFmpeg](https://www.ffmpeg.org/) as a microservice. ## Installation -- Install `ffmpeg`. On Ubuntu, this can be done with `sudo apt-get install ffmpeg`. +- Install `ffmpeg`. On Ubuntu, this can be done with `sudo apt-get install ffmpeg`. - Clone this repository somewhere in your web root (example: `/var/www/html/Crayfish/Homarus`). -- Copy `/var/www/html/Crayfish/Homarus/cfg/config.default.yml` to `/var/www/html/Crayfish/Homarus/cfg/config.yml` -- Copy `/var/www/html/Crayfish/Hypercube/syn-settings.xml` to `/var/www/html/Crayfish/Homarus/syn-settings.xml` - Install `composer`. [Install instructions here.][4] - `$ cd /path/to/Homarus` and run `$ composer install` -- Then either - - For production, configure your web server appropriately (e.g. add a VirtualHost for Homarus in Apache) OR - - For development, run the PHP built-in web server `$ php -S localhost:8888 -t src` from Homarus root. - +- Configure your web server appropriately (e.g. add a VirtualHost for Homarus in Apache) ### Apache2 To use Homarus with Apache you need to configure your Virtualhost with a few options: - Redirect all requests to the Homarus index.php file -- Make sure Hypercube has access to Authorization headers +- Make sure Homarus has access to Authorization headers Here is an example configuration for Apache 2.4: ```apache -Alias "/homarus" "/var/www/html/Crayfish/Homarus/src" - +Alias "/homarus" "/var/www/html/Crayfish/Homarus/public" + FallbackResource /homarus/index.php Require all granted DirectoryIndex index.php @@ -36,14 +31,44 @@ Alias "/homarus" "/var/www/html/Crayfish/Homarus/src" This will put the Homarus at the /homarus endpoint on the web server. +## Upgrading + +Steps for upgrading Homarus can be found in [UPGRADE.md](UPGRADE.md) + ## Configuration -If your ffmpeg installation is not on your path, then you can configure homarus to use a specific executable by editing `executable` entry in [config.yaml](./cfg/config.example.yaml). +Symfony uses `.dotenv` to set environment variables. You can check the [.env](./.env) in the root of the Homarus directory. +To alter any settings, create a file called `.env.local` to store your specific changes. You can also set an actual environment +variable. + +For production use make sure to set the add `APP_ENV=prod` environment variable. + +If your `ffmpeg` installation is not on your path, then you can configure homarus to use a specific executable by editing +the `app.executable` parameter in [`/path/to/Homarus/config/services.yaml`](./config/services.yaml). + +You also need to set your Fedora Base Url to allow the Fedora Resource to be pulled in automatically. +This is done in the `/path/to/Homarus/config/packages/crayfish_commons.yaml`. + +Also in the `/path/to/Homarus/config/packages/crayfish_commons.yaml` file you can point to the location of your `syn-settings.xml`. +If you don't have a `syn-settings.xml` look at the [Syn](http://github.com/Islandora/Syn) documentation. -You also will need to set the `fedora base url` entry to point to your Fedora installation. +### Logging + +To change your log settings, edit the `/path/to/Homarus/config/packages/monolog.yaml` file. + +You can also copy the file into one of the `/path/to/Homarus/config/packages/` directories. +Where `` is `dev`, `test`, or `prod` based on the `APP_ENV` variable (see above). The files in the specific +environment directory will take precedence over those in the `/path/to/Homarus/config/packages` directory. + +The location specified in the configuration file for the log must be writable by the web server. + +### Disabling Syn + +There are instructions in the `/path/to/Homarus/config/packages/security.yaml` file describing what to change and what lines +to comment out to disable Syn. ## Usage -This will return the an AVI file for the test video file in Fedora. +This will return the an AVI file for the test video file in Fedora. ``` curl -H "Authorization: Bearer islandora" -H "Accept: video/x-msvideo" -H "Apix-Ldp-Resource:http://localhost:8080/fcrepo/rest/testvideo" http://localhost:8000/homarus/convert --output output.avi ``` @@ -60,8 +85,6 @@ If you would like to contribute, please get involved by attending our weekly [Te If you would like to contribute code to the project, you need to be covered by an Islandora Foundation [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). Please see the [Contributors](http://islandora.ca/resources/contributors) pages on Islandora.ca for more information. -We recommend using the [islandora-playbook](https://github.com/Islandora-Devops/islandora-playbook) to get started. - ## License [MIT](https://opensource.org/licenses/MIT) diff --git a/Homarus/UPGRADE.md b/Homarus/UPGRADE.md new file mode 100644 index 00000000..05ac5be0 --- /dev/null +++ b/Homarus/UPGRADE.md @@ -0,0 +1,193 @@ +This document guides you through the process of upgrading Homarus. First, check if a section named "Upgrade to x.x.x" exists, with x.x.x being the version you are planning to upgrade to. + +## Upgrade to 3.0.0 + +Homarus (and all of Crayfish) adheres to [semantic versioning](https://semver.org), which makes a distinction between "major", "minor", and "patch" versions. The upgrade path will be different depending on which previous version from which you are migrating. + +### Upgrade from version 2.x.x + +Homarus has switched from a Silex application to a Symfony application. This does not require much in code changes, but does use a different file layout. + +Previously your configuration file would be located in the `/path/to/Homarus/config` directory and be called `config.yaml`. + +The configuration from this file will now be located several locations documented below. + +#### FFMpeg executable location +Old location `/path/to/Homarus/config/config.yaml` + +``` +--- +homarus: + # path to the ffmpeg executable + executable: ffmpeg +``` + +The `executable` variable is now located in `/path/to/Homarus/config/services.yaml` and appears in the `parameters` + +``` +parameters: + app.executable: ffmpeg +``` + +#### Mimetypes and mime\_to_format +Old location `/path/to/Homarus/config/config.yaml` + +``` +--- +homarus: + ... + mime_types: + valid: + - video/mp4 + - video/x-msvideo + - video/ogg + - audio/x-wav + - audio/mpeg + - audio/aac + - image/jpeg + - image/png + default: video/mp4 + mime_to_format: + valid: + - video/mp4_mp4 + - video/x-msvideo_avi + - video/ogg_ogg + - audio/x-wav_wav + - audio/mpeg_mp3 + - audio/aac_m4a + - image/jpeg_image2pipe + - image/png_image2pipe + default: mp4 +``` + +The two lists (`mime_types.valid` and `mime_to_format.valid`) have been combined into a single list. The new variable is now located in `/path/to/Homarus/config/services.yaml` and appears in the `parameters` + +The `mime_to_format` variable in version 2.x.x was the combination of the mimetype, the underscore character ( _ ) and the FFMpeg format (ie. `video/mp4_mp4`). In version 3.0.0 we create a list with keys `mimetype` and `format`. + +``` +parameters: + ... + app.formats.valid: + - mimetype: video/mp4 + format: mp4 + - mimetype: video/x-msvideo + format: avi + - mimetype: video/ogg + format: ogg + - mimetype: audio/x-wav + format: wav + - mimetype: audio/mpeg + format: mp3 + - mimetype: audio/aac + format: m4a + - mimetype: image/jpeg + format: image2pipe + - mimetype: image/png + format: image2pipe +``` + +The two `default` variables (`mime_type.default`, `mime_to_format.default`) have been combined and moved to the `app.formats.defaults` variable + +``` +parameters: + ... + app.formats.defaults: + mimetype: video/mp4 + format: mp4 +``` + +#### Fedora Resource +Old location `/path/to/Homarus/config/config.yaml` + +``` +... +fedora_resource: + base_url: http://localhost:8080/fcrepo/rest +``` + +This variable is necessary for the Crayfish-Commons setup, it has been moved to `/path/to/Homarus/config/packages/crayfish_commons.yaml` + +``` +crayfish_commons: + fedora_base_uri: 'http://localhost:8080/fcrepo/rest' +``` + +#### Log settings +Old location `/path/to/Homarus/config/config.yaml` + +``` +... +log: + # Valid log levels are: + # DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY, NONE + # log level none won't open logfile + level: DEBUG + file: /var/log/islandora/homarus.log +``` + +This setting is in `/path/to/Homarus/config/packages/monolog.yaml`. This file contains commented out defaults from Symfony and a new handler for Homarus. + +``` +monolog: + handlers: + ... + homarus: + type: rotating_file + path: /tmp/Homarus.log + level: DEBUG + max_files: 1 + channels: ["!event", "!console"] +``` + +#### Syn settings +Old location `/path/to/Homarus/config/config.yaml` + +``` +syn: + # toggles JWT security for service + enable: True + # Path to the syn config file for authentication. + # example can be found here: + # https://github.com/Islandora/Syn/blob/main/conf/syn-settings.example$ + config: ../syn-settings.xml +``` + +The `syn.enable` variable is no longer used as Syn is part of the security for Symfony, see [below](#enable-disable-syn) for steps to see where to enable/disable Syn. + +The `syn.config` variable is in `/path/to/Homarus/config/crayfish_commons.yaml`. + +``` +crayfish_commons: + ... + #syn_config: '/path/to/syn-settings.xml' +``` + +`crayfish_commons.syn_config` needs to point to a file or be left commented out to use a default syn config of + +``` + + + + +``` + +##### Enable/Disable Syn +To enable/disable Syn look in the [`./config/packages/security.yaml`](config/packages/security.yaml). By default Syn is disabled, to enable look the below lines and follow the included instructions + +``` +security: + ... + firewall: + ... + main: + ... + # To enable Syn, change anonymous to false and uncomment the lines further below + anonymous: true + ... + # To enable Syn, uncomment the below 4 lines and change anonymous to false above. + #provider: jwt_user_provider + #guard: + # authenticators: + # - Islandora\Crayfish\Commons\Syn\JwtAuthenticator +``` + diff --git a/Homarus/bin/phpunit b/Homarus/bin/phpunit new file mode 100755 index 00000000..4d1ed05d --- /dev/null +++ b/Homarus/bin/phpunit @@ -0,0 +1,13 @@ +#!/usr/bin/env php +2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "predis/predis": "~1.0", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.1.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2021-07-14T11:22:57+00:00" - }, - { - "name": "doctrine/dbal", - "version": "2.13.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.0|^2.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" - }, - "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2020.2", - "phpstan/phpstan": "0.12.81", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.5", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.6.4" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlanywhere", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.2" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "time": "2021-06-18T21:48:39+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "v0.5.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" - }, - "time": "2021-03-21T12:59:47+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2020-05-29T18:28:51+00:00" - }, { "name": "easyrdf/easyrdf", "version": "1.1.1", @@ -461,12 +117,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -498,16 +154,16 @@ }, { "name": "guzzlehttp/promises", - "version": "1.4.1", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", "shasum": "" }, "require": { @@ -519,27 +175,42 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, "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": [ @@ -547,22 +218,36 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" + "source": "https://github.com/guzzle/promises/tree/1.5.1" }, - "time": "2021-03-07T09:25:29+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.8.3", + "version": "1.8.5", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85" + "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/337e3ad8e5716c15f9657bd214d16cc5e69df268", + "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268", "shasum": "" }, "require": { @@ -587,12 +272,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -643,7 +328,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.3" + "source": "https://github.com/guzzle/psr7/tree/1.8.5" }, "funding": [ { @@ -659,27 +344,27 @@ "type": "tidelift" } ], - "time": "2021-10-05T13:56:00+00:00" + "time": "2022-03-20T21:51:18+00:00" }, { "name": "islandora/chullo", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/Islandora/chullo.git", - "reference": "d563d5e48ef9b15dcf45029277bbc2f6eeef2454" + "reference": "a7c1e051eab2a5077eaf5db2649201fa775c5a02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Islandora/chullo/zipball/d563d5e48ef9b15dcf45029277bbc2f6eeef2454", - "reference": "d563d5e48ef9b15dcf45029277bbc2f6eeef2454", + "url": "https://api.github.com/repos/Islandora/chullo/zipball/a7c1e051eab2a5077eaf5db2649201fa775c5a02", + "reference": "a7c1e051eab2a5077eaf5db2649201fa775c5a02", "shasum": "" }, "require": { "easyrdf/easyrdf": "^0.9 || ^1", "guzzlehttp/guzzle": "^6.1.0", "ml/json-ld": "^1.0.4", - "php": "^7.3 || ^7.4" + "php": ">=7.3" }, "require-dev": { "mockery/mockery": "^0.9", @@ -718,48 +403,57 @@ "homepage": "https://github.com/Islandora/chullo", "support": { "issues": "https://github.com/Islandora/documentation/issues", - "source": "https://github.com/Islandora/chullo/tree/1.2.0" + "source": "https://github.com/Islandora/chullo/tree/1.3.0" }, - "time": "2021-05-05T17:38:36+00:00" + "time": "2021-12-16T22:31:48+00:00" }, { "name": "islandora/crayfish-commons", - "version": "2.x-dev", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/Islandora/Crayfish-Commons.git", - "reference": "608808530c1fb280f4f35011be6dc8323a34b501" + "reference": "e7b8cbd5951286897507f6cfd3e6356201d24f48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Islandora/Crayfish-Commons/zipball/608808530c1fb280f4f35011be6dc8323a34b501", - "reference": "608808530c1fb280f4f35011be6dc8323a34b501", + "url": "https://api.github.com/repos/Islandora/Crayfish-Commons/zipball/e7b8cbd5951286897507f6cfd3e6356201d24f48", + "reference": "e7b8cbd5951286897507f6cfd3e6356201d24f48", "shasum": "" }, "require": { - "doctrine/dbal": "~2.2", - "islandora/chullo": "^1", - "monolog/monolog": "^1.22", + "islandora/chullo": "^1.0", "namshi/jose": "^7.2", - "pimple/pimple": "~3.0", "psr/log": "^1.0.1", - "silex/silex": "^2.0", - "symfony/http-foundation": "^3.4 || ^4.4", - "symfony/security": "^3.4 || ^4.4", - "symfony/yaml": "^3.4 || ^4.4" + "symfony/config": "4.4.*", + "symfony/dependency-injection": "4.4.*", + "symfony/event-dispatcher": "4.4.*", + "symfony/http-foundation": "4.4.*", + "symfony/monolog-bundle": "^3.4", + "symfony/security-bundle": "4.4.*", + "symfony/yaml": "4.4.*" + }, + "conflict": { + "symfony/symfony": "*" }, "require-dev": { "mikey179/vfsstream": "^1.6", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.0", + "phpunit/phpunit": "^9.5", "sebastian/phpcpd": "^6.0", - "squizlabs/php_codesniffer": "^3.0" + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "4.4.*" + }, + "type": "symfony-bundle", + "extra": { + "symfony": { + "allow-contrib": false, + "require": "4.4.*" + } }, - "default-branch": true, - "type": "library", "autoload": { "psr-4": { - "Islandora\\Crayfish\\Commons\\": "src/" + "Islandora\\Crayfish\\Commons\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -782,9 +476,9 @@ "homepage": "https://github.com/Islandora/Crayfish-Commons", "support": { "issues": "https://github.com/Islandora/documentation/issues", - "source": "https://github.com/Islandora/Crayfish-Commons/tree/2.x" + "source": "https://github.com/Islandora/Crayfish-Commons/tree/3.0.0" }, - "time": "2021-10-05T18:45:36+00:00" + "time": "2022-05-05T15:46:41+00:00" }, { "name": "ml/iri", @@ -892,16 +586,16 @@ }, { "name": "monolog/monolog", - "version": "1.26.1", + "version": "1.27.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5" + "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/52ebd235c1f7e0d5e1b16464b695a28335f8e44a", + "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a", "shasum": "" }, "require": { @@ -962,7 +656,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.26.1" + "source": "https://github.com/Seldaek/monolog/tree/1.27.0" }, "funding": [ { @@ -974,7 +668,7 @@ "type": "tidelift" } ], - "time": "2021-05-28T08:32:12+00:00" + "time": "2022-03-13T20:29:46+00:00" }, { "name": "namshi/jose", @@ -1044,35 +738,31 @@ "time": "2016-12-05T07:27:31+00:00" }, { - "name": "pimple/pimple", - "version": "v3.4.0", + "name": "psr/cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "86406047271859ffc13424a048541f4531f53601" + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/86406047271859ffc13424a048541f4531f53601", - "reference": "86406047271859ffc13424a048541f4531f53601", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "Pimple": "src/" + "psr-4": { + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1081,20 +771,20 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", + "description": "Common interface for caching libraries", "keywords": [ - "container", - "dependency injection" + "cache", + "psr", + "psr-6" ], "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.4.0" + "source": "https://github.com/php-fig/cache/tree/master" }, - "time": "2021-03-06T08:28:00+00:00" + "time": "2016-08-06T20:24:11+00:00" }, { "name": "psr/container", @@ -1222,8 +912,1148 @@ }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "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": "symfony/cache", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "27121284fe32a7cefc225268761ec7ce1741b9ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/27121284fe32a7cefc225268761ec7ce1741b9ac", + "reference": "27121284fe32a7cefc225268761ec7ce1741b9ac", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/cache": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.2|^5.0" + }, + "conflict": { + "doctrine/dbal": "<2.7", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4|>=5.0", + "symfony/var-dumper": "<4.4" + }, + "provide": { + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0|2.0", + "symfony/cache-implementation": "1.0|2.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.7|^3.0", + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0|^2.0", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.1|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/var-dumper": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "support": { + "source": "https://github.com/symfony/cache/tree/v4.4.41" + }, + "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-04-25T17:25:00+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v2.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" + }, + "suggest": { + "symfony/cache-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Cache\\": "" + } + }, + "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 caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/config", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7", + "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" + }, + "conflict": { + "symfony/finder": "<3.4" + }, + "require-dev": { + "symfony/event-dispatcher": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/messenger": "^4.1|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "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": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/config/tree/v4.4.41" + }, + "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-04-12T15:19:55+00:00" + }, + { + "name": "symfony/debug", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/6637e62480b60817b9a6984154a533e8e64c6bd5", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2|^3" + }, + "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" + } + ], + "description": "Provides tools to ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug/tree/v4.4.41" + }, + "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-04-12T15:19:55+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "74c7f55de0eced4d3c9654809b1871870386a577" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/74c7f55de0eced4d3c9654809b1871870386a577", + "reference": "74c7f55de0eced4d3c9654809b1871870386a577", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/container": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/config": "<4.3|>=5.0", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<4.4.26" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/config": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/yaml": "^4.4.26|^5.0" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "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": "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.41" + }, + "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-04-12T15:19:55+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/dotenv", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "require-dev": { + "symfony/process": "^3.4.2|^4.0|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Dotenv\\": "" + }, + "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": "Registers environment variables from a .env file", + "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "source": "https://github.com/symfony/dotenv/tree/v4.4.37" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "529feb0e03133dbd5fd3707200147cc4903206da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/529feb0e03133dbd5fd3707200147cc4903206da", + "reference": "529feb0e03133dbd5fd3707200147cc4903206da", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2|^3", + "symfony/debug": "^4.4.5", + "symfony/var-dumper": "^4.4|^5.0" + }, + "require-dev": { + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v4.4.41" + }, + "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-04-12T15:19:55+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "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" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "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.37" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.12" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v4.4.39", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/72a5b35fecaa670b13954e6eaf414acbe2a67b35", + "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v4.4.39" + }, + "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-02-25T10:38:15+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "40790bdf293b462798882ef6da72bb49a4a6633a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/40790bdf293b462798882ef6da72bb49a4a6633a", + "reference": "40790bdf293b462798882ef6da72bb49a4a6633a", + "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.41" + }, + "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-04-14T15:36:10+00:00" + }, + { + "name": "symfony/flex", + "version": "v1.18.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/flex.git", + "reference": "e74319d17ed4edc5f27b9d24757e172930a7ebc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/flex/zipball/e74319d17ed4edc5f27b9d24757e172930a7ebc4", + "reference": "e74319d17ed4edc5f27b9d24757e172930a7ebc4", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=7.1" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "symfony/dotenv": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/phpunit-bridge": "^4.4.12|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Flex\\Flex" + }, + "autoload": { + "psr-4": { + "Symfony\\Flex\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "Composer plugin for Symfony", + "support": { + "issues": "https://github.com/symfony/flex/issues", + "source": "https://github.com/symfony/flex/tree/v1.18.7" + }, + "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-02T10:18:23+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5", + "reference": "1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.1.3", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4.11|~5.0.11|^5.1.3", + "symfony/dependency-injection": "^4.4.38|^5.0.1", + "symfony/error-handler": "^4.4.1|^5.0.1", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/routing": "^4.4.12|^5.1.4" + }, + "conflict": { + "doctrine/persistence": "<1.3", + "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.3.0|1.3.*", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/asset": "<3.4", + "symfony/browser-kit": "<4.3", + "symfony/console": "<4.4.21", + "symfony/dom-crawler": "<4.3", + "symfony/dotenv": "<4.3.6", + "symfony/form": "<4.3.5", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<4.4", + "symfony/messenger": "<4.4", + "symfony/mime": "<4.4", + "symfony/property-info": "<3.4", + "symfony/security-bundle": "<4.4", + "symfony/serializer": "<4.4", + "symfony/stopwatch": "<3.4", + "symfony/translation": "<4.4", + "symfony/twig-bridge": "<4.1.1", + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<4.4", + "symfony/web-profiler-bundle": "<4.4", + "symfony/workflow": "<4.3.6" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "doctrine/persistence": "^1.3|^2|^3", + "paragonie/sodium_compat": "^1.8", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.3|^5.0", + "symfony/console": "^4.4.21|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7", + "symfony/dotenv": "^4.3.6|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^4.3.5|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/security-core": "^3.4|^4.4|^5.2", + "symfony/security-csrf": "^3.4|^4.0|^5.0", + "symfony/security-http": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^4.3.6|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "suggest": { + "ext-apcu": "For best performance of the system caches", + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1231,48 +2061,69 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], + "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", + "homepage": "https://symfony.com", "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/symfony/framework-bundle/tree/v4.4.41" }, - "time": "2021-05-03T11:20:27+00:00" + "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-04-26T13:36:00+00:00" }, { - "name": "ralouphie/getallheaders", - "version": "3.0.3", + "name": "symfony/http-client-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1a4f708e4e87f335d1b1be6148060739152f0bd5", + "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.2.5" }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" + "suggest": { + "symfony/http-client-implementation": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { - "files": [ - "src/getallheaders.php" - ] + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1280,81 +2131,75 @@ ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A polyfill for getallheaders.", + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.1" }, - "time": "2019-03-08T08:55:37+00:00" + "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-03-13T20:07:29+00:00" }, { - "name": "silex/silex", - "version": "v2.3.0", + "name": "symfony/http-foundation", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/silexphp/Silex.git", - "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "27441220aebeb096b4eb8267acaaa7feb5e4266c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Silex/zipball/6bc31c1b8c4ef614a7115320fd2d3b958032f131", - "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27441220aebeb096b4eb8267acaaa7feb5e4266c", + "reference": "27441220aebeb096b4eb8267acaaa7feb5e4266c", "shasum": "" }, "require": { "php": ">=7.1.3", - "pimple/pimple": "^3.0", - "symfony/event-dispatcher": "^4.0", - "symfony/http-foundation": "^4.0", - "symfony/http-kernel": "^4.0", - "symfony/routing": "^4.0" - }, - "replace": { - "silex/api": "self.version", - "silex/providers": "self.version" + "symfony/mime": "^4.3|^5.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "doctrine/dbal": "^2.2", - "monolog/monolog": "^1.4.1", - "swiftmailer/swiftmailer": "^5", - "symfony/asset": "^4.0", - "symfony/browser-kit": "^4.0", - "symfony/config": "^4.0", - "symfony/css-selector": "^4.0", - "symfony/debug": "^4.0", - "symfony/doctrine-bridge": "^4.0", - "symfony/dom-crawler": "^4.0", - "symfony/expression-language": "^4.0", - "symfony/finder": "^4.0", - "symfony/form": "^4.0", - "symfony/intl": "^4.0", - "symfony/monolog-bridge": "^4.0", - "symfony/options-resolver": "^4.0", - "symfony/phpunit-bridge": "^3.2", - "symfony/process": "^4.0", - "symfony/security": "^4.0", - "symfony/serializer": "^4.0", - "symfony/translation": "^4.0", - "symfony/twig-bridge": "^4.0", - "symfony/validator": "^4.0", - "symfony/var-dumper": "^4.0", - "symfony/web-link": "^4.0", - "twig/twig": "^2.0" + "predis/predis": "~1.0", + "symfony/expression-language": "^3.4|^4.0|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, "autoload": { "psr-4": { - "Silex\\": "src/Silex" - } + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1366,65 +2211,98 @@ "email": "fabien@symfony.com" }, { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "The PHP micro-framework based on the Symfony Components", - "homepage": "http://silex.sensiolabs.org", - "keywords": [ - "microframework" - ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/silexphp/Silex/issues", - "source": "https://github.com/silexphp/Silex/tree/v2.3.0" + "source": "https://github.com/symfony/http-foundation/tree/v4.4.41" }, - "abandoned": "symfony/flex", - "time": "2018-04-20T05:17:01+00:00" + "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-04-21T07:22:34+00:00" }, { - "name": "symfony/contracts", - "version": "v1.1.0", + "name": "symfony/http-kernel", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "d3636025e8253c6144358ec0a62773cae588395b" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "7f8ce5bffc3939c63b7da32de5a546c98eb67698" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/d3636025e8253c6144358ec0a62773cae588395b", - "reference": "d3636025e8253c6144358ec0a62773cae588395b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7f8ce5bffc3939c63b7da32de5a546c98eb67698", + "reference": "7f8ce5bffc3939c63b7da32de5a546c98eb67698", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.1.3", + "psr/log": "^1|^2", + "symfony/error-handler": "^4.4", + "symfony/event-dispatcher": "^4.4", + "symfony/http-client-contracts": "^1.1|^2", + "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "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|2.0" }, "require-dev": { - "psr/cache": "^1.0", - "psr/container": "^1.0", - "symfony/polyfill-intl-idn": "^1.10" + "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" }, "suggest": { - "psr/cache": "When using the Cache contracts", - "psr/container": "When using the Service contracts", - "symfony/cache-contracts-implementation": "", - "symfony/event-dispatcher-implementation": "", - "symfony/http-client-contracts-implementation": "", - "symfony/service-contracts-implementation": "", - "symfony/translation-contracts-implementation": "" + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\": "" + "Symfony\\Component\\HttpKernel\\": "" }, "exclude-from-classmap": [ - "**/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1433,58 +2311,58 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A set of abstractions extracted out of the Symfony components", + "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/contracts/tree/master" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.41" }, - "time": "2019-04-27T14:29:50+00:00" + "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-04-27T17:13:11+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.25", + "name": "symfony/inflector", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f" + "url": "https://github.com/symfony/inflector.git", + "reference": "e5e4c618a40e562d51757b54305bd113df59c29f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/a8d2d5c94438548bff9f998ca874e202bb29d07f", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f", + "url": "https://api.github.com/repos/symfony/inflector/zipball/e5e4c618a40e562d51757b54305bd113df59c29f", + "reference": "e5e4c618a40e562d51757b54305bd113df59c29f", "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" + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\Inflector\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1496,18 +2374,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to ease debugging PHP code", + "description": "Converts words between their singular and plural forms (English only)", "homepage": "https://symfony.com", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string", + "symfony", + "words" + ], "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.25" + "source": "https://github.com/symfony/inflector/tree/v4.4.37" }, "funding": [ { @@ -1523,38 +2409,44 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "abandoned": "EnglishInflector from the String component", + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "name": "symfony/mime", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "url": "https://github.com/symfony/mime.git", + "reference": "5b05a62a714bb7e8ba1ce7412f7442debe67c291" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/mime/zipball/5b05a62a714bb7e8ba1ce7412f7442debe67c291", + "reference": "5b05a62a714bb7e8ba1ce7412f7442debe67c291", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "conflict": { + "egulias/email-validator": "~3.0.0", + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "symfony/dependency-injection": "^3.4|^4.1|^5.0" }, + "type": "library", "autoload": { - "files": [ - "function.php" + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1563,18 +2455,22 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A generic function and convention to trigger deprecation notices", + "description": "Allows manipulating MIME messages", "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/mime/tree/v4.4.41" }, "funding": [ { @@ -1590,51 +2486,48 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v4.4.25", + "name": "symfony/monolog-bridge", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f" + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "152dcde5092b6fe034369f4a2dea05de38db9b79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/047773e7016e4fd45102cedf4bd2558ae0d0c32f", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/152dcde5092b6fe034369f4a2dea05de38db9b79", + "reference": "152dcde5092b6fe034369f4a2dea05de38db9b79", "shasum": "" }, "require": { + "monolog/monolog": "^1.25.1", "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "symfony/http-kernel": "^4.3", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" }, "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/console": "<3.4", + "symfony/http-foundation": "<3.4" }, "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" + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/security-core": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^3.4|^4.0|^5.0" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", + "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", + "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." }, - "type": "library", + "type": "symfony-bridge", "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Bridge\\Monolog\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1654,10 +2547,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.25" + "source": "https://github.com/symfony/monolog-bridge/tree/v4.4.37" }, "funding": [ { @@ -1673,43 +2566,48 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", + "name": "symfony/monolog-bundle", + "version": "v3.7.1", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "fde12fc628162787a4e53877abadc30047fd868b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/fde12fc628162787a4e53877abadc30047fd868b", + "reference": "fde12fc628162787a4e53877abadc30047fd868b", "shasum": "" }, "require": { - "php": ">=7.1.3" + "monolog/monolog": "~1.22 || ~2.0", + "php": ">=7.1.3", + "symfony/config": "~4.4 || ^5.0 || ^6.0", + "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", + "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "require-dev": { + "symfony/console": "~4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.2 || ^6.0", + "symfony/yaml": "~4.4 || ^5.0 || ^6.0" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.1-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "Symfony\\Bundle\\MonologBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1717,26 +2615,23 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", + "description": "Symfony MonologBundle", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "log", + "logging" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9" + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.1" }, "funding": [ { @@ -1752,40 +2647,47 @@ "type": "tidelift" } ], - "time": "2020-07-06T13:19:58+00:00" + "time": "2021-11-05T10:34:29+00:00" }, { - "name": "symfony/http-foundation", - "version": "v4.4.26", + "name": "symfony/polyfill-intl-idn", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8759ed5c27c2a8a47cb60f367f4be6727f08d58b", - "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.15" + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1793,18 +2695,30 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Defines an object-oriented layer for the HTTP specification", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.26" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" }, "funding": [ { @@ -1820,78 +2734,47 @@ "type": "tidelift" } ], - "time": "2021-06-26T21:56:04+00:00" + "time": "2021-09-14T14:02:44+00:00" }, { - "name": "symfony/http-kernel", - "version": "v4.2.12", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "8a7c5ef599466af6e972c705507f815df9c490ae" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8a7c5ef599466af6e972c705507f815df9c490ae", - "reference": "8a7c5ef599466af6e972c705507f815df9c490ae", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0", - "symfony/contracts": "^1.0.2", - "symfony/debug": "~3.4|~4.0", - "symfony/event-dispatcher": "~4.1", - "symfony/http-foundation": "^4.1.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php56": "~1.8" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<4.2", - "symfony/translation": "<4.2", - "symfony/var-dumper": "<4.1.1", - "twig/twig": "<1.34|<2.4,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "~3.4|~4.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dependency-injection": "^4.2", - "symfony/dom-crawler": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0", - "symfony/templating": "~3.4|~4.0", - "symfony/translation": "~4.2", - "symfony/var-dumper": "^4.1.1" + "php": ">=7.1" }, "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/var-dumper": "" + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1900,48 +2783,83 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpKernel Component", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.2.12" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" }, - "time": "2019-11-13T08:51:34+00:00" + "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-02-19T12:13:01+00:00" }, { - "name": "symfony/inflector", - "version": "v5.3.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "ce80a8295f4b08c0f4a850dd3284f95808744dba" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/ce80a8295f4b08c0f4a850dd3284f95808744dba", - "reference": "ce80a8295f4b08c0f4a850dd3284f95808744dba", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/string": "^5.2.8" + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Inflector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1949,26 +2867,25 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Converts words between their singular and plural forms (English only)", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ - "inflection", - "pluralize", - "singularize", - "string", - "symfony", - "words" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/inflector/tree/v5.3.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" }, "funding": [ { @@ -1984,52 +2901,42 @@ "type": "tidelift" } ], - "abandoned": "use `EnglishInflector` from the String component instead", - "time": "2021-05-26T17:33:56+00:00" + "time": "2021-11-30T18:21:41+00:00" }, { - "name": "symfony/mime", - "version": "v5.3.2", + "name": "symfony/polyfill-php72", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/47dd7912152b82d0d4c8d9040dbc93d6232d472a", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "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" + "php": ">=7.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Php72\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2037,22 +2944,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Allows manipulating MIME messages", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "mime", - "mime-type" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.2" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" }, "funding": [ { @@ -2068,28 +2977,25 @@ "type": "tidelift" } ], - "time": "2021-06-09T10:58:01+00:00" + "time": "2021-05-27T09:17:38+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "name": "symfony/polyfill-php73", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", "shasum": "" }, "require": { "php": ">=7.1" }, - "suggest": { - "ext-ctype": "For best performance" - }, "type": "library", "extra": { "branch-alias": { @@ -2101,11 +3007,14 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2114,24 +3023,24 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "ctype", "polyfill", - "portable" + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" }, "funding": [ { @@ -2147,28 +3056,25 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-06-05T21:20:04+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.0", + "name": "symfony/polyfill-php80", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", "shasum": "" }, "require": { "php": ">=7.1" }, - "suggest": { - "ext-intl": "For best performance" - }, "type": "library", "extra": { "branch-alias": { @@ -2180,11 +3086,14 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2192,6 +3101,10 @@ "MIT" ], "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -2201,18 +3114,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "grapheme", - "intl", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" }, "funding": [ { @@ -2228,29 +3139,24 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-03-04T08:16:47+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "name": "symfony/polyfill-php81", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" }, "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-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=7.1" }, "type": "library", "extra": { @@ -2263,11 +3169,14 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2276,30 +3185,24 @@ ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "idn", - "intl", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" }, "funding": [ { @@ -2315,47 +3218,40 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2021-09-13T13:58:11+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "name": "symfony/property-access", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "url": "https://github.com/symfony/property-access.git", + "reference": "363945473bc6ec784e75037b075cb98f85cdae36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/property-access/zipball/363945473bc6ec784e75037b075cb98f85cdae36", + "reference": "363945473bc6ec784e75037b075cb98f85cdae36", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/inflector": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/cache": "^3.4|^4.0|^5.0" }, "suggest": { - "ext-intl": "For best performance" + "psr/cache-implementation": "To cache access methods." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + "Symfony\\Component\\PropertyAccess\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2364,26 +3260,29 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", + "description": "Provides functions to read and write from/to an object or array using a simple string notation", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/property-access/tree/v4.4.41" }, "funding": [ { @@ -2399,44 +3298,54 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "name": "symfony/routing", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "url": "https://github.com/symfony/routing.git", + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/routing/zipball/c25e38d403c00d5ddcfc514f016f1b534abdf052", + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "psr/log": "^1|^2|^3", + "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" }, "suggest": { - "ext-mbstring": "For best performance" + "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", + "symfony/yaml": "For using the YAML loader" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Component\\Routing\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2445,25 +3354,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "router", + "routing", + "uri", + "url" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/routing/tree/v4.4.41" }, "funding": [ { @@ -2479,34 +3387,68 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/polyfill-php56", - "version": "v1.20.0", + "name": "symfony/security-bundle", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" + "url": "https://github.com/symfony/security-bundle.git", + "reference": "6549321a5abecccb311a697b6cb508a3c325ed18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6549321a5abecccb311a697b6cb508a3c325ed18", + "reference": "6549321a5abecccb311a697b6cb508a3c325ed18", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-xml": "*", + "php": ">=7.1.3", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^4.4", + "symfony/security-csrf": "^4.2|^5.0", + "symfony/security-guard": "^4.2|^5.0", + "symfony/security-http": "^4.4.5" }, - "type": "metapackage", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" + "conflict": { + "symfony/browser-kit": "<4.2", + "symfony/console": "<3.4", + "symfony/framework-bundle": "<4.4", + "symfony/ldap": "<4.4", + "symfony/twig-bundle": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.2|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^3.4|^4.0|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/translation": "^3.4|^4.0|^5.0", + "symfony/twig-bridge": "^3.4|^4.0|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SecurityBundle\\": "" }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2514,24 +3456,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.0" + "source": "https://github.com/symfony/security-bundle/tree/v4.4.41" }, "funding": [ { @@ -2547,34 +3483,59 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.20.0", + "name": "symfony/security-core", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" + "url": "https://github.com/symfony/security-core.git", + "reference": "254b083d923592383f42c45611d235b04e27749d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", + "url": "https://api.github.com/repos/symfony/security-core/zipball/254b083d923592383f42c45611d235b04e27749d", + "reference": "254b083d923592383f42c45611d235b04e27749d", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" }, - "type": "metapackage", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" + "conflict": { + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/ldap": "<4.4", + "symfony/security-guard": "<4.3" + }, + "require-dev": { + "psr/container": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/ldap": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^3.4.31|^4.3.4|^5.0" + }, + "suggest": { + "psr/container-implementation": "To instantiate the Security class", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/ldap": "For using LDAP integration", + "symfony/validator": "For using the user password constraint" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Core\\": "" }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2582,24 +3543,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } ], + "description": "Symfony Security Component - Core Library", + "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0" + "source": "https://github.com/symfony/security-core/tree/v4.4.41" }, "funding": [ { @@ -2615,41 +3570,43 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2022-04-14T15:50:15+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.23.0", + "name": "symfony/security-csrf", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "url": "https://github.com/symfony/security-csrf.git", + "reference": "45c956ef58135091f53732646a0acd28034f02c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/45c956ef58135091f53732646a0acd28034f02c0", + "reference": "45c956ef58135091f53732646a0acd28034f02c0", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^3.4|^4.0|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "symfony/http-foundation": "<3.4" + }, + "require-dev": { + "symfony/http-foundation": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/http-foundation": "For using the class SessionTokenStorage." }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" + "Symfony\\Component\\Security\\Csrf\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2658,24 +3615,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + "source": "https://github.com/symfony/security-csrf/tree/v4.4.37" }, "funding": [ { @@ -2691,44 +3642,37 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.23.0", + "name": "symfony/security-guard", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" + "url": "https://github.com/symfony/security-guard.git", + "reference": "cf8922b164e1659726c8852663eaaa593eef668c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/cf8922b164e1659726c8852663eaaa593eef668c", + "reference": "cf8922b164e1659726c8852663eaaa593eef668c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/security-core": "^3.4.22|^4.2.3|^5.0", + "symfony/security-http": "^4.4.1" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "psr/log": "^1|^2|^3" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Component\\Security\\Guard\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2737,28 +3681,18 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" + "source": "https://github.com/symfony/security-guard/tree/v4.4.37" }, "funding": [ { @@ -2774,36 +3708,47 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "symfony/property-access", - "version": "v4.4.25", + "name": "symfony/security-http", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "3af7c21b4128eadbace0800b51054a81bff896c6" + "url": "https://github.com/symfony/security-http.git", + "reference": "36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/3af7c21b4128eadbace0800b51054a81bff896c6", - "reference": "3af7c21b4128eadbace0800b51054a81bff896c6", + "url": "https://api.github.com/repos/symfony/security-http/zipball/36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e", + "reference": "36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0" + "symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/property-access": "^3.4|^4.0|^5.0", + "symfony/security-core": "^4.4.8" + }, + "conflict": { + "symfony/event-dispatcher": ">=5", + "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11" }, "require-dev": { - "symfony/cache": "^3.4|^4.0|^5.0" + "psr/log": "^1|^2|^3", + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0" }, "suggest": { - "psr/cache-implementation": "To cache access methods." + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" + "Symfony\\Component\\Security\\Http\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2823,21 +3768,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property path", - "reflection" - ], "support": { - "source": "https://github.com/symfony/property-access/tree/v4.4.25" + "source": "https://github.com/symfony/security-http/tree/v4.4.41" }, "funding": [ { @@ -2853,54 +3787,47 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/routing", - "version": "v4.4.25", + "name": "symfony/service-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3a3c2f197ad0846ac6413225fc78868ba1c61434", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.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" + "ext-psr": "<1.1|>=2" }, "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", - "symfony/yaml": "For using the YAML loader" + "symfony/service-implementation": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2908,24 +3835,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Maps an HTTP request to a set of configuration variables", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ - "router", - "routing", - "uri", - "url" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.25" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" }, "funding": [ { @@ -2941,66 +3870,56 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-03-13T20:07:29+00:00" }, { - "name": "symfony/security", - "version": "v3.4.49", + "name": "symfony/var-dumper", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/security.git", - "reference": "ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "58eb36075c04aaf92a7a9f38ee9a8b97e24eb481" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security/zipball/ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3", - "reference": "ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/58eb36075c04aaf92a7a9f38ee9a8b97e24eb481", + "reference": "58eb36075c04aaf92a7a9f38ee9a8b97e24eb481", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~3.4.40|^4.4.7", - "symfony/http-kernel": "~3.3|~4.0", - "symfony/polyfill-php56": "~1.0", - "symfony/polyfill-php70": "~1.0", - "symfony/property-access": "~2.8|~3.0|~4.0" - }, - "replace": { - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version" + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" }, "require-dev": { - "psr/container": "^1.0", - "psr/log": "~1.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/ldap": "~3.1|~4.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "~2.8|~3.0|~4.0", - "symfony/validator": "^3.2.5|~4.0" + "ext-iconv": "*", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" }, "suggest": { - "psr/container-implementation": "To instantiate the Security class", - "symfony/expression-language": "For using the expression voter", - "symfony/form": "", - "symfony/ldap": "For using the LDAP user and authentication providers", - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/validator": "For using the user password constraint" + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "autoload": { + "files": [ + "Resources/functions/dump.php" + ], "psr-4": { - "Symfony\\Component\\Security\\": "" + "Symfony\\Component\\VarDumper\\": "" }, "exclude-from-classmap": [ - "/Core/Tests/", - "/Csrf/Tests/", - "/Guard/Tests/", - "/Http/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3009,18 +3928,22 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], "support": { - "source": "https://github.com/symfony/security/tree/v3.4.49" + "source": "https://github.com/symfony/var-dumper/tree/v4.4.41" }, "funding": [ { @@ -3036,44 +3959,34 @@ "type": "tidelift" } ], - "time": "2021-05-19T12:03:21+00:00" + "time": "2022-04-25T21:15:06+00:00" }, { - "name": "symfony/string", - "version": "v5.3.3", + "name": "symfony/var-exporter", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1" + "url": "https://github.com/symfony/var-exporter.git", + "reference": "bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7", + "reference": "bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/var-dumper": "^4.4.9|^5.0.9" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\String\\": "" + "Symfony\\Component\\VarExporter\\": "" }, - "files": [ - "Resources/functions.php" - ], "exclude-from-classmap": [ "/Tests/" ] @@ -3092,18 +4005,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "description": "Allows exporting any serializable PHP data structure to plain PHP code", "homepage": "https://symfony.com", "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.3" + "source": "https://github.com/symfony/var-exporter/tree/v4.4.41" }, "funding": [ { @@ -3119,20 +4032,20 @@ "type": "tidelift" } ], - "time": "2021-06-27T11:44:38+00:00" + "time": "2022-04-25T17:40:48+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.26", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8" + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8", - "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d7f637cc0f0cc14beb0984f2bb50da560b271311", + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311", "shasum": "" }, "require": { @@ -3171,54 +4084,146 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v4.4.37" + }, + "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-01-24T20:11:01+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/inflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "vimeo/psalm": "^4.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.26" + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://www.doctrine-project.org/sponsorship.html", "type": "custom" }, { - "url": "https://github.com/fabpot", - "type": "github" + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", "type": "tidelift" } ], - "time": "2021-06-23T19:06:53+00:00" - } - ], - "packages-dev": [ + "time": "2021-10-22T20:16:43+00:00" + }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -3245,7 +4250,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -3261,41 +4266,42 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3311,7 +4317,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -3319,20 +4325,20 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "nikic/php-parser", - "version": "v4.11.0", + "version": "v4.13.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94" + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/fe14cf3672a149364fb66dfe11bf6549af899f94", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", "shasum": "" }, "require": { @@ -3373,22 +4379,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.11.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" }, - "time": "2021-07-03T13:36:55+00:00" + "time": "2021-11-30T19:35:32+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { @@ -3433,22 +4439,22 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2020-06-27T14:33:11+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -3484,9 +4490,9 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -3543,16 +4549,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { @@ -3563,7 +4569,8 @@ "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -3593,22 +4600,22 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2020-09-03T19:13:55+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "reference": "77a32518733312af16a44300404e945338981de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", "shasum": "" }, "require": { @@ -3616,7 +4623,8 @@ "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "*" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -3642,39 +4650,39 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" }, - "time": "2020-09-17T18:55:26+00:00" + "time": "2022-03-15T21:29:03+00:00" }, { "name": "phpspec/prophecy", - "version": "1.13.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", + "php": "^7.2 || ~8.0, <8.2", "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0", "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^6.0", + "phpspec/phpspec": "^6.0 || ^7.0", "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -3709,29 +4717,81 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" + }, + { + "name": "phpspec/prophecy-phpunit", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy-phpunit.git", + "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/2d7a9df55f257d2cba9b1d0c0963a54960657177", + "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8", + "phpspec/prophecy": "^1.3", + "phpunit/phpunit": "^9.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\PhpUnit\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + } + ], + "description": "Integrating the Prophecy mocking library in PHPUnit test cases", + "homepage": "http://phpspec.net", + "keywords": [ + "phpunit", + "prophecy" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy-phpunit/issues", + "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.0.1" }, - "time": "2021-03-17T13:42:18+00:00" + "time": "2020-07-09T08:33:42+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.6", + "version": "9.2.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", + "nikic/php-parser": "^4.13.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -3780,7 +4840,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" }, "funding": [ { @@ -3788,20 +4848,20 @@ "type": "github" } ], - "time": "2021-03-28T07:26:59+00:00" + "time": "2022-03-07T09:28:20+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -3840,7 +4900,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -3848,7 +4908,7 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -4033,16 +5093,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.6", + "version": "9.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb" + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", "shasum": "" }, "require": { @@ -4054,11 +5114,11 @@ "ext-xml": "*", "ext-xmlwriter": "*", "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.1", + "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -4072,7 +5132,7 @@ "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.0", "sebastian/version": "^3.0.2" }, "require-dev": { @@ -4093,11 +5153,11 @@ } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4120,11 +5180,11 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { @@ -4132,7 +5192,7 @@ "type": "github" } ], - "time": "2021-06-23T05:14:38+00:00" + "time": "2022-04-01T12:37:26+00:00" }, { "name": "sebastian/cli-parser", @@ -4500,16 +5560,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -4551,7 +5611,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -4559,20 +5619,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { @@ -4621,14 +5681,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { @@ -4636,20 +5696,20 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -4692,7 +5752,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -4700,7 +5760,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -5052,28 +6112,28 @@ }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5096,7 +6156,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" }, "funding": [ { @@ -5104,7 +6164,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2022-03-15T09:54:48+00:00" }, { "name": "sebastian/version", @@ -5161,16 +6221,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "version": "3.6.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", "shasum": "" }, "require": { @@ -5213,29 +6273,32 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-04-09T00:54:41+00:00" + "time": "2021-12-12T21:44:58+00:00" }, { "name": "symfony/browser-kit", - "version": "v3.4.47", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c" + "reference": "6e81008cac62369871cb6b8de64576ed138e3998" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c", - "reference": "9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/6e81008cac62369871cb6b8de64576ed138e3998", + "reference": "6e81008cac62369871cb6b8de64576ed138e3998", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/dom-crawler": "~2.8|~3.0|~4.0" + "php": ">=7.1.3", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0" + "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": "" @@ -5263,10 +6326,100 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony BrowserKit Component", + "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.37" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/console", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "0e1e62083b20ccb39c2431293de060f756af905c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/0e1e62083b20ccb39c2431293de060f756af905c", + "reference": "0e1e62083b20ccb39c2431293de060f756af905c", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/lock": "<4.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "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" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v3.4.47" + "source": "https://github.com/symfony/console/tree/v4.4.41" }, "funding": [ { @@ -5282,24 +6435,25 @@ "type": "tidelift" } ], - "time": "2020-10-24T10:57:07+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.47", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "da3d9da2ce0026771f5fe64cb332158f1bd2bc33" + "reference": "0628e6c6d7c92f1a7bae543959bdc17347be2436" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/da3d9da2ce0026771f5fe64cb332158f1bd2bc33", - "reference": "da3d9da2ce0026771f5fe64cb332158f1bd2bc33", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/0628e6c6d7c92f1a7bae543959bdc17347be2436", + "reference": "0628e6c6d7c92f1a7bae543959bdc17347be2436", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -5328,10 +6482,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony CssSelector Component", + "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v3.4.47" + "source": "https://github.com/symfony/css-selector/tree/v4.4.37" }, "funding": [ { @@ -5347,26 +6501,27 @@ "type": "tidelift" } ], - "time": "2020-10-24T10:57:07+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.25", + "version": "v4.4.39", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef" + "reference": "4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/41d15bb6d6b95d2be763c514bb2494215d9c5eef", - "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3", + "reference": "4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3", "shasum": "" }, "require": { "php": ">=7.1.3", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" }, "conflict": { "masterminds/html5": "<2.6" @@ -5404,7 +6559,177 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.25" + "source": "https://github.com/symfony/dom-crawler/tree/v4.4.39" + }, + "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-02-25T10:38:15+00:00" + }, + { + "name": "symfony/maker-bundle", + "version": "v1.39.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/maker-bundle.git", + "reference": "f2b99ba44e22a44fcf724affa53b5539b25fde90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/f2b99ba44e22a44fcf724affa53b5539b25fde90", + "reference": "f2b99ba44e22a44fcf724affa53b5539b25fde90", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.2|^2.0", + "nikic/php-parser": "^4.11", + "php": ">=7.1.3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/deprecation-contracts": "^2.2|^3", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" + }, + "require-dev": { + "composer/semver": "^3.0", + "doctrine/doctrine-bundle": "^1.12.3|^2.0", + "doctrine/orm": "^2.3", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/phpunit-bridge": "^4.4|^5.0|^6.0", + "symfony/polyfill-php80": "^1.16.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/twig": "^2.0|^3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-main": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MakerBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.", + "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", + "keywords": [ + "code generator", + "generator", + "scaffold", + "scaffolding" + ], + "support": { + "issues": "https://github.com/symfony/maker-bundle/issues", + "source": "https://github.com/symfony/maker-bundle/tree/v1.39.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-21T18:16:11+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "66d1857e9565b70855d79e2639672b33baa9cbc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/66d1857e9565b70855d79e2639672b33baa9cbc8", + "reference": "66d1857e9565b70855d79e2639672b33baa9cbc8", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|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" + }, + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", + "extra": { + "thanks": { + "name": "phpunit/phpunit", + "url": "https://github.com/sebastianbergmann/phpunit" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides utilities for PHPUnit, especially user deprecation notices management", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.41" }, "funding": [ { @@ -5420,20 +6745,20 @@ "type": "tidelift" } ], - "time": "2021-05-26T11:20:16+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "75a63c33a8577608444246075ea0af0d052e452a" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", - "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { @@ -5462,7 +6787,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/master" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, "funding": [ { @@ -5470,7 +6795,7 @@ "type": "github" } ], - "time": "2020-07-12T23:59:07+00:00" + "time": "2021-07-28T10:34:58+00:00" }, { "name": "webmozart/assert", @@ -5537,8 +6862,10 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.3 || ^7.4" + "php": "^7.3 || ^7.4", + "ext-ctype": "*", + "ext-iconv": "*" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } diff --git a/Homarus/config/bootstrap.php b/Homarus/config/bootstrap.php new file mode 100644 index 00000000..55560fb8 --- /dev/null +++ b/Homarus/config/bootstrap.php @@ -0,0 +1,23 @@ +=1.2) +if (is_array($env = @include dirname(__DIR__).'/.env.local.php') && (!isset($env['APP_ENV']) || ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env['APP_ENV']) === $env['APP_ENV'])) { + (new Dotenv(false))->populate($env); +} else { + // load all the .env files + (new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env'); +} + +$_SERVER += $_ENV; +$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; +$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; +$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; diff --git a/Homarus/config/bundles.php b/Homarus/config/bundles.php new file mode 100644 index 00000000..127ed6c5 --- /dev/null +++ b/Homarus/config/bundles.php @@ -0,0 +1,8 @@ + ['all' => true], + Islandora\Crayfish\Commons\CrayfishCommonsBundle::class => ['all' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], +]; diff --git a/Homarus/config/packages/cache.yaml b/Homarus/config/packages/cache.yaml new file mode 100644 index 00000000..6899b720 --- /dev/null +++ b/Homarus/config/packages/cache.yaml @@ -0,0 +1,19 @@ +framework: + cache: + # Unique name of your app: used to compute stable namespaces for cache keys. + #prefix_seed: your_vendor_name/app_name + + # The "app" cache stores to the filesystem by default. + # The data in this cache should persist between deploys. + # Other options include: + + # Redis + #app: cache.adapter.redis + #default_redis_provider: redis://localhost + + # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) + #app: cache.adapter.apcu + + # Namespaced pools use the above "app" backend by default + #pools: + #my.dedicated.cache: null diff --git a/Homarus/config/packages/crayfish_commons.yaml b/Homarus/config/packages/crayfish_commons.yaml new file mode 100644 index 00000000..92c45c3e --- /dev/null +++ b/Homarus/config/packages/crayfish_commons.yaml @@ -0,0 +1,3 @@ +crayfish_commons: + fedora_base_uri: 'http://localhost:8080/fcrepo/rest' + #syn_config: '/path/to/syn-settings.xml' diff --git a/Homarus/config/packages/framework.yaml b/Homarus/config/packages/framework.yaml new file mode 100644 index 00000000..cad7f780 --- /dev/null +++ b/Homarus/config/packages/framework.yaml @@ -0,0 +1,17 @@ +# see https://symfony.com/doc/current/reference/configuration/framework.html +framework: + secret: '%env(APP_SECRET)%' + #csrf_protection: true + #http_method_override: true + + # Enables session support. Note that the session will ONLY be started if you read or write from it. + # Remove or comment this section to explicitly disable session support. + session: + handler_id: null + cookie_secure: auto + cookie_samesite: lax + + #esi: true + #fragments: true + php_errors: + log: true diff --git a/Homarus/config/packages/monolog.yaml b/Homarus/config/packages/monolog.yaml new file mode 100644 index 00000000..d76548cd --- /dev/null +++ b/Homarus/config/packages/monolog.yaml @@ -0,0 +1,27 @@ +monolog: + handlers: + #main: + # type: stream + # path: "%kernel.logs_dir%/%kernel.environment%.log" + # level: debug + # channels: ["!event"] + #console: + # type: console + # process_psr_3_messages: false + # channels: ["!event", "!doctrine", "!console"] + + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + + homarus: + type: rotating_file + path: /tmp/Homarus.log + level: DEBUG + max_files: 1 + channels: ["!event", "!console"] diff --git a/Homarus/config/packages/prod/routing.yaml b/Homarus/config/packages/prod/routing.yaml new file mode 100644 index 00000000..b3e6a0af --- /dev/null +++ b/Homarus/config/packages/prod/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: null diff --git a/Homarus/config/packages/routing.yaml b/Homarus/config/packages/routing.yaml new file mode 100644 index 00000000..7e977620 --- /dev/null +++ b/Homarus/config/packages/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + utf8: true diff --git a/Homarus/config/packages/security.yaml b/Homarus/config/packages/security.yaml new file mode 100644 index 00000000..edc5b619 --- /dev/null +++ b/Homarus/config/packages/security.yaml @@ -0,0 +1,35 @@ +security: + + # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers + providers: + jwt_user_provider: + id: Islandora\Crayfish\Commons\Syn\JwtUserProvider + + firewalls: + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + main: + # To enable Syn, change anonymous to false and uncomment the lines further below + anonymous: true + # Need stateless or it reloads the User based on a token. + stateless: true + + # To enable Syn, uncomment the below 4 lines and change anonymous to false above. + #provider: jwt_user_provider + #guard: + # authenticators: + # - Islandora\Crayfish\Commons\Syn\JwtAuthenticator + + # activate different ways to authenticate + # https://symfony.com/doc/current/security.html#firewalls-authentication + + # https://symfony.com/doc/current/security/impersonating_user.html + # switch_user: true + + + # Easy way to control access for large sections of your site + # Note: Only the *first* access control that matches will be used + access_control: + # - { path: ^/admin, roles: ROLE_ADMIN } + # - { path: ^/profile, roles: ROLE_USER } diff --git a/Homarus/config/packages/test/framework.yaml b/Homarus/config/packages/test/framework.yaml new file mode 100644 index 00000000..d051c840 --- /dev/null +++ b/Homarus/config/packages/test/framework.yaml @@ -0,0 +1,4 @@ +framework: + test: true + session: + storage_id: session.storage.mock_file diff --git a/Homarus/config/preload.php b/Homarus/config/preload.php new file mode 100644 index 00000000..064bdcd6 --- /dev/null +++ b/Homarus/config/preload.php @@ -0,0 +1,9 @@ + + + + + + + + + + + + bin/ + config/ + public/ + src/ + tests/ + + diff --git a/Homarus/phpunit.xml.dist b/Homarus/phpunit.xml.dist index a131dab3..72c1165e 100644 --- a/Homarus/phpunit.xml.dist +++ b/Homarus/phpunit.xml.dist @@ -1,21 +1,48 @@ - - - - ./src - - - ./src/index.php - ./src/app.php - - - - - - - - ./tests/ - - - + + + + + + + + + + + + + + + tests + + + + + + ./src + + + ./src/Kernel.php + + + + + + + + + + + + diff --git a/Homarus/public/index.php b/Homarus/public/index.php new file mode 100644 index 00000000..66b88d3a --- /dev/null +++ b/Homarus/public/index.php @@ -0,0 +1,27 @@ +handle($request); +$response->send(); +$kernel->terminate($request, $response); diff --git a/Homarus/static/convert.ttl b/Homarus/public/static/convert.ttl similarity index 100% rename from Homarus/static/convert.ttl rename to Homarus/public/static/convert.ttl diff --git a/Homarus/src/Controller/HomarusController.php b/Homarus/src/Controller/HomarusController.php index 2d6e4a1b..267e04d1 100644 --- a/Homarus/src/Controller/HomarusController.php +++ b/Homarus/src/Controller/HomarusController.php @@ -1,10 +1,9 @@ cmd = $cmd; - $this->mimetypes = $mimetypes; - $this->default_mimetype = $default_mimetype; + $this->formats = $formats; + $this->defaults = $defaults; $this->executable = $executable; $this->log = $log; - $this->mime_to_format = $mime_to_format; - $this->default_format = $default_format; } - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * @return \Symfony\Component\HttpFoundation\Response|\Symfony\Component\HttpFoundation\StreamedResponse - */ + /** + * @param \Symfony\Component\HttpFoundation\Request $request + * @return \Symfony\Component\HttpFoundation\Response|\Symfony\Component\HttpFoundation\StreamedResponse + */ public function convert(Request $request) { $this->log->info('Ffmpeg Convert request.'); @@ -133,7 +119,7 @@ public function convert(Request $request) 400 ); } - + // Add -loglevel error so large files can be processed. $args .= ' -loglevel error'; $this->log->debug("X-Islandora-Args:", ['args' => $args]); @@ -164,38 +150,30 @@ public function convert(Request $request) * @return array * Array with [ $content-type, $format ], falls back to defaults. */ - private function getFfmpegFormat(array $content_types) + private function getFfmpegFormat(array $content_types): array { - $content_type = null; foreach ($content_types as $type) { - if (in_array($type, $this->mimetypes)) { - $content_type = $type; - break; + $key = array_search( + $type, + array_column($this->formats, "mimetype") + ); + if ($key !== false) { + $format = $this->formats[$key]['format']; + return [$type, $format]; } } - if ($content_type === null) { - $this->log->info('No matching content-type, falling back to default.'); - return [$this->default_mimetype, $this->default_format]; - } - - foreach ($this->mime_to_format as $format) { - $format_info = explode("_", $format); - if ($format_info[0] == $content_type) { - return [$content_type, $format_info[1]]; - } - } - $this->log->info('No matching content-type to format mapping, falling back to default.'); - return [$this->default_mimetype, $this->default_format]; + $this->log->info('No matching content-type, falling back to default.'); + return [$this->defaults["mimetype"], $this->defaults["format"]]; } - /** - * @return \Symfony\Component\HttpFoundation\BinaryFileResponse - */ - public function convertOptions() + /** + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + */ + public function convertOptions(): BinaryFileResponse { return new BinaryFileResponse( - __DIR__ . "/../../static/convert.ttl", + __DIR__ . "/../../public/static/convert.ttl", 200, ['Content-Type' => 'text/turtle'] ); diff --git a/Homarus/src/Kernel.php b/Homarus/src/Kernel.php new file mode 100644 index 00000000..2b9a2f8d --- /dev/null +++ b/Homarus/src/Kernel.php @@ -0,0 +1,54 @@ +getProjectDir().'/config/bundles.php'; + foreach ($contents as $class => $envs) { + if ($envs[$this->environment] ?? $envs['all'] ?? false) { + yield new $class(); + } + } + } + + public function getProjectDir(): string + { + return \dirname(__DIR__); + } + + protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void + { + $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); + $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || $this->debug); + $container->setParameter('container.dumper.inline_factories', true); + $confDir = $this->getProjectDir().'/config'; + + $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{packages}/'.$this->environment.'/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); + } + + protected function configureRoutes(RouteCollectionBuilder $routes): void + { + $confDir = $this->getProjectDir().'/config'; + + $routes->import($confDir.'/{routes}/'.$this->environment.'/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); + } +} diff --git a/Homarus/src/app.php b/Homarus/src/app.php deleted file mode 100644 index d4b5431c..00000000 --- a/Homarus/src/app.php +++ /dev/null @@ -1,30 +0,0 @@ -register(new IslandoraServiceProvider()); -$app->register(new YamlConfigServiceProvider(__DIR__ . '/../cfg/config.yaml')); - -$app['homarus.controller'] = function ($app) { - return new HomarusController( - $app['crayfish.cmd_execute_service'], - $app['crayfish.homarus.mime_types.valid'], - $app['crayfish.homarus.mime_types.default'], - $app['crayfish.homarus.executable'], - $app['monolog'], - $app['crayfish.homarus.mime_to_format.valid'], - $app['crayfish.homarus.mime_to_format.default'] - ); -}; - -$app->options('/convert', "homarus.controller:convertOptions"); -$app->get('/convert', "homarus.controller:convert"); - -return $app; diff --git a/Homarus/src/index.php b/Homarus/src/index.php deleted file mode 100644 index 3e23d477..00000000 --- a/Homarus/src/index.php +++ /dev/null @@ -1,4 +0,0 @@ -run(); diff --git a/Homarus/symfony.lock b/Homarus/symfony.lock new file mode 100644 index 00000000..2df3f809 --- /dev/null +++ b/Homarus/symfony.lock @@ -0,0 +1,400 @@ +{ + "doctrine/inflector": { + "version": "2.0.3" + }, + "doctrine/instantiator": { + "version": "1.4.0" + }, + "easyrdf/easyrdf": { + "version": "1.1.1" + }, + "guzzlehttp/guzzle": { + "version": "6.5.5" + }, + "guzzlehttp/promises": { + "version": "1.5.0" + }, + "guzzlehttp/psr7": { + "version": "1.8.3" + }, + "islandora/chullo": { + "version": "1.3.0" + }, + "islandora/crayfish-commons": { + "version": "3.0.0" + }, + "ml/iri": { + "version": "1.1.4" + }, + "ml/json-ld": { + "version": "1.2.0" + }, + "monolog/monolog": { + "version": "1.26.1" + }, + "myclabs/deep-copy": { + "version": "1.10.2" + }, + "namshi/jose": { + "version": "7.2.3" + }, + "nikic/php-parser": { + "version": "v4.13.0" + }, + "phar-io/manifest": { + "version": "2.0.3" + }, + "phar-io/version": { + "version": "3.1.0" + }, + "phpdocumentor/reflection-common": { + "version": "2.2.0" + }, + "phpdocumentor/reflection-docblock": { + "version": "5.3.0" + }, + "phpdocumentor/type-resolver": { + "version": "1.5.1" + }, + "phpspec/prophecy": { + "version": "1.14.0" + }, + "phpspec/prophecy-phpunit": { + "version": "v2.0.1" + }, + "phpunit/php-code-coverage": { + "version": "9.2.7" + }, + "phpunit/php-file-iterator": { + "version": "3.0.5" + }, + "phpunit/php-invoker": { + "version": "3.1.1" + }, + "phpunit/php-text-template": { + "version": "2.0.4" + }, + "phpunit/php-timer": { + "version": "5.0.3" + }, + "phpunit/phpunit": { + "version": "9.5", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "9.3", + "ref": "a6249a6c4392e9169b87abf93225f7f9f59025e6" + }, + "files": [ + ".env.test", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "psr/cache": { + "version": "1.0.1" + }, + "psr/container": { + "version": "1.1.1" + }, + "psr/http-message": { + "version": "1.0.1" + }, + "psr/log": { + "version": "1.1.4" + }, + "ralouphie/getallheaders": { + "version": "3.0.3" + }, + "sebastian/cli-parser": { + "version": "1.0.1" + }, + "sebastian/code-unit": { + "version": "1.0.8" + }, + "sebastian/code-unit-reverse-lookup": { + "version": "2.0.3" + }, + "sebastian/comparator": { + "version": "4.0.6" + }, + "sebastian/complexity": { + "version": "2.0.2" + }, + "sebastian/diff": { + "version": "4.0.4" + }, + "sebastian/environment": { + "version": "5.1.3" + }, + "sebastian/exporter": { + "version": "4.0.3" + }, + "sebastian/global-state": { + "version": "5.0.3" + }, + "sebastian/lines-of-code": { + "version": "1.0.3" + }, + "sebastian/object-enumerator": { + "version": "4.0.4" + }, + "sebastian/object-reflector": { + "version": "2.0.4" + }, + "sebastian/phpcpd": { + "version": "6.0.3" + }, + "sebastian/recursion-context": { + "version": "4.0.4" + }, + "sebastian/resource-operations": { + "version": "3.0.3" + }, + "sebastian/type": { + "version": "2.3.4" + }, + "sebastian/version": { + "version": "3.0.2" + }, + "squizlabs/php_codesniffer": { + "version": "3.6", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "master", + "version": "3.6", + "ref": "1019e5c08d4821cb9b77f4891f8e9c31ff20ac6f" + }, + "files": [ + "phpcs.xml.dist" + ] + }, + "symfony/browser-kit": { + "version": "v4.4.27" + }, + "symfony/cache": { + "version": "v4.4.31" + }, + "symfony/cache-contracts": { + "version": "v2.4.0" + }, + "symfony/config": { + "version": "v4.4.30" + }, + "symfony/console": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.4", + "ref": "fd5340d07d4c90504843b53da41525cf42e31f5c" + }, + "files": [ + "bin/console", + "config/bootstrap.php" + ] + }, + "symfony/css-selector": { + "version": "v4.4.27" + }, + "symfony/debug": { + "version": "v4.4.31" + }, + "symfony/dependency-injection": { + "version": "v4.4.31" + }, + "symfony/deprecation-contracts": { + "version": "v2.4.0" + }, + "symfony/dom-crawler": { + "version": "v4.4.30" + }, + "symfony/dotenv": { + "version": "v4.4.29" + }, + "symfony/error-handler": { + "version": "v4.4.30" + }, + "symfony/event-dispatcher": { + "version": "v4.4.30" + }, + "symfony/event-dispatcher-contracts": { + "version": "v1.1.9" + }, + "symfony/filesystem": { + "version": "v4.4.27" + }, + "symfony/finder": { + "version": "v4.4.30" + }, + "symfony/flex": { + "version": "1.17", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" + }, + "files": [ + ".env" + ] + }, + "symfony/framework-bundle": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.4", + "ref": "3b9c85f14cad439042f88f94a1fd15fb8ed923c9" + }, + "files": [ + "config/services.yaml", + "config/bootstrap.php", + "config/routes/dev/framework.yaml", + "config/preload.php", + "config/packages/cache.yaml", + "config/packages/framework.yaml", + "config/packages/test/framework.yaml", + "public/index.php", + "src/Kernel.php", + "src/Controller/.gitignore" + ] + }, + "symfony/http-client-contracts": { + "version": "v2.4.0" + }, + "symfony/http-foundation": { + "version": "v4.4.30" + }, + "symfony/http-kernel": { + "version": "v4.4.32" + }, + "symfony/inflector": { + "version": "v4.4.27" + }, + "symfony/maker-bundle": { + "version": "1.34", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" + } + }, + "symfony/mime": { + "version": "v4.4.31" + }, + "symfony/monolog-bridge": { + "version": "v4.4.27" + }, + "symfony/monolog-bundle": { + "version": "3.7", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.7", + "ref": "a7bace7dbc5a7ed5608dbe2165e0774c87175fe6" + }, + "files": [ + "config/packages/test/monolog.yaml", + "config/packages/prod/monolog.yaml", + "config/packages/prod/deprecations.yaml", + "config/packages/dev/monolog.yaml" + ] + }, + "symfony/phpunit-bridge": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.3", + "ref": "0e1b186400de9d4ab83363138b4eb0072c99b2ab" + }, + "files": [ + ".env.test", + "bin/phpunit", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "symfony/polyfill-intl-idn": { + "version": "v1.23.0" + }, + "symfony/polyfill-intl-normalizer": { + "version": "v1.23.0" + }, + "symfony/polyfill-mbstring": { + "version": "v1.23.1" + }, + "symfony/polyfill-php72": { + "version": "v1.23.0" + }, + "symfony/polyfill-php73": { + "version": "v1.23.0" + }, + "symfony/polyfill-php80": { + "version": "v1.23.1" + }, + "symfony/polyfill-php81": { + "version": "v1.23.0" + }, + "symfony/property-access": { + "version": "v4.4.30" + }, + "symfony/routing": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.2", + "ref": "683dcb08707ba8d41b7e34adb0344bfd68d248a7" + }, + "files": [ + "config/routes.yaml", + "config/packages/routing.yaml", + "config/packages/prod/routing.yaml" + ] + }, + "symfony/security-bundle": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.4", + "ref": "7b4408dc203049666fe23fabed23cbadc6d8440f" + }, + "files": [ + "config/packages/security.yaml" + ] + }, + "symfony/security-core": { + "version": "v4.4.31" + }, + "symfony/security-csrf": { + "version": "v4.4.27" + }, + "symfony/security-guard": { + "version": "v4.4.27" + }, + "symfony/security-http": { + "version": "v4.4.30" + }, + "symfony/service-contracts": { + "version": "v2.4.0" + }, + "symfony/var-dumper": { + "version": "v4.4.31" + }, + "symfony/var-exporter": { + "version": "v4.4.31" + }, + "symfony/yaml": { + "version": "v4.4.29" + }, + "theseer/tokenizer": { + "version": "1.2.1" + }, + "webmozart/assert": { + "version": "1.10.0" + } +} diff --git a/Homarus/tests/Islandora/Homarus/Tests/HomarusControllerTest.php b/Homarus/tests/HomarusControllerTest.php similarity index 86% rename from Homarus/tests/Islandora/Homarus/Tests/HomarusControllerTest.php rename to Homarus/tests/HomarusControllerTest.php index 5b5a26fe..374283ee 100644 --- a/Homarus/tests/Islandora/Homarus/Tests/HomarusControllerTest.php +++ b/Homarus/tests/HomarusControllerTest.php @@ -1,51 +1,44 @@ mime_to_format = [ - 'video/mp4_mp4', - 'video/x-msvideo_avi', - 'video/ogg_ogg', + $this->defaults = [ + 'format' => 'mp4', + 'mimetype' => 'video/mp4', ]; - $this->default_format = 'mp4'; - - $this->content_types = [ - 'video/mp4', - 'video/x-msvideo', - 'video/ogg', + $this->formats = [ + [ 'mimetype' => 'video/mp4', 'format' => 'mp4'], + [ 'mimetype' => 'video/x-msvideo', 'format' => 'avi'], + [ 'mimetype' => 'video/ogg', 'format' => 'ogg'], ]; - - $this->default_content_type = 'video/mp4'; } /** @@ -76,12 +69,10 @@ public function testErrorReturns500() // Create a controller. $controller = new HomarusController( $mock_service, - $this->content_types, - $this->default_content_type, + $this->formats, + $this->defaults, 'convert', - $this->prophesize(Logger::class)->reveal(), - $this->mime_to_format, - $this->default_format + $this->prophesize(Logger::class)->reveal() ); $mock_fedora_response = $this->getMockFedoraResource(); @@ -133,7 +124,7 @@ public function testSuccessReturns200ValidContentType() public function testUnmappedContentType() { $new_content_type = 'video/x-flv'; - $this->content_types[] = $new_content_type; + $this->formats[] = $new_content_type; $controller = $this->getDefaultController(); $mock_fedora_response = $this->getMockFedoraResource(); @@ -221,12 +212,10 @@ private function getDefaultController() // Create a controller. $controller = new HomarusController( $mock_service, - $this->content_types, - $this->default_content_type, + $this->formats, + $this->defaults, 'convert', - $this->prophesize(Logger::class)->reveal(), - $this->mime_to_format, - $this->default_format + $this->prophesize(Logger::class)->reveal() ); return $controller; } diff --git a/Homarus/tests/bootstrap.php b/Homarus/tests/bootstrap.php new file mode 100644 index 00000000..469dccee --- /dev/null +++ b/Homarus/tests/bootstrap.php @@ -0,0 +1,11 @@ +bootEnv(dirname(__DIR__).'/.env'); +} diff --git a/Houdini/README.md b/Houdini/README.md index e6f35494..66399d01 100644 --- a/Houdini/README.md +++ b/Houdini/README.md @@ -10,19 +10,37 @@ - Clone this repository somewhere in your web root. - Install `composer`. [Install instructions here.][4] - `$ cd /path/to/Houdini` and run `$ composer install` -- Then either - - For production, configure your web server appropriately (e.g. add a VirtualHost for Houdini in Apache) OR - - For development, run the PHP built-in web server `$ php -S localhost:8888 -t src` from Houdini root. +- For production, configure your web server appropriately (e.g. add a VirtualHost for Houdini in Apache) ## Configuration -If your imagemagick installation is not on your path, then you can configure Houdini to use a specific executable by editing `executable` entry in [config.yaml](./cfg/config.example.yaml). +Symfony uses `.dotenv` to set environment variables. You can check the [.env](./.env) in the root of the Houdini directory. +To alter any settings, create a file called `.env.local` to store your specific changes. You can also set an actual environment +variable. -You also will need to set the `fedora base url` entry to point to your Fedora installation. +For production use make sure to set the add `APP_ENV=prod` environment variable. -In order to work on larger images, be sure `post_max_size` is sufficiently large and `max_execution_time` is set to 0 in your PHP installation's ini file. You can determine which ini file is getting used by running the command `$ php --ini`. +If your `imagemagick` installation is not on your path, then you can configure Houdini to use a specific executable by editing +the `app.executable` parameter in [`/path/to/Houdini/config/services.yaml`](./config/services.yaml). -The location specified in the Houdini configuration file for the log must be writable by the web server. +You also need to set your Fedora Base Url to allow the Fedora Resource to be pulled in automatically. This is done in the +`/path/to/Houdini/config/packages/crayfish_commons.yaml`. In the same file you can point to the location of your `syn-settings.xml`. +If you don't have a `syn-settings.xml` look at the [Syn](http://github.com/Islandora/Syn) documentation. + +### Logging + +To change your log settings, edit the `/path/to/Houdini/config/packages/monolog.yaml` file. + +You can also copy the file into one of the `/path/to/Houdini/config/packages/` directories. +Where `` is `dev`, `test`, or `prod` based on the `APP_ENV` variable (see above). The files in the specific +environment directory will take precedence over those in the `/path/to/Houdini/config/packages` directory. + +The location specified in the configuration file for the log must be writable by the web server. + +### Disabling Syn + +There are instructions in the `/path/to/Houdini/config/packages/security.yaml` file describing what to change and what lines +to comment out to disable Syn. ## Usage @@ -80,8 +98,6 @@ If you would like to contribute, please get involved by attending our weekly [Te If you would like to contribute code to the project, you need to be covered by an Islandora Foundation [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). Please see the [Contributors](http://islandora.ca/resources/contributors) pages on Islandora.ca for more information. -We recommend using the [islandora-playbook](https://github.com/Islandora-Devops/islandora-playbook) to get started. - ## License [MIT](https://opensource.org/licenses/MIT) diff --git a/Houdini/bin/console b/Houdini/bin/console deleted file mode 100755 index 234246aa..00000000 --- a/Houdini/bin/console +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env php -getParameterOption(['--env', '-e'], null, true)) { - putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env); -} - -if ($input->hasParameterOption('--no-debug', true)) { - putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0'); -} - -require dirname(__DIR__).'/config/bootstrap.php'; - -if ($_SERVER['APP_DEBUG']) { - umask(0000); - - if (class_exists(Debug::class)) { - Debug::enable(); - } -} - -$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); -$application = new Application($kernel); -$application->run($input); diff --git a/Houdini/cfg/config.example.yaml b/Houdini/cfg/config.example.yaml deleted file mode 100644 index 819420a6..00000000 --- a/Houdini/cfg/config.example.yaml +++ /dev/null @@ -1,30 +0,0 @@ ---- - -houdini: - # path to the convert executable - executable: convert - formats: - valid: - - image/jpeg - - image/png - - image/tiff - - image/jp2 - default: image/jpeg - -fedora_resource: - base_url: http://localhost:8080/fcrepo/rest - -log: - # Valid log levels are: - # DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY, NONE - # log level none won't open logfile - level: NONE - file: ../houdini.log - -syn: - # toggles JWT security for service - enable: false - # Path to the syn config file for authentication. - # example can be found here: - # https://github.com/Islandora/Syn/blob/main/conf/syn-settings.example.xml - config: ../syn-settings.xml diff --git a/Houdini/composer.json b/Houdini/composer.json index c9d57fff..b5428024 100644 --- a/Houdini/composer.json +++ b/Houdini/composer.json @@ -19,20 +19,22 @@ "php": "^7.3 || ^7.4", "ext-ctype": "*", "ext-iconv": "*", - "symfony/console": "^4.3", - "symfony/dotenv": "^4.3", - "symfony/flex": "^1.9", - "symfony/framework-bundle": "^4.3", - "symfony/yaml": "^4.3", - "symfony/web-server-bundle": "^4.3", + "islandora/crayfish-commons": "^3.0", + "symfony/dotenv": "4.4.*", + "symfony/flex": "^1.3.1", + "symfony/framework-bundle": "4.4.*", "symfony/monolog-bundle": "^3.4", - "islandora/crayfish-commons": "dev-symfony-flex" + "symfony/yaml": "4.4.*" }, "require-dev": { - "symfony/var-dumper": "^4.3", - "squizlabs/php_codesniffer": "^3.0", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", "sebastian/phpcpd": "^6.0", - "symfony/phpunit-bridge": "^4.3" + "squizlabs/php_codesniffer": "^3.0", + "symfony/browser-kit": "4.4.*", + "symfony/css-selector": "4.4.*", + "symfony/phpunit-bridge": "4.4.*", + "symfony/var-dumper": "4.4.*" }, "minimum-stability": "dev", "prefer-stable": true, @@ -68,16 +70,6 @@ "test": [ "@check", "bin/phpunit" - ], - "auto-scripts": { - "cache:clear": "symfony-cmd", - "assets:install %PUBLIC_DIR%": "symfony-cmd" - }, - "post-install-cmd": [ - "@auto-scripts" - ], - "post-update-cmd": [ - "@auto-scripts" ] }, "conflict": { @@ -86,7 +78,7 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "4.3.*" + "require": "4.4.*" } } } diff --git a/Houdini/composer.lock b/Houdini/composer.lock index 4d5e147a..a2af1192 100644 --- a/Houdini/composer.lock +++ b/Houdini/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "057050aedb8c458832ee52fe5b950f34", + "content-hash": "8ab4e4f61923d6d90ba6049f095cadf4", "packages": [ { "name": "easyrdf/easyrdf", @@ -117,12 +117,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -154,16 +154,16 @@ }, { "name": "guzzlehttp/promises", - "version": "1.4.1", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", "shasum": "" }, "require": { @@ -175,26 +175,41 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, "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", @@ -203,22 +218,36 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" + "source": "https://github.com/guzzle/promises/tree/1.5.1" }, - "time": "2021-03-07T09:25:29+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.8.2", + "version": "1.8.5", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91" + "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/337e3ad8e5716c15f9657bd214d16cc5e69df268", + "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268", "shasum": "" }, "require": { @@ -243,25 +272,46 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Psr7\\": "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": "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" } ], @@ -278,29 +328,43 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.2" + "source": "https://github.com/guzzle/psr7/tree/1.8.5" }, - "time": "2021-04-26T09:17:50+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2022-03-20T21:51:18+00:00" }, { "name": "islandora/chullo", - "version": "dev-dev", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/Islandora/chullo.git", - "reference": "d563d5e48ef9b15dcf45029277bbc2f6eeef2454" + "reference": "a7c1e051eab2a5077eaf5db2649201fa775c5a02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Islandora/chullo/zipball/d563d5e48ef9b15dcf45029277bbc2f6eeef2454", - "reference": "d563d5e48ef9b15dcf45029277bbc2f6eeef2454", + "url": "https://api.github.com/repos/Islandora/chullo/zipball/a7c1e051eab2a5077eaf5db2649201fa775c5a02", + "reference": "a7c1e051eab2a5077eaf5db2649201fa775c5a02", "shasum": "" }, "require": { "easyrdf/easyrdf": "^0.9 || ^1", "guzzlehttp/guzzle": "^6.1.0", "ml/json-ld": "^1.0.4", - "php": "^7.3 || ^7.4" + "php": ">=7.3" }, "require-dev": { "mockery/mockery": "^0.9", @@ -308,7 +372,6 @@ "sebastian/phpcpd": "^6.0", "squizlabs/php_codesniffer": "^3.0" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -340,44 +403,46 @@ "homepage": "https://github.com/Islandora/chullo", "support": { "issues": "https://github.com/Islandora/documentation/issues", - "source": "https://github.com/Islandora/chullo/tree/1.2.0" + "source": "https://github.com/Islandora/chullo/tree/1.3.0" }, - "time": "2021-05-05T17:38:36+00:00" + "time": "2021-12-16T22:31:48+00:00" }, { "name": "islandora/crayfish-commons", - "version": "dev-symfony-flex", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/Islandora/Crayfish-Commons.git", - "reference": "9e0ec7f82435c8ef97c47121a2faa5da6eae72af" + "reference": "e7b8cbd5951286897507f6cfd3e6356201d24f48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Islandora/Crayfish-Commons/zipball/9e0ec7f82435c8ef97c47121a2faa5da6eae72af", - "reference": "9e0ec7f82435c8ef97c47121a2faa5da6eae72af", + "url": "https://api.github.com/repos/Islandora/Crayfish-Commons/zipball/e7b8cbd5951286897507f6cfd3e6356201d24f48", + "reference": "e7b8cbd5951286897507f6cfd3e6356201d24f48", "shasum": "" }, "require": { - "islandora/chullo": "dev-dev", + "islandora/chullo": "^1.0", "namshi/jose": "^7.2", "psr/log": "^1.0.1", - "symfony/config": "^4.3", - "symfony/dependency-injection": "^4.3", - "symfony/event-dispatcher": "^4.3", - "symfony/http-foundation": "^4.3", + "symfony/config": "4.4.*", + "symfony/dependency-injection": "4.4.*", + "symfony/event-dispatcher": "4.4.*", + "symfony/http-foundation": "4.4.*", "symfony/monolog-bundle": "^3.4", - "symfony/security-bundle": "^4.3", - "symfony/yaml": "^4.3" + "symfony/security-bundle": "4.4.*", + "symfony/yaml": "4.4.*" }, "conflict": { "symfony/symfony": "*" }, "require-dev": { "mikey179/vfsstream": "^1.6", - "sebastian/phpcpd": "^3.0", - "squizlabs/php_codesniffer": "^2.0", - "symfony/phpunit-bridge": "^4.3" + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "sebastian/phpcpd": "^6.0", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "4.4.*" }, "type": "symfony-bundle", "extra": { @@ -408,10 +473,12 @@ } ], "description": "Shared code amongst Islandora Crayfish microservices", + "homepage": "https://github.com/Islandora/Crayfish-Commons", "support": { - "source": "https://github.com/Islandora/Crayfish-Commons/tree/symfony-flex" + "issues": "https://github.com/Islandora/documentation/issues", + "source": "https://github.com/Islandora/Crayfish-Commons/tree/3.0.0" }, - "time": "2020-12-29T15:47:11+00:00" + "time": "2022-05-05T15:46:41+00:00" }, { "name": "ml/iri", @@ -519,16 +586,16 @@ }, { "name": "monolog/monolog", - "version": "1.26.1", + "version": "1.27.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5" + "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/52ebd235c1f7e0d5e1b16464b695a28335f8e44a", + "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a", "shasum": "" }, "require": { @@ -589,7 +656,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.26.1" + "source": "https://github.com/Seldaek/monolog/tree/1.27.0" }, "funding": [ { @@ -601,7 +668,7 @@ "type": "tidelift" } ], - "time": "2021-05-28T08:32:12+00:00" + "time": "2022-03-13T20:29:46+00:00" }, { "name": "namshi/jose", @@ -916,52 +983,52 @@ }, { "name": "symfony/cache", - "version": "v4.3.11", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "8794ccf68ac341fc19311919d2287f7557bfccba" + "reference": "27121284fe32a7cefc225268761ec7ce1741b9ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/8794ccf68ac341fc19311919d2287f7557bfccba", - "reference": "8794ccf68ac341fc19311919d2287f7557bfccba", + "url": "https://api.github.com/repos/symfony/cache/zipball/27121284fe32a7cefc225268761ec7ce1741b9ac", + "reference": "27121284fe32a7cefc225268761ec7ce1741b9ac", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/cache": "~1.0", - "psr/log": "~1.0", - "symfony/cache-contracts": "^1.1", - "symfony/service-contracts": "^1.1", - "symfony/var-exporter": "^4.2" + "php": ">=7.1.3", + "psr/cache": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.2|^5.0" }, "conflict": { - "doctrine/dbal": "<2.5", + "doctrine/dbal": "<2.7", "symfony/dependency-injection": "<3.4", - "symfony/var-dumper": "<3.4" + "symfony/http-kernel": "<4.4|>=5.0", + "symfony/var-dumper": "<4.4" }, "provide": { - "psr/cache-implementation": "1.0", - "psr/simple-cache-implementation": "1.0", - "symfony/cache-implementation": "1.0" + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0|2.0", + "symfony/cache-implementation": "1.0|2.0" }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/cache": "~1.6", - "doctrine/dbal": "~2.5", - "predis/predis": "~1.1", - "psr/simple-cache": "^1.0", - "symfony/config": "~4.2", - "symfony/dependency-injection": "~3.4|~4.1", - "symfony/var-dumper": "^4.1.1" + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.7|^3.0", + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0|^2.0", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.1|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/var-dumper": "^4.4|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Cache\\": "" @@ -984,34 +1051,48 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Cache component with PSR-6, PSR-16, and tags", + "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", "homepage": "https://symfony.com", "keywords": [ "caching", "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v4.3.11" + "source": "https://github.com/symfony/cache/tree/v4.4.41" }, - "time": "2020-01-27T09:15:09+00:00" + "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-04-25T17:25:00+00:00" }, { "name": "symfony/cache-contracts", - "version": "v1.1.10", + "version": "v2.5.1", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "8d5489c10ef90aa7413e4921fc3c0520e24cbed7" + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/8d5489c10ef90aa7413e4921fc3c0520e24cbed7", - "reference": "8d5489c10ef90aa7413e4921fc3c0520e24cbed7", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/cache": "^1.0" + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" }, "suggest": { "symfony/cache-implementation": "" @@ -1019,7 +1100,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -1056,7 +1137,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v1.1.10" + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.1" }, "funding": [ { @@ -1072,46 +1153,43 @@ "type": "tidelift" } ], - "time": "2020-09-02T16:08:58+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/config", - "version": "v4.3.11", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "7b7d5d35a5ba5a62f2c6c69f574e36595e587d11" + "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/7b7d5d35a5ba5a62f2c6c69f574e36595e587d11", - "reference": "7b7d5d35a5ba5a62f2c6c69f574e36595e587d11", + "url": "https://api.github.com/repos/symfony/config/zipball/9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7", + "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/filesystem": "~3.4|~4.0", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.1.3", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" }, "conflict": { "symfony/finder": "<3.4" }, "require-dev": { - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/messenger": "~4.1", - "symfony/yaml": "~3.4|~4.0" + "symfony/event-dispatcher": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/messenger": "^4.1|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Config\\": "" @@ -1134,121 +1212,52 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Config Component", + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v4.3.10" + "source": "https://github.com/symfony/config/tree/v4.4.41" }, - "time": "2020-01-04T12:24:57+00:00" - }, - { - "name": "symfony/console", - "version": "v4.3.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "82aeab8f852a63e83d781617841237944392cd45" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/82aeab8f852a63e83d781617841237944392cd45", - "reference": "82aeab8f852a63e83d781617841237944392cd45", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/var-dumper": "^4.3" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "url": "https://github.com/fabpot", + "type": "github" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/console/tree/v4.3.11" - }, - "time": "2020-01-25T12:32:28+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { "name": "symfony/debug", - "version": "v4.3.11", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "8e362996356f2555d493ee3d8285424853955e8f" + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/8e362996356f2555d493ee3d8285424853955e8f", - "reference": "8e362996356f2555d493ee3d8285424853955e8f", + "url": "https://api.github.com/repos/symfony/debug/zipball/6637e62480b60817b9a6984154a533e8e64c6bd5", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0" + "php": ">=7.1.3", + "psr/log": "^1|^2|^3" }, "conflict": { "symfony/http-kernel": "<3.4" }, "require-dev": { - "symfony/http-kernel": "~3.4|~4.0" + "symfony/http-kernel": "^3.4|^4.0|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Debug\\": "" @@ -1271,46 +1280,61 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Debug Component", + "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.3.11" + "source": "https://github.com/symfony/debug/tree/v4.4.41" }, - "time": "2020-01-25T12:32:28+00:00" + "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-04-12T15:19:55+00:00" }, { "name": "symfony/dependency-injection", - "version": "v4.3.11", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "468bfb60a60b7caa03e4722c43f5359df47b4349" + "reference": "74c7f55de0eced4d3c9654809b1871870386a577" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/468bfb60a60b7caa03e4722c43f5359df47b4349", - "reference": "468bfb60a60b7caa03e4722c43f5359df47b4349", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/74c7f55de0eced4d3c9654809b1871870386a577", + "reference": "74c7f55de0eced4d3c9654809b1871870386a577", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.1.3", "psr/container": "^1.0", - "symfony/service-contracts": "^1.1.6" + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/config": "<4.3", + "symfony/config": "<4.3|>=5.0", "symfony/finder": "<3.4", "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" + "symfony/yaml": "<4.4.26" }, "provide": { "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0" + "symfony/service-implementation": "1.0|2.0" }, "require-dev": { "symfony/config": "^4.3", - "symfony/expression-language": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/yaml": "^4.4.26|^5.0" }, "suggest": { "symfony/config": "", @@ -1320,11 +1344,6 @@ "symfony/yaml": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\DependencyInjection\\": "" @@ -1347,45 +1366,57 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DependencyInjection Component", + "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.3.10" + "source": "https://github.com/symfony/dependency-injection/tree/v4.4.41" }, - "time": "2020-01-14T16:43:06+00:00" + "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-04-12T15:19:55+00:00" }, { - "name": "symfony/dotenv", - "version": "v4.3.11", + "name": "symfony/deprecation-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/dotenv.git", - "reference": "3e41dc2a3c517819b23cb4d1c95f5116182a8dd0" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/3e41dc2a3c517819b23cb4d1c95f5116182a8dd0", - "reference": "3e41dc2a3c517819b23cb4d1c95f5116182a8dd0", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { - "php": "^7.1.3" - }, - "require-dev": { - "symfony/process": "^3.4.2|^4.0" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\Dotenv\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1394,73 +1425,59 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Registers environment variables from a .env file", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "keywords": [ - "dotenv", - "env", - "environment" - ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v4.3.11" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" }, - "time": "2020-01-08T17:19:22+00:00" + "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-01-02T09:53:40+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v4.3.11", + "name": "symfony/dotenv", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "75f99d7489409207d09c6cd75a6c773ccbb516d5" + "url": "https://github.com/symfony/dotenv.git", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/75f99d7489409207d09c6cd75a6c773ccbb516d5", - "reference": "75f99d7489409207d09c6cd75a6c773ccbb516d5", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "php": ">=7.1.3" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "^3.4|^4.0", - "symfony/service-contracts": "^1.1", - "symfony/stopwatch": "~3.4|~4.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/process": "^3.4.2|^4.0|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Component\\Dotenv\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1480,25 +1497,196 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony EventDispatcher Component", + "description": "Registers environment variables from a .env file", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.3.10" - }, - "time": "2020-01-09T13:17:05+00:00" - }, + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "source": "https://github.com/symfony/dotenv/tree/v4.4.37" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "529feb0e03133dbd5fd3707200147cc4903206da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/529feb0e03133dbd5fd3707200147cc4903206da", + "reference": "529feb0e03133dbd5fd3707200147cc4903206da", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2|^3", + "symfony/debug": "^4.4.5", + "symfony/var-dumper": "^4.4|^5.0" + }, + "require-dev": { + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v4.4.41" + }, + "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-04-12T15:19:55+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "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" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "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.37" + }, + "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-01-02T09:41:36+00:00" + }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", + "version": "v1.1.12", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" }, "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/1d5cd762abaa6b2a4169d3e77610193a7157129e", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", "shasum": "" }, "require": { @@ -1511,7 +1699,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "1.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -1548,7 +1736,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.12" }, "funding": [ { @@ -1564,32 +1752,28 @@ "type": "tidelift" } ], - "time": "2020-07-06T13:19:58+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/filesystem", - "version": "v4.3.11", + "version": "v4.4.39", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "fdc0ac5e64f7555818411a17993bb24be4270769" + "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/fdc0ac5e64f7555818411a17993bb24be4270769", - "reference": "fdc0ac5e64f7555818411a17993bb24be4270769", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/72a5b35fecaa670b13954e6eaf414acbe2a67b35", + "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Filesystem\\": "" @@ -1612,36 +1796,46 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Filesystem Component", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v4.3.10" + "source": "https://github.com/symfony/filesystem/tree/v4.4.39" }, - "time": "2020-01-21T08:20:29+00:00" + "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-02-25T10:38:15+00:00" }, { "name": "symfony/finder", - "version": "v4.3.11", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "8174c13b932c71f10cdd8dfcd8f5e494f1e7003d" + "reference": "40790bdf293b462798882ef6da72bb49a4a6633a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8174c13b932c71f10cdd8dfcd8f5e494f1e7003d", - "reference": "8174c13b932c71f10cdd8dfcd8f5e494f1e7003d", + "url": "https://api.github.com/repos/symfony/finder/zipball/40790bdf293b462798882ef6da72bb49a4a6633a", + "reference": "40790bdf293b462798882ef6da72bb49a4a6633a", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Finder\\": "" @@ -1664,25 +1858,39 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Finder Component", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/4.3" + "source": "https://github.com/symfony/finder/tree/v4.4.41" }, - "time": "2020-01-04T12:24:57+00:00" + "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-04-14T15:36:10+00:00" }, { "name": "symfony/flex", - "version": "v1.13.3", + "version": "v1.18.7", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "2597d0dda8042c43eed44a9cd07236b897e427d7" + "reference": "e74319d17ed4edc5f27b9d24757e172930a7ebc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/2597d0dda8042c43eed44a9cd07236b897e427d7", - "reference": "2597d0dda8042c43eed44a9cd07236b897e427d7", + "url": "https://api.github.com/repos/symfony/flex/zipball/e74319d17ed4edc5f27b9d24757e172930a7ebc4", + "reference": "e74319d17ed4edc5f27b9d24757e172930a7ebc4", "shasum": "" }, "require": { @@ -1691,16 +1899,13 @@ }, "require-dev": { "composer/composer": "^1.0.2|^2.0", - "symfony/dotenv": "^4.4|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/phpunit-bridge": "^4.4|^5.0", - "symfony/process": "^3.4|^4.4|^5.0" + "symfony/dotenv": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/phpunit-bridge": "^4.4.12|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-main": "1.13-dev" - }, "class": "Symfony\\Flex\\Flex" }, "autoload": { @@ -1721,7 +1926,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.13.3" + "source": "https://github.com/symfony/flex/tree/v1.18.7" }, "funding": [ { @@ -1737,89 +1942,99 @@ "type": "tidelift" } ], - "time": "2021-05-19T07:19:15+00:00" + "time": "2022-05-02T10:18:23+00:00" }, { "name": "symfony/framework-bundle", - "version": "v4.3.11", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "4ea8f63e005af800e140c1bcfb1f748a006defd1" + "reference": "1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/4ea8f63e005af800e140c1bcfb1f748a006defd1", - "reference": "4ea8f63e005af800e140c1bcfb1f748a006defd1", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5", + "reference": "1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5", "shasum": "" }, "require": { "ext-xml": "*", - "php": "^7.1.3", - "symfony/cache": "^4.3.4", - "symfony/config": "^4.3.4", - "symfony/debug": "~4.0", - "symfony/dependency-injection": "^4.3", - "symfony/filesystem": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/http-foundation": "^4.3", - "symfony/http-kernel": "^4.3.4", + "php": ">=7.1.3", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4.11|~5.0.11|^5.1.3", + "symfony/dependency-injection": "^4.4.38|^5.0.1", + "symfony/error-handler": "^4.4.1|^5.0.1", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^4.3" + "symfony/polyfill-php80": "^1.16", + "symfony/routing": "^4.4.12|^5.1.4" }, "conflict": { "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.0", - "phpdocumentor/type-resolver": "<0.2.1", + "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.3.0|1.3.*", "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", "symfony/asset": "<3.4", "symfony/browser-kit": "<4.3", - "symfony/console": "<4.3", + "symfony/console": "<4.4.21", "symfony/dom-crawler": "<4.3", - "symfony/dotenv": "<4.2", + "symfony/dotenv": "<4.3.6", "symfony/form": "<4.3.5", - "symfony/messenger": "<4.3.6", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<4.4", + "symfony/messenger": "<4.4", + "symfony/mime": "<4.4", "symfony/property-info": "<3.4", - "symfony/serializer": "<4.2", + "symfony/security-bundle": "<4.4", + "symfony/serializer": "<4.4", "symfony/stopwatch": "<3.4", - "symfony/translation": "<4.3.6", + "symfony/translation": "<4.4", "symfony/twig-bridge": "<4.1.1", - "symfony/validator": "<4.1", + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<4.4", + "symfony/web-profiler-bundle": "<4.4", "symfony/workflow": "<4.3.6" }, "require-dev": { - "doctrine/annotations": "~1.7", - "doctrine/cache": "~1.0", - "fig/link-util": "^1.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0", - "symfony/asset": "~3.4|~4.0", - "symfony/browser-kit": "^4.3", - "symfony/console": "^4.3.4", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dom-crawler": "^4.3", - "symfony/expression-language": "~3.4|~4.0", - "symfony/form": "^4.3.5", - "symfony/http-client": "^4.3", - "symfony/lock": "~3.4|~4.0", - "symfony/mailer": "^4.3", - "symfony/messenger": "^4.3.6", - "symfony/mime": "^4.3", + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "doctrine/persistence": "^1.3|^2|^3", + "paragonie/sodium_compat": "^1.8", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.3|^5.0", + "symfony/console": "^4.4.21|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7", + "symfony/dotenv": "^4.3.6|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^4.3.5|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "~3.4|~4.0", - "symfony/property-info": "~3.4|~4.0", - "symfony/security-csrf": "~3.4|~4.0", - "symfony/security-http": "~3.4|~4.0", - "symfony/serializer": "^4.3", - "symfony/stopwatch": "~3.4|~4.0", - "symfony/templating": "~3.4|~4.0", - "symfony/translation": "^4.3.7", - "symfony/twig-bundle": "~2.8|~3.2|~4.0", - "symfony/validator": "^4.1", - "symfony/var-dumper": "^4.3", - "symfony/web-link": "~3.4|~4.0", - "symfony/workflow": "^4.3.6", - "symfony/yaml": "~3.4|~4.0", - "twig/twig": "~1.41|~2.10" + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/security-core": "^3.4|^4.4|^5.2", + "symfony/security-csrf": "^3.4|^4.0|^5.0", + "symfony/security-http": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^4.3.6|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" }, "suggest": { "ext-apcu": "For best performance of the system caches", @@ -1832,11 +2047,6 @@ "symfony/yaml": "For using the debug:config and lint:yaml commands" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Bundle\\FrameworkBundle\\": "" @@ -1859,49 +2069,61 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony FrameworkBundle", + "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v4.3.11" + "source": "https://github.com/symfony/framework-bundle/tree/v4.4.41" }, - "time": "2020-01-14T14:28:35+00:00" + "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-04-26T13:36:00+00:00" }, { - "name": "symfony/http-foundation", - "version": "v4.3.11", + "name": "symfony/http-client-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "90af881cedc857dca17990cae96f37727b8ae1d6" + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/90af881cedc857dca17990cae96f37727b8ae1d6", - "reference": "90af881cedc857dca17990cae96f37727b8ae1d6", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1a4f708e4e87f335d1b1be6148060739152f0bd5", + "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/mime": "^4.3", - "symfony/polyfill-mbstring": "~1.1" + "php": ">=7.2.5" }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "~3.4|~4.0" + "suggest": { + "symfony/http-client-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\HttpClient\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1909,87 +2131,172 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpFoundation Component", + "description": "Generic abstractions related to HTTP clients", "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.3.11" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.1" }, - "time": "2020-01-31T09:10:37+00:00" + "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-03-13T20:07:29+00:00" }, { - "name": "symfony/http-kernel", - "version": "v4.3.11", + "name": "symfony/http-foundation", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "fcd8fe5b98d435da856b310a01a4f281668607c0" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "27441220aebeb096b4eb8267acaaa7feb5e4266c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fcd8fe5b98d435da856b310a01a4f281668607c0", - "reference": "fcd8fe5b98d435da856b310a01a4f281668607c0", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27441220aebeb096b4eb8267acaaa7feb5e4266c", + "reference": "27441220aebeb096b4eb8267acaaa7feb5e4266c", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0", - "symfony/debug": "~3.4|~4.0", - "symfony/event-dispatcher": "^4.3", - "symfony/http-foundation": "^4.1.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php73": "^1.9" + "php": ">=7.1.3", + "symfony/mime": "^4.3|^5.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" }, - "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", + "require-dev": { + "predis/predis": "~1.0", + "symfony/expression-language": "^3.4|^4.0|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "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": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v4.4.41" + }, + "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-04-21T07:22:34+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "7f8ce5bffc3939c63b7da32de5a546c98eb67698" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7f8ce5bffc3939c63b7da32de5a546c98eb67698", + "reference": "7f8ce5bffc3939c63b7da32de5a546c98eb67698", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2", + "symfony/error-handler": "^4.4", + "symfony/event-dispatcher": "^4.4", + "symfony/http-client-contracts": "^1.1|^2", + "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/browser-kit": "<4.3", + "symfony/config": "<3.4", + "symfony/console": ">=5", "symfony/dependency-injection": "<4.3", "symfony/translation": "<4.2", - "symfony/var-dumper": "<4.1.1", - "twig/twig": "<1.34|<2.4,>=2" + "twig/twig": "<1.43|<2.13,>=2" }, "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "^4.3", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dependency-injection": "^4.3", - "symfony/dom-crawler": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0", - "symfony/templating": "~3.4|~4.0", - "symfony/translation": "~4.2", - "symfony/translation-contracts": "^1.1", - "symfony/var-dumper": "^4.1.1", - "twig/twig": "^1.34|^2.4" + "psr/log-implementation": "1.0|2.0" + }, + "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" }, "suggest": { "symfony/browser-kit": "", "symfony/config": "", "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/var-dumper": "" + "symfony/dependency-injection": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\HttpKernel\\": "" @@ -2012,37 +2319,47 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpKernel Component", + "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/4.3" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.41" }, - "time": "2020-01-31T12:38:38+00:00" + "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-04-27T17:13:11+00:00" }, { "name": "symfony/inflector", - "version": "v4.3.11", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/inflector.git", - "reference": "8c699257379098d26fa400edad29f703b380efcf" + "reference": "e5e4c618a40e562d51757b54305bd113df59c29f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/8c699257379098d26fa400edad29f703b380efcf", - "reference": "8c699257379098d26fa400edad29f703b380efcf", + "url": "https://api.github.com/repos/symfony/inflector/zipball/e5e4c618a40e562d51757b54305bd113df59c29f", + "reference": "e5e4c618a40e562d51757b54305bd113df59c29f", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Inflector\\": "" @@ -2065,7 +2382,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Inflector Component", + "description": "Converts words between their singular and plural forms (English only)", "homepage": "https://symfony.com", "keywords": [ "inflection", @@ -2076,40 +2393,54 @@ "words" ], "support": { - "source": "https://github.com/symfony/inflector/tree/v4.3.11" + "source": "https://github.com/symfony/inflector/tree/v4.4.37" }, - "abandoned": "use `EnglishInflector` from the String component instead", - "time": "2020-01-04T12:24:57+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "abandoned": "EnglishInflector from the String component", + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/mime", - "version": "v4.3.11", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "50f65ca2a6c33702728024d33e4b9461f67623c4" + "reference": "5b05a62a714bb7e8ba1ce7412f7442debe67c291" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/50f65ca2a6c33702728024d33e4b9461f67623c4", - "reference": "50f65ca2a6c33702728024d33e4b9461f67623c4", + "url": "https://api.github.com/repos/symfony/mime/zipball/5b05a62a714bb7e8ba1ce7412f7442debe67c291", + "reference": "5b05a62a714bb7e8ba1ce7412f7442debe67c291", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": ">=7.1.3", "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "symfony/mailer": "<4.4" }, "require-dev": { - "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "~3.4|^4.1" + "egulias/email-validator": "^2.1.10|^3.1", + "symfony/dependency-injection": "^3.4|^4.1|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Mime\\": "" @@ -2132,45 +2463,61 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A library to manipulate MIME messages", + "description": "Allows manipulating MIME messages", "homepage": "https://symfony.com", "keywords": [ "mime", "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v4.3.11" + "source": "https://github.com/symfony/mime/tree/v4.4.41" }, - "time": "2020-01-01T11:51:43+00:00" + "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-04-12T15:19:55+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v4.3.11", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "8c6a51c55add464d9e6ef7000f1877e4c75f9fbf" + "reference": "152dcde5092b6fe034369f4a2dea05de38db9b79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/8c6a51c55add464d9e6ef7000f1877e4c75f9fbf", - "reference": "8c6a51c55add464d9e6ef7000f1877e4c75f9fbf", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/152dcde5092b6fe034369f4a2dea05de38db9b79", + "reference": "152dcde5092b6fe034369f4a2dea05de38db9b79", "shasum": "" }, "require": { - "monolog/monolog": "~1.19", - "php": "^7.1.3", + "monolog/monolog": "^1.25.1", + "php": ">=7.1.3", "symfony/http-kernel": "^4.3", - "symfony/service-contracts": "^1.1" + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" }, "conflict": { "symfony/console": "<3.4", "symfony/http-foundation": "<3.4" }, "require-dev": { - "symfony/console": "~3.4|~4.0", - "symfony/security-core": "~3.4|~4.0", - "symfony/var-dumper": "~3.4|~4.0" + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/security-core": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", @@ -2178,11 +2525,6 @@ "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." }, "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Bridge\\Monolog\\": "" @@ -2205,39 +2547,53 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Monolog Bridge", + "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v4.3.11" + "source": "https://github.com/symfony/monolog-bridge/tree/v4.4.37" }, - "time": "2020-01-04T12:24:57+00:00" + "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-01-02T09:41:36+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.6.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940" + "reference": "fde12fc628162787a4e53877abadc30047fd868b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/e495f5c7e4e672ffef4357d4a4d85f010802f940", - "reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/fde12fc628162787a4e53877abadc30047fd868b", + "reference": "fde12fc628162787a4e53877abadc30047fd868b", "shasum": "" }, "require": { "monolog/monolog": "~1.22 || ~2.0", - "php": ">=5.6", - "symfony/config": "~3.4 || ~4.0 || ^5.0", - "symfony/dependency-injection": "~3.4.10 || ^4.0.10 || ^5.0", - "symfony/http-kernel": "~3.4 || ~4.0 || ^5.0", - "symfony/monolog-bridge": "~3.4 || ~4.0 || ^5.0" + "php": ">=7.1.3", + "symfony/config": "~4.4 || ^5.0 || ^6.0", + "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", + "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" }, "require-dev": { - "symfony/console": "~3.4 || ~4.0 || ^5.0", - "symfony/phpunit-bridge": "^4.4 || ^5.0", - "symfony/yaml": "~3.4 || ~4.0 || ^5.0" + "symfony/console": "~4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.2 || ^6.0", + "symfony/yaml": "~4.4 || ^5.0 || ^6.0" }, "type": "symfony-bundle", "extra": { @@ -2264,18 +2620,18 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony MonologBundle", - "homepage": "http://symfony.com", + "homepage": "https://symfony.com", "keywords": [ "log", "logging" ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.6.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.1" }, "funding": [ { @@ -2291,20 +2647,20 @@ "type": "tidelift" } ], - "time": "2020-10-06T15:12:11+00:00" + "time": "2021-11-05T10:34:29+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + "reference": "749045c69efb97c70d25d7463abba812e91f3a44" }, "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/749045c69efb97c70d25d7463abba812e91f3a44", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44", "shasum": "" }, "require": { @@ -2326,12 +2682,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2362,7 +2718,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.25.0" }, "funding": [ { @@ -2378,11 +2734,11 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2021-09-14T14:02:44+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -2411,12 +2767,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -2446,7 +2802,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.25.0" }, "funding": [ { @@ -2466,21 +2822,24 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1" + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" }, "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/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, "suggest": { "ext-mbstring": "For best performance" }, @@ -2495,12 +2854,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2526,7 +2885,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" }, "funding": [ { @@ -2542,11 +2901,11 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2021-11-30T18:21:41+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", @@ -2572,12 +2931,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2602,7 +2961,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" }, "funding": [ { @@ -2622,16 +2981,16 @@ }, { "name": "symfony/polyfill-php73", - "version": "v1.23.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", "shasum": "" }, "require": { @@ -2648,12 +3007,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -2681,7 +3040,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" }, "funding": [ { @@ -2697,37 +3056,44 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-06-05T21:20:04+00:00" }, { - "name": "symfony/process", - "version": "v4.3.11", + "name": "symfony/polyfill-php80", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "61ab103012c3072fb340447a34598714ba74ba6f" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/61ab103012c3072fb340447a34598714ba74ba6f", - "reference": "61ab103012c3072fb340447a34598714ba74ba6f", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Polyfill\\Php80\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2736,57 +3102,81 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/process/tree/v4.3.10" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" }, - "time": "2020-01-09T09:39:05+00:00" + "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-03-04T08:16:47+00:00" }, { - "name": "symfony/property-access", - "version": "v4.3.11", + "name": "symfony/polyfill-php81", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "28ecead27bd17937b3f904396b026a8e3915d0cd" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/28ecead27bd17937b3f904396b026a8e3915d0cd", - "reference": "28ecead27bd17937b3f904396b026a8e3915d0cd", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/inflector": "~3.4|~4.0" - }, - "require-dev": { - "symfony/cache": "~3.4|~4.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" + "Symfony\\Polyfill\\Php81\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2795,48 +3185,138 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony PropertyAccess Component", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property path", + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-09-13T13:58:11+00:00" + }, + { + "name": "symfony/property-access", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "363945473bc6ec784e75037b075cb98f85cdae36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/363945473bc6ec784e75037b075cb98f85cdae36", + "reference": "363945473bc6ec784e75037b075cb98f85cdae36", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/inflector": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/cache": "^3.4|^4.0|^5.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v4.3.11" + "source": "https://github.com/symfony/property-access/tree/v4.4.41" }, - "time": "2020-01-04T12:24:57+00:00" + "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-04-12T15:19:55+00:00" }, { "name": "symfony/routing", - "version": "v4.3.11", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "6cc4b6a92e3c623b2c7e56180728839b0caf8564" + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/6cc4b6a92e3c623b2c7e56180728839b0caf8564", - "reference": "6cc4b6a92e3c623b2c7e56180728839b0caf8564", + "url": "https://api.github.com/repos/symfony/routing/zipball/c25e38d403c00d5ddcfc514f016f1b534abdf052", + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" }, "conflict": { "symfony/config": "<4.2", @@ -2844,13 +3324,13 @@ "symfony/yaml": "<3.4" }, "require-dev": { - "doctrine/annotations": "~1.2", - "psr/log": "~1.0", - "symfony/config": "~4.2", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" + "doctrine/annotations": "^1.10.4", + "psr/log": "^1|^2|^3", + "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" }, "suggest": { "doctrine/annotations": "For using the annotation loader", @@ -2860,11 +3340,6 @@ "symfony/yaml": "For using the YAML loader" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Routing\\": "" @@ -2887,7 +3362,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Routing Component", + "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", "keywords": [ "router", @@ -2896,68 +3371,77 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.3.11" + "source": "https://github.com/symfony/routing/tree/v4.4.41" }, - "time": "2020-01-08T14:00:15+00:00" + "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-04-12T15:19:55+00:00" }, { "name": "symfony/security-bundle", - "version": "v4.3.11", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "1cc02bd8e44eef0bd4ecfd53a8b4d7b26f675d85" + "reference": "6549321a5abecccb311a697b6cb508a3c325ed18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/1cc02bd8e44eef0bd4ecfd53a8b4d7b26f675d85", - "reference": "1cc02bd8e44eef0bd4ecfd53a8b4d7b26f675d85", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6549321a5abecccb311a697b6cb508a3c325ed18", + "reference": "6549321a5abecccb311a697b6cb508a3c325ed18", "shasum": "" }, "require": { "ext-xml": "*", - "php": "^7.1.3", - "symfony/config": "^4.2", - "symfony/dependency-injection": "^4.2", - "symfony/http-kernel": "^4.3", - "symfony/security-core": "~4.3", - "symfony/security-csrf": "~4.2", - "symfony/security-guard": "~4.2", - "symfony/security-http": "~4.3.10|^4.4.3" + "php": ">=7.1.3", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^4.4", + "symfony/security-csrf": "^4.2|^5.0", + "symfony/security-guard": "^4.2|^5.0", + "symfony/security-http": "^4.4.5" }, "conflict": { "symfony/browser-kit": "<4.2", "symfony/console": "<3.4", - "symfony/framework-bundle": "<4.3.4", - "symfony/twig-bundle": "<4.2", - "symfony/var-dumper": "<3.4" - }, - "require-dev": { - "doctrine/doctrine-bundle": "~1.5", - "symfony/asset": "~3.4|~4.0", - "symfony/browser-kit": "~4.2", - "symfony/console": "~3.4|~4.0", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dom-crawler": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/form": "~3.4|~4.0", - "symfony/framework-bundle": "^4.3.4", - "symfony/http-foundation": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/translation": "~3.4|~4.0", - "symfony/twig-bridge": "~3.4|~4.0", - "symfony/twig-bundle": "~4.2", - "symfony/validator": "~3.4|~4.0", - "symfony/var-dumper": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0", - "twig/twig": "~1.41|~2.10" + "symfony/framework-bundle": "<4.4", + "symfony/ldap": "<4.4", + "symfony/twig-bundle": "<4.4" }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } + "require-dev": { + "doctrine/annotations": "^1.10.4", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.2|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^3.4|^4.0|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/translation": "^3.4|^4.0|^5.0", + "symfony/twig-bridge": "^3.4|^4.0|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" }, + "type": "symfony-bundle", "autoload": { "psr-4": { "Symfony\\Bundle\\SecurityBundle\\": "" @@ -2980,44 +3464,61 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony SecurityBundle", + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v4.3.10" + "source": "https://github.com/symfony/security-bundle/tree/v4.4.41" }, - "time": "2020-01-08T17:19:22+00:00" + "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-04-12T15:19:55+00:00" }, { "name": "symfony/security-core", - "version": "v4.3.11", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "8d008438e4bbdf04086d1048d51cc1b5dfac2046" + "reference": "254b083d923592383f42c45611d235b04e27749d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/8d008438e4bbdf04086d1048d51cc1b5dfac2046", - "reference": "8d008438e4bbdf04086d1048d51cc1b5dfac2046", + "url": "https://api.github.com/repos/symfony/security-core/zipball/254b083d923592383f42c45611d235b04e27749d", + "reference": "254b083d923592383f42c45611d235b04e27749d", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", - "symfony/service-contracts": "^1.1" + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/event-dispatcher": "<4.3", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/ldap": "<4.4", "symfony/security-guard": "<4.3" }, "require-dev": { - "psr/container": "^1.0", - "psr/log": "~1.0", + "psr/container": "^1.0|^2.0", + "psr/log": "^1|^2|^3", "symfony/event-dispatcher": "^4.3", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "~3.4|~4.0", - "symfony/ldap": "~3.4|~4.0", - "symfony/validator": "^3.4.31|^4.3.4" + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/ldap": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^3.4.31|^4.3.4|^5.0" }, "suggest": { "psr/container-implementation": "To instantiate the Security class", @@ -3028,11 +3529,6 @@ "symfony/validator": "For using the user password constraint" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Security\\Core\\": "" @@ -3058,43 +3554,53 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v4.3.11" + "source": "https://github.com/symfony/security-core/tree/v4.4.41" }, - "time": "2020-01-31T09:10:37+00:00" + "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-04-14T15:50:15+00:00" }, { "name": "symfony/security-csrf", - "version": "v4.3.11", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "9e435026ab45f073880d1fbe0e1b17e7df6bf642" + "reference": "45c956ef58135091f53732646a0acd28034f02c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/9e435026ab45f073880d1fbe0e1b17e7df6bf642", - "reference": "9e435026ab45f073880d1fbe0e1b17e7df6bf642", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/45c956ef58135091f53732646a0acd28034f02c0", + "reference": "45c956ef58135091f53732646a0acd28034f02c0", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/security-core": "~3.4|~4.0" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^3.4|^4.0|^5.0" }, "conflict": { "symfony/http-foundation": "<3.4" }, "require-dev": { - "symfony/http-foundation": "~3.4|~4.0" + "symfony/http-foundation": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/http-foundation": "For using the class SessionTokenStorage." }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Security\\Csrf\\": "" @@ -3120,38 +3626,47 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v4.3.10" + "source": "https://github.com/symfony/security-csrf/tree/v4.4.37" }, - "time": "2020-01-04T12:24:57+00:00" + "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-01-02T09:41:36+00:00" }, { "name": "symfony/security-guard", - "version": "v4.3.11", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/security-guard.git", - "reference": "5d87ee4ffa5aa6e594008fa3cc65bc8f86ad6438" + "reference": "cf8922b164e1659726c8852663eaaa593eef668c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/5d87ee4ffa5aa6e594008fa3cc65bc8f86ad6438", - "reference": "5d87ee4ffa5aa6e594008fa3cc65bc8f86ad6438", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/cf8922b164e1659726c8852663eaaa593eef668c", + "reference": "cf8922b164e1659726c8852663eaaa593eef668c", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/security-core": "~3.4.22|^4.2.3", - "symfony/security-http": "^4.3" + "php": ">=7.1.3", + "symfony/security-core": "^3.4.22|^4.2.3|^5.0", + "symfony/security-http": "^4.4.1" }, "require-dev": { - "psr/log": "~1.0" + "psr/log": "^1|^2|^3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Security\\Guard\\": "" @@ -3177,49 +3692,60 @@ "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-guard/tree/v4.3.10" + "source": "https://github.com/symfony/security-guard/tree/v4.4.37" }, - "time": "2020-01-04T18:57:41+00:00" + "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-01-02T09:41:36+00:00" }, { "name": "symfony/security-http", - "version": "v4.3.11", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "2b4b8632956c680400006376fad0a4f9889d4be1" + "reference": "36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/2b4b8632956c680400006376fad0a4f9889d4be1", - "reference": "2b4b8632956c680400006376fad0a4f9889d4be1", + "url": "https://api.github.com/repos/symfony/security-http/zipball/36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e", + "reference": "36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/http-foundation": "~3.4|~4.0", - "symfony/http-kernel": "^4.3", - "symfony/property-access": "~3.4|~4.0", - "symfony/security-core": "^4.3" + "php": ">=7.1.3", + "symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/property-access": "^3.4|^4.0|^5.0", + "symfony/security-core": "^4.4.8" }, "conflict": { + "symfony/event-dispatcher": ">=5", "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11" }, "require-dev": { - "psr/log": "~1.0", - "symfony/routing": "~3.4|~4.0", - "symfony/security-csrf": "^3.4.11|^4.0.11" + "psr/log": "^1|^2|^3", + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0" }, "suggest": { "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Security\\Http\\": "" @@ -3245,27 +3771,45 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/4.3" + "source": "https://github.com/symfony/security-http/tree/v4.4.41" }, - "time": "2020-01-31T09:10:37+00:00" + "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-04-12T15:19:55+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.9", + "version": "v2.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26" + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b776d18b303a39f56c63747bcb977ad4b27aca26", - "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/container": "^1.0" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -3273,7 +3817,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -3310,7 +3854,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v1.1.9" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" }, "funding": [ { @@ -3326,37 +3870,53 @@ "type": "tidelift" } ], - "time": "2020-07-06T13:19:58+00:00" + "time": "2022-03-13T20:07:29+00:00" }, { - "name": "symfony/var-exporter", - "version": "v4.3.11", + "name": "symfony/var-dumper", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "563f728784ea09c8154ea57cf8192ae5d6f0d277" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "58eb36075c04aaf92a7a9f38ee9a8b97e24eb481" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/563f728784ea09c8154ea57cf8192ae5d6f0d277", - "reference": "563f728784ea09c8154ea57cf8192ae5d6f0d277", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/58eb36075c04aaf92a7a9f38ee9a8b97e24eb481", + "reference": "58eb36075c04aaf92a7a9f38ee9a8b97e24eb481", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" }, "require-dev": { - "symfony/var-dumper": "^4.1.1" + "ext-iconv": "*", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", "autoload": { + "files": [ + "Resources/functions/dump.php" + ], "psr-4": { - "Symfony\\Component\\VarExporter\\": "" + "Symfony\\Component\\VarDumper\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -3376,162 +3936,1757 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "serialize" + "debug", + "dump" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v4.3.11" - }, - "time": "2020-01-01T11:51:43+00:00" - }, - { - "name": "symfony/web-server-bundle", - "version": "v4.3.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/web-server-bundle.git", - "reference": "2338445b78f1fb212a96f4286abdc77ee1e92607" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/web-server-bundle/zipball/2338445b78f1fb212a96f4286abdc77ee1e92607", - "reference": "2338445b78f1fb212a96f4286abdc77ee1e92607", - "shasum": "" + "source": "https://github.com/symfony/var-dumper/tree/v4.4.41" + }, + "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-04-25T21:15:06+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7", + "reference": "bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/var-dumper": "^4.4.9|^5.0.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v4.4.41" + }, + "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-04-25T17:40:48+00:00" + }, + { + "name": "symfony/yaml", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d7f637cc0f0cc14beb0984f2bb50da560b271311", + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v4.4.37" + }, + "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-01-24T20:11:01+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-03-03T08:28:38+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2022-03-03T13:19:32+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.13.2", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "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" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + }, + "time": "2021-11-30T19:35:32+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "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": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "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-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "77a32518733312af16a44300404e945338981de3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + }, + "time": "2022-03-15T21:29:03+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" + }, + { + "name": "phpspec/prophecy-phpunit", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy-phpunit.git", + "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/2d7a9df55f257d2cba9b1d0c0963a54960657177", + "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8", + "phpspec/prophecy": "^1.3", + "phpunit/phpunit": "^9.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\PhpUnit\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + } + ], + "description": "Integrating the Prophecy mocking library in PHPUnit test cases", + "homepage": "http://phpspec.net", + "keywords": [ + "phpunit", + "prophecy" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy-phpunit/issues", + "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.0.1" + }, + "time": "2020-07-09T08:33:42+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-07T09:28:20+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.20", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.0", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-04-01T12:37:26+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/http-kernel": "~3.4|~4.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/process": "^3.4.2|^4.0.2" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-04-03T09:37:03+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, - "suggest": { - "symfony/expression-language": "For using the filter option of the log server.", - "symfony/monolog-bridge": "For using the log server." + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" }, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Bundle\\WebServerBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Symfony WebServerBundle", - "homepage": "https://symfony.com", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], "support": { - "source": "https://github.com/symfony/web-server-bundle/tree/4.3" + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, - "time": "2020-01-04T12:24:57+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-11-11T14:18:36+00:00" }, { - "name": "symfony/yaml", - "version": "v4.3.11", + "name": "sebastian/global-state", + "version": "5.0.5", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "8e0a95493b734ca8195acf3e1f3d89e88b957db5" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/8e0a95493b734ca8195acf3e1f3d89e88b957db5", - "reference": "8e0a95493b734ca8195acf3e1f3d89e88b957db5", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "symfony/console": "~3.4|~4.0" + "ext-dom": "*", + "phpunit/phpunit": "^9.3" }, "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "ext-uopz": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "5.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], "support": { - "source": "https://github.com/symfony/yaml/tree/4.3" + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, - "time": "2020-01-21T11:09:03+00:00" - } - ], - "packages-dev": [ + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-02-14T08:28:10+00:00" + }, { - "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "name": "sebastian/lines-of-code", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { + "nikic/php-parser": "^4.6", "php": ">=7.3" }, "require-dev": { @@ -3540,7 +5695,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -3559,15 +5714,11 @@ "role": "lead" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" }, "funding": [ { @@ -3575,24 +5726,26 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2020-11-28T06:42:11+00:00" }, { - "name": "phpunit/php-timer", - "version": "5.0.3", + "name": "sebastian/object-enumerator", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "phpunit/phpunit": "^9.3" @@ -3600,7 +5753,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3615,18 +5768,14 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { @@ -3634,20 +5783,20 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { - "name": "sebastian/cli-parser", - "version": "1.0.1", + "name": "sebastian/object-reflector", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { @@ -3659,7 +5808,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3674,15 +5823,14 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { @@ -3690,7 +5838,7 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { "name": "sebastian/phpcpd", @@ -3714,13 +5862,187 @@ "sebastian/cli-parser": "^1.0", "sebastian/version": "^3.0" }, - "bin": [ - "phpcpd" - ], + "bin": [ + "phpcpd" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Copy/Paste Detector (CPD) for PHP code.", + "homepage": "https://github.com/sebastianbergmann/phpcpd", + "support": { + "issues": "https://github.com/sebastianbergmann/phpcpd/issues", + "source": "https://github.com/sebastianbergmann/phpcpd/tree/6.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-12-07T05:39:23+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3739,11 +6061,11 @@ "role": "lead" } ], - "description": "Copy/Paste Detector (CPD) for PHP code.", - "homepage": "https://github.com/sebastianbergmann/phpcpd", + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", "support": { - "issues": "https://github.com/sebastianbergmann/phpcpd/issues", - "source": "https://github.com/sebastianbergmann/phpcpd/tree/6.0.3" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" }, "funding": [ { @@ -3751,7 +6073,7 @@ "type": "github" } ], - "time": "2020-12-07T05:39:23+00:00" + "time": "2022-03-15T09:54:48+00:00" }, { "name": "sebastian/version", @@ -3808,16 +6130,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "version": "3.6.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", "shasum": "" }, "require": { @@ -3860,20 +6182,232 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-04-09T00:54:41+00:00" + "time": "2021-12-12T21:44:58+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "6e81008cac62369871cb6b8de64576ed138e3998" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/6e81008cac62369871cb6b8de64576ed138e3998", + "reference": "6e81008cac62369871cb6b8de64576ed138e3998", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "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": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "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": "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.37" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "0628e6c6d7c92f1a7bae543959bdc17347be2436" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/0628e6c6d7c92f1a7bae543959bdc17347be2436", + "reference": "0628e6c6d7c92f1a7bae543959bdc17347be2436", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v4.4.37" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v4.4.39", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3", + "reference": "4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "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": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v4.4.39" + }, + "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-02-25T10:38:15+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v4.4.26", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "279ffbf294759a57839afc884ccabef9a1155b23" + "reference": "66d1857e9565b70855d79e2639672b33baa9cbc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/279ffbf294759a57839afc884ccabef9a1155b23", - "reference": "279ffbf294759a57839afc884ccabef9a1155b23", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/66d1857e9565b70855d79e2639672b33baa9cbc8", + "reference": "66d1857e9565b70855d79e2639672b33baa9cbc8", "shasum": "" }, "require": { @@ -3926,7 +6460,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.26" + "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.41" }, "funding": [ { @@ -3942,61 +6476,93 @@ "type": "tidelift" } ], - "time": "2021-06-22T09:18:56+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/var-dumper", - "version": "v4.3.11", + "name": "theseer/tokenizer", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "75669a7e681cbd4a291a08ed31d2d3998fe86e48" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/75669a7e681cbd4a291a08ed31d2d3998fe86e48", - "reference": "75669a7e681cbd4a291a08ed31d2d3998fe86e48", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "ext-iconv": "*", - "symfony/console": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "twig/twig": "~1.34|~2.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + "phpunit/phpunit": "^8.5.13" }, - "bin": [ - "Resources/bin/var-dump-server" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "1.10-dev" } }, "autoload": { - "files": [ - "Resources/functions/dump.php" - ], "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Webmozart\\Assert\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4004,31 +6570,26 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", + "description": "Assertions to validate method input/output with nice error messages.", "keywords": [ - "debug", - "dump" + "assert", + "check", + "validate" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/4.3" + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" }, - "time": "2020-01-25T12:32:28+00:00" + "time": "2021-03-09T10:59:23+00:00" } ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "islandora/crayfish-commons": 20 - }, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { @@ -4037,5 +6598,5 @@ "ext-iconv": "*" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } diff --git a/Houdini/config/bootstrap.php b/Houdini/config/bootstrap.php index 9c5a99c6..0efa55f5 100644 --- a/Houdini/config/bootstrap.php +++ b/Houdini/config/bootstrap.php @@ -4,17 +4,17 @@ require dirname(__DIR__).'/vendor/autoload.php'; +if (!class_exists(Dotenv::class)) { + throw new LogicException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.'); +} + // Load cached env vars if the .env.local.php file exists // Run "composer dump-env prod" to create it (requires symfony/flex >=1.2) -if (is_array($env = @include dirname(__DIR__).'/.env.local.php')) { - foreach ($env as $k => $v) { - $_ENV[$k] = $_ENV[$k] ?? (isset($_SERVER[$k]) && 0 !== strpos($k, 'HTTP_') ? $_SERVER[$k] : $v); - } -} elseif (!class_exists(Dotenv::class)) { - throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.'); +if (is_array($env = @include dirname(__DIR__).'/.env.local.php') && (!isset($env['APP_ENV']) || ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env['APP_ENV']) === $env['APP_ENV'])) { + (new Dotenv(false))->populate($env); } else { - // load all the .env files - (new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env'); + // load all the .env files + (new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env'); } $_SERVER += $_ENV; diff --git a/Houdini/config/bundles.php b/Houdini/config/bundles.php index 88a0209f..eb075703 100644 --- a/Houdini/config/bundles.php +++ b/Houdini/config/bundles.php @@ -3,7 +3,6 @@ return [ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], Islandora\Crayfish\Commons\CrayfishCommonsBundle::class => ['all' => true], - Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['dev' => true], Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], ]; diff --git a/Houdini/config/packages/crayfish_commons.yaml b/Houdini/config/packages/crayfish_commons.yaml index f0400aca..92c45c3e 100644 --- a/Houdini/config/packages/crayfish_commons.yaml +++ b/Houdini/config/packages/crayfish_commons.yaml @@ -1,3 +1,3 @@ crayfish_commons: fedora_base_uri: 'http://localhost:8080/fcrepo/rest' - gemini_base_uri: 'http://localhost:9000/gemini' + #syn_config: '/path/to/syn-settings.xml' diff --git a/Houdini/config/packages/dev/monolog.yaml b/Houdini/config/packages/dev/monolog.yaml deleted file mode 100644 index b1998da1..00000000 --- a/Houdini/config/packages/dev/monolog.yaml +++ /dev/null @@ -1,19 +0,0 @@ -monolog: - handlers: - main: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug - channels: ["!event"] - # uncomment to get logging in your browser - # you may have to allow bigger header sizes in your Web server configuration - #firephp: - # type: firephp - # level: info - #chromephp: - # type: chromephp - # level: info - console: - type: console - process_psr_3_messages: false - channels: ["!event", "!doctrine", "!console"] diff --git a/Houdini/config/packages/dev/routing.yaml b/Houdini/config/packages/dev/routing.yaml deleted file mode 100644 index 4116679a..00000000 --- a/Houdini/config/packages/dev/routing.yaml +++ /dev/null @@ -1,3 +0,0 @@ -framework: - router: - strict_requirements: true diff --git a/Houdini/config/packages/monolog.yaml b/Houdini/config/packages/monolog.yaml index 1e91c502..f6a4e667 100644 --- a/Houdini/config/packages/monolog.yaml +++ b/Houdini/config/packages/monolog.yaml @@ -1,9 +1,27 @@ monolog: + handlers: + #main: + # type: stream + # path: "%kernel.logs_dir%/%kernel.environment%.log" + # level: debug + # channels: ["!event"] + #console: + # type: console + # process_psr_3_messages: false + # channels: ["!event", "!doctrine", "!console"] - handlers: + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info - houdini: - type: rotating_file - path: /tmp/Houdini.log - level: DEBUG - max_files: 1 + houdini: + type: rotating_file + path: /tmp/Houdini.log + level: DEBUG + max_files: 1 + channels: ["!event", "!console"] diff --git a/Houdini/config/packages/prod/monolog.yaml b/Houdini/config/packages/prod/monolog.yaml deleted file mode 100644 index 5bcdf06e..00000000 --- a/Houdini/config/packages/prod/monolog.yaml +++ /dev/null @@ -1,23 +0,0 @@ -monolog: - handlers: - main: - type: fingers_crossed - action_level: error - handler: nested - excluded_http_codes: [404, 405] - nested: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug - console: - type: console - process_psr_3_messages: false - channels: ["!event", "!doctrine"] - deprecation: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.deprecations.log" - deprecation_filter: - type: filter - handler: deprecation - max_level: info - channels: ["php"] diff --git a/Houdini/config/packages/prod/routing.yaml b/Houdini/config/packages/prod/routing.yaml new file mode 100644 index 00000000..b3e6a0af --- /dev/null +++ b/Houdini/config/packages/prod/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: null diff --git a/Houdini/config/packages/security.yaml b/Houdini/config/packages/security.yaml index 54380ed2..5195687a 100644 --- a/Houdini/config/packages/security.yaml +++ b/Houdini/config/packages/security.yaml @@ -11,14 +11,16 @@ security: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: - anonymous: false + # To enable Syn, change anonymous to false and uncomment the lines further below + anonymous: true # Need stateless or it reloads the User based on a token. stateless: true - provider: jwt_user_provider - guard: - authenticators: - - Islandora\Crayfish\Commons\Syn\JwtAuthenticator + # To enable Syn, uncomment the below 4 lines and change anonymous to false above. + #provider: jwt_user_provider + #guard: + # authenticators: + # - Islandora\Crayfish\Commons\Syn\JwtAuthenticator # activate different ways to authenticate # https://symfony.com/doc/current/security.html#firewalls-authentication diff --git a/Houdini/config/packages/test/monolog.yaml b/Houdini/config/packages/test/monolog.yaml deleted file mode 100644 index 2762653c..00000000 --- a/Houdini/config/packages/test/monolog.yaml +++ /dev/null @@ -1,7 +0,0 @@ -monolog: - handlers: - main: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug - channels: ["!event"] diff --git a/Houdini/config/packages/test/routing.yaml b/Houdini/config/packages/test/routing.yaml deleted file mode 100644 index 4116679a..00000000 --- a/Houdini/config/packages/test/routing.yaml +++ /dev/null @@ -1,3 +0,0 @@ -framework: - router: - strict_requirements: true diff --git a/Houdini/config/preload.php b/Houdini/config/preload.php new file mode 100644 index 00000000..b930de96 --- /dev/null +++ b/Houdini/config/preload.php @@ -0,0 +1,5 @@ + - ./tests/ + tests - - - - - - - ./src/Kernel.php - - ./src - - + + + + ./src + + + ./src/Kernel.php + + + + + diff --git a/Houdini/public/index.php b/Houdini/public/index.php index 4f8892f1..e350da16 100644 --- a/Houdini/public/index.php +++ b/Houdini/public/index.php @@ -1,7 +1,7 @@ cmd = $cmd; @@ -67,7 +67,7 @@ public function __construct( /** * @return \Symfony\Component\HttpFoundation\BinaryFileResponse */ - public function convertOptions() + public function convertOptions(): BinaryFileResponse { return new BinaryFileResponse( __DIR__ . "/../../public/static/convert.ttl", diff --git a/Houdini/src/Kernel.php b/Houdini/src/Kernel.php index 09bde027..065031d4 100644 --- a/Houdini/src/Kernel.php +++ b/Houdini/src/Kernel.php @@ -33,11 +33,12 @@ public function getProjectDir(): string protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void { $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); - $container->setParameter('container.dumper.inline_class_loader', true); + $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || $this->debug); + $container->setParameter('container.dumper.inline_factories', true); $confDir = $this->getProjectDir().'/config'; $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); - $loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{packages}/'.$this->environment.'/*'.self::CONFIG_EXTS, 'glob'); $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); } @@ -46,7 +47,7 @@ protected function configureRoutes(RouteCollectionBuilder $routes): void { $confDir = $this->getProjectDir().'/config'; - $routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}/'.$this->environment.'/*'.self::CONFIG_EXTS, '/', 'glob'); $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); } diff --git a/Houdini/static/convert.ttl b/Houdini/static/convert.ttl deleted file mode 100644 index f63836b7..00000000 --- a/Houdini/static/convert.ttl +++ /dev/null @@ -1,18 +0,0 @@ -@prefix apix: . -@prefix owl: . -@prefix ebucore: . -@prefix ldp: . -@prefix islandora: . -@prefix rdfs: . - -<> a apix:Extension; - rdfs:label "Image Conversion Service"; - rdfs:comment "imagemagick's convert as a microservice"; - apix:exposesService islandora:ConvertService; - apix:exposesServiceAt "svc:convert"; - apix:bindsTo <#class> . - -<#class> owl:intersectionOf ( - ldp:NonRDFSource - [ a owl:Restriction; owl:onProperty ebucore:hasMimeType; owl:hasValue "image/tiff", "image/jp2", "image/jpeg", "image/png", "image/gif", "image/bmp" ] -) . diff --git a/Houdini/static/identify.ttl b/Houdini/static/identify.ttl deleted file mode 100644 index 775e7d14..00000000 --- a/Houdini/static/identify.ttl +++ /dev/null @@ -1,18 +0,0 @@ -@prefix apix: . -@prefix owl: . -@prefix ebucore: . -@prefix ldp: . -@prefix islandora: . -@prefix rdfs: . - -<> a apix:Extension; - rdfs:label "Image Identification Service"; - rdfs:comment "imagemagick's identify as a microservice"; - apix:exposesService islandora:IdentifyService; - apix:exposesServiceAt "svc:identify"; - apix:bindsTo <#class> . - -<#class> owl:intersectionOf ( - ldp:NonRDFSource - [ a owl:Restriction; owl:onProperty ebucore:hasMimeType; owl:hasValue "image/tiff", "image/jp2", "image/jpeg", "image/png", "image/gif", "image/bmp" ] -) . diff --git a/Houdini/symfony.lock b/Houdini/symfony.lock index b8f938ef..c2d97093 100644 --- a/Houdini/symfony.lock +++ b/Houdini/symfony.lock @@ -1,13 +1,4 @@ { - "doctrine/cache": { - "version": "1.9.x-dev" - }, - "doctrine/dbal": { - "version": "2.9.x-dev" - }, - "doctrine/event-manager": { - "version": "1.0.x-dev" - }, "doctrine/instantiator": { "version": "1.4.0" }, @@ -24,10 +15,10 @@ "version": "1.x-dev" }, "islandora/chullo": { - "version": "1.0.0" + "version": "1.3.0" }, "islandora/crayfish-commons": { - "version": "dev-symfony-flex" + "version": "3.0.0" }, "ml/iri": { "version": "1.1.4" @@ -53,9 +44,6 @@ "phar-io/version": { "version": "3.0.3" }, - "php": { - "version": "7.2" - }, "phpdocumentor/reflection-common": { "version": "2.2.0" }, @@ -68,6 +56,9 @@ "phpspec/prophecy": { "version": "1.12.1" }, + "phpspec/prophecy-phpunit": { + "version": "v2.0.1" + }, "phpunit/php-code-coverage": { "version": "9.2.5" }, @@ -136,9 +127,6 @@ "sebastian/exporter": { "version": "4.0.3" }, - "sebastian/finder-facade": { - "version": "1.2.2" - }, "sebastian/global-state": { "version": "5.0.2" }, @@ -169,6 +157,9 @@ "squizlabs/php_codesniffer": { "version": "2.9.x-dev" }, + "symfony/browser-kit": { + "version": "v4.4.27" + }, "symfony/cache": { "version": "v4.3.1" }, @@ -178,18 +169,8 @@ "symfony/config": { "version": "v4.3.1" }, - "symfony/console": { - "version": "3.3", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "482d233eb8de91ebd042992077bbd5838858890c" - }, - "files": [ - "bin/console", - "config/bootstrap.php" - ] + "symfony/css-selector": { + "version": "v4.4.27" }, "symfony/debug": { "version": "v4.3.1" @@ -197,9 +178,18 @@ "symfony/dependency-injection": { "version": "v4.3.1" }, + "symfony/deprecation-contracts": { + "version": "v2.5.1" + }, + "symfony/dom-crawler": { + "version": "v4.4.30" + }, "symfony/dotenv": { "version": "v4.3.1" }, + "symfony/error-handler": { + "version": "v4.4.30" + }, "symfony/event-dispatcher": { "version": "v4.3.1" }, @@ -243,6 +233,9 @@ "src/Kernel.php" ] }, + "symfony/http-client-contracts": { + "version": "v2.4.0" + }, "symfony/http-foundation": { "version": "v4.3.1" }, @@ -303,8 +296,11 @@ "symfony/polyfill-php73": { "version": "v1.11.0" }, - "symfony/process": { - "version": "4.3.x-dev" + "symfony/polyfill-php80": { + "version": "v1.23.1" + }, + "symfony/polyfill-php81": { + "version": "v1.23.0" }, "symfony/property-access": { "version": "4.3.x-dev" @@ -357,21 +353,9 @@ "symfony/var-exporter": { "version": "v4.3.1" }, - "symfony/web-server-bundle": { - "version": "3.3", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "dae9b39fd6717970be7601101ce5aa960bf53d9a" - } - }, "symfony/yaml": { "version": "v4.3.1" }, - "theseer/fdomdocument": { - "version": "1.6.6" - }, "theseer/tokenizer": { "version": "1.2.0" }, diff --git a/Houdini/tests/HoudiniControllerTest.php b/Houdini/tests/HoudiniControllerTest.php index dade341a..7fb39391 100644 --- a/Houdini/tests/HoudiniControllerTest.php +++ b/Houdini/tests/HoudiniControllerTest.php @@ -6,6 +6,7 @@ use App\Islandora\Houdini\Controller\HoudiniController; use PHPUnit\Framework\TestCase; use Prophecy\Argument; +use Prophecy\PhpUnit\ProphecyTrait; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\StreamInterface; use Symfony\Component\HttpFoundation\Request; @@ -17,6 +18,8 @@ class HoudiniControllerTest extends TestCase { + use ProphecyTrait; + /** * @covers ::__construct * @covers ::identifyOptions diff --git a/Houdini/tests/bootstrap.php b/Houdini/tests/bootstrap.php new file mode 100644 index 00000000..469dccee --- /dev/null +++ b/Houdini/tests/bootstrap.php @@ -0,0 +1,11 @@ +bootEnv(dirname(__DIR__).'/.env'); +} diff --git a/Hypercube/.env b/Hypercube/.env new file mode 100644 index 00000000..6294ea9a --- /dev/null +++ b/Hypercube/.env @@ -0,0 +1,21 @@ +# In all environments, the following files are loaded if they exist, +# the latter taking precedence over the former: +# +# * .env contains default values for the environment variables needed by the app +# * .env.local uncommitted file with local overrides +# * .env.$APP_ENV committed environment-specific defaults +# * .env.$APP_ENV.local uncommitted environment-specific overrides +# +# Real environment variables win over .env files. +# +# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. +# +# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). +# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET=803bbdd63ea73e87e7909327c60ce74a +#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 +#TRUSTED_HOSTS='^(localhost|example\.com)$' +###< symfony/framework-bundle ### diff --git a/Hypercube/.env.test b/Hypercube/.env.test new file mode 100644 index 00000000..9e7162f0 --- /dev/null +++ b/Hypercube/.env.test @@ -0,0 +1,6 @@ +# define your env variables for the test env here +KERNEL_CLASS='App\Kernel' +APP_SECRET='$ecretf0rt3st' +SYMFONY_DEPRECATIONS_HELPER=999999 +PANTHER_APP_ENV=panther +PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots diff --git a/Hypercube/.gitignore b/Hypercube/.gitignore index 3ce5adbb..a0546673 100644 --- a/Hypercube/.gitignore +++ b/Hypercube/.gitignore @@ -1,2 +1,22 @@ -.idea -vendor +/.idea + +###> symfony/framework-bundle ### +/.env.local +/.env.local.php +/.env.*.local +/config/secrets/prod/prod.decrypt.private.php +/public/bundles/ +/var/ +/vendor/ +###< symfony/framework-bundle ### + +###> phpunit/phpunit ### +/phpunit.xml +.phpunit.result.cache +###< phpunit/phpunit ### + +###> symfony/phpunit-bridge ### +.phpunit +.phpunit.result.cache +/phpunit.xml +###< symfony/phpunit-bridge ### diff --git a/Hypercube/README.md b/Hypercube/README.md index cb81501f..6b004fcc 100644 --- a/Hypercube/README.md +++ b/Hypercube/README.md @@ -9,12 +9,11 @@ ## Installation - Install `tesseract`. On Ubuntu, this can be done with `sudo apt-get install tesseract-ocr`. If you want to install extra languages, they are available as separate packages in Ubuntu. You can use apt's autocomplete to get a quick list of them. +- Install `pdftotext`. - Clone this repository somewhere in your web root. - Install `composer`. [Install instructions here.][4] - `$ cd /path/to/Hypercube` and run `$ composer install` -- Then either - - For production, configure your web server appropriately (e.g. add a VirtualHost for Hypercube in Apache) some documentation (here)[http://silex.sensiolabs.org/doc/2.0/web_servers.html]. - - For development, run the PHP built-in web server `$ php -S localhost:8888 -t src` from Hypercube root. +- For production, configure your web server appropriately (e.g. add a VirtualHost for Hypercube in Apache). ### Apache2 @@ -24,8 +23,8 @@ To use Hypercube with Apache you need to configure your Virtualhost with a few o Here is an example configuration for Apache 2.4: ```apache - Alias "/hypercube" "/path/to/Crayfish/Hypercube/src" - + Alias "/hypercube" "/path/to/Crayfish/Hypercube/public" + FallbackResource /hypercube/index.php Require all granted DirectoryIndex index.php @@ -35,17 +34,49 @@ Here is an example configuration for Apache 2.4: This will put the Hypercube at the /hypercube endpoint on the web server. +## Upgrading + +Steps for upgrading Hypercube can be found in [UPGRADE.md](UPGRADE.md) + ## Configuration -If your tesseract installation is not on your path, then you can configure Hypercube to use a specific executable by editing `executable` entry in [config.yaml](./cfg/config.example.yaml). +Symfony uses `.dotenv` to set environment variables. You can check the [.env](./.env) in the root of the Hypercube directory. +To alter any settings, create a file called `.env.local` to store your specific changes. You can also set an actual environment +variable. + +For production use make sure to set the add `APP_ENV=prod` environment variable. + +If your `tesseract` installation is not on your path, then you can configure Hypercube to use a specific executable by editing +the `app.tesseract_executable` parameter in [`/path/to/Hypercube/config/services.yaml`](./config/services.yaml). + +If your `pdftotext` installation is not on your path, then you can configure Hypercube to use a specific executable by editing +the `app.pdftotext_executable` parameter in [`/path/to/Hypercube/config/services.yaml`](./config/services.yaml). + +You also need to set your Fedora Base Url to allow the Fedora Resource to be pulled in automatically. This is done in the +`/path/to/Hypercube/config/packages/crayfish_commons.yaml`. In the same file you can point to the location of your `syn-settings.xml`. +If you don't have a `syn-settings.xml` look at the [Syn](http://github.com/Islandora/Syn) documentation. -You also will need to set the `fedora base url` entry to point to your Fedora installation. +In order to work on larger images, be sure `post_max_size` is sufficiently large and `max_execution_time` is set to 0 in your PHP +installation's ini file. You can determine which ini file is getting used by running the command `$ php --ini`. -In order to work on larger images, be sure `post_max_size` is sufficiently large and `max_execution_time` is set to 0 in your PHP installation's ini file. You can determine which ini file is getting used by running the command `$ php --ini`. +### Logging + +To change your log settings, edit the `/path/to/Hypercube/config/packages/monolog.yaml` file. + +You can also copy the file into one of the `/path/to/Hypercube/config/packages/` directories. +Where `` is `dev`, `test`, or `prod` based on the `APP_ENV` variable (see above). The files in the specific +environment directory will take precedence over those in the `/path/to/Hypercube/config/packages` directory. + +The location specified in the configuration file for the log must be writable by the web server. + +### Disabling Syn + +There are instructions in the `/path/to/Hypercube/config/packages/security.yaml` file describing what to change and what lines +to comment out to disable Syn. ## Usage -Hypercube is meant for use with API-X. It accepts only accepts one request, a `GET` with the URI of a Fedora resource in the `ApixLdpResource` header.. +Hypercube is meant for use with API-X. It accepts only accepts one request, a `GET` with the URI of a Fedora resource in the `Apix-Ldp-Resource` header.. For example, suppose if you have a TIFF in Fedora at `http://localhost:8080/fcrepo/rest/foo/bar`. If running the PHP built-in server command described in the Installation section: ``` @@ -74,8 +105,6 @@ If you would like to contribute, please get involved by attending our weekly [Te If you would like to contribute code to the project, you need to be covered by an Islandora Foundation [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). Please see the [Contributors](http://islandora.ca/resources/contributors) pages on Islandora.ca for more information. -We recommend using the [islandora-playbook](https://github.com/Islandora-Devops/islandora-playbook) to get started. - ## License [MIT](https://opensource.org/licenses/MIT) @@ -84,4 +113,4 @@ We recommend using the [islandora-playbook](https://github.com/Islandora-Devops/ [3]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square [4]: https://getcomposer.org/download/ [9]: https://github.com/tesseract-ocr -[10]: https://github.com/fcrepo4-labs/fcrepo-api-x +[10]: https://github.com/fcrepo4-labs/fcrepo-api-x diff --git a/Hypercube/UPGRADE.md b/Hypercube/UPGRADE.md new file mode 100644 index 00000000..f38bbe7c --- /dev/null +++ b/Hypercube/UPGRADE.md @@ -0,0 +1,129 @@ +This document guides you through the process of upgrading Hypercube. First, check if a section named "Upgrade to x.x.x" exists, with x.x.x being the version you are planning to upgrade to. + +## Upgrade to 3.0.0 + +Hypercube (and all of Crayfish) adheres to [semantic versioning](https://semver.org), which makes a distinction between "major", "minor", and "patch" versions. The upgrade path will be different depending on which previous version from which you are migrating. + +### Upgrade from version 2.x.x + +Hypercube has switched from a Silex application to a Symfony application. This does not require much in code changes, but does use a different file layout. + +Previously your configuration file would be located in the `/path/to/Hypercube/config` directory and be called `config.yaml`. + +The configuration from this file will now be located several locations documented below. + +#### Executable location +Old location `/path/to/Hypercube/config/config.yaml` + +``` +--- +hypercube: + # path to the convert executable + tesseract_executable: tesseract + pdftotext_executable: pdftotext +``` + +The two "executable" variables are now located in `/path/to/Hypercube/config/services.yaml` and appears in the `parameters` + +``` +parameters: + app.tesseract_executable: tesseract + app.pdftotext_executable: pdftotext + +``` + +#### Fedora Resource +Old location `/path/to/Hypercube/config/config.yaml` + +``` +... +fedora_resource: + base_url: http://localhost:8080/fcrepo/rest +``` + +This variable is necessary for the Crayfish-Commons setup, it has been moved to `/path/to/Hypercube/config/packages/crayfish_commons.yaml` + +``` +crayfish_commons: + fedora_base_uri: 'http://localhost:8080/fcrepo/rest' +``` + +#### Log settings +Old location `/path/to/Hypercube/config/config.yaml` + +``` +... +log: + # Valid log levels are: + # DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY, NONE + # log level none won't open logfile + level: NONE + file: ../hypercube.log +``` + +This setting is in `/path/to/Hypercube/config/packages/monolog.yaml`. This file contains commented out defaults from Symfony and a new handler for Hypercube. + +``` +monolog: + handlers: + ... + hypercube: + type: rotating_file + path: /tmp/Hypercube.log + level: DEBUG + max_files: 1 + channels: ["!event", "!console"] +``` + +#### Syn settings +Old location `/path/to/Hypercube/config/config.yaml` + +``` +syn: + # toggles JWT security for service + enable: True + # Path to the syn config file for authentication. + # example can be found here: + # https://github.com/Islandora/Syn/blob/main/conf/syn-settings.example$ + config: ../syn-settings.xml +``` + +The `syn.enable` variable is no longer used as Syn is part of the security for Symfony, see [below](#enable-disable-syn) for steps to see where to enable/disable Syn. + +The `syn.config` variable is in `/path/to/Hypercube/config/crayfish_commons.yaml`. + +``` +crayfish_commons: + ... + #syn_config: '/path/to/syn-settings.xml' +``` + +`crayfish_commons.syn_config` needs to point to a file or be left commented out to use a default syn config of + +``` + + + + +``` + +##### Enable/Disable Syn +To enable/disable Syn look in the `/path/to/Hypercube/config/packages/security.yaml`. By default Syn is disabled, to enable look the below lines and follow the included instructions + +``` +security: + ... + firewall: + ... + main: + ... + # To enable Syn, change anonymous to false and uncomment the lines further below + anonymous: true + ... + # To enable Syn, uncomment the below 4 lines and change anonymous to false above. + #provider: jwt_user_provider + #guard: + # authenticators: + # - Islandora\Crayfish\Commons\Syn\JwtAuthenticator +``` + diff --git a/Hypercube/bin/phpunit b/Hypercube/bin/phpunit new file mode 100755 index 00000000..4d1ed05d --- /dev/null +++ b/Hypercube/bin/phpunit @@ -0,0 +1,13 @@ +#!/usr/bin/env php +2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "predis/predis": "~1.0", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.1.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2021-07-14T11:22:57+00:00" - }, - { - "name": "doctrine/dbal", - "version": "2.13.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.0|^2.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" - }, - "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2020.2", - "phpstan/phpstan": "0.12.81", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.5", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.6.4" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlanywhere", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.2" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "time": "2021-06-18T21:48:39+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "v0.5.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" - }, - "time": "2021-03-21T12:59:47+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2020-05-29T18:28:51+00:00" - }, { "name": "easyrdf/easyrdf", "version": "1.1.1", @@ -461,12 +117,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -498,16 +154,16 @@ }, { "name": "guzzlehttp/promises", - "version": "1.4.1", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", "shasum": "" }, "require": { @@ -519,26 +175,41 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, "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", @@ -547,22 +218,36 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" + "source": "https://github.com/guzzle/promises/tree/1.5.1" }, - "time": "2021-03-07T09:25:29+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.8.3", + "version": "1.8.5", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85" + "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/337e3ad8e5716c15f9657bd214d16cc5e69df268", + "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268", "shasum": "" }, "require": { @@ -587,12 +272,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -643,7 +328,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.3" + "source": "https://github.com/guzzle/psr7/tree/1.8.5" }, "funding": [ { @@ -659,27 +344,27 @@ "type": "tidelift" } ], - "time": "2021-10-05T13:56:00+00:00" + "time": "2022-03-20T21:51:18+00:00" }, { "name": "islandora/chullo", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/Islandora/chullo.git", - "reference": "d563d5e48ef9b15dcf45029277bbc2f6eeef2454" + "reference": "a7c1e051eab2a5077eaf5db2649201fa775c5a02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Islandora/chullo/zipball/d563d5e48ef9b15dcf45029277bbc2f6eeef2454", - "reference": "d563d5e48ef9b15dcf45029277bbc2f6eeef2454", + "url": "https://api.github.com/repos/Islandora/chullo/zipball/a7c1e051eab2a5077eaf5db2649201fa775c5a02", + "reference": "a7c1e051eab2a5077eaf5db2649201fa775c5a02", "shasum": "" }, "require": { "easyrdf/easyrdf": "^0.9 || ^1", "guzzlehttp/guzzle": "^6.1.0", "ml/json-ld": "^1.0.4", - "php": "^7.3 || ^7.4" + "php": ">=7.3" }, "require-dev": { "mockery/mockery": "^0.9", @@ -718,48 +403,57 @@ "homepage": "https://github.com/Islandora/chullo", "support": { "issues": "https://github.com/Islandora/documentation/issues", - "source": "https://github.com/Islandora/chullo/tree/1.2.0" + "source": "https://github.com/Islandora/chullo/tree/1.3.0" }, - "time": "2021-05-05T17:38:36+00:00" + "time": "2021-12-16T22:31:48+00:00" }, { "name": "islandora/crayfish-commons", - "version": "2.x-dev", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/Islandora/Crayfish-Commons.git", - "reference": "608808530c1fb280f4f35011be6dc8323a34b501" + "reference": "e7b8cbd5951286897507f6cfd3e6356201d24f48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Islandora/Crayfish-Commons/zipball/608808530c1fb280f4f35011be6dc8323a34b501", - "reference": "608808530c1fb280f4f35011be6dc8323a34b501", + "url": "https://api.github.com/repos/Islandora/Crayfish-Commons/zipball/e7b8cbd5951286897507f6cfd3e6356201d24f48", + "reference": "e7b8cbd5951286897507f6cfd3e6356201d24f48", "shasum": "" }, "require": { - "doctrine/dbal": "~2.2", - "islandora/chullo": "^1", - "monolog/monolog": "^1.22", + "islandora/chullo": "^1.0", "namshi/jose": "^7.2", - "pimple/pimple": "~3.0", "psr/log": "^1.0.1", - "silex/silex": "^2.0", - "symfony/http-foundation": "^3.4 || ^4.4", - "symfony/security": "^3.4 || ^4.4", - "symfony/yaml": "^3.4 || ^4.4" + "symfony/config": "4.4.*", + "symfony/dependency-injection": "4.4.*", + "symfony/event-dispatcher": "4.4.*", + "symfony/http-foundation": "4.4.*", + "symfony/monolog-bundle": "^3.4", + "symfony/security-bundle": "4.4.*", + "symfony/yaml": "4.4.*" + }, + "conflict": { + "symfony/symfony": "*" }, "require-dev": { "mikey179/vfsstream": "^1.6", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.0", + "phpunit/phpunit": "^9.5", "sebastian/phpcpd": "^6.0", - "squizlabs/php_codesniffer": "^3.0" + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "4.4.*" + }, + "type": "symfony-bundle", + "extra": { + "symfony": { + "allow-contrib": false, + "require": "4.4.*" + } }, - "default-branch": true, - "type": "library", "autoload": { "psr-4": { - "Islandora\\Crayfish\\Commons\\": "src/" + "Islandora\\Crayfish\\Commons\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -782,9 +476,9 @@ "homepage": "https://github.com/Islandora/Crayfish-Commons", "support": { "issues": "https://github.com/Islandora/documentation/issues", - "source": "https://github.com/Islandora/Crayfish-Commons/tree/2.x" + "source": "https://github.com/Islandora/Crayfish-Commons/tree/3.0.0" }, - "time": "2021-10-05T18:45:36+00:00" + "time": "2022-05-05T15:46:41+00:00" }, { "name": "ml/iri", @@ -892,16 +586,16 @@ }, { "name": "monolog/monolog", - "version": "1.26.1", + "version": "1.27.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5" + "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/52ebd235c1f7e0d5e1b16464b695a28335f8e44a", + "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a", "shasum": "" }, "require": { @@ -962,7 +656,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.26.1" + "source": "https://github.com/Seldaek/monolog/tree/1.27.0" }, "funding": [ { @@ -974,7 +668,7 @@ "type": "tidelift" } ], - "time": "2021-05-28T08:32:12+00:00" + "time": "2022-03-13T20:29:46+00:00" }, { "name": "namshi/jose", @@ -1044,35 +738,31 @@ "time": "2016-12-05T07:27:31+00:00" }, { - "name": "pimple/pimple", - "version": "v3.4.0", + "name": "psr/cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "86406047271859ffc13424a048541f4531f53601" + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/86406047271859ffc13424a048541f4531f53601", - "reference": "86406047271859ffc13424a048541f4531f53601", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "Pimple": "src/" + "psr-4": { + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1081,20 +771,20 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", + "description": "Common interface for caching libraries", "keywords": [ - "container", - "dependency injection" + "cache", + "psr", + "psr-6" ], "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.4.0" + "source": "https://github.com/php-fig/cache/tree/master" }, - "time": "2021-03-06T08:28:00+00:00" + "time": "2016-08-06T20:24:11+00:00" }, { "name": "psr/container", @@ -1292,69 +982,60 @@ "time": "2019-03-08T08:55:37+00:00" }, { - "name": "silex/silex", - "version": "v2.3.0", + "name": "symfony/cache", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/silexphp/Silex.git", - "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131" + "url": "https://github.com/symfony/cache.git", + "reference": "27121284fe32a7cefc225268761ec7ce1741b9ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Silex/zipball/6bc31c1b8c4ef614a7115320fd2d3b958032f131", - "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131", + "url": "https://api.github.com/repos/symfony/cache/zipball/27121284fe32a7cefc225268761ec7ce1741b9ac", + "reference": "27121284fe32a7cefc225268761ec7ce1741b9ac", "shasum": "" }, "require": { "php": ">=7.1.3", - "pimple/pimple": "^3.0", - "symfony/event-dispatcher": "^4.0", - "symfony/http-foundation": "^4.0", - "symfony/http-kernel": "^4.0", - "symfony/routing": "^4.0" + "psr/cache": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.2|^5.0" + }, + "conflict": { + "doctrine/dbal": "<2.7", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4|>=5.0", + "symfony/var-dumper": "<4.4" }, - "replace": { - "silex/api": "self.version", - "silex/providers": "self.version" + "provide": { + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0|2.0", + "symfony/cache-implementation": "1.0|2.0" }, "require-dev": { - "doctrine/dbal": "^2.2", - "monolog/monolog": "^1.4.1", - "swiftmailer/swiftmailer": "^5", - "symfony/asset": "^4.0", - "symfony/browser-kit": "^4.0", - "symfony/config": "^4.0", - "symfony/css-selector": "^4.0", - "symfony/debug": "^4.0", - "symfony/doctrine-bridge": "^4.0", - "symfony/dom-crawler": "^4.0", - "symfony/expression-language": "^4.0", - "symfony/finder": "^4.0", - "symfony/form": "^4.0", - "symfony/intl": "^4.0", - "symfony/monolog-bridge": "^4.0", - "symfony/options-resolver": "^4.0", - "symfony/phpunit-bridge": "^3.2", - "symfony/process": "^4.0", - "symfony/security": "^4.0", - "symfony/serializer": "^4.0", - "symfony/translation": "^4.0", - "symfony/twig-bridge": "^4.0", - "symfony/validator": "^4.0", - "symfony/var-dumper": "^4.0", - "symfony/web-link": "^4.0", - "twig/twig": "^2.0" + "cache/integration-tests": "dev-master", + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.7|^3.0", + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0|^2.0", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.1|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/var-dumper": "^4.4|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, "autoload": { "psr-4": { - "Silex\\": "src/Silex" - } + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1362,70 +1043,74 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "The PHP micro-framework based on the Symfony Components", - "homepage": "http://silex.sensiolabs.org", + "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", + "homepage": "https://symfony.com", "keywords": [ - "microframework" + "caching", + "psr6" ], "support": { - "issues": "https://github.com/silexphp/Silex/issues", - "source": "https://github.com/silexphp/Silex/tree/v2.3.0" + "source": "https://github.com/symfony/cache/tree/v4.4.41" }, - "abandoned": "symfony/flex", - "time": "2018-04-20T05:17:01+00:00" + "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-04-25T17:25:00+00:00" }, { - "name": "symfony/contracts", - "version": "v1.1.0", + "name": "symfony/cache-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "d3636025e8253c6144358ec0a62773cae588395b" + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/d3636025e8253c6144358ec0a62773cae588395b", - "reference": "d3636025e8253c6144358ec0a62773cae588395b", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", "shasum": "" }, "require": { - "php": "^7.1.3" - }, - "require-dev": { - "psr/cache": "^1.0", - "psr/container": "^1.0", - "symfony/polyfill-intl-idn": "^1.10" + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" }, "suggest": { - "psr/cache": "When using the Cache contracts", - "psr/container": "When using the Service contracts", - "symfony/cache-contracts-implementation": "", - "symfony/event-dispatcher-implementation": "", - "symfony/http-client-contracts-implementation": "", - "symfony/service-contracts-implementation": "", - "symfony/translation-contracts-implementation": "" + "symfony/cache-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\": "" - }, - "exclude-from-classmap": [ - "**/Tests/" - ] + "Symfony\\Contracts\\Cache\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1441,7 +1126,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A set of abstractions extracted out of the Symfony components", + "description": "Generic abstractions related to caching", "homepage": "https://symfony.com", "keywords": [ "abstractions", @@ -1452,39 +1137,62 @@ "standards" ], "support": { - "source": "https://github.com/symfony/contracts/tree/master" + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.1" }, - "time": "2019-04-27T14:29:50+00:00" + "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-01-02T09:53:40+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.25", + "name": "symfony/config", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f" + "url": "https://github.com/symfony/config.git", + "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/a8d2d5c94438548bff9f998ca874e202bb29d07f", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f", + "url": "https://api.github.com/repos/symfony/config/zipball/9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7", + "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7", "shasum": "" }, "require": { "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/polyfill-php80": "^1.15" + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" }, "conflict": { - "symfony/http-kernel": "<3.4" + "symfony/finder": "<3.4" }, "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "symfony/event-dispatcher": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/messenger": "^4.1|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\Config\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1504,10 +1212,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to ease debugging PHP code", + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.25" + "source": "https://github.com/symfony/config/tree/v4.4.41" }, "funding": [ { @@ -1523,38 +1231,39 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "name": "symfony/debug", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "url": "https://github.com/symfony/debug.git", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/debug/zipball/6637e62480b60817b9a6984154a533e8e64c6bd5", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "psr/log": "^1|^2|^3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "conflict": { + "symfony/http-kernel": "<3.4" }, + "require-dev": { + "symfony/http-kernel": "^3.4|^4.0|^5.0" + }, + "type": "library", "autoload": { - "files": [ - "function.php" + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1563,18 +1272,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A generic function and convention to trigger deprecation notices", + "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/debug/tree/v4.4.41" }, "funding": [ { @@ -1590,51 +1299,54 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v4.4.25", + "name": "symfony/dependency-injection", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "74c7f55de0eced4d3c9654809b1871870386a577" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/047773e7016e4fd45102cedf4bd2558ae0d0c32f", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/74c7f55de0eced4d3c9654809b1871870386a577", + "reference": "74c7f55de0eced4d3c9654809b1871870386a577", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "psr/container": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/config": "<4.3|>=5.0", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<4.4.26" }, "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0|2.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/config": "^4.3", "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" + "symfony/yaml": "^4.4.26|^5.0" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Component\\DependencyInjection\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1654,10 +1366,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.25" + "source": "https://github.com/symfony/dependency-injection/tree/v4.4.41" }, "funding": [ { @@ -1673,33 +1385,29 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", + "name": "symfony/deprecation-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { - "php": ">=7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -1707,9 +1415,9 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "files": [ + "function.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1725,18 +1433,1205 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/dotenv", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "require-dev": { + "symfony/process": "^3.4.2|^4.0|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Dotenv\\": "" + }, + "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": "Registers environment variables from a .env file", + "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "source": "https://github.com/symfony/dotenv/tree/v4.4.37" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "529feb0e03133dbd5fd3707200147cc4903206da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/529feb0e03133dbd5fd3707200147cc4903206da", + "reference": "529feb0e03133dbd5fd3707200147cc4903206da", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2|^3", + "symfony/debug": "^4.4.5", + "symfony/var-dumper": "^4.4|^5.0" + }, + "require-dev": { + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v4.4.41" + }, + "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-04-12T15:19:55+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "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" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "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.37" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.12" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v4.4.39", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/72a5b35fecaa670b13954e6eaf414acbe2a67b35", + "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v4.4.39" + }, + "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-02-25T10:38:15+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "40790bdf293b462798882ef6da72bb49a4a6633a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/40790bdf293b462798882ef6da72bb49a4a6633a", + "reference": "40790bdf293b462798882ef6da72bb49a4a6633a", + "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.41" + }, + "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-04-14T15:36:10+00:00" + }, + { + "name": "symfony/flex", + "version": "v1.18.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/flex.git", + "reference": "e74319d17ed4edc5f27b9d24757e172930a7ebc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/flex/zipball/e74319d17ed4edc5f27b9d24757e172930a7ebc4", + "reference": "e74319d17ed4edc5f27b9d24757e172930a7ebc4", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=7.1" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "symfony/dotenv": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/phpunit-bridge": "^4.4.12|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Flex\\Flex" + }, + "autoload": { + "psr-4": { + "Symfony\\Flex\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "Composer plugin for Symfony", + "support": { + "issues": "https://github.com/symfony/flex/issues", + "source": "https://github.com/symfony/flex/tree/v1.18.7" + }, + "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-02T10:18:23+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5", + "reference": "1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.1.3", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4.11|~5.0.11|^5.1.3", + "symfony/dependency-injection": "^4.4.38|^5.0.1", + "symfony/error-handler": "^4.4.1|^5.0.1", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/routing": "^4.4.12|^5.1.4" + }, + "conflict": { + "doctrine/persistence": "<1.3", + "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.3.0|1.3.*", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/asset": "<3.4", + "symfony/browser-kit": "<4.3", + "symfony/console": "<4.4.21", + "symfony/dom-crawler": "<4.3", + "symfony/dotenv": "<4.3.6", + "symfony/form": "<4.3.5", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<4.4", + "symfony/messenger": "<4.4", + "symfony/mime": "<4.4", + "symfony/property-info": "<3.4", + "symfony/security-bundle": "<4.4", + "symfony/serializer": "<4.4", + "symfony/stopwatch": "<3.4", + "symfony/translation": "<4.4", + "symfony/twig-bridge": "<4.1.1", + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<4.4", + "symfony/web-profiler-bundle": "<4.4", + "symfony/workflow": "<4.3.6" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "doctrine/persistence": "^1.3|^2|^3", + "paragonie/sodium_compat": "^1.8", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.3|^5.0", + "symfony/console": "^4.4.21|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7", + "symfony/dotenv": "^4.3.6|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^4.3.5|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/security-core": "^3.4|^4.4|^5.2", + "symfony/security-csrf": "^3.4|^4.0|^5.0", + "symfony/security-http": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^4.3.6|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "suggest": { + "ext-apcu": "For best performance of the system caches", + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/framework-bundle/tree/v4.4.41" + }, + "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-04-26T13:36:00+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v2.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1a4f708e4e87f335d1b1be6148060739152f0bd5", + "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/http-client-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\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" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "27441220aebeb096b4eb8267acaaa7feb5e4266c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27441220aebeb096b4eb8267acaaa7feb5e4266c", + "reference": "27441220aebeb096b4eb8267acaaa7feb5e4266c", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/mime": "^4.3|^5.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/expression-language": "^3.4|^4.0|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "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": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v4.4.41" + }, + "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-04-21T07:22:34+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "7f8ce5bffc3939c63b7da32de5a546c98eb67698" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7f8ce5bffc3939c63b7da32de5a546c98eb67698", + "reference": "7f8ce5bffc3939c63b7da32de5a546c98eb67698", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2", + "symfony/error-handler": "^4.4", + "symfony/event-dispatcher": "^4.4", + "symfony/http-client-contracts": "^1.1|^2", + "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "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|2.0" + }, + "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" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v4.4.41" + }, + "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-04-27T17:13:11+00:00" + }, + { + "name": "symfony/inflector", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/inflector.git", + "reference": "e5e4c618a40e562d51757b54305bd113df59c29f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/inflector/zipball/e5e4c618a40e562d51757b54305bd113df59c29f", + "reference": "e5e4c618a40e562d51757b54305bd113df59c29f", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Inflector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts words between their singular and plural forms (English only)", + "homepage": "https://symfony.com", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string", + "symfony", + "words" + ], + "support": { + "source": "https://github.com/symfony/inflector/tree/v4.4.37" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "abandoned": "EnglishInflector from the String component", + "time": "2022-01-02T09:41:36+00:00" + }, + { + "name": "symfony/mime", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "5b05a62a714bb7e8ba1ce7412f7442debe67c291" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/5b05a62a714bb7e8ba1ce7412f7442debe67c291", + "reference": "5b05a62a714bb7e8ba1ce7412f7442debe67c291", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "symfony/dependency-injection": "^3.4|^4.1|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "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": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v4.4.41" + }, + "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-04-12T15:19:55+00:00" + }, + { + "name": "symfony/monolog-bridge", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "152dcde5092b6fe034369f4a2dea05de38db9b79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/152dcde5092b6fe034369f4a2dea05de38db9b79", + "reference": "152dcde5092b6fe034369f4a2dea05de38db9b79", + "shasum": "" + }, + "require": { + "monolog/monolog": "^1.25.1", + "php": ">=7.1.3", + "symfony/http-kernel": "^4.3", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/console": "<3.4", + "symfony/http-foundation": "<3.4" + }, + "require-dev": { + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/security-core": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", + "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", + "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Monolog\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Monolog with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/monolog-bridge/tree/v4.4.37" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/monolog-bundle", + "version": "v3.7.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "fde12fc628162787a4e53877abadc30047fd868b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/fde12fc628162787a4e53877abadc30047fd868b", + "reference": "fde12fc628162787a4e53877abadc30047fd868b", + "shasum": "" + }, + "require": { + "monolog/monolog": "~1.22 || ~2.0", + "php": ">=7.1.3", + "symfony/config": "~4.4 || ^5.0 || ^6.0", + "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", + "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" + }, + "require-dev": { + "symfony/console": "~4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.2 || ^6.0", + "symfony/yaml": "~4.4 || ^5.0 || ^6.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MonologBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony MonologBundle", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "log", + "logging" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9" + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.1" }, "funding": [ { @@ -1752,40 +2647,47 @@ "type": "tidelift" } ], - "time": "2020-07-06T13:19:58+00:00" + "time": "2021-11-05T10:34:29+00:00" }, { - "name": "symfony/http-foundation", - "version": "v4.4.26", + "name": "symfony/polyfill-intl-idn", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8759ed5c27c2a8a47cb60f367f4be6727f08d58b", - "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.15" + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1793,18 +2695,30 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Defines an object-oriented layer for the HTTP specification", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.26" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" }, "funding": [ { @@ -1820,78 +2734,47 @@ "type": "tidelift" } ], - "time": "2021-06-26T21:56:04+00:00" + "time": "2021-09-14T14:02:44+00:00" }, { - "name": "symfony/http-kernel", - "version": "v4.2.12", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "8a7c5ef599466af6e972c705507f815df9c490ae" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8a7c5ef599466af6e972c705507f815df9c490ae", - "reference": "8a7c5ef599466af6e972c705507f815df9c490ae", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0", - "symfony/contracts": "^1.0.2", - "symfony/debug": "~3.4|~4.0", - "symfony/event-dispatcher": "~4.1", - "symfony/http-foundation": "^4.1.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php56": "~1.8" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<4.2", - "symfony/translation": "<4.2", - "symfony/var-dumper": "<4.1.1", - "twig/twig": "<1.34|<2.4,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "~3.4|~4.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dependency-injection": "^4.2", - "symfony/dom-crawler": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0", - "symfony/templating": "~3.4|~4.0", - "symfony/translation": "~4.2", - "symfony/var-dumper": "^4.1.1" + "php": ">=7.1" }, "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/var-dumper": "" + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1900,48 +2783,83 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpKernel Component", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.2.12" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" }, - "time": "2019-11-13T08:51:34+00:00" + "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-02-19T12:13:01+00:00" }, { - "name": "symfony/inflector", - "version": "v5.3.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "ce80a8295f4b08c0f4a850dd3284f95808744dba" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/ce80a8295f4b08c0f4a850dd3284f95808744dba", - "reference": "ce80a8295f4b08c0f4a850dd3284f95808744dba", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/string": "^5.2.8" + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Inflector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1949,26 +2867,25 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Converts words between their singular and plural forms (English only)", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ - "inflection", - "pluralize", - "singularize", - "string", - "symfony", - "words" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/inflector/tree/v5.3.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" }, "funding": [ { @@ -1984,52 +2901,42 @@ "type": "tidelift" } ], - "abandoned": "use `EnglishInflector` from the String component instead", - "time": "2021-05-26T17:33:56+00:00" + "time": "2021-11-30T18:21:41+00:00" }, { - "name": "symfony/mime", - "version": "v5.3.2", + "name": "symfony/polyfill-php72", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/47dd7912152b82d0d4c8d9040dbc93d6232d472a", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "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" + "php": ">=7.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Php72\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2037,22 +2944,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Allows manipulating MIME messages", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "mime", - "mime-type" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.2" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" }, "funding": [ { @@ -2068,28 +2977,25 @@ "type": "tidelift" } ], - "time": "2021-06-09T10:58:01+00:00" + "time": "2021-05-27T09:17:38+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "name": "symfony/polyfill-php73", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", "shasum": "" }, "require": { "php": ">=7.1" }, - "suggest": { - "ext-ctype": "For best performance" - }, "type": "library", "extra": { "branch-alias": { @@ -2101,11 +3007,14 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2114,24 +3023,24 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "ctype", "polyfill", - "portable" + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" }, "funding": [ { @@ -2147,28 +3056,25 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-06-05T21:20:04+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.0", + "name": "symfony/polyfill-php80", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", "shasum": "" }, "require": { "php": ">=7.1" }, - "suggest": { - "ext-intl": "For best performance" - }, "type": "library", "extra": { "branch-alias": { @@ -2180,11 +3086,14 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2192,6 +3101,10 @@ "MIT" ], "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -2201,18 +3114,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "grapheme", - "intl", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" }, "funding": [ { @@ -2228,29 +3139,24 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-03-04T08:16:47+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "name": "symfony/polyfill-php81", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" }, "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-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=7.1" }, "type": "library", "extra": { @@ -2263,11 +3169,14 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2276,30 +3185,24 @@ ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "idn", - "intl", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" }, "funding": [ { @@ -2315,47 +3218,40 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2021-09-13T13:58:11+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "name": "symfony/property-access", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "url": "https://github.com/symfony/property-access.git", + "reference": "363945473bc6ec784e75037b075cb98f85cdae36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/property-access/zipball/363945473bc6ec784e75037b075cb98f85cdae36", + "reference": "363945473bc6ec784e75037b075cb98f85cdae36", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/inflector": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/cache": "^3.4|^4.0|^5.0" }, "suggest": { - "ext-intl": "For best performance" + "psr/cache-implementation": "To cache access methods." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + "Symfony\\Component\\PropertyAccess\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2364,26 +3260,29 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", + "description": "Provides functions to read and write from/to an object or array using a simple string notation", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/property-access/tree/v4.4.41" }, "funding": [ { @@ -2399,44 +3298,54 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "name": "symfony/routing", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "url": "https://github.com/symfony/routing.git", + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/routing/zipball/c25e38d403c00d5ddcfc514f016f1b534abdf052", + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "psr/log": "^1|^2|^3", + "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" }, "suggest": { - "ext-mbstring": "For best performance" + "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", + "symfony/yaml": "For using the YAML loader" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Component\\Routing\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2445,25 +3354,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "router", + "routing", + "uri", + "url" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/routing/tree/v4.4.41" }, "funding": [ { @@ -2479,34 +3387,68 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/polyfill-php56", - "version": "v1.20.0", + "name": "symfony/security-bundle", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" + "url": "https://github.com/symfony/security-bundle.git", + "reference": "6549321a5abecccb311a697b6cb508a3c325ed18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6549321a5abecccb311a697b6cb508a3c325ed18", + "reference": "6549321a5abecccb311a697b6cb508a3c325ed18", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-xml": "*", + "php": ">=7.1.3", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^4.4", + "symfony/security-csrf": "^4.2|^5.0", + "symfony/security-guard": "^4.2|^5.0", + "symfony/security-http": "^4.4.5" }, - "type": "metapackage", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" + "conflict": { + "symfony/browser-kit": "<4.2", + "symfony/console": "<3.4", + "symfony/framework-bundle": "<4.4", + "symfony/ldap": "<4.4", + "symfony/twig-bundle": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.2|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^3.4|^4.0|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/translation": "^3.4|^4.0|^5.0", + "symfony/twig-bridge": "^3.4|^4.0|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SecurityBundle\\": "" }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2514,24 +3456,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.0" + "source": "https://github.com/symfony/security-bundle/tree/v4.4.41" }, "funding": [ { @@ -2547,34 +3483,59 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.20.0", + "name": "symfony/security-core", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" + "url": "https://github.com/symfony/security-core.git", + "reference": "254b083d923592383f42c45611d235b04e27749d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", + "url": "https://api.github.com/repos/symfony/security-core/zipball/254b083d923592383f42c45611d235b04e27749d", + "reference": "254b083d923592383f42c45611d235b04e27749d", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" }, - "type": "metapackage", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" + "conflict": { + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/ldap": "<4.4", + "symfony/security-guard": "<4.3" + }, + "require-dev": { + "psr/container": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/ldap": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^3.4.31|^4.3.4|^5.0" + }, + "suggest": { + "psr/container-implementation": "To instantiate the Security class", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/ldap": "For using LDAP integration", + "symfony/validator": "For using the user password constraint" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Core\\": "" }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2582,24 +3543,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0" + "source": "https://github.com/symfony/security-core/tree/v4.4.41" }, "funding": [ { @@ -2615,41 +3570,43 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2022-04-14T15:50:15+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.23.0", + "name": "symfony/security-csrf", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "url": "https://github.com/symfony/security-csrf.git", + "reference": "45c956ef58135091f53732646a0acd28034f02c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/45c956ef58135091f53732646a0acd28034f02c0", + "reference": "45c956ef58135091f53732646a0acd28034f02c0", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^3.4|^4.0|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "symfony/http-foundation": "<3.4" + }, + "require-dev": { + "symfony/http-foundation": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/http-foundation": "For using the class SessionTokenStorage." }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" + "Symfony\\Component\\Security\\Csrf\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2658,24 +3615,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + "source": "https://github.com/symfony/security-csrf/tree/v4.4.37" }, "funding": [ { @@ -2691,44 +3642,37 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.23.0", + "name": "symfony/security-guard", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" + "url": "https://github.com/symfony/security-guard.git", + "reference": "cf8922b164e1659726c8852663eaaa593eef668c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/cf8922b164e1659726c8852663eaaa593eef668c", + "reference": "cf8922b164e1659726c8852663eaaa593eef668c", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "php": ">=7.1.3", + "symfony/security-core": "^3.4.22|^4.2.3|^5.0", + "symfony/security-http": "^4.4.1" }, + "require-dev": { + "psr/log": "^1|^2|^3" + }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Component\\Security\\Guard\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2737,28 +3681,18 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" + "source": "https://github.com/symfony/security-guard/tree/v4.4.37" }, "funding": [ { @@ -2774,36 +3708,47 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "symfony/property-access", - "version": "v4.4.25", + "name": "symfony/security-http", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "3af7c21b4128eadbace0800b51054a81bff896c6" + "url": "https://github.com/symfony/security-http.git", + "reference": "36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/3af7c21b4128eadbace0800b51054a81bff896c6", - "reference": "3af7c21b4128eadbace0800b51054a81bff896c6", + "url": "https://api.github.com/repos/symfony/security-http/zipball/36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e", + "reference": "36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0" + "symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/property-access": "^3.4|^4.0|^5.0", + "symfony/security-core": "^4.4.8" + }, + "conflict": { + "symfony/event-dispatcher": ">=5", + "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11" }, "require-dev": { - "symfony/cache": "^3.4|^4.0|^5.0" + "psr/log": "^1|^2|^3", + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0" }, "suggest": { - "psr/cache-implementation": "To cache access methods." + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" + "Symfony\\Component\\Security\\Http\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2823,21 +3768,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property path", - "reflection" - ], "support": { - "source": "https://github.com/symfony/property-access/tree/v4.4.25" + "source": "https://github.com/symfony/security-http/tree/v4.4.41" }, "funding": [ { @@ -2853,54 +3787,47 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/routing", - "version": "v4.4.25", + "name": "symfony/service-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3a3c2f197ad0846ac6413225fc78868ba1c61434", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.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" + "ext-psr": "<1.1|>=2" }, "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", - "symfony/yaml": "For using the YAML loader" + "symfony/service-implementation": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2908,24 +3835,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Maps an HTTP request to a set of configuration variables", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ - "router", - "routing", - "uri", - "url" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.25" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" }, "funding": [ { @@ -2941,66 +3870,56 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-03-13T20:07:29+00:00" }, { - "name": "symfony/security", - "version": "v3.4.49", + "name": "symfony/var-dumper", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/security.git", - "reference": "ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "58eb36075c04aaf92a7a9f38ee9a8b97e24eb481" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security/zipball/ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3", - "reference": "ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/58eb36075c04aaf92a7a9f38ee9a8b97e24eb481", + "reference": "58eb36075c04aaf92a7a9f38ee9a8b97e24eb481", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~3.4.40|^4.4.7", - "symfony/http-kernel": "~3.3|~4.0", - "symfony/polyfill-php56": "~1.0", - "symfony/polyfill-php70": "~1.0", - "symfony/property-access": "~2.8|~3.0|~4.0" - }, - "replace": { - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version" + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" }, "require-dev": { - "psr/container": "^1.0", - "psr/log": "~1.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/ldap": "~3.1|~4.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "~2.8|~3.0|~4.0", - "symfony/validator": "^3.2.5|~4.0" + "ext-iconv": "*", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" }, "suggest": { - "psr/container-implementation": "To instantiate the Security class", - "symfony/expression-language": "For using the expression voter", - "symfony/form": "", - "symfony/ldap": "For using the LDAP user and authentication providers", - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/validator": "For using the user password constraint" + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "autoload": { + "files": [ + "Resources/functions/dump.php" + ], "psr-4": { - "Symfony\\Component\\Security\\": "" + "Symfony\\Component\\VarDumper\\": "" }, "exclude-from-classmap": [ - "/Core/Tests/", - "/Csrf/Tests/", - "/Guard/Tests/", - "/Http/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3009,18 +3928,22 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], "support": { - "source": "https://github.com/symfony/security/tree/v3.4.49" + "source": "https://github.com/symfony/var-dumper/tree/v4.4.41" }, "funding": [ { @@ -3036,44 +3959,34 @@ "type": "tidelift" } ], - "time": "2021-05-19T12:03:21+00:00" + "time": "2022-04-25T21:15:06+00:00" }, { - "name": "symfony/string", - "version": "v5.3.3", + "name": "symfony/var-exporter", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1" + "url": "https://github.com/symfony/var-exporter.git", + "reference": "bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7", + "reference": "bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/var-dumper": "^4.4.9|^5.0.9" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\String\\": "" + "Symfony\\Component\\VarExporter\\": "" }, - "files": [ - "Resources/functions.php" - ], "exclude-from-classmap": [ "/Tests/" ] @@ -3092,18 +4005,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "description": "Allows exporting any serializable PHP data structure to plain PHP code", "homepage": "https://symfony.com", "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.3" + "source": "https://github.com/symfony/var-exporter/tree/v4.4.41" }, "funding": [ { @@ -3119,20 +4032,20 @@ "type": "tidelift" } ], - "time": "2021-06-27T11:44:38+00:00" + "time": "2022-04-25T17:40:48+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.26", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8" + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8", - "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d7f637cc0f0cc14beb0984f2bb50da560b271311", + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311", "shasum": "" }, "require": { @@ -3174,7 +4087,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.26" + "source": "https://github.com/symfony/yaml/tree/v4.4.37" }, "funding": [ { @@ -3190,35 +4103,36 @@ "type": "tidelift" } ], - "time": "2021-06-23T19:06:53+00:00" + "time": "2022-01-24T20:11:01+00:00" } ], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -3245,7 +4159,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -3261,41 +4175,42 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3311,7 +4226,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -3319,20 +4234,20 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "nikic/php-parser", - "version": "v4.11.0", + "version": "v4.13.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94" + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/fe14cf3672a149364fb66dfe11bf6549af899f94", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", "shasum": "" }, "require": { @@ -3373,22 +4288,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.11.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" }, - "time": "2021-07-03T13:36:55+00:00" + "time": "2021-11-30T19:35:32+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { @@ -3433,22 +4348,22 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2020-06-27T14:33:11+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -3484,9 +4399,9 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -3543,16 +4458,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { @@ -3563,7 +4478,8 @@ "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -3593,22 +4509,22 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2020-09-03T19:13:55+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "reference": "77a32518733312af16a44300404e945338981de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", "shasum": "" }, "require": { @@ -3616,7 +4532,8 @@ "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "*" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -3642,39 +4559,39 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" }, - "time": "2020-09-17T18:55:26+00:00" + "time": "2022-03-15T21:29:03+00:00" }, { "name": "phpspec/prophecy", - "version": "1.13.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", + "php": "^7.2 || ~8.0, <8.2", "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0", "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^6.0", + "phpspec/phpspec": "^6.0 || ^7.0", "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -3709,29 +4626,81 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" + }, + { + "name": "phpspec/prophecy-phpunit", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy-phpunit.git", + "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/2d7a9df55f257d2cba9b1d0c0963a54960657177", + "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8", + "phpspec/prophecy": "^1.3", + "phpunit/phpunit": "^9.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\PhpUnit\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + } + ], + "description": "Integrating the Prophecy mocking library in PHPUnit test cases", + "homepage": "http://phpspec.net", + "keywords": [ + "phpunit", + "prophecy" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy-phpunit/issues", + "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.0.1" }, - "time": "2021-03-17T13:42:18+00:00" + "time": "2020-07-09T08:33:42+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.6", + "version": "9.2.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", + "nikic/php-parser": "^4.13.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -3780,7 +4749,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" }, "funding": [ { @@ -3788,20 +4757,20 @@ "type": "github" } ], - "time": "2021-03-28T07:26:59+00:00" + "time": "2022-03-07T09:28:20+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -3840,7 +4809,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -3848,7 +4817,7 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -4033,16 +5002,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.6", + "version": "9.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb" + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", "shasum": "" }, "require": { @@ -4054,11 +5023,11 @@ "ext-xml": "*", "ext-xmlwriter": "*", "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.1", + "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -4072,7 +5041,7 @@ "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.0", "sebastian/version": "^3.0.2" }, "require-dev": { @@ -4093,11 +5062,11 @@ } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4120,11 +5089,11 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { @@ -4132,7 +5101,7 @@ "type": "github" } ], - "time": "2021-06-23T05:14:38+00:00" + "time": "2022-04-01T12:37:26+00:00" }, { "name": "sebastian/cli-parser", @@ -4500,16 +5469,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -4551,7 +5520,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -4559,20 +5528,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { @@ -4621,14 +5590,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { @@ -4636,20 +5605,20 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -4692,7 +5661,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -4700,7 +5669,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -4873,21 +5842,21 @@ }, { "name": "sebastian/phpcpd", - "version": "6.0.0", + "version": "6.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpcpd.git", - "reference": "8dd79906db80bb16e61eb08a0394457256224ddb" + "reference": "f3683aa0db2e8e09287c2bb33a595b2873ea9176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/8dd79906db80bb16e61eb08a0394457256224ddb", - "reference": "8dd79906db80bb16e61eb08a0394457256224ddb", + "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/f3683aa0db2e8e09287c2bb33a595b2873ea9176", + "reference": "f3683aa0db2e8e09287c2bb33a595b2873ea9176", "shasum": "" }, "require": { "ext-dom": "*", - "php": "^7.3", + "php": ">=7.3", "phpunit/php-file-iterator": "^3.0", "phpunit/php-timer": "^5.0", "sebastian/cli-parser": "^1.0", @@ -4922,7 +5891,7 @@ "homepage": "https://github.com/sebastianbergmann/phpcpd", "support": { "issues": "https://github.com/sebastianbergmann/phpcpd/issues", - "source": "https://github.com/sebastianbergmann/phpcpd/tree/6.0.0" + "source": "https://github.com/sebastianbergmann/phpcpd/tree/6.0.3" }, "funding": [ { @@ -4930,7 +5899,7 @@ "type": "github" } ], - "time": "2020-08-13T08:19:29+00:00" + "time": "2020-12-07T05:39:23+00:00" }, { "name": "sebastian/recursion-context", @@ -5052,28 +6021,28 @@ }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5096,7 +6065,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" }, "funding": [ { @@ -5104,7 +6073,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2022-03-15T09:54:48+00:00" }, { "name": "sebastian/version", @@ -5161,16 +6130,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "version": "3.6.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", "shasum": "" }, "require": { @@ -5213,29 +6182,32 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-04-09T00:54:41+00:00" + "time": "2021-12-12T21:44:58+00:00" }, { "name": "symfony/browser-kit", - "version": "v3.4.47", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c" + "reference": "6e81008cac62369871cb6b8de64576ed138e3998" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c", - "reference": "9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/6e81008cac62369871cb6b8de64576ed138e3998", + "reference": "6e81008cac62369871cb6b8de64576ed138e3998", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/dom-crawler": "~2.8|~3.0|~4.0" + "php": ">=7.1.3", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0" + "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": "" @@ -5263,10 +6235,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony BrowserKit Component", + "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/v3.4.47" + "source": "https://github.com/symfony/browser-kit/tree/v4.4.37" }, "funding": [ { @@ -5282,24 +6254,25 @@ "type": "tidelift" } ], - "time": "2020-10-24T10:57:07+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.47", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "da3d9da2ce0026771f5fe64cb332158f1bd2bc33" + "reference": "0628e6c6d7c92f1a7bae543959bdc17347be2436" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/da3d9da2ce0026771f5fe64cb332158f1bd2bc33", - "reference": "da3d9da2ce0026771f5fe64cb332158f1bd2bc33", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/0628e6c6d7c92f1a7bae543959bdc17347be2436", + "reference": "0628e6c6d7c92f1a7bae543959bdc17347be2436", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -5328,10 +6301,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony CssSelector Component", + "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v3.4.47" + "source": "https://github.com/symfony/css-selector/tree/v4.4.37" }, "funding": [ { @@ -5347,26 +6320,27 @@ "type": "tidelift" } ], - "time": "2020-10-24T10:57:07+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.25", + "version": "v4.4.39", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef" + "reference": "4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/41d15bb6d6b95d2be763c514bb2494215d9c5eef", - "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3", + "reference": "4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3", "shasum": "" }, "require": { "php": ">=7.1.3", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" }, "conflict": { "masterminds/html5": "<2.6" @@ -5404,7 +6378,89 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.25" + "source": "https://github.com/symfony/dom-crawler/tree/v4.4.39" + }, + "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-02-25T10:38:15+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "66d1857e9565b70855d79e2639672b33baa9cbc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/66d1857e9565b70855d79e2639672b33baa9cbc8", + "reference": "66d1857e9565b70855d79e2639672b33baa9cbc8", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|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" + }, + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", + "extra": { + "thanks": { + "name": "phpunit/phpunit", + "url": "https://github.com/sebastianbergmann/phpunit" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides utilities for PHPUnit, especially user deprecation notices management", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.41" }, "funding": [ { @@ -5420,20 +6476,20 @@ "type": "tidelift" } ], - "time": "2021-05-26T11:20:16+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "75a63c33a8577608444246075ea0af0d052e452a" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", - "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { @@ -5462,7 +6518,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/master" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, "funding": [ { @@ -5470,7 +6526,7 @@ "type": "github" } ], - "time": "2020-07-12T23:59:07+00:00" + "time": "2021-07-28T10:34:58+00:00" }, { "name": "webmozart/assert", @@ -5537,8 +6593,10 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.3 || ^7.4" + "php": "^7.3 || ^7.4", + "ext-ctype": "*", + "ext-iconv": "*" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } diff --git a/Hypercube/config/bootstrap.php b/Hypercube/config/bootstrap.php new file mode 100644 index 00000000..55560fb8 --- /dev/null +++ b/Hypercube/config/bootstrap.php @@ -0,0 +1,23 @@ +=1.2) +if (is_array($env = @include dirname(__DIR__).'/.env.local.php') && (!isset($env['APP_ENV']) || ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env['APP_ENV']) === $env['APP_ENV'])) { + (new Dotenv(false))->populate($env); +} else { + // load all the .env files + (new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env'); +} + +$_SERVER += $_ENV; +$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; +$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; +$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; diff --git a/Hypercube/config/bundles.php b/Hypercube/config/bundles.php new file mode 100644 index 00000000..17f89aa1 --- /dev/null +++ b/Hypercube/config/bundles.php @@ -0,0 +1,8 @@ + ['all' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + Islandora\Crayfish\Commons\CrayfishCommonsBundle::class => ['all' => true], +]; diff --git a/Hypercube/config/packages/cache.yaml b/Hypercube/config/packages/cache.yaml new file mode 100644 index 00000000..6899b720 --- /dev/null +++ b/Hypercube/config/packages/cache.yaml @@ -0,0 +1,19 @@ +framework: + cache: + # Unique name of your app: used to compute stable namespaces for cache keys. + #prefix_seed: your_vendor_name/app_name + + # The "app" cache stores to the filesystem by default. + # The data in this cache should persist between deploys. + # Other options include: + + # Redis + #app: cache.adapter.redis + #default_redis_provider: redis://localhost + + # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) + #app: cache.adapter.apcu + + # Namespaced pools use the above "app" backend by default + #pools: + #my.dedicated.cache: null diff --git a/Hypercube/config/packages/crayfish_commons.yaml b/Hypercube/config/packages/crayfish_commons.yaml new file mode 100644 index 00000000..92c45c3e --- /dev/null +++ b/Hypercube/config/packages/crayfish_commons.yaml @@ -0,0 +1,3 @@ +crayfish_commons: + fedora_base_uri: 'http://localhost:8080/fcrepo/rest' + #syn_config: '/path/to/syn-settings.xml' diff --git a/Hypercube/config/packages/framework.yaml b/Hypercube/config/packages/framework.yaml new file mode 100644 index 00000000..cad7f780 --- /dev/null +++ b/Hypercube/config/packages/framework.yaml @@ -0,0 +1,17 @@ +# see https://symfony.com/doc/current/reference/configuration/framework.html +framework: + secret: '%env(APP_SECRET)%' + #csrf_protection: true + #http_method_override: true + + # Enables session support. Note that the session will ONLY be started if you read or write from it. + # Remove or comment this section to explicitly disable session support. + session: + handler_id: null + cookie_secure: auto + cookie_samesite: lax + + #esi: true + #fragments: true + php_errors: + log: true diff --git a/Hypercube/config/packages/monolog.yaml b/Hypercube/config/packages/monolog.yaml new file mode 100644 index 00000000..8460ccfa --- /dev/null +++ b/Hypercube/config/packages/monolog.yaml @@ -0,0 +1,27 @@ +monolog: + handlers: + #main: + # type: stream + # path: "%kernel.logs_dir%/%kernel.environment%.log" + # level: debug + # channels: ["!event"] + #console: + # type: console + # process_psr_3_messages: false + # channels: ["!event", "!doctrine", "!console"] + + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + + hypercube: + type: rotating_file + path: /tmp/Hypercube.log + level: DEBUG + max_files: 1 + channels: ["!event", "!console"] \ No newline at end of file diff --git a/Hypercube/config/packages/prod/routing.yaml b/Hypercube/config/packages/prod/routing.yaml new file mode 100644 index 00000000..b3e6a0af --- /dev/null +++ b/Hypercube/config/packages/prod/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: null diff --git a/Hypercube/config/packages/routing.yaml b/Hypercube/config/packages/routing.yaml new file mode 100644 index 00000000..7e977620 --- /dev/null +++ b/Hypercube/config/packages/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + utf8: true diff --git a/Hypercube/config/packages/security.yaml b/Hypercube/config/packages/security.yaml new file mode 100644 index 00000000..f96d6af1 --- /dev/null +++ b/Hypercube/config/packages/security.yaml @@ -0,0 +1,33 @@ +security: + # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers + providers: + users_in_memory: { memory: null } + jwt_user_provider: + id: Islandora\Crayfish\Commons\Syn\JwtUserProvider + firewalls: + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + main: + # To enable Syn, change anonymous to false and uncomment the lines further below + anonymous: true + # Need stateless or it reloads the User based on a token. + stateless: true + + # To enable Syn, uncomment the below 4 lines and change anonymous to false above. + #provider: jwt_user_provider + #guard: + # authenticators: + # - Islandora\Crayfish\Commons\Syn\JwtAuthenticator + + # activate different ways to authenticate + # https://symfony.com/doc/current/security.html#firewalls-authentication + + # https://symfony.com/doc/current/security/impersonating_user.html + # switch_user: true + + # Easy way to control access for large sections of your site + # Note: Only the *first* access control that matches will be used + access_control: + # - { path: ^/admin, roles: ROLE_ADMIN } + # - { path: ^/profile, roles: ROLE_USER } diff --git a/Hypercube/config/packages/test/framework.yaml b/Hypercube/config/packages/test/framework.yaml new file mode 100644 index 00000000..d051c840 --- /dev/null +++ b/Hypercube/config/packages/test/framework.yaml @@ -0,0 +1,4 @@ +framework: + test: true + session: + storage_id: session.storage.mock_file diff --git a/Hypercube/config/preload.php b/Hypercube/config/preload.php new file mode 100644 index 00000000..064bdcd6 --- /dev/null +++ b/Hypercube/config/preload.php @@ -0,0 +1,9 @@ + - - - - ./src - - - ./src/index.php - ./src/app.php - - - - - - - - ./tests/ - - - + + + + + + + + + + + + + + + tests + + + + + + ./src + + + ./src/Kernel.php + + + + + + + + + + + + diff --git a/Hypercube/public/index.php b/Hypercube/public/index.php new file mode 100644 index 00000000..08733ddf --- /dev/null +++ b/Hypercube/public/index.php @@ -0,0 +1,27 @@ +handle($request); +$response->send(); +$kernel->terminate($request, $response); diff --git a/Hypercube/static/hypercube.ttl b/Hypercube/public/static/convert.ttl similarity index 100% rename from Hypercube/static/hypercube.ttl rename to Hypercube/public/static/convert.ttl diff --git a/Hypercube/src/Controller/HypercubeController.php b/Hypercube/src/Controller/HypercubeController.php index 234712c0..2e697091 100644 --- a/Hypercube/src/Controller/HypercubeController.php +++ b/Hypercube/src/Controller/HypercubeController.php @@ -1,11 +1,10 @@ cmd = $cmd; $this->tesseract_executable = $tesseract_executable; @@ -61,7 +60,7 @@ public function __construct( * @param \Symfony\Component\HttpFoundation\Request $request * @return \Symfony\Component\HttpFoundation\Response|\Symfony\Component\HttpFoundation\StreamedResponse */ - public function get(Request $request) + public function ocr(Request $request) { // Hack the fedora resource out of the attributes. $fedora_resource = $request->attributes->get('fedora_resource'); @@ -74,7 +73,7 @@ public function get(Request $request) // Check content type and use the appropriate command line tool. $content_type = $fedora_resource->getHeader('Content-Type')[0]; - + $this->log->debug("Got Content-Type:", ['type' => $content_type]); if ($content_type == 'application/pdf') { @@ -97,10 +96,14 @@ public function get(Request $request) } } - public function options() + /** + * Return Options response. + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + */ + public function options(): BinaryFileResponse { return new BinaryFileResponse( - __DIR__ . "/../../static/hypercube.ttl", + __DIR__ . "/../../public/static/convert.ttl", 200, ['Content-Type' => 'text/turtle'] ); diff --git a/Hypercube/src/Kernel.php b/Hypercube/src/Kernel.php new file mode 100644 index 00000000..50b6fde2 --- /dev/null +++ b/Hypercube/src/Kernel.php @@ -0,0 +1,54 @@ +getProjectDir().'/config/bundles.php'; + foreach ($contents as $class => $envs) { + if ($envs[$this->environment] ?? $envs['all'] ?? false) { + yield new $class(); + } + } + } + + public function getProjectDir(): string + { + return \dirname(__DIR__); + } + + protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void + { + $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); + $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || $this->debug); + $container->setParameter('container.dumper.inline_factories', true); + $confDir = $this->getProjectDir().'/config'; + + $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{packages}/'.$this->environment.'/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); + } + + protected function configureRoutes(RouteCollectionBuilder $routes): void + { + $confDir = $this->getProjectDir().'/config'; + + $routes->import($confDir.'/{routes}/'.$this->environment.'/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); + } +} diff --git a/Hypercube/src/app.php b/Hypercube/src/app.php deleted file mode 100644 index 582f0934..00000000 --- a/Hypercube/src/app.php +++ /dev/null @@ -1,31 +0,0 @@ -register(new IslandoraServiceProvider()); -$app->register(new YamlConfigServiceProvider(__DIR__ . '/../cfg/config.yaml')); - -$app['hypercube.controller'] = function ($app) { - return new HypercubeController( - $app['crayfish.cmd_execute_service'], - $app['crayfish.hypercube.tesseract_executable'], - $app['crayfish.hypercube.pdftotext_executable'], - $app['monolog'] - ); -}; - -$app->get('/', "hypercube.controller:get") - ->before(function (Request $request, Application $app) { - return $app['crayfish.apix_middleware']->before($request); - }); - -$app->options('/', "hypercube.controller:options"); - -return $app; diff --git a/Hypercube/src/index.php b/Hypercube/src/index.php deleted file mode 100644 index 3e23d477..00000000 --- a/Hypercube/src/index.php +++ /dev/null @@ -1,4 +0,0 @@ -run(); diff --git a/Hypercube/symfony.lock b/Hypercube/symfony.lock new file mode 100644 index 00000000..7aadeab2 --- /dev/null +++ b/Hypercube/symfony.lock @@ -0,0 +1,372 @@ +{ + "doctrine/instantiator": { + "version": "1.4.0" + }, + "easyrdf/easyrdf": { + "version": "1.1.1" + }, + "guzzlehttp/guzzle": { + "version": "6.5.5" + }, + "guzzlehttp/promises": { + "version": "1.5.1" + }, + "guzzlehttp/psr7": { + "version": "1.8.3" + }, + "islandora/chullo": { + "version": "1.3.0" + }, + "islandora/crayfish-commons": { + "version": "3.0.0" + }, + "ml/iri": { + "version": "1.1.4" + }, + "ml/json-ld": { + "version": "1.2.0" + }, + "monolog/monolog": { + "version": "1.26.1" + }, + "myclabs/deep-copy": { + "version": "1.10.2" + }, + "namshi/jose": { + "version": "7.2.3" + }, + "nikic/php-parser": { + "version": "v4.13.0" + }, + "phar-io/manifest": { + "version": "2.0.3" + }, + "phar-io/version": { + "version": "3.1.0" + }, + "phpdocumentor/reflection-common": { + "version": "2.2.0" + }, + "phpdocumentor/reflection-docblock": { + "version": "5.3.0" + }, + "phpdocumentor/type-resolver": { + "version": "1.5.1" + }, + "phpspec/prophecy": { + "version": "1.14.0" + }, + "phpspec/prophecy-phpunit": { + "version": "v2.0.1" + }, + "phpunit/php-code-coverage": { + "version": "9.2.7" + }, + "phpunit/php-file-iterator": { + "version": "3.0.5" + }, + "phpunit/php-invoker": { + "version": "3.1.1" + }, + "phpunit/php-text-template": { + "version": "2.0.4" + }, + "phpunit/php-timer": { + "version": "5.0.3" + }, + "phpunit/phpunit": { + "version": "9.5", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "9.3", + "ref": "a6249a6c4392e9169b87abf93225f7f9f59025e6" + }, + "files": [ + ".env.test", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "psr/cache": { + "version": "1.0.1" + }, + "psr/container": { + "version": "1.1.1" + }, + "psr/http-message": { + "version": "1.0.1" + }, + "psr/log": { + "version": "1.1.4" + }, + "ralouphie/getallheaders": { + "version": "3.0.3" + }, + "sebastian/cli-parser": { + "version": "1.0.1" + }, + "sebastian/code-unit": { + "version": "1.0.8" + }, + "sebastian/code-unit-reverse-lookup": { + "version": "2.0.3" + }, + "sebastian/comparator": { + "version": "4.0.6" + }, + "sebastian/complexity": { + "version": "2.0.2" + }, + "sebastian/diff": { + "version": "4.0.4" + }, + "sebastian/environment": { + "version": "5.1.3" + }, + "sebastian/exporter": { + "version": "4.0.3" + }, + "sebastian/global-state": { + "version": "5.0.3" + }, + "sebastian/lines-of-code": { + "version": "1.0.3" + }, + "sebastian/object-enumerator": { + "version": "4.0.4" + }, + "sebastian/object-reflector": { + "version": "2.0.4" + }, + "sebastian/phpcpd": { + "version": "6.0.3" + }, + "sebastian/recursion-context": { + "version": "4.0.4" + }, + "sebastian/resource-operations": { + "version": "3.0.3" + }, + "sebastian/type": { + "version": "2.3.4" + }, + "sebastian/version": { + "version": "3.0.2" + }, + "squizlabs/php_codesniffer": { + "version": "3.6", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "master", + "version": "3.6", + "ref": "1019e5c08d4821cb9b77f4891f8e9c31ff20ac6f" + } + }, + "symfony/browser-kit": { + "version": "v4.4.27" + }, + "symfony/cache": { + "version": "v4.4.31" + }, + "symfony/cache-contracts": { + "version": "v2.4.0" + }, + "symfony/config": { + "version": "v4.4.30" + }, + "symfony/css-selector": { + "version": "v4.4.27" + }, + "symfony/debug": { + "version": "v4.4.31" + }, + "symfony/dependency-injection": { + "version": "v4.4.31" + }, + "symfony/deprecation-contracts": { + "version": "v2.5.1" + }, + "symfony/dom-crawler": { + "version": "v4.4.30" + }, + "symfony/dotenv": { + "version": "v4.4.29" + }, + "symfony/error-handler": { + "version": "v4.4.30" + }, + "symfony/event-dispatcher": { + "version": "v4.4.30" + }, + "symfony/event-dispatcher-contracts": { + "version": "v1.1.9" + }, + "symfony/filesystem": { + "version": "v4.4.27" + }, + "symfony/finder": { + "version": "v4.4.30" + }, + "symfony/flex": { + "version": "1.17", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" + }, + "files": [ + ".env" + ] + }, + "symfony/framework-bundle": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.4", + "ref": "3b9c85f14cad439042f88f94a1fd15fb8ed923c9" + }, + "files": [ + "config/services.yaml", + "config/bootstrap.php", + "config/routes/dev/framework.yaml", + "config/preload.php", + "config/packages/cache.yaml", + "config/packages/framework.yaml", + "config/packages/test/framework.yaml", + "public/index.php", + "src/Kernel.php", + "src/Controller/.gitignore" + ] + }, + "symfony/http-client-contracts": { + "version": "v2.4.0" + }, + "symfony/http-foundation": { + "version": "v4.4.30" + }, + "symfony/http-kernel": { + "version": "v4.4.32" + }, + "symfony/inflector": { + "version": "v4.4.27" + }, + "symfony/mime": { + "version": "v4.4.31" + }, + "symfony/monolog-bridge": { + "version": "v4.4.27" + }, + "symfony/monolog-bundle": { + "version": "3.7", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.7", + "ref": "a7bace7dbc5a7ed5608dbe2165e0774c87175fe6" + }, + "files": [ + "config/packages/test/monolog.yaml", + "config/packages/prod/monolog.yaml", + "config/packages/prod/deprecations.yaml", + "config/packages/dev/monolog.yaml" + ] + }, + "symfony/phpunit-bridge": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.3", + "ref": "0e1b186400de9d4ab83363138b4eb0072c99b2ab" + }, + "files": [ + ".env.test", + "bin/phpunit", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "symfony/polyfill-intl-idn": { + "version": "v1.23.0" + }, + "symfony/polyfill-intl-normalizer": { + "version": "v1.23.0" + }, + "symfony/polyfill-mbstring": { + "version": "v1.23.1" + }, + "symfony/polyfill-php72": { + "version": "v1.23.0" + }, + "symfony/polyfill-php73": { + "version": "v1.23.0" + }, + "symfony/polyfill-php80": { + "version": "v1.23.1" + }, + "symfony/polyfill-php81": { + "version": "v1.23.0" + }, + "symfony/property-access": { + "version": "v4.4.30" + }, + "symfony/routing": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.2", + "ref": "683dcb08707ba8d41b7e34adb0344bfd68d248a7" + }, + "files": [ + "config/routes.yaml", + "config/packages/routing.yaml", + "config/packages/prod/routing.yaml" + ] + }, + "symfony/security-bundle": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.4", + "ref": "7b4408dc203049666fe23fabed23cbadc6d8440f" + }, + "files": [ + "config/packages/security.yaml" + ] + }, + "symfony/security-core": { + "version": "v4.4.31" + }, + "symfony/security-csrf": { + "version": "v4.4.27" + }, + "symfony/security-guard": { + "version": "v4.4.27" + }, + "symfony/security-http": { + "version": "v4.4.30" + }, + "symfony/service-contracts": { + "version": "v2.4.0" + }, + "symfony/var-dumper": { + "version": "v4.4.31" + }, + "symfony/var-exporter": { + "version": "v4.4.31" + }, + "symfony/yaml": { + "version": "v4.4.29" + }, + "theseer/tokenizer": { + "version": "1.2.1" + }, + "webmozart/assert": { + "version": "1.10.0" + } +} diff --git a/Hypercube/tests/HypercubeControllerTest.php b/Hypercube/tests/HypercubeControllerTest.php new file mode 100644 index 00000000..cc7ec6e5 --- /dev/null +++ b/Hypercube/tests/HypercubeControllerTest.php @@ -0,0 +1,174 @@ +mockController(); + + $response = $controller->options(); + $this->assertTrue( + $response->getStatusCode() == 200, + 'Identify OPTIONS should return 200' + ); + $this->assertTrue( + $response->headers->get('Content-Type') == 'text/turtle', + 'Identify OPTIONS should return turtle' + ); + } + + /** + * @covers ::__construct + * @covers ::ocr + */ + public function testTesseractErrorReturns500() + { + $this->errorReturns500('image/tiff'); + } + + /** + * @covers ::__construct + * @covers ::ocr + */ + public function testPdfToTextErrorReturns500() + { + $this->errorReturns500('application/pdf'); + } + + private function errorReturns500($mimetype) + { + // Mock a TesseractService to create a controller. + $controller = $this->mockController(true); + + // Mock a request. + $request = $this->mockRequest($mimetype); + + $response = $controller->ocr($request); + $this->assertTrue( + $response->getStatusCode() == 500, + "Response must return 500" + ); + $this->assertTrue( + $response->getContent() == "ERROR", + "Response must return exception's message" + ); + } + + /** + * @covers ::__construct + * @covers ::ocr + */ + public function testTesseractSuccessReturns200() + { + $this->successReturns200('image/tiff'); + } + + /** + * @covers ::__construct + * @covers ::ocr + */ + public function testPdfToTextSuccessReturns200() + { + $this->successReturns200('application/pdf'); + } + + private function successReturns200($mimetype) + { + // Mock a controller. + $controller = $this->mockController(); + + $request = $this->mockRequest($mimetype); + + // Check success. + $response = $controller->ocr($request); + $this->assertTrue( + $response->getStatusCode() == 200, + "Response must return 200" + ); + } + + /** + * Utility function to mock a HypercubeController + * + * @param bool $throwException + * Whether the CmdExecuteService should throw an exception or not. + * @return \App\Islandora\Hypercube\Controller\HypercubeController + * The controller + */ + private function mockController(bool $throwException = false): HypercubeController + { + $prophecy = $this->prophesize(CmdExecuteService::class); + if ($throwException) { + $prophecy->execute(Argument::any(), Argument::any()) + ->willThrow(new \RuntimeException("ERROR", 500)); + } + $mock_service = $prophecy->reveal(); + $mock_logger = $this->prophesize(LoggerInterface::class)->reveal(); + return new HypercubeController( + $mock_service, + 'tesseract', + 'pdftotext', + $mock_logger + ); + } + + /** + * Utility function to mock a request. + * + * @param string $mimetype + * The mimetype to fake as the Fedora object's content-type. + * @return \Symfony\Component\HttpFoundation\Request + * The request. + */ + private function mockRequest(string $mimetype): Request + { + // Mock a stream body for a Fedora response. + $prophecy = $this->prophesize(StreamInterface::class); + $prophecy->isReadable()->willReturn(true); + $prophecy->isWritable()->willReturn(false); + $mock_stream = $prophecy->reveal(); + + // Mock a Fedora response. + $prophecy = $this->prophesize(ResponseInterface::class); + $prophecy->getHeader('Content-Type')->willReturn([$mimetype]); + $prophecy->getStatusCode()->willReturn(200); + $prophecy->getBody()->willReturn($mock_stream); + $mock_fedora_response = $prophecy->reveal(); + + // Create a Request. + $request = Request::create( + "/foo", + "GET" + ); + $request->headers->set('Authorization', 'some_token'); + $request->headers->set( + 'ApixLdpResource', + 'http://localhost:8080/fcrepo/rest/foo' + ); + $request->attributes->set('fedora_resource', $mock_fedora_response); + return $request; + } +} diff --git a/Hypercube/tests/Islandora/Hypercube/Tests/HypercubeControllerTest.php b/Hypercube/tests/Islandora/Hypercube/Tests/HypercubeControllerTest.php deleted file mode 100644 index e7b44822..00000000 --- a/Hypercube/tests/Islandora/Hypercube/Tests/HypercubeControllerTest.php +++ /dev/null @@ -1,148 +0,0 @@ -prophesize(CmdExecuteService::class)->reveal(); - $mock_logger = $this->prophesize(Logger::class)->reveal(); - $controller = new HypercubeController( - $mock_service, - 'tesseract', - 'pdftotext', - $mock_logger - ); - - $response = $controller->options(); - $this->assertTrue($response->getStatusCode() == 200, 'Identify OPTIONS should return 200'); - $this->assertTrue( - $response->headers->get('Content-Type') == 'text/turtle', - 'Identify OPTIONS should return turtle' - ); - } - - /** - * @covers ::__construct - * @covers ::get - */ - public function testTesseractErrorReturns500() - { - $this->errorReturns500('image/tiff'); - } - - /** - * @covers ::__construct - * @covers ::get - */ - public function testPdfToTextErrorReturns500() - { - $this->errorReturns500('application/pdf'); - } - - protected function errorReturns500($mimetype) - { - // Mock a TesseractService to create a controller. - $prophecy = $this->prophesize(CmdExecuteService::class); - $prophecy->execute(Argument::any(), Argument::any())->willThrow(new \RuntimeException("ERROR", 500)); - $mock_service = $prophecy->reveal(); - $mock_logger = $this->prophesize(Logger::class)->reveal(); - $controller = new HypercubeController($mock_service, 'tesseract', 'pdftotext', $mock_logger); - - // Mock a stream body for a Fedora response. - $prophecy = $this->prophesize(StreamInterface::class); - $prophecy->isReadable()->willReturn(true); - $prophecy->isWritable()->willReturn(false); - $mock_stream = $prophecy->reveal(); - - // Mock a Fedora response. - $prophecy = $this->prophesize(ResponseInterface::class); - $prophecy->getHeader('Content-Type')->willReturn(['image/tiff']); - $prophecy->getStatusCode()->willReturn(200); - $prophecy->getBody()->willReturn($mock_stream); - $mock_fedora_response = $prophecy->reveal(); - - // Create a Request. - $request = Request::create( - "/foo", - "GET" - ); - $request->headers->set('Authorization', 'some_token'); - $request->headers->set('ApixLdpResource', 'http://localhost:8080/fcrepo/rest/foo'); - $request->attributes->set('fedora_resource', $mock_fedora_response); - - $response = $controller->get($request); - $this->assertTrue($response->getStatusCode() == 500, "Response must return 500"); - $this->assertTrue($response->getContent() == "ERROR", "Response must return exception's message"); - } - - /** - * @covers ::__construct - * @covers ::get - */ - public function testTesseractSuccessReturns200() - { - $this->successReturns200('image/tiff'); - } - - /** - * @covers ::__construct - * @covers ::get - */ - public function testPdfToTextSuccessReturns200() - { - $this->successReturns200('application/pdf'); - } - - protected function successReturns200($mimetype) - { - // Mock a controller. - $prophecy = $this->prophesize(CmdExecuteService::class); - $mock_service = $prophecy->reveal(); - $mock_logger = $this->prophesize(Logger::class)->reveal(); - $controller = new HypercubeController($mock_service, 'tesseract', 'pdftotext', $mock_logger); - - // Mock a stream body for a Fedora response. - $prophecy = $this->prophesize(StreamInterface::class); - $prophecy->isReadable()->willReturn(true); - $prophecy->isWritable()->willReturn(false); - $mock_stream = $prophecy->reveal(); - - // Mock a Fedora response. - $prophecy = $this->prophesize(ResponseInterface::class); - $prophecy->getHeader('Content-Type')->willReturn([$mimetype]); - $prophecy->getStatusCode()->willReturn(200); - $prophecy->getBody()->willReturn($mock_stream); - $mock_fedora_response = $prophecy->reveal(); - - // Create a Request. - $request = Request::create( - "/foo", - "GET" - ); - $request->headers->set('Authorization', 'some_token'); - $request->headers->set('ApixLdpResource', 'http://localhost:8080/fcrepo/rest/foo'); - $request->attributes->set('fedora_resource', $mock_fedora_response); - - // Check success. - $response = $controller->get($request); - $this->assertTrue($response->getStatusCode() == 200, "Response must return 200"); - } -} diff --git a/Hypercube/tests/bootstrap.php b/Hypercube/tests/bootstrap.php new file mode 100644 index 00000000..469dccee --- /dev/null +++ b/Hypercube/tests/bootstrap.php @@ -0,0 +1,11 @@ +bootEnv(dirname(__DIR__).'/.env'); +} diff --git a/Milliner/.env b/Milliner/.env new file mode 100644 index 00000000..78e4d244 --- /dev/null +++ b/Milliner/.env @@ -0,0 +1,21 @@ +# In all environments, the following files are loaded if they exist, +# the latter taking precedence over the former: +# +# * .env contains default values for the environment variables needed by the app +# * .env.local uncommitted file with local overrides +# * .env.$APP_ENV committed environment-specific defaults +# * .env.$APP_ENV.local uncommitted environment-specific overrides +# +# Real environment variables win over .env files. +# +# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. +# +# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). +# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET=2c4ca615eabc4764d2000e19eac23dc5 +#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 +#TRUSTED_HOSTS='^(localhost|example\.com)$' +###< symfony/framework-bundle ### diff --git a/Milliner/.env.test b/Milliner/.env.test new file mode 100644 index 00000000..9e7162f0 --- /dev/null +++ b/Milliner/.env.test @@ -0,0 +1,6 @@ +# define your env variables for the test env here +KERNEL_CLASS='App\Kernel' +APP_SECRET='$ecretf0rt3st' +SYMFONY_DEPRECATIONS_HELPER=999999 +PANTHER_APP_ENV=panther +PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots diff --git a/Milliner/README.md b/Milliner/README.md index dc912a67..e8172d6b 100644 --- a/Milliner/README.md +++ b/Milliner/README.md @@ -6,61 +6,81 @@ Microservice that converts Drupal entities into Fedora resources. ## Installation -Milliner requires a functioning [Drupal 8](https://www.drupal.org/docs/8/install) installation with the [jsonld](http://github.com/Islandora/jsonld) module enabled. +Milliner requires a functioning [Drupal](https://www.drupal.org/) 8 or 9 +installation with the [jsonld](http://github.com/Islandora/jsonld) module enabled. + It also requires a functioning [Fedora](http://fedorarepository.org/) repository. -You will also need an SQL database as needed for [Gemini](../Gemini) - Clone this repository somewhere in your web root. - Install `composer`. [Install instructions here.][4] - `$ cd /path/to/Milliner` and run `$ composer install` -- Then either - - For production, configure your web server appropriately (e.g. add a VirtualHost for Milliner in Apache) OR - - For development, run the PHP built-in web server `$ php -S localhost:8888 -t src` from Milliner root. +- For production, configure your web server appropriately (e.g. add a VirtualHost for Milliner in Apache) + +## Upgrading + +Steps for upgrading Milliner can be found in [UPGRADE.md](UPGRADE.md) ## Configuration -Make a copy of the [config file](cfg/config.example.yaml) and name it `config.yaml` in the `cfg` directory. -You will need to set the `fedora_base_url` entry to point to your Fedora installation. -You will also need to set up the `drupal_base_url` entry to point to your Drupal 8 installation. -The SQL db can be configured by following [Gemini's instructions](../Gemini). +Symfony uses `.dotenv` to set environment variables. You can check the [.env](./.env) in the root of the Milliner directory. +To alter any settings, create a file called `.env.local` to store your specific changes. You can also set an actual environment +variable. -## Usage +For production use make sure to set the add `APP_ENV=prod` environment variable. -Milliner sets up a single endpoint, `/metadata/{drupal_path}`, which accepts POST, PUT, and DELETE requests. -If requests are successful, they return the response from the Fedora server. If the Drupal entity cannot be requested, -the error response from Drupal is returned. If there is an exception thrown during execution, a 500 response is returned -with the exception's message. +There are various configurable parameters located in the [`/path/to/Milliner/config/services.yaml`](./config/services.yaml). +``` +parameters: + app.fedora_base_url: "http://localhost:8080/fcrepo/rest" + app.modified_date_predicate: "http://schema.org/dateModified" + app.strip_format_jsonld: true + app.isFedora6: true +``` +`app.fedora_base_url` defines the base URL of your Fedora repository. -### POST +`app.modified_date_predicate` defines the predicate which will be compared to determine which of the Fedora or Drupal +resource has been updated more recently. -This retrieves a jsonld representation of the specified Drupal entity and inserts it in Fedora. +`app.strip_format_jsonld` determines whether to remove the `?_format=jsonld` from subject URIs before pushing the RDF to Fedora. -For example, suppose you create an entity at `http://localhost:8000/fedora_resource/1`. If running the PHP built-in server command described in the Installation section: -``` -$ curl -X "POST" "localhost:8888/metadata/fedora_resource/1" -``` -will return the URI to the created Fedora resource if successfully created. +`app.isFedora6` determines whether the Fedora instance is version 5.*.* or 6.*.*. -### PUT +You do NOT need to edit the `fedora_base_url` inside `/path/to/Milliner/config/packages/crayfish_commons.yaml` as this +re-uses the above setting. However in the same file you can point to the location of your `syn-settings.xml`. +If you don't have a `syn-settings.xml` look at the [Syn](http://github.com/Islandora/Syn) documentation. -This retrieves a jsonld representation of the specified Drupal entity and updates it in Fedora. +### Logging -For example, suppose you update an entity at `http://localhost:8000/fedora_resource/1`. If running the PHP built-in server command described in the Installation section: -``` -$ curl -X "PUT" "localhost:8888/metadata/fedora_resource/1" -``` -will return `204 No Content` if the resource is successfully updated. +To change your log settings, edit the `/path/to/Milliner/config/packages/monolog.yaml` file. -### DELETE +You can also copy the file into one of the `/path/to/Milliner/config/packages/` directories. +Where `` is `dev`, `test`, or `prod` based on the `APP_ENV` variable (see above). The files in the specific +environment directory will take precedence over those in the `/path/to/Milliner/config/packages` directory. -This deletes the corresponding Fedora resource for the specified Drupal entity. +The location specified in the configuration file for the log must be writable by the web server. -For example, suppose if you have an entity at `http://localhost:8000/fedora_resource/`. If running the PHP built-in server command described in the Installation section: -``` -$ curl -X "DELETE" "localhost:8888/metadata/fedora_resource/1" -``` -will return `204 No Content` if the resource is successfully updated. +### Disabling Syn + +There are instructions in the `/path/to/Milliner/config/packages/security.yaml` file describing what to change and what lines +to comment out to disable Syn. + +## Usage + +Milliner sets up a multiple endpoints, +* `/node/{uuid}` which accepts POST and DELETE requests. + * POST is to save a Drupal resource to Fedora. + * DELETE is to delete a Fedora resource. +* `/node/{uuid}/version` which accepts POST requests. + * POST creates a new version in Fedora for the resource +* `/media/{source_field}` which accepts POST requests. + * POST creates a new media in Fedora for the resource identifed in the `Content-Location` header. +* `/media/{source_field}/version` which accepts POST requests. + * POST creates a new version of the media in Fedora for the resource identifed in the `Content-Location` header. +* `/external/{uuid}` which accepts POST requests. + * POST creates a new external content resource for the Drupal resource + +UUID is transformed into a Fedora URI using the [Crayfish-Commons](https://github.com/Islandora/Crayfish-Commons) EntityMapper. ## Maintainers @@ -74,8 +94,6 @@ If you would like to contribute, please get involved by attending our weekly [Te If you would like to contribute code to the project, you need to be covered by an Islandora Foundation [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). Please see the [Contributors](http://islandora.ca/resources/contributors) pages on Islandora.ca for more information. -We recommend using the [islandora-playbook](https://github.com/Islandora-Devops/islandora-playbook) to get started. - ## License [MIT](https://opensource.org/licenses/MIT) diff --git a/Milliner/UPGRADE.md b/Milliner/UPGRADE.md new file mode 100644 index 00000000..5a2a120e --- /dev/null +++ b/Milliner/UPGRADE.md @@ -0,0 +1,163 @@ +This document guides you through the process of upgrading Milliner. First, check if a section named "Upgrade to x.x.x" exists, with x.x.x being the version you are planning to upgrade to. + +## Upgrade to 3.0.0 + +Milliner (and all of Crayfish) adheres to [semantic versioning](https://semver.org), which makes a distinction between "major", "minor", and "patch" versions. The upgrade path will be different depending on which previous version from which you are migrating. + +### Upgrade from version 2.x.x + +Milliner has switched from a Silex application to a Symfony application. This does not require much in code changes, but does use a different file layout. + +Previously your configuration file would be located in the `/path/to/Milliner/config` directory and be called `config.yaml`. + +The configuration from this file will now be located several locations documented below. + +#### Base Urls +Old location `/path/to/Milliner/config/config.yaml` + +``` +--- + +fedora_base_url: http://localhost:8080/fcrepo/rest +# if drupal_base_url contains a path, be sure to include trailing slash +# or relative paths will not resolve correctly. +drupal_base_url: http://localhost:8000 +``` + +The `fedora_base_url` variable is now located in `/path/to/Milliner/config/services.yaml` and appears in the `parameters` + +``` +parameters: + app.fedora_base_url: "http://localhost:8080/fcrepo/rest" +``` + +**Note**: the `drupal_base_url` variable is no longer needed and has been removed. + +#### Modified date predicate +Old location `/path/to/Milliner/config/config.yaml` + +``` +... +modified_date_predicate: http://schema.org/dateModified +``` + +This variable is now located in `/path/to/Milliner/config/services.yaml` and appears in the `parameters` + +``` +parameters: + ... + app.modified_date_predicate: "http://schema.org/dateModified" +``` + +#### Strip format JsonLd +Old location `/path/to/Milliner/config/config.yaml` + +``` +... +strip_format_jsonld: true +``` + +This variable is now located in `/path/to/Milliner/config/services.yaml` and appears in the `parameters` + +``` +parameters: + ... + app.strip_format_jsonld: true +``` + +#### Is Fedora 6 +Old location `/path/to/Milliner/config/config.yaml` + +``` +... +fedora6: true +``` + +**Note**: This variable may only exist in your configuration if you are running a Fedora 6.x.x repository. + +This variable is now located in `/path/to/Milliner/config/services.yaml` and appears in the `parameters` +``` +parameters: + ... + app.isFedora6: true +``` + +#### Log settings +Old location `/path/to/Milliner/config/config.yaml` + +``` +... +log: + # Valid log levels are: + # DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY, NONE + # log level none won't open logfile + level: NONE + file: ../milliner.log +``` + +This setting is in `/path/to/Milliner/config/packages/monolog.yaml`. This file contains commented out defaults from Symfony and a new handler for Milliner. + +``` +monolog: + handlers: + ... + milliner: + type: rotating_file + path: /tmp/Milliner.log + level: DEBUG + max_files: 1 + channels: ["!event", "!console"] +``` + +#### Syn settings +Old location `/path/to/Milliner/config/config.yaml` + +``` +syn: + # toggles JWT security for service + enable: True + # Path to the syn config file for authentication. + # example can be found here: + # https://github.com/Islandora/Syn/blob/main/conf/syn-settings.example$ + config: ../syn-settings.xml +``` + +The `syn.enable` variable is no longer used as Syn is part of the security for Symfony, see [below](#enable-disable-syn) for steps to see where to enable/disable Syn. + +The `syn.config` variable is in `/path/to/Milliner/config/crayfish_commons.yaml`. + +``` +crayfish_commons: + ... + #syn_config: '/path/to/syn-settings.xml' +``` + +`crayfish_commons.syn_config` needs to point to a file or be left commented out to use a default syn config of + +``` + + + + +``` + +##### Enable/Disable Syn +To enable/disable Syn look in the `/path/to/Milliner/config/packages/security.yaml`. By default Syn is disabled, to enable look the below lines and follow the included instructions + +``` +security: + ... + firewall: + ... + main: + ... + # To enable Syn, change anonymous to false and uncomment the lines further below + anonymous: true + ... + # To enable Syn, uncomment the below 4 lines and change anonymous to false above. + #provider: jwt_user_provider + #guard: + # authenticators: + # - Islandora\Crayfish\Commons\Syn\JwtAuthenticator +``` + diff --git a/Milliner/bin/phpunit b/Milliner/bin/phpunit new file mode 100755 index 00000000..4d1ed05d --- /dev/null +++ b/Milliner/bin/phpunit @@ -0,0 +1,13 @@ +#!/usr/bin/env php +2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "predis/predis": "~1.0", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.1.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2021-07-14T11:22:57+00:00" - }, - { - "name": "doctrine/dbal", - "version": "2.13.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.0|^2.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" - }, - "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2020.2", - "phpstan/phpstan": "0.12.81", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.5", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.6.4" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlanywhere", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.2" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "time": "2021-06-18T21:48:39+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "v0.5.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" - }, - "time": "2021-03-21T12:59:47+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2020-05-29T18:28:51+00:00" - }, { "name": "easyrdf/easyrdf", "version": "1.1.1", @@ -461,12 +117,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -498,16 +154,16 @@ }, { "name": "guzzlehttp/promises", - "version": "1.4.1", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", "shasum": "" }, "require": { @@ -519,26 +175,41 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, "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", @@ -547,22 +218,36 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" + "source": "https://github.com/guzzle/promises/tree/1.5.1" }, - "time": "2021-03-07T09:25:29+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.8.3", + "version": "1.8.5", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85" + "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/337e3ad8e5716c15f9657bd214d16cc5e69df268", + "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268", "shasum": "" }, "require": { @@ -587,12 +272,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -643,7 +328,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.3" + "source": "https://github.com/guzzle/psr7/tree/1.8.5" }, "funding": [ { @@ -659,27 +344,27 @@ "type": "tidelift" } ], - "time": "2021-10-05T13:56:00+00:00" + "time": "2022-03-20T21:51:18+00:00" }, { "name": "islandora/chullo", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/Islandora/chullo.git", - "reference": "d563d5e48ef9b15dcf45029277bbc2f6eeef2454" + "reference": "a7c1e051eab2a5077eaf5db2649201fa775c5a02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Islandora/chullo/zipball/d563d5e48ef9b15dcf45029277bbc2f6eeef2454", - "reference": "d563d5e48ef9b15dcf45029277bbc2f6eeef2454", + "url": "https://api.github.com/repos/Islandora/chullo/zipball/a7c1e051eab2a5077eaf5db2649201fa775c5a02", + "reference": "a7c1e051eab2a5077eaf5db2649201fa775c5a02", "shasum": "" }, "require": { "easyrdf/easyrdf": "^0.9 || ^1", "guzzlehttp/guzzle": "^6.1.0", "ml/json-ld": "^1.0.4", - "php": "^7.3 || ^7.4" + "php": ">=7.3" }, "require-dev": { "mockery/mockery": "^0.9", @@ -718,47 +403,57 @@ "homepage": "https://github.com/Islandora/chullo", "support": { "issues": "https://github.com/Islandora/documentation/issues", - "source": "https://github.com/Islandora/chullo/tree/1.2.0" + "source": "https://github.com/Islandora/chullo/tree/1.3.0" }, - "time": "2021-05-05T17:38:36+00:00" + "time": "2021-12-16T22:31:48+00:00" }, { "name": "islandora/crayfish-commons", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/Islandora/Crayfish-Commons.git", - "reference": "1d4f645764154b165e3bc897724e12d23144867d" + "reference": "e7b8cbd5951286897507f6cfd3e6356201d24f48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Islandora/Crayfish-Commons/zipball/1d4f645764154b165e3bc897724e12d23144867d", - "reference": "1d4f645764154b165e3bc897724e12d23144867d", + "url": "https://api.github.com/repos/Islandora/Crayfish-Commons/zipball/e7b8cbd5951286897507f6cfd3e6356201d24f48", + "reference": "e7b8cbd5951286897507f6cfd3e6356201d24f48", "shasum": "" }, "require": { - "doctrine/dbal": "~2.2", - "islandora/chullo": "1.2.0", - "monolog/monolog": "^1.22", + "islandora/chullo": "^1.0", "namshi/jose": "^7.2", - "pimple/pimple": "~3.0", "psr/log": "^1.0.1", - "silex/silex": "^2.0", - "symfony/http-foundation": "^3.4 || ^4.4", - "symfony/security": "^3.4 || ^4.4", - "symfony/yaml": "^3.4 || ^4.4" + "symfony/config": "4.4.*", + "symfony/dependency-injection": "4.4.*", + "symfony/event-dispatcher": "4.4.*", + "symfony/http-foundation": "4.4.*", + "symfony/monolog-bundle": "^3.4", + "symfony/security-bundle": "4.4.*", + "symfony/yaml": "4.4.*" + }, + "conflict": { + "symfony/symfony": "*" }, "require-dev": { "mikey179/vfsstream": "^1.6", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.0", + "phpunit/phpunit": "^9.5", "sebastian/phpcpd": "^6.0", - "squizlabs/php_codesniffer": "^3.0" + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "4.4.*" + }, + "type": "symfony-bundle", + "extra": { + "symfony": { + "allow-contrib": false, + "require": "4.4.*" + } }, - "type": "library", "autoload": { "psr-4": { - "Islandora\\Crayfish\\Commons\\": "src/" + "Islandora\\Crayfish\\Commons\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -781,9 +476,9 @@ "homepage": "https://github.com/Islandora/Crayfish-Commons", "support": { "issues": "https://github.com/Islandora/documentation/issues", - "source": "https://github.com/Islandora/Crayfish-Commons/tree/2.0.0" + "source": "https://github.com/Islandora/Crayfish-Commons/tree/3.0.0" }, - "time": "2021-07-14T13:39:59+00:00" + "time": "2022-05-05T15:46:41+00:00" }, { "name": "ml/iri", @@ -891,16 +586,16 @@ }, { "name": "monolog/monolog", - "version": "1.26.1", + "version": "1.27.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5" + "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/52ebd235c1f7e0d5e1b16464b695a28335f8e44a", + "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a", "shasum": "" }, "require": { @@ -961,7 +656,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.26.1" + "source": "https://github.com/Seldaek/monolog/tree/1.27.0" }, "funding": [ { @@ -973,7 +668,7 @@ "type": "tidelift" } ], - "time": "2021-05-28T08:32:12+00:00" + "time": "2022-03-13T20:29:46+00:00" }, { "name": "namshi/jose", @@ -1043,35 +738,31 @@ "time": "2016-12-05T07:27:31+00:00" }, { - "name": "pimple/pimple", - "version": "v3.4.0", + "name": "psr/cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "86406047271859ffc13424a048541f4531f53601" + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/86406047271859ffc13424a048541f4531f53601", - "reference": "86406047271859ffc13424a048541f4531f53601", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "Pimple": "src/" + "psr-4": { + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1080,20 +771,20 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", + "description": "Common interface for caching libraries", "keywords": [ - "container", - "dependency injection" + "cache", + "psr", + "psr-6" ], "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.4.0" + "source": "https://github.com/php-fig/cache/tree/master" }, - "time": "2021-03-06T08:28:00+00:00" + "time": "2016-08-06T20:24:11+00:00" }, { "name": "psr/container", @@ -1291,69 +982,60 @@ "time": "2019-03-08T08:55:37+00:00" }, { - "name": "silex/silex", - "version": "v2.3.0", + "name": "symfony/cache", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/silexphp/Silex.git", - "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131" + "url": "https://github.com/symfony/cache.git", + "reference": "27121284fe32a7cefc225268761ec7ce1741b9ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Silex/zipball/6bc31c1b8c4ef614a7115320fd2d3b958032f131", - "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131", + "url": "https://api.github.com/repos/symfony/cache/zipball/27121284fe32a7cefc225268761ec7ce1741b9ac", + "reference": "27121284fe32a7cefc225268761ec7ce1741b9ac", "shasum": "" }, "require": { "php": ">=7.1.3", - "pimple/pimple": "^3.0", - "symfony/event-dispatcher": "^4.0", - "symfony/http-foundation": "^4.0", - "symfony/http-kernel": "^4.0", - "symfony/routing": "^4.0" + "psr/cache": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.2|^5.0" + }, + "conflict": { + "doctrine/dbal": "<2.7", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4|>=5.0", + "symfony/var-dumper": "<4.4" }, - "replace": { - "silex/api": "self.version", - "silex/providers": "self.version" + "provide": { + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0|2.0", + "symfony/cache-implementation": "1.0|2.0" }, "require-dev": { - "doctrine/dbal": "^2.2", - "monolog/monolog": "^1.4.1", - "swiftmailer/swiftmailer": "^5", - "symfony/asset": "^4.0", - "symfony/browser-kit": "^4.0", - "symfony/config": "^4.0", - "symfony/css-selector": "^4.0", - "symfony/debug": "^4.0", - "symfony/doctrine-bridge": "^4.0", - "symfony/dom-crawler": "^4.0", - "symfony/expression-language": "^4.0", - "symfony/finder": "^4.0", - "symfony/form": "^4.0", - "symfony/intl": "^4.0", - "symfony/monolog-bridge": "^4.0", - "symfony/options-resolver": "^4.0", - "symfony/phpunit-bridge": "^3.2", - "symfony/process": "^4.0", - "symfony/security": "^4.0", - "symfony/serializer": "^4.0", - "symfony/translation": "^4.0", - "symfony/twig-bridge": "^4.0", - "symfony/validator": "^4.0", - "symfony/var-dumper": "^4.0", - "symfony/web-link": "^4.0", - "twig/twig": "^2.0" + "cache/integration-tests": "dev-master", + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.7|^3.0", + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0|^2.0", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.1|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/var-dumper": "^4.4|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, "autoload": { "psr-4": { - "Silex\\": "src/Silex" - } + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1361,70 +1043,74 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "The PHP micro-framework based on the Symfony Components", - "homepage": "http://silex.sensiolabs.org", + "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", + "homepage": "https://symfony.com", "keywords": [ - "microframework" + "caching", + "psr6" ], "support": { - "issues": "https://github.com/silexphp/Silex/issues", - "source": "https://github.com/silexphp/Silex/tree/v2.3.0" + "source": "https://github.com/symfony/cache/tree/v4.4.41" }, - "abandoned": "symfony/flex", - "time": "2018-04-20T05:17:01+00:00" + "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-04-25T17:25:00+00:00" }, { - "name": "symfony/contracts", - "version": "v1.1.0", + "name": "symfony/cache-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "d3636025e8253c6144358ec0a62773cae588395b" + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/d3636025e8253c6144358ec0a62773cae588395b", - "reference": "d3636025e8253c6144358ec0a62773cae588395b", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", "shasum": "" }, "require": { - "php": "^7.1.3" - }, - "require-dev": { - "psr/cache": "^1.0", - "psr/container": "^1.0", - "symfony/polyfill-intl-idn": "^1.10" + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" }, "suggest": { - "psr/cache": "When using the Cache contracts", - "psr/container": "When using the Service contracts", - "symfony/cache-contracts-implementation": "", - "symfony/event-dispatcher-implementation": "", - "symfony/http-client-contracts-implementation": "", - "symfony/service-contracts-implementation": "", - "symfony/translation-contracts-implementation": "" + "symfony/cache-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\": "" - }, - "exclude-from-classmap": [ - "**/Tests/" - ] + "Symfony\\Contracts\\Cache\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1440,7 +1126,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A set of abstractions extracted out of the Symfony components", + "description": "Generic abstractions related to caching", "homepage": "https://symfony.com", "keywords": [ "abstractions", @@ -1451,39 +1137,62 @@ "standards" ], "support": { - "source": "https://github.com/symfony/contracts/tree/master" + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.1" }, - "time": "2019-04-27T14:29:50+00:00" + "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-01-02T09:53:40+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.25", + "name": "symfony/config", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f" + "url": "https://github.com/symfony/config.git", + "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/a8d2d5c94438548bff9f998ca874e202bb29d07f", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f", + "url": "https://api.github.com/repos/symfony/config/zipball/9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7", + "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7", "shasum": "" }, "require": { "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/polyfill-php80": "^1.15" + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" }, "conflict": { - "symfony/http-kernel": "<3.4" + "symfony/finder": "<3.4" }, "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "symfony/event-dispatcher": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/messenger": "^4.1|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\Config\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1503,10 +1212,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to ease debugging PHP code", + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.25" + "source": "https://github.com/symfony/config/tree/v4.4.41" }, "funding": [ { @@ -1522,38 +1231,39 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "name": "symfony/debug", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "url": "https://github.com/symfony/debug.git", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/symfony/debug/zipball/6637e62480b60817b9a6984154a533e8e64c6bd5", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "psr/log": "^1|^2|^3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "conflict": { + "symfony/http-kernel": "<3.4" }, + "require-dev": { + "symfony/http-kernel": "^3.4|^4.0|^5.0" + }, + "type": "library", "autoload": { - "files": [ - "function.php" + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1562,18 +1272,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A generic function and convention to trigger deprecation notices", + "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "source": "https://github.com/symfony/debug/tree/v4.4.41" }, "funding": [ { @@ -1589,51 +1299,54 @@ "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v4.4.25", + "name": "symfony/dependency-injection", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "74c7f55de0eced4d3c9654809b1871870386a577" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/047773e7016e4fd45102cedf4bd2558ae0d0c32f", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/74c7f55de0eced4d3c9654809b1871870386a577", + "reference": "74c7f55de0eced4d3c9654809b1871870386a577", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "psr/container": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/config": "<4.3|>=5.0", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<4.4.26" }, "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0|2.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/config": "^4.3", "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" + "symfony/yaml": "^4.4.26|^5.0" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Component\\DependencyInjection\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1653,10 +1366,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.25" + "source": "https://github.com/symfony/dependency-injection/tree/v4.4.41" }, "funding": [ { @@ -1672,33 +1385,29 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", + "name": "symfony/deprecation-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { - "php": ">=7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -1706,9 +1415,9 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "files": [ + "function.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1724,18 +1433,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" }, "funding": [ { @@ -1751,36 +1452,32 @@ "type": "tidelift" } ], - "time": "2020-07-06T13:19:58+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { - "name": "symfony/http-foundation", - "version": "v4.4.26", + "name": "symfony/dotenv", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b" + "url": "https://github.com/symfony/dotenv.git", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8759ed5c27c2a8a47cb60f367f4be6727f08d58b", - "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.15" + "php": ">=7.1.3" }, "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "symfony/process": "^3.4.2|^4.0|^5.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" + "Symfony\\Component\\Dotenv\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1800,10 +1497,15 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Defines an object-oriented layer for the HTTP specification", + "description": "Registers environment variables from a .env file", "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.26" + "source": "https://github.com/symfony/dotenv/tree/v4.4.37" }, "funding": [ { @@ -1819,75 +1521,36 @@ "type": "tidelift" } ], - "time": "2021-06-26T21:56:04+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "symfony/http-kernel", - "version": "v4.2.12", + "name": "symfony/error-handler", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "8a7c5ef599466af6e972c705507f815df9c490ae" + "url": "https://github.com/symfony/error-handler.git", + "reference": "529feb0e03133dbd5fd3707200147cc4903206da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8a7c5ef599466af6e972c705507f815df9c490ae", - "reference": "8a7c5ef599466af6e972c705507f815df9c490ae", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/529feb0e03133dbd5fd3707200147cc4903206da", + "reference": "529feb0e03133dbd5fd3707200147cc4903206da", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0", - "symfony/contracts": "^1.0.2", - "symfony/debug": "~3.4|~4.0", - "symfony/event-dispatcher": "~4.1", - "symfony/http-foundation": "^4.1.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php56": "~1.8" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<4.2", - "symfony/translation": "<4.2", - "symfony/var-dumper": "<4.1.1", - "twig/twig": "<1.34|<2.4,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" + "php": ">=7.1.3", + "psr/log": "^1|^2|^3", + "symfony/debug": "^4.4.5", + "symfony/var-dumper": "^4.4|^5.0" }, "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "~3.4|~4.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dependency-injection": "^4.2", - "symfony/dom-crawler": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0", - "symfony/templating": "~3.4|~4.0", - "symfony/translation": "~4.2", - "symfony/var-dumper": "^4.1.1" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/var-dumper": "" + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" + "Symfony\\Component\\ErrorHandler\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1907,36 +1570,71 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpKernel Component", + "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.2.12" + "source": "https://github.com/symfony/error-handler/tree/v4.4.41" }, - "time": "2019-11-13T08:51:34+00:00" + "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-04-12T15:19:55+00:00" }, { - "name": "symfony/inflector", - "version": "v5.3.0", + "name": "symfony/event-dispatcher", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "ce80a8295f4b08c0f4a850dd3284f95808744dba" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/ce80a8295f4b08c0f4a850dd3284f95808744dba", - "reference": "ce80a8295f4b08c0f4a850dd3284f95808744dba", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/string": "^5.2.8" + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "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" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Inflector\\": "" + "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1948,26 +1646,97 @@ ], "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 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.37" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "shasum": "" + }, + "require": { + "php": ">=7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", "homepage": "https://symfony.com", "keywords": [ - "inflection", - "pluralize", - "singularize", - "string", - "symfony", - "words" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/inflector/tree/v5.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.12" }, "funding": [ { @@ -1983,48 +1752,304 @@ "type": "tidelift" } ], - "abandoned": "use `EnglishInflector` from the String component instead", - "time": "2021-05-26T17:33:56+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "symfony/mime", - "version": "v5.3.2", + "name": "symfony/filesystem", + "version": "v4.4.39", "source": { "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a" + "url": "https://github.com/symfony/filesystem.git", + "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/47dd7912152b82d0d4c8d9040dbc93d6232d472a", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/72a5b35fecaa670b13954e6eaf414acbe2a67b35", + "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.15" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v4.4.39" + }, + "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-02-25T10:38:15+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "40790bdf293b462798882ef6da72bb49a4a6633a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/40790bdf293b462798882ef6da72bb49a4a6633a", + "reference": "40790bdf293b462798882ef6da72bb49a4a6633a", + "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.41" + }, + "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-04-14T15:36:10+00:00" + }, + { + "name": "symfony/flex", + "version": "v1.18.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/flex.git", + "reference": "e74319d17ed4edc5f27b9d24757e172930a7ebc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/flex/zipball/e74319d17ed4edc5f27b9d24757e172930a7ebc4", + "reference": "e74319d17ed4edc5f27b9d24757e172930a7ebc4", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=7.1" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "symfony/dotenv": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/phpunit-bridge": "^4.4.12|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Flex\\Flex" + }, + "autoload": { + "psr-4": { + "Symfony\\Flex\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "Composer plugin for Symfony", + "support": { + "issues": "https://github.com/symfony/flex/issues", + "source": "https://github.com/symfony/flex/tree/v1.18.7" + }, + "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-02T10:18:23+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5", + "reference": "1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.1.3", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4.11|~5.0.11|^5.1.3", + "symfony/dependency-injection": "^4.4.38|^5.0.1", + "symfony/error-handler": "^4.4.1|^5.0.1", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/routing": "^4.4.12|^5.1.4" }, "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" + "doctrine/persistence": "<1.3", + "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.3.0|1.3.*", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/asset": "<3.4", + "symfony/browser-kit": "<4.3", + "symfony/console": "<4.4.21", + "symfony/dom-crawler": "<4.3", + "symfony/dotenv": "<4.3.6", + "symfony/form": "<4.3.5", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<4.4", + "symfony/messenger": "<4.4", + "symfony/mime": "<4.4", + "symfony/property-info": "<3.4", + "symfony/security-bundle": "<4.4", + "symfony/serializer": "<4.4", + "symfony/stopwatch": "<3.4", + "symfony/translation": "<4.4", + "symfony/twig-bridge": "<4.1.1", + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<4.4", + "symfony/web-profiler-bundle": "<4.4", + "symfony/workflow": "<4.3.6" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "doctrine/persistence": "^1.3|^2|^3", + "paragonie/sodium_compat": "^1.8", "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/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.3|^5.0", + "symfony/console": "^4.4.21|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7", + "symfony/dotenv": "^4.3.6|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^4.3.5|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/security-core": "^3.4|^4.4|^5.2", + "symfony/security-csrf": "^3.4|^4.0|^5.0", + "symfony/security-http": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^4.3.6|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" }, - "type": "library", + "suggest": { + "ext-apcu": "For best performance of the system caches", + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Component\\Mime\\": "" + "Symfony\\Bundle\\FrameworkBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2044,14 +2069,899 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Allows manipulating MIME messages", + "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" + "support": { + "source": "https://github.com/symfony/framework-bundle/tree/v4.4.41" + }, + "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-04-26T13:36:00+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v2.5.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1a4f708e4e87f335d1b1be6148060739152f0bd5", + "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/http-client-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\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" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-13T20:07:29+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "27441220aebeb096b4eb8267acaaa7feb5e4266c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27441220aebeb096b4eb8267acaaa7feb5e4266c", + "reference": "27441220aebeb096b4eb8267acaaa7feb5e4266c", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/mime": "^4.3|^5.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/expression-language": "^3.4|^4.0|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "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": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v4.4.41" + }, + "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-04-21T07:22:34+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "7f8ce5bffc3939c63b7da32de5a546c98eb67698" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7f8ce5bffc3939c63b7da32de5a546c98eb67698", + "reference": "7f8ce5bffc3939c63b7da32de5a546c98eb67698", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/log": "^1|^2", + "symfony/error-handler": "^4.4", + "symfony/event-dispatcher": "^4.4", + "symfony/http-client-contracts": "^1.1|^2", + "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "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|2.0" + }, + "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" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v4.4.41" + }, + "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-04-27T17:13:11+00:00" + }, + { + "name": "symfony/inflector", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/inflector.git", + "reference": "e5e4c618a40e562d51757b54305bd113df59c29f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/inflector/zipball/e5e4c618a40e562d51757b54305bd113df59c29f", + "reference": "e5e4c618a40e562d51757b54305bd113df59c29f", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Inflector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts words between their singular and plural forms (English only)", + "homepage": "https://symfony.com", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string", + "symfony", + "words" + ], + "support": { + "source": "https://github.com/symfony/inflector/tree/v4.4.37" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "abandoned": "EnglishInflector from the String component", + "time": "2022-01-02T09:41:36+00:00" + }, + { + "name": "symfony/mime", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "5b05a62a714bb7e8ba1ce7412f7442debe67c291" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/5b05a62a714bb7e8ba1ce7412f7442debe67c291", + "reference": "5b05a62a714bb7e8ba1ce7412f7442debe67c291", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "symfony/dependency-injection": "^3.4|^4.1|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "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": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v4.4.41" + }, + "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-04-12T15:19:55+00:00" + }, + { + "name": "symfony/monolog-bridge", + "version": "v4.4.37", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "152dcde5092b6fe034369f4a2dea05de38db9b79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/152dcde5092b6fe034369f4a2dea05de38db9b79", + "reference": "152dcde5092b6fe034369f4a2dea05de38db9b79", + "shasum": "" + }, + "require": { + "monolog/monolog": "^1.25.1", + "php": ">=7.1.3", + "symfony/http-kernel": "^4.3", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/console": "<3.4", + "symfony/http-foundation": "<3.4" + }, + "require-dev": { + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/security-core": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", + "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", + "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Monolog\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Monolog with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/monolog-bridge/tree/v4.4.37" + }, + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/monolog-bundle", + "version": "v3.7.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "fde12fc628162787a4e53877abadc30047fd868b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/fde12fc628162787a4e53877abadc30047fd868b", + "reference": "fde12fc628162787a4e53877abadc30047fd868b", + "shasum": "" + }, + "require": { + "monolog/monolog": "~1.22 || ~2.0", + "php": ">=7.1.3", + "symfony/config": "~4.4 || ^5.0 || ^6.0", + "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", + "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" + }, + "require-dev": { + "symfony/console": "~4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.2 || ^6.0", + "symfony/yaml": "~4.4 || ^5.0 || ^6.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MonologBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony MonologBundle", + "homepage": "https://symfony.com", + "keywords": [ + "log", + "logging" + ], + "support": { + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-05T10:34:29+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-09-14T14:02:44+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.2" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" }, "funding": [ { @@ -2067,28 +2977,25 @@ "type": "tidelift" } ], - "time": "2021-06-09T10:58:01+00:00" + "time": "2021-05-27T09:17:38+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "name": "symfony/polyfill-php73", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", "shasum": "" }, "require": { "php": ">=7.1" }, - "suggest": { - "ext-ctype": "For best performance" - }, "type": "library", "extra": { "branch-alias": { @@ -2100,11 +3007,14 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2113,24 +3023,24 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "ctype", "polyfill", - "portable" + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" }, "funding": [ { @@ -2146,28 +3056,25 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-06-05T21:20:04+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.0", + "name": "symfony/polyfill-php80", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", "shasum": "" }, "require": { "php": ">=7.1" }, - "suggest": { - "ext-intl": "For best performance" - }, "type": "library", "extra": { "branch-alias": { @@ -2179,11 +3086,14 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2191,6 +3101,10 @@ "MIT" ], "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -2200,18 +3114,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "grapheme", - "intl", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" }, "funding": [ { @@ -2227,29 +3139,24 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-03-04T08:16:47+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "name": "symfony/polyfill-php81", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" }, "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-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=7.1" }, "type": "library", "extra": { @@ -2262,11 +3169,14 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2275,30 +3185,24 @@ ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "idn", - "intl", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" }, "funding": [ { @@ -2314,47 +3218,40 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2021-09-13T13:58:11+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "name": "symfony/property-access", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "url": "https://github.com/symfony/property-access.git", + "reference": "363945473bc6ec784e75037b075cb98f85cdae36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/property-access/zipball/363945473bc6ec784e75037b075cb98f85cdae36", + "reference": "363945473bc6ec784e75037b075cb98f85cdae36", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/inflector": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/cache": "^3.4|^4.0|^5.0" }, "suggest": { - "ext-intl": "For best performance" + "psr/cache-implementation": "To cache access methods." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + "Symfony\\Component\\PropertyAccess\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2363,26 +3260,29 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", + "description": "Provides functions to read and write from/to an object or array using a simple string notation", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/property-access/tree/v4.4.41" }, "funding": [ { @@ -2398,44 +3298,54 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "name": "symfony/routing", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "url": "https://github.com/symfony/routing.git", + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/routing/zipball/c25e38d403c00d5ddcfc514f016f1b534abdf052", + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "psr/log": "^1|^2|^3", + "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" }, "suggest": { - "ext-mbstring": "For best performance" + "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", + "symfony/yaml": "For using the YAML loader" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Component\\Routing\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2444,25 +3354,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "router", + "routing", + "uri", + "url" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/routing/tree/v4.4.41" }, "funding": [ { @@ -2478,34 +3387,68 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/polyfill-php56", - "version": "v1.20.0", + "name": "symfony/security-bundle", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" + "url": "https://github.com/symfony/security-bundle.git", + "reference": "6549321a5abecccb311a697b6cb508a3c325ed18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6549321a5abecccb311a697b6cb508a3c325ed18", + "reference": "6549321a5abecccb311a697b6cb508a3c325ed18", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-xml": "*", + "php": ">=7.1.3", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^4.4", + "symfony/security-csrf": "^4.2|^5.0", + "symfony/security-guard": "^4.2|^5.0", + "symfony/security-http": "^4.4.5" }, - "type": "metapackage", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" + "conflict": { + "symfony/browser-kit": "<4.2", + "symfony/console": "<3.4", + "symfony/framework-bundle": "<4.4", + "symfony/ldap": "<4.4", + "symfony/twig-bundle": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.2|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^3.4|^4.0|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/translation": "^3.4|^4.0|^5.0", + "symfony/twig-bridge": "^3.4|^4.0|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SecurityBundle\\": "" }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2513,24 +3456,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.0" + "source": "https://github.com/symfony/security-bundle/tree/v4.4.41" }, "funding": [ { @@ -2546,34 +3483,59 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.20.0", + "name": "symfony/security-core", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" + "url": "https://github.com/symfony/security-core.git", + "reference": "254b083d923592383f42c45611d235b04e27749d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", + "url": "https://api.github.com/repos/symfony/security-core/zipball/254b083d923592383f42c45611d235b04e27749d", + "reference": "254b083d923592383f42c45611d235b04e27749d", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" }, - "type": "metapackage", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" + "conflict": { + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/ldap": "<4.4", + "symfony/security-guard": "<4.3" + }, + "require-dev": { + "psr/container": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/ldap": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^3.4.31|^4.3.4|^5.0" + }, + "suggest": { + "psr/container-implementation": "To instantiate the Security class", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/ldap": "For using LDAP integration", + "symfony/validator": "For using the user password constraint" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Core\\": "" }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2581,24 +3543,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0" + "source": "https://github.com/symfony/security-core/tree/v4.4.41" }, "funding": [ { @@ -2614,41 +3570,43 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2022-04-14T15:50:15+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.23.0", + "name": "symfony/security-csrf", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "url": "https://github.com/symfony/security-csrf.git", + "reference": "45c956ef58135091f53732646a0acd28034f02c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/45c956ef58135091f53732646a0acd28034f02c0", + "reference": "45c956ef58135091f53732646a0acd28034f02c0", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^3.4|^4.0|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "symfony/http-foundation": "<3.4" + }, + "require-dev": { + "symfony/http-foundation": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/http-foundation": "For using the class SessionTokenStorage." }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" + "Symfony\\Component\\Security\\Csrf\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2657,24 +3615,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + "source": "https://github.com/symfony/security-csrf/tree/v4.4.37" }, "funding": [ { @@ -2690,44 +3642,37 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.23.0", + "name": "symfony/security-guard", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" + "url": "https://github.com/symfony/security-guard.git", + "reference": "cf8922b164e1659726c8852663eaaa593eef668c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/cf8922b164e1659726c8852663eaaa593eef668c", + "reference": "cf8922b164e1659726c8852663eaaa593eef668c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1.3", + "symfony/security-core": "^3.4.22|^4.2.3|^5.0", + "symfony/security-http": "^4.4.1" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "psr/log": "^1|^2|^3" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Component\\Security\\Guard\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2736,28 +3681,18 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" + "source": "https://github.com/symfony/security-guard/tree/v4.4.37" }, "funding": [ { @@ -2773,36 +3708,47 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "symfony/property-access", - "version": "v4.4.25", + "name": "symfony/security-http", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "3af7c21b4128eadbace0800b51054a81bff896c6" + "url": "https://github.com/symfony/security-http.git", + "reference": "36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/3af7c21b4128eadbace0800b51054a81bff896c6", - "reference": "3af7c21b4128eadbace0800b51054a81bff896c6", + "url": "https://api.github.com/repos/symfony/security-http/zipball/36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e", + "reference": "36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0" + "symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/property-access": "^3.4|^4.0|^5.0", + "symfony/security-core": "^4.4.8" + }, + "conflict": { + "symfony/event-dispatcher": ">=5", + "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11" }, "require-dev": { - "symfony/cache": "^3.4|^4.0|^5.0" + "psr/log": "^1|^2|^3", + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0" }, "suggest": { - "psr/cache-implementation": "To cache access methods." + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" + "Symfony\\Component\\Security\\Http\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2822,21 +3768,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property path", - "reflection" - ], "support": { - "source": "https://github.com/symfony/property-access/tree/v4.4.25" + "source": "https://github.com/symfony/security-http/tree/v4.4.41" }, "funding": [ { @@ -2852,54 +3787,47 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "symfony/routing", - "version": "v4.4.25", + "name": "symfony/service-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3a3c2f197ad0846ac6413225fc78868ba1c61434", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.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" + "ext-psr": "<1.1|>=2" }, "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", - "symfony/yaml": "For using the YAML loader" + "symfony/service-implementation": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2907,24 +3835,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Maps an HTTP request to a set of configuration variables", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ - "router", - "routing", - "uri", - "url" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.25" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" }, "funding": [ { @@ -2940,66 +3870,56 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-03-13T20:07:29+00:00" }, { - "name": "symfony/security", - "version": "v3.4.49", + "name": "symfony/var-dumper", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/security.git", - "reference": "ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "58eb36075c04aaf92a7a9f38ee9a8b97e24eb481" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security/zipball/ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3", - "reference": "ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/58eb36075c04aaf92a7a9f38ee9a8b97e24eb481", + "reference": "58eb36075c04aaf92a7a9f38ee9a8b97e24eb481", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~3.4.40|^4.4.7", - "symfony/http-kernel": "~3.3|~4.0", - "symfony/polyfill-php56": "~1.0", - "symfony/polyfill-php70": "~1.0", - "symfony/property-access": "~2.8|~3.0|~4.0" - }, - "replace": { - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version" + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" }, "require-dev": { - "psr/container": "^1.0", - "psr/log": "~1.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/ldap": "~3.1|~4.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "~2.8|~3.0|~4.0", - "symfony/validator": "^3.2.5|~4.0" + "ext-iconv": "*", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" }, "suggest": { - "psr/container-implementation": "To instantiate the Security class", - "symfony/expression-language": "For using the expression voter", - "symfony/form": "", - "symfony/ldap": "For using the LDAP user and authentication providers", - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/validator": "For using the user password constraint" + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "autoload": { + "files": [ + "Resources/functions/dump.php" + ], "psr-4": { - "Symfony\\Component\\Security\\": "" + "Symfony\\Component\\VarDumper\\": "" }, "exclude-from-classmap": [ - "/Core/Tests/", - "/Csrf/Tests/", - "/Guard/Tests/", - "/Http/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3008,18 +3928,22 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], "support": { - "source": "https://github.com/symfony/security/tree/v3.4.49" + "source": "https://github.com/symfony/var-dumper/tree/v4.4.41" }, "funding": [ { @@ -3035,44 +3959,34 @@ "type": "tidelift" } ], - "time": "2021-05-19T12:03:21+00:00" + "time": "2022-04-25T21:15:06+00:00" }, { - "name": "symfony/string", - "version": "v5.3.3", + "name": "symfony/var-exporter", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1" + "url": "https://github.com/symfony/var-exporter.git", + "reference": "bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7", + "reference": "bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/var-dumper": "^4.4.9|^5.0.9" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\String\\": "" + "Symfony\\Component\\VarExporter\\": "" }, - "files": [ - "Resources/functions.php" - ], "exclude-from-classmap": [ "/Tests/" ] @@ -3091,18 +4005,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "description": "Allows exporting any serializable PHP data structure to plain PHP code", "homepage": "https://symfony.com", "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.3" + "source": "https://github.com/symfony/var-exporter/tree/v4.4.41" }, "funding": [ { @@ -3118,20 +4032,20 @@ "type": "tidelift" } ], - "time": "2021-06-27T11:44:38+00:00" + "time": "2022-04-25T17:40:48+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.26", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8" + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8", - "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d7f637cc0f0cc14beb0984f2bb50da560b271311", + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311", "shasum": "" }, "require": { @@ -3173,7 +4087,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.26" + "source": "https://github.com/symfony/yaml/tree/v4.4.37" }, "funding": [ { @@ -3189,35 +4103,36 @@ "type": "tidelift" } ], - "time": "2021-06-23T19:06:53+00:00" + "time": "2022-01-24T20:11:01+00:00" } ], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -3244,7 +4159,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -3260,41 +4175,42 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3310,7 +4226,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -3318,20 +4234,20 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "nikic/php-parser", - "version": "v4.11.0", + "version": "v4.13.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94" + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/fe14cf3672a149364fb66dfe11bf6549af899f94", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", "shasum": "" }, "require": { @@ -3372,22 +4288,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.11.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" }, - "time": "2021-07-03T13:36:55+00:00" + "time": "2021-11-30T19:35:32+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { @@ -3432,22 +4348,22 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2020-06-27T14:33:11+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -3483,9 +4399,9 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -3542,16 +4458,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { @@ -3562,7 +4478,8 @@ "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -3592,22 +4509,22 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2020-09-03T19:13:55+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "reference": "77a32518733312af16a44300404e945338981de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", "shasum": "" }, "require": { @@ -3615,7 +4532,8 @@ "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "*" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -3641,39 +4559,39 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" }, - "time": "2020-09-17T18:55:26+00:00" + "time": "2022-03-15T21:29:03+00:00" }, { "name": "phpspec/prophecy", - "version": "1.13.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", + "php": "^7.2 || ~8.0, <8.2", "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0", "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^6.0", + "phpspec/phpspec": "^6.0 || ^7.0", "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -3708,9 +4626,9 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" }, - "time": "2021-03-17T13:42:18+00:00" + "time": "2021-12-08T12:19:24+00:00" }, { "name": "phpspec/prophecy-phpunit", @@ -3766,23 +4684,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.6", + "version": "9.2.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", + "nikic/php-parser": "^4.13.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -3831,7 +4749,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" }, "funding": [ { @@ -3839,20 +4757,20 @@ "type": "github" } ], - "time": "2021-03-28T07:26:59+00:00" + "time": "2022-03-07T09:28:20+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -3891,7 +4809,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -3899,7 +4817,7 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -4084,16 +5002,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.6", + "version": "9.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb" + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", "shasum": "" }, "require": { @@ -4105,11 +5023,11 @@ "ext-xml": "*", "ext-xmlwriter": "*", "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.1", + "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -4123,7 +5041,7 @@ "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.0", "sebastian/version": "^3.0.2" }, "require-dev": { @@ -4144,11 +5062,11 @@ } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4171,11 +5089,11 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { @@ -4183,7 +5101,7 @@ "type": "github" } ], - "time": "2021-06-23T05:14:38+00:00" + "time": "2022-04-01T12:37:26+00:00" }, { "name": "sebastian/cli-parser", @@ -4551,16 +5469,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -4602,7 +5520,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -4610,20 +5528,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { @@ -4672,14 +5590,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { @@ -4687,20 +5605,20 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -4743,7 +5661,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -4751,7 +5669,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -5103,28 +6021,28 @@ }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5147,7 +6065,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" }, "funding": [ { @@ -5155,7 +6073,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2022-03-15T09:54:48+00:00" }, { "name": "sebastian/version", @@ -5212,16 +6130,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "version": "3.6.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", "shasum": "" }, "require": { @@ -5264,29 +6182,32 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-04-09T00:54:41+00:00" + "time": "2021-12-12T21:44:58+00:00" }, { "name": "symfony/browser-kit", - "version": "v3.4.47", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c" + "reference": "6e81008cac62369871cb6b8de64576ed138e3998" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c", - "reference": "9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/6e81008cac62369871cb6b8de64576ed138e3998", + "reference": "6e81008cac62369871cb6b8de64576ed138e3998", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/dom-crawler": "~2.8|~3.0|~4.0" + "php": ">=7.1.3", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0" + "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": "" @@ -5314,10 +6235,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony BrowserKit Component", + "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/v3.4.47" + "source": "https://github.com/symfony/browser-kit/tree/v4.4.37" }, "funding": [ { @@ -5333,24 +6254,25 @@ "type": "tidelift" } ], - "time": "2020-10-24T10:57:07+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.47", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "da3d9da2ce0026771f5fe64cb332158f1bd2bc33" + "reference": "0628e6c6d7c92f1a7bae543959bdc17347be2436" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/da3d9da2ce0026771f5fe64cb332158f1bd2bc33", - "reference": "da3d9da2ce0026771f5fe64cb332158f1bd2bc33", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/0628e6c6d7c92f1a7bae543959bdc17347be2436", + "reference": "0628e6c6d7c92f1a7bae543959bdc17347be2436", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -5379,10 +6301,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony CssSelector Component", + "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v3.4.47" + "source": "https://github.com/symfony/css-selector/tree/v4.4.37" }, "funding": [ { @@ -5398,26 +6320,27 @@ "type": "tidelift" } ], - "time": "2020-10-24T10:57:07+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.25", + "version": "v4.4.39", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef" + "reference": "4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/41d15bb6d6b95d2be763c514bb2494215d9c5eef", - "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3", + "reference": "4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3", "shasum": "" }, "require": { "php": ">=7.1.3", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" }, "conflict": { "masterminds/html5": "<2.6" @@ -5455,7 +6378,89 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.25" + "source": "https://github.com/symfony/dom-crawler/tree/v4.4.39" + }, + "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-02-25T10:38:15+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "66d1857e9565b70855d79e2639672b33baa9cbc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/66d1857e9565b70855d79e2639672b33baa9cbc8", + "reference": "66d1857e9565b70855d79e2639672b33baa9cbc8", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|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" + }, + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", + "extra": { + "thanks": { + "name": "phpunit/phpunit", + "url": "https://github.com/sebastianbergmann/phpunit" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides utilities for PHPUnit, especially user deprecation notices management", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.41" }, "funding": [ { @@ -5471,20 +6476,20 @@ "type": "tidelift" } ], - "time": "2021-05-26T11:20:16+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "75a63c33a8577608444246075ea0af0d052e452a" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", - "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { @@ -5513,7 +6518,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/master" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, "funding": [ { @@ -5521,7 +6526,7 @@ "type": "github" } ], - "time": "2020-07-12T23:59:07+00:00" + "time": "2021-07-28T10:34:58+00:00" }, { "name": "webmozart/assert", @@ -5583,13 +6588,15 @@ } ], "aliases": [], - "minimum-stability": "stable", + "minimum-stability": "dev", "stability-flags": [], - "prefer-stable": false, + "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.3 || ^7.4" + "php": "^7.3 || ^7.4", + "ext-ctype": "*", + "ext-iconv": "*" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } diff --git a/Milliner/config/bootstrap.php b/Milliner/config/bootstrap.php new file mode 100644 index 00000000..55560fb8 --- /dev/null +++ b/Milliner/config/bootstrap.php @@ -0,0 +1,23 @@ +=1.2) +if (is_array($env = @include dirname(__DIR__).'/.env.local.php') && (!isset($env['APP_ENV']) || ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env['APP_ENV']) === $env['APP_ENV'])) { + (new Dotenv(false))->populate($env); +} else { + // load all the .env files + (new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env'); +} + +$_SERVER += $_ENV; +$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; +$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; +$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; diff --git a/Milliner/config/bundles.php b/Milliner/config/bundles.php new file mode 100644 index 00000000..17f89aa1 --- /dev/null +++ b/Milliner/config/bundles.php @@ -0,0 +1,8 @@ + ['all' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + Islandora\Crayfish\Commons\CrayfishCommonsBundle::class => ['all' => true], +]; diff --git a/Milliner/config/packages/cache.yaml b/Milliner/config/packages/cache.yaml new file mode 100644 index 00000000..6899b720 --- /dev/null +++ b/Milliner/config/packages/cache.yaml @@ -0,0 +1,19 @@ +framework: + cache: + # Unique name of your app: used to compute stable namespaces for cache keys. + #prefix_seed: your_vendor_name/app_name + + # The "app" cache stores to the filesystem by default. + # The data in this cache should persist between deploys. + # Other options include: + + # Redis + #app: cache.adapter.redis + #default_redis_provider: redis://localhost + + # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) + #app: cache.adapter.apcu + + # Namespaced pools use the above "app" backend by default + #pools: + #my.dedicated.cache: null diff --git a/Milliner/config/packages/crayfish_commons.yaml b/Milliner/config/packages/crayfish_commons.yaml new file mode 100644 index 00000000..5994e748 --- /dev/null +++ b/Milliner/config/packages/crayfish_commons.yaml @@ -0,0 +1,4 @@ +crayfish_commons: + # Because we define a Fedora parameter in the services.yaml we can re-use it here. + fedora_base_uri: '%app.fedora_base_url%' + #syn_config: '/path/to/syn-settings.xml' diff --git a/Milliner/config/packages/framework.yaml b/Milliner/config/packages/framework.yaml new file mode 100644 index 00000000..cad7f780 --- /dev/null +++ b/Milliner/config/packages/framework.yaml @@ -0,0 +1,17 @@ +# see https://symfony.com/doc/current/reference/configuration/framework.html +framework: + secret: '%env(APP_SECRET)%' + #csrf_protection: true + #http_method_override: true + + # Enables session support. Note that the session will ONLY be started if you read or write from it. + # Remove or comment this section to explicitly disable session support. + session: + handler_id: null + cookie_secure: auto + cookie_samesite: lax + + #esi: true + #fragments: true + php_errors: + log: true diff --git a/Milliner/config/packages/monolog.yaml b/Milliner/config/packages/monolog.yaml new file mode 100644 index 00000000..23c1b3ac --- /dev/null +++ b/Milliner/config/packages/monolog.yaml @@ -0,0 +1,27 @@ +monolog: + handlers: + #main: + # type: stream + # path: "%kernel.logs_dir%/%kernel.environment%.log" + # level: debug + # channels: ["!event"] + #console: + # type: console + # process_psr_3_messages: false + # channels: ["!event", "!doctrine", "!console"] + + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + + milliner: + type: rotating_file + path: /tmp/Milliner.log + level: DEBUG + max_files: 1 + channels: ["!event", "!console"] \ No newline at end of file diff --git a/Milliner/config/packages/prod/routing.yaml b/Milliner/config/packages/prod/routing.yaml new file mode 100644 index 00000000..b3e6a0af --- /dev/null +++ b/Milliner/config/packages/prod/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: null diff --git a/Milliner/config/packages/routing.yaml b/Milliner/config/packages/routing.yaml new file mode 100644 index 00000000..7e977620 --- /dev/null +++ b/Milliner/config/packages/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + utf8: true diff --git a/Milliner/config/packages/security.yaml b/Milliner/config/packages/security.yaml new file mode 100644 index 00000000..284b7a30 --- /dev/null +++ b/Milliner/config/packages/security.yaml @@ -0,0 +1,33 @@ +security: + # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers + providers: + users_in_memory: { memory: null } + jwt_user_provider: + id: Islandora\Crayfish\Commons\Syn\JwtUserProvider + firewalls: + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + main: + # To enable Syn, change anonymous to false and uncomment the lines further below + anonymous: true + # Need stateless or it reloads the User based on a token. + stateless: true + + # To enable Syn, uncomment the below 4 lines and change anonymous to false above. + #provider: jwt_user_provider + #guard: + # authenticators: + # - Islandora\Crayfish\Commons\Syn\JwtAuthenticator + + # activate different ways to authenticate + # https://symfony.com/doc/current/security.html#firewalls-authentication + + # https://symfony.com/doc/current/security/impersonating_user.html + # switch_user: true + + # Easy way to control access for large sections of your site + # Note: Only the *first* access control that matches will be used + access_control: + # - { path: ^/admin, roles: ROLE_ADMIN } + # - { path: ^/profile, roles: ROLE_USER } diff --git a/Milliner/config/packages/test/framework.yaml b/Milliner/config/packages/test/framework.yaml new file mode 100644 index 00000000..d051c840 --- /dev/null +++ b/Milliner/config/packages/test/framework.yaml @@ -0,0 +1,4 @@ +framework: + test: true + session: + storage_id: session.storage.mock_file diff --git a/Milliner/config/preload.php b/Milliner/config/preload.php new file mode 100644 index 00000000..064bdcd6 --- /dev/null +++ b/Milliner/config/preload.php @@ -0,0 +1,9 @@ + - - - - ./src - - - ./src/index.php - ./src/app.php - - - - - - - - ./tests/ - - - + + + + + + + + + + + + + + + tests + + + + + + ./src + + + ./src/Kernel.php + + + + + + + + + + + + diff --git a/Milliner/public/index.php b/Milliner/public/index.php new file mode 100644 index 00000000..5dfaee0f --- /dev/null +++ b/Milliner/public/index.php @@ -0,0 +1,27 @@ +handle($request); +$response->send(); +$kernel->terminate($request, $response); diff --git a/Milliner/src/Controller/MillinerController.php b/Milliner/src/Controller/MillinerController.php index f5babe21..9a9d1bfc 100644 --- a/Milliner/src/Controller/MillinerController.php +++ b/Milliner/src/Controller/MillinerController.php @@ -1,8 +1,8 @@ headers->get("Authorization", null); $jsonld_url = $request->headers->get("Content-Location"); @@ -65,7 +68,7 @@ public function saveNode($uuid, Request $request) $response->getStatusCode() ); } catch (\Exception $e) { - $this->log->error("", ['Exception' => $e]); + $this->log->error("Caught exception creating node resource.", ['Exception' => $e]); $code = $e->getCode() == 0 ? 500 : $e->getCode(); return new Response($e->getMessage(), $code); } @@ -93,7 +96,7 @@ public function deleteNode($uuid, Request $request) $response->getStatusCode() ); } catch (\Exception $e) { - $this->log->error("", ['Exception' => $e]); + $this->log->error("Caught exception deleting resource.", ['Exception' => $e]); $code = $e->getCode() == 0 ? 500 : $e->getCode(); return new Response($e->getMessage(), $code); } @@ -127,7 +130,7 @@ public function saveMedia($source_field, Request $request) $response->getStatusCode() ); } catch (\Exception $e) { - $this->log->error("", ['Exception' => $e]); + $this->log->error("Caught exception saving media resource.", ['Exception' => $e]); $code = $e->getCode() == 0 ? 500 : $e->getCode(); return new Response($e->getMessage(), $code); } @@ -161,7 +164,7 @@ public function saveExternal($uuid, Request $request) $response->getStatusCode() ); } catch (\Exception $e) { - $this->log->error("", ['Exception' => $e]); + $this->log->error("Caught exception saving external content resource.", ['Exception' => $e]); $code = $e->getCode() == 0 ? 500 : $e->getCode(); return new Response($e->getMessage(), $code); } @@ -176,7 +179,7 @@ public function createNodeVersion($uuid, Request $request) { $token = $request->headers->get("Authorization", null); $islandora_fedora_endpoint = $request->headers->get("X-Islandora-Fedora-Endpoint"); - + try { $response = $this->milliner->createVersion( $uuid, @@ -188,7 +191,7 @@ public function createNodeVersion($uuid, Request $request) $response->getStatusCode() ); } catch (\Exception $e) { - $this->log->error("", ['Exception' => $e]); + $this->log->error("Caught exception creating node version", ['Exception' => $e]); $code = $e->getCode() == 0 ? 500 : $e->getCode(); return new Response($e->getMessage(), $code); } @@ -217,7 +220,7 @@ public function createMediaVersion($source_field, Request $request) $response->getStatusCode() ); } catch (\Exception $e) { - $this->log->error("", ['Exception' => $e]); + $this->log->error("Caught exception when creating media version", ['Exception' => $e]); $code = $e->getCode() == 0 ? 500 : $e->getCode(); return new Response($e->getMessage(), $code); } diff --git a/Milliner/src/Kernel.php b/Milliner/src/Kernel.php new file mode 100644 index 00000000..4a84b226 --- /dev/null +++ b/Milliner/src/Kernel.php @@ -0,0 +1,54 @@ +getProjectDir().'/config/bundles.php'; + foreach ($contents as $class => $envs) { + if ($envs[$this->environment] ?? $envs['all'] ?? false) { + yield new $class(); + } + } + } + + public function getProjectDir(): string + { + return \dirname(__DIR__); + } + + protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void + { + $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); + $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || $this->debug); + $container->setParameter('container.dumper.inline_factories', true); + $confDir = $this->getProjectDir().'/config'; + + $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{packages}/'.$this->environment.'/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); + } + + protected function configureRoutes(RouteCollectionBuilder $routes): void + { + $confDir = $this->getProjectDir().'/config'; + + $routes->import($confDir.'/{routes}/'.$this->environment.'/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); + } +} diff --git a/Milliner/src/Service/MillinerService.php b/Milliner/src/Service/MillinerService.php index d504649c..fdedd69f 100644 --- a/Milliner/src/Service/MillinerService.php +++ b/Milliner/src/Service/MillinerService.php @@ -1,74 +1,92 @@ fedora = $fedora; $this->drupal = $drupal; @@ -76,21 +94,21 @@ public function __construct( $this->log = $log; $this->modifiedDatePredicate = $modifiedDatePredicate; $this->stripFormatJsonld = $stripFormatJsonld; - $this->fedora6 = $fedora6; + $this->isFedora6 = $isFedora6; } /** - * {@inheritDoc} + * {@inheritdoc} */ public function saveNode( - $uuid, - $jsonld_url, - $islandora_fedora_endpoint, - $token = null - ) { + string $uuid, + string $jsonld_url, + string $islandora_fedora_endpoint, + string $token = null + ): ResponseInterface { $path = $this->mapper->getFedoraPath($uuid); $islandora_fedora_endpoint = rtrim($islandora_fedora_endpoint, "/"); - $fedora_url = "$islandora_fedora_endpoint/$path"; + $fedora_url = "$islandora_fedora_endpoint/$path"; $response = $this->fedora->getResourceHeaders($fedora_url); if ($response->getStatusCode() == 404) { @@ -115,17 +133,17 @@ public function saveNode( * * @param string $jsonld_url * @param string $fedora_url - * @param string $token + * @param string|null $token * - * @return \GuzzleHttp\Psr7\Response + * @return \Psr\Http\Message\ResponseInterface * * @throws \RuntimeException * @throws \GuzzleHttp\Exception\RequestException */ protected function createNode( - $jsonld_url, - $fedora_url, - $token = null + string $jsonld_url, + string $fedora_url, + string $token = null ) { // Get the jsonld from Drupal. $headers = empty($token) ? [] : ['Authorization' => $token]; @@ -179,20 +197,20 @@ protected function createNode( * @param string $fedora_url * @param string $token * - * @return \GuzzleHttp\Psr7\Response + * @return \Psr\Http\Message\ResponseInterface * * @throws \RuntimeException * @throws \GuzzleHttp\Exception\RequestException */ protected function updateNode( - $jsonld_url, - $fedora_url, - $token = null + string $jsonld_url, + string $fedora_url, + string $token = null ) { // Get the RDF from Fedora. $headers = empty($token) ? [] : ['Authorization' => $token]; $headers['Accept'] = 'application/ld+json'; - if ($this->fedora6) { + if ($this->isFedora6) { $prefer = 'return=representation; omit="http://fedora.info/definitions/v4/repository#ServerManaged"'; $headers['Prefer'] = $prefer; } @@ -206,7 +224,7 @@ protected function updateNode( $reason = $fedora_response->getReasonPhrase(); throw new \RuntimeException( "Client error: `GET $fedora_url` resulted in a `$status $reason` response: " . - $fedora_response->getBody(), + $fedora_response->getBody(), $status ); } @@ -271,8 +289,8 @@ protected function updateNode( // Conditionally save it in Fedora. $headers['Content-Type'] = 'application/ld+json'; $headers['Prefer'] = 'handling=lenient'; - if (!$this->fedora6) { - $headers['Prefer'] .= ';received=minimal'; + if (!$this->isFedora6) { + $headers['Prefer'] .= ';received=minimal'; } $headers['X-If-State-Match'] = $state_token; $response = $this->fedora->saveResource( @@ -309,7 +327,7 @@ protected function processJsonld(array $jsonld, $drupal_url, $fedora_url) $this->log->debug("FEDORA URL: $fedora_url"); $this->log->debug("BEFORE: " . json_encode($jsonld)); // Strip out everything other than the resource in question. - // Ignore http/https. + // Ignore http/https. $parts = parse_url($drupal_url); $subject_url = $parts['host'] . $parts['path']; $resource = array_filter( @@ -377,7 +395,7 @@ protected function getModifiedTimestamp(array $jsonld) } $date = \DateTime::createFromFormat( - \DateTime::W3C, + DateTimeInterface::W3C, $modified ); @@ -392,7 +410,7 @@ public function saveMedia( $json_url, $islandora_fedora_endpoint, $token = null - ) { + ): ResponseInterface { $urls = $this->getMediaUrls($source_field, $json_url, $islandora_fedora_endpoint, $token); return $this->updateNode( $urls['jsonld'], @@ -404,17 +422,22 @@ public function saveMedia( /** * Gets a Link header with the supplied rel name. * - * @param $response - * @param $rel_name + * @param ResponseInterface $response + * The response to get headers from. + * @param string $rel_name + * The rel property to match. + * @param string|null $type + * A type to match if provided. * * @return null|string + * The first matching header or null if none match. */ - protected function getLinkHeader($response, $rel_name, $type = null) + protected function getLinkHeader(ResponseInterface $response, string $rel_name, string $type = null): ?string { - $parsed = Psr7\parse_header($response->getHeader("Link")); + $parsed = Header::parse($response->getHeader("Link")); foreach ($parsed as $header) { $has_relation = isset($header['rel']) && $header['rel'] == $rel_name; - $has_type = $type ? isset($header['type']) && $header['type'] == $type : true; + $has_type = is_null($type) || isset($header['type']) && $header['type'] == $type; if ($has_type && $has_relation) { return trim($header[0], '<>'); } @@ -429,10 +452,10 @@ public function deleteNode( $uuid, $islandora_fedora_endpoint, $token = null - ) { + ): ResponseInterface { $path = $this->mapper->getFedoraPath($uuid); $islandora_fedora_endpoint = rtrim($islandora_fedora_endpoint, "/"); - $fedora_url = "$islandora_fedora_endpoint/$path"; + $fedora_url = "$islandora_fedora_endpoint/$path"; $headers = empty($token) ? [] : ['Authorization' => $token]; $response = $this->fedora->deleteResource( @@ -445,7 +468,7 @@ public function deleteNode( $reason = $response->getReasonPhrase(); throw new \RuntimeException( "Client error: `DELETE $fedora_url` resulted in a `$status $reason` response: " . - $response->getBody(), + $response->getBody(), $status ); } @@ -461,26 +484,28 @@ public function saveExternal( $external_url, $islandora_fedora_endpoint, $token = null - ) { + ): ResponseInterface { $path = $this->mapper->getFedoraPath($uuid); $islandora_fedora_endpoint = rtrim($islandora_fedora_endpoint, "/"); - $fedora_url = "$islandora_fedora_endpoint/$path"; + $fedora_url = "$islandora_fedora_endpoint/$path"; $headers = empty($token) ? [] : ['Authorization' => $token]; - // Try it with an without auth b/c files can be public or private. + // Try it with an without auth b/c files can be public or private. try { $drupal_response = $this->drupal->head( $external_url, ['headers' => $headers] ); } catch (ClientException $e) { - $this->log->debug("GOT {$e->getCode()}, TRYING WIHTOUT AUTH HEADER"); + $this->log->debug("GOT {$e->getCode()}, TRYING WITHOUT AUTH HEADER"); $drupal_response = $this->drupal->head( $external_url, ['headers' => []] ); } + $mimetype = $drupal_response->getHeader('Content-Type')[0]; + if (preg_match("/^([^;]+);/", $mimetype, $matches)) { $mimetype = $matches[1]; } @@ -515,36 +540,32 @@ public function createVersion( $uuid, $islandora_fedora_endpoint, $token = null - ) { + ): ResponseInterface { $path = $this->mapper->getFedoraPath($uuid); $islandora_fedora_endpoint = rtrim($islandora_fedora_endpoint, "/"); - $fedora_url = "$islandora_fedora_endpoint/$path"; + $fedora_url = "$islandora_fedora_endpoint/$path"; $headers = empty($token) ? [] : ['Authorization' => $token]; $date = new DateTime(); $timestamp = $date->format("D, d M Y H:i:s O"); // create version in Fedora. - try { - $response = $this->fedora->createVersion( - $fedora_url, - $timestamp, - null, - $headers + $response = $this->fedora->createVersion( + $fedora_url, + $timestamp, + null, + $headers + ); + $status = $response->getStatusCode(); + if (!in_array($status, [201])) { + $reason = $response->getReasonPhrase(); + throw new \RuntimeException( + "Client error: `POST $fedora_url` resulted in `$status $reason` response: " . + $response->getBody(), + $status ); - $status = $response->getStatusCode(); - if (!in_array($status, [201])) { - $reason = $response->getReasonPhrase(); - throw new \RuntimeException( - "Client error: `POST $fedora_url` resulted in `$status $reason` response: " . - $response->getBody(), - $status - ); - } - // Return the response from Fedora. - return $response; - } catch (Exception $e) { - $this->log->error('Caught exception when creating version: ', $e->getMessage(), "\n"); } + // Return the response from Fedora. + return $response; } /** @@ -555,7 +576,7 @@ public function createMediaVersion( $json_url, $islandora_fedora_endpoint, $token = null - ) { + ): ResponseInterface { $urls = $this->getMediaUrls($source_field, $json_url, $islandora_fedora_endpoint, $token); $fedora_url = $urls['fedora']; @@ -563,31 +584,45 @@ public function createMediaVersion( $date = new DateTime(); $timestamp = $date->format("D, d M Y H:i:s O"); // create version in Fedora. - try { - $response = $this->fedora->createVersion( - $fedora_url, - $timestamp, - null, - $headers + $response = $this->fedora->createVersion( + $fedora_url, + $timestamp, + null, + $headers + ); + $status = $response->getStatusCode(); + if (!in_array($status, [201])) { + $reason = $response->getReasonPhrase(); + throw new \RuntimeException( + "Client error: `POST $fedora_url` resulted in `$status $reason` response: " . + $response->getBody(), + $status ); - $status = $response->getStatusCode(); - if (!in_array($status, [201])) { - $reason = $response->getReasonPhrase(); - throw new \RuntimeException( - "Client error: `POST $fedora_url` resulted in `$status $reason` response: " . - $response->getBody(), - $status - ); - } - // Return the response from Fedora. - return $response; - } catch (Exception $e) { - $this->log->error('Caught exception when creating version: ', $e->getMessage(), "\n"); } + // Return the response from Fedora. + return $response; } - protected function getMediaUrls($source_field, $json_url, $islandora_fedora_endpoint, $token = null) - { + /** + * Utility function to get media urls. + * + * @param string $source_field + * The source field to get media urls for. + * @param string $json_url + * The drupal media resource's JSON format URL. + * @param string $islandora_fedora_endpoint + * The Fedora Base URL. + * @param string|null $token + * The authorization token or null for no auth. + * @return array + * Associative array with keys 'drupal', 'fedora' and 'jsonld' with the various URLs. + */ + protected function getMediaUrls( + string $source_field, + string $json_url, + string $islandora_fedora_endpoint, + string $token = null + ): array { // GET request for link headers and file UUID. $headers = empty($token) ? [] : ['Authorization' => $token]; $drupal_response = $this->drupal->get( @@ -624,8 +659,8 @@ protected function getMediaUrls($source_field, $json_url, $islandora_fedora_endp } $file_uuid = $media_json[$source_field][0]['target_uuid']; - // Construct the fedora url. - // Try to handle flysystem files first. + // Construct the fedora url. + // Try to handle flysystem files first. $islandora_fedora_endpoint = rtrim($islandora_fedora_endpoint, "/"); $pieces = explode("_flysystem/fedora/", $drupal_url); if (count($pieces) > 1) { @@ -633,7 +668,7 @@ protected function getMediaUrls($source_field, $json_url, $islandora_fedora_endp } else { $fedora_file_path = $this->mapper->getFedoraPath($file_uuid); } - $fedora_file_url = "$islandora_fedora_endpoint/$fedora_file_path"; + $fedora_file_url = "$islandora_fedora_endpoint/$fedora_file_path"; // Now look for the 'describedby' link header on the file in Fedora. // I'm using the drupal http client because I have the full @@ -648,7 +683,7 @@ protected function getMediaUrls($source_field, $json_url, $islandora_fedora_endp $reason = $fedora_response->getReasonPhrase(); throw new \RuntimeException( "Client error: `HEAD $fedora_file_url` resulted in a `$status $reason` response: " . - $fedora_response->getBody(), + $fedora_response->getBody(), $status ); } diff --git a/Milliner/src/Service/MillinerServiceInterface.php b/Milliner/src/Service/MillinerServiceInterface.php index a02b405f..3378beec 100644 --- a/Milliner/src/Service/MillinerServiceInterface.php +++ b/Milliner/src/Service/MillinerServiceInterface.php @@ -1,108 +1,132 @@ register(new IslandoraServiceProvider()); -$app->register(new YamlConfigServiceProvider(__DIR__ . '/../cfg/config.yaml')); - -$app['debug'] = $app['crayfish.debug']; - -$app['milliner.controller'] = function () use ($app) { - try { - $strip_format_jsonld = filter_var( - $app['crayfish.strip_format_jsonld'], - FILTER_VALIDATE_BOOLEAN - ); - } catch (UnknownIdentifierException $e) { - $strip_format_jsonld = false; - } - - try { - $fedora6 = filter_var( - $app['crayfish.fedora6'], - FILTER_VALIDATE_BOOLEAN - ); - } catch (UnknownIdentifierException $e) { - $fedora6 = false; - } - - return new MillinerController( - new MillinerService( - FedoraApi::create($app['crayfish.fedora_base_url']), - new Client(), - new EntityMapper(), - $app['monolog'], - $app['crayfish.modified_date_predicate'], - $strip_format_jsonld, - $fedora6 - ), - $app['monolog'] - ); -}; - -$app->post('/node/{uuid}', "milliner.controller:saveNode"); -$app->delete('/node/{uuid}', "milliner.controller:deleteNode"); -$app->post('/node/{uuid}/version', "milliner.controller:createNodeVersion"); -$app->post('/media/{source_field}', "milliner.controller:saveMedia"); -$app->post('/media/{source_field}/version', 'milliner.controller:createMediaVersion'); -$app->post('/external/{uuid}', "milliner.controller:saveExternal"); - -return $app; diff --git a/Milliner/src/index.php b/Milliner/src/index.php deleted file mode 100644 index 3e23d477..00000000 --- a/Milliner/src/index.php +++ /dev/null @@ -1,4 +0,0 @@ -run(); diff --git a/Milliner/symfony.lock b/Milliner/symfony.lock new file mode 100644 index 00000000..7aadeab2 --- /dev/null +++ b/Milliner/symfony.lock @@ -0,0 +1,372 @@ +{ + "doctrine/instantiator": { + "version": "1.4.0" + }, + "easyrdf/easyrdf": { + "version": "1.1.1" + }, + "guzzlehttp/guzzle": { + "version": "6.5.5" + }, + "guzzlehttp/promises": { + "version": "1.5.1" + }, + "guzzlehttp/psr7": { + "version": "1.8.3" + }, + "islandora/chullo": { + "version": "1.3.0" + }, + "islandora/crayfish-commons": { + "version": "3.0.0" + }, + "ml/iri": { + "version": "1.1.4" + }, + "ml/json-ld": { + "version": "1.2.0" + }, + "monolog/monolog": { + "version": "1.26.1" + }, + "myclabs/deep-copy": { + "version": "1.10.2" + }, + "namshi/jose": { + "version": "7.2.3" + }, + "nikic/php-parser": { + "version": "v4.13.0" + }, + "phar-io/manifest": { + "version": "2.0.3" + }, + "phar-io/version": { + "version": "3.1.0" + }, + "phpdocumentor/reflection-common": { + "version": "2.2.0" + }, + "phpdocumentor/reflection-docblock": { + "version": "5.3.0" + }, + "phpdocumentor/type-resolver": { + "version": "1.5.1" + }, + "phpspec/prophecy": { + "version": "1.14.0" + }, + "phpspec/prophecy-phpunit": { + "version": "v2.0.1" + }, + "phpunit/php-code-coverage": { + "version": "9.2.7" + }, + "phpunit/php-file-iterator": { + "version": "3.0.5" + }, + "phpunit/php-invoker": { + "version": "3.1.1" + }, + "phpunit/php-text-template": { + "version": "2.0.4" + }, + "phpunit/php-timer": { + "version": "5.0.3" + }, + "phpunit/phpunit": { + "version": "9.5", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "9.3", + "ref": "a6249a6c4392e9169b87abf93225f7f9f59025e6" + }, + "files": [ + ".env.test", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "psr/cache": { + "version": "1.0.1" + }, + "psr/container": { + "version": "1.1.1" + }, + "psr/http-message": { + "version": "1.0.1" + }, + "psr/log": { + "version": "1.1.4" + }, + "ralouphie/getallheaders": { + "version": "3.0.3" + }, + "sebastian/cli-parser": { + "version": "1.0.1" + }, + "sebastian/code-unit": { + "version": "1.0.8" + }, + "sebastian/code-unit-reverse-lookup": { + "version": "2.0.3" + }, + "sebastian/comparator": { + "version": "4.0.6" + }, + "sebastian/complexity": { + "version": "2.0.2" + }, + "sebastian/diff": { + "version": "4.0.4" + }, + "sebastian/environment": { + "version": "5.1.3" + }, + "sebastian/exporter": { + "version": "4.0.3" + }, + "sebastian/global-state": { + "version": "5.0.3" + }, + "sebastian/lines-of-code": { + "version": "1.0.3" + }, + "sebastian/object-enumerator": { + "version": "4.0.4" + }, + "sebastian/object-reflector": { + "version": "2.0.4" + }, + "sebastian/phpcpd": { + "version": "6.0.3" + }, + "sebastian/recursion-context": { + "version": "4.0.4" + }, + "sebastian/resource-operations": { + "version": "3.0.3" + }, + "sebastian/type": { + "version": "2.3.4" + }, + "sebastian/version": { + "version": "3.0.2" + }, + "squizlabs/php_codesniffer": { + "version": "3.6", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "master", + "version": "3.6", + "ref": "1019e5c08d4821cb9b77f4891f8e9c31ff20ac6f" + } + }, + "symfony/browser-kit": { + "version": "v4.4.27" + }, + "symfony/cache": { + "version": "v4.4.31" + }, + "symfony/cache-contracts": { + "version": "v2.4.0" + }, + "symfony/config": { + "version": "v4.4.30" + }, + "symfony/css-selector": { + "version": "v4.4.27" + }, + "symfony/debug": { + "version": "v4.4.31" + }, + "symfony/dependency-injection": { + "version": "v4.4.31" + }, + "symfony/deprecation-contracts": { + "version": "v2.5.1" + }, + "symfony/dom-crawler": { + "version": "v4.4.30" + }, + "symfony/dotenv": { + "version": "v4.4.29" + }, + "symfony/error-handler": { + "version": "v4.4.30" + }, + "symfony/event-dispatcher": { + "version": "v4.4.30" + }, + "symfony/event-dispatcher-contracts": { + "version": "v1.1.9" + }, + "symfony/filesystem": { + "version": "v4.4.27" + }, + "symfony/finder": { + "version": "v4.4.30" + }, + "symfony/flex": { + "version": "1.17", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" + }, + "files": [ + ".env" + ] + }, + "symfony/framework-bundle": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.4", + "ref": "3b9c85f14cad439042f88f94a1fd15fb8ed923c9" + }, + "files": [ + "config/services.yaml", + "config/bootstrap.php", + "config/routes/dev/framework.yaml", + "config/preload.php", + "config/packages/cache.yaml", + "config/packages/framework.yaml", + "config/packages/test/framework.yaml", + "public/index.php", + "src/Kernel.php", + "src/Controller/.gitignore" + ] + }, + "symfony/http-client-contracts": { + "version": "v2.4.0" + }, + "symfony/http-foundation": { + "version": "v4.4.30" + }, + "symfony/http-kernel": { + "version": "v4.4.32" + }, + "symfony/inflector": { + "version": "v4.4.27" + }, + "symfony/mime": { + "version": "v4.4.31" + }, + "symfony/monolog-bridge": { + "version": "v4.4.27" + }, + "symfony/monolog-bundle": { + "version": "3.7", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.7", + "ref": "a7bace7dbc5a7ed5608dbe2165e0774c87175fe6" + }, + "files": [ + "config/packages/test/monolog.yaml", + "config/packages/prod/monolog.yaml", + "config/packages/prod/deprecations.yaml", + "config/packages/dev/monolog.yaml" + ] + }, + "symfony/phpunit-bridge": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.3", + "ref": "0e1b186400de9d4ab83363138b4eb0072c99b2ab" + }, + "files": [ + ".env.test", + "bin/phpunit", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "symfony/polyfill-intl-idn": { + "version": "v1.23.0" + }, + "symfony/polyfill-intl-normalizer": { + "version": "v1.23.0" + }, + "symfony/polyfill-mbstring": { + "version": "v1.23.1" + }, + "symfony/polyfill-php72": { + "version": "v1.23.0" + }, + "symfony/polyfill-php73": { + "version": "v1.23.0" + }, + "symfony/polyfill-php80": { + "version": "v1.23.1" + }, + "symfony/polyfill-php81": { + "version": "v1.23.0" + }, + "symfony/property-access": { + "version": "v4.4.30" + }, + "symfony/routing": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.2", + "ref": "683dcb08707ba8d41b7e34adb0344bfd68d248a7" + }, + "files": [ + "config/routes.yaml", + "config/packages/routing.yaml", + "config/packages/prod/routing.yaml" + ] + }, + "symfony/security-bundle": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.4", + "ref": "7b4408dc203049666fe23fabed23cbadc6d8440f" + }, + "files": [ + "config/packages/security.yaml" + ] + }, + "symfony/security-core": { + "version": "v4.4.31" + }, + "symfony/security-csrf": { + "version": "v4.4.27" + }, + "symfony/security-guard": { + "version": "v4.4.27" + }, + "symfony/security-http": { + "version": "v4.4.30" + }, + "symfony/service-contracts": { + "version": "v2.4.0" + }, + "symfony/var-dumper": { + "version": "v4.4.31" + }, + "symfony/var-exporter": { + "version": "v4.4.31" + }, + "symfony/yaml": { + "version": "v4.4.29" + }, + "theseer/tokenizer": { + "version": "1.2.1" + }, + "webmozart/assert": { + "version": "1.10.0" + } +} diff --git a/Milliner/tests.patch b/Milliner/tests.patch deleted file mode 100644 index 52a5c59f..00000000 --- a/Milliner/tests.patch +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/Milliner/tests/Islandora/Milliner/Tests/MillinerControllerTest.php b/Milliner/tests/Islandora/Milliner/Tests/MillinerControllerTest.php -index 09b9e74..e28e5f9 100644 ---- a/Milliner/tests/Islandora/Milliner/Tests/MillinerControllerTest.php -+++ b/Milliner/tests/Islandora/Milliner/Tests/MillinerControllerTest.php -@@ -48,12 +48,16 @@ class MillinerControllerTest extends TestCase - $milliner = $this->prophesize(MillinerServiceInterface::class); - $milliner->saveNode(Argument::any(), Argument::any(), Argument::any(), Argument::any()) - ->willThrow(new \Exception("Forbidden", 403)); -+ $milliner->getFileFromMedia(Argument::any(), Argument::any(), Argument::any()) -+ ->willThrow(new \Exception("Forbidden", 403)); - $milliner->saveMedia(Argument::any(), Argument::any(), Argument::any()) - ->willThrow(new \Exception("Forbidden", 403)); - $milliner->deleteNode(Argument::any(), Argument::any()) - ->willThrow(new \Exception("Forbidden", 403)); - $milliner->saveExternal(Argument::any(), Argument::any(), Argument::any(), Argument::any()) - ->willThrow(new \Exception("Forbidden", 403)); -+ $milliner->getGeminiUrls(Argument::any(), Argument::any()) -+ ->willThrow(new \Exception("Forbidden", 403)); - $milliner->createVersion(Argument::any(), Argument::any()) - ->willThrow(new \Exception("Forbidden", 403)); - $milliner = $milliner->reveal(); -@@ -473,7 +477,9 @@ class MillinerControllerTest extends TestCase - public function testCreateNodeVersionReturnsSuccessOnSuccess() - { - $milliner = $this->prophesize(MillinerServiceInterface::class); -- $milliner->createVersion(Argument::any(), Argument::any(), Argument::any(), Argument::any()) -+ $milliner->getGeminiUrls(Argument::any(), Argument::any()) -+ ->willReturn(['fedora' => "http://example.org/fcrepo/abc123", "drupal" => "http://example.org/node/1"]); -+ $milliner->createVersion(Argument::any(), Argument::any()) - ->willReturn(new Response(201)); - $milliner = $milliner->reveal(); - $controller = new MillinerController($milliner, $this->logger); -@@ -499,7 +505,9 @@ class MillinerControllerTest extends TestCase - ); - - $milliner = $this->prophesize(MillinerServiceInterface::class); -- $milliner->createVersion(Argument::any(), Argument::any(), Argument::any(), Argument::any()) -+ $milliner->getGeminiUrls(Argument::any(), Argument::any()) -+ ->willReturn(['fedora' => "http://example.org/fcrepo/abc123", "drupal" => "http://example.org/node/1"]); -+ $milliner->createVersion(Argument::any(), Argument::any()) - ->willReturn(new Response(204)); - $milliner = $milliner->reveal(); - $controller = new MillinerController($milliner, $this->logger); diff --git a/Milliner/tests/AbstractMillinerTestCase.php b/Milliner/tests/AbstractMillinerTestCase.php new file mode 100644 index 00000000..a7818dcb --- /dev/null +++ b/Milliner/tests/AbstractMillinerTestCase.php @@ -0,0 +1,175 @@ += 6.0.0 + * @var bool + */ + protected $isFedora6 = false; + + /** + * Whether to strip the ?_format=jsonld from URLs + * @var bool + */ + protected $stripJsonLd = false; + + /** + * @var string + */ + protected $fedoraBaseUrl; + + /** + * @var \Islandora\Chullo\IFedoraApi + */ + protected $fedora_client_prophecy; + + /** + * @var \Islandora\Crayfish\Commons\EntityMapper\EntityMapperInterface + */ + protected $entity_mapper_prophecy; + + /** + * @var \GuzzleHttp\Client + */ + protected $drupal_client_prophecy; + + /** + * A 200 OK response. + * @var \GuzzleHttp\Psr7\Response + */ + protected $ok_response; + + /** + * A 201 Created response. + * @var \GuzzleHttp\Psr7\Response + */ + protected $created_response; + + /** + * A 204 No Content response. + * @var \GuzzleHttp\Psr7\Response + */ + protected $no_content_response; + + /** + * A 404 Not Found response. + * @var \GuzzleHttp\Psr7\Response + */ + protected $not_found_response; + + /** + * A 401 Unauthorized response. + * @var \GuzzleHttp\Psr7\Response + */ + protected $unauthorized_response; + + /** + * A 403 Forbidden response + * @var \GuzzleHttp\Psr7\Response + */ + protected $forbidden_response; + + /** + * A 410 Gone response + * @var \GuzzleHttp\Psr7\Response + */ + protected $gone_response; + + /** + * {@inheritDoc} + */ + protected function setUp(): void + { + parent::setUp(); + $this->logger = new Logger('milliner'); + $this->logger->pushHandler(new NullHandler()); + + // Default properties + $this->modifiedDatePredicate = "http://schema.org/dateModified"; + $this->fedoraBaseUrl = 'http://localhost:8080/fcrepo/rest'; + $this->uuid = '9541c0c1-5bee-4973-a9d0-e55c1658bc8'; + + // Prophecies + $this->drupal_client_prophecy = $this->prophesize(Client::class); + $this->entity_mapper_prophecy = $this->prophesize(EntityMapperInterface::class); + $this->fedora_client_prophecy = $this->prophesize(IFedoraApi::class); + + $this->entity_mapper_prophecy->getFedoraPath($this->uuid) + ->willReturn("{$this->fedoraBaseUrl}/95/41/c0/c1/9541c0c1-5bee-4973-a9d0-e55c1658bc8"); + + // Reusable responses + $this->ok_response = new Response(200); + $this->created_response = new Response(201); + $this->no_content_response = new Response(204); + $this->not_found_response = new Response(404); + $this->forbidden_response = new Response(403, [], null, '1.1', 'FORBIDDEN'); + $this->unauthorized_response = new Response(401, [], null, '1.1', 'UNAUTHORIZED'); + $this->gone_response = new Response(410); + } + + /** + * @param string $filename + * The filename from the static directory. + * @return string + * The full path to the file. + */ + protected function getStaticFile(string $filename): string + { + return __DIR__ . "/static/{$filename}"; + } + + /** + * Return a new MillinerService + * + * @return \App\Islandora\Milliner\Service\MillinerServiceInterface + */ + protected function getMilliner(): MillinerServiceInterface + { + return new MillinerService( + $this->fedora_client_prophecy->reveal(), + $this->drupal_client_prophecy->reveal(), + $this->entity_mapper_prophecy->reveal(), + $this->logger, + $this->modifiedDatePredicate, + $this->stripJsonLd, + $this->isFedora6 + ); + } +} diff --git a/Milliner/tests/CreateVersionTest.php b/Milliner/tests/CreateVersionTest.php new file mode 100644 index 00000000..7ed5dbf4 --- /dev/null +++ b/Milliner/tests/CreateVersionTest.php @@ -0,0 +1,95 @@ +fedora_client_prophecy->createVersion(Argument::any(), Argument::any(), Argument::any(), Argument::any()) + ->willReturn($this->created_response); + + $milliner = $this->getMilliner(); + + $response = $milliner->createVersion( + $this->uuid, + $this->fedoraBaseUrl, + "Bearer islandora" + ); + + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 201, + "Milliner must return 201 when Fedora returns 201. Received: $status" + ); + } + + /** + * @covers ::__construct + * @covers ::createVersion + */ + + public function testCreateVersionReturnsFedora404() + { + $this->fedora_client_prophecy->createVersion(Argument::any(), Argument::any(), Argument::any(), Argument::any()) + ->willReturn($this->not_found_response); + + $this->expectException(\RuntimeException::class); + $this->expectExceptionCode(404); + + $milliner = $this->getMilliner(); + + $response = $milliner->createVersion( + $this->uuid, + $this->fedoraBaseUrl, + "Bearer islandora" + ); + + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 404, + "Milliner must return 404 when Fedora returns 404. Received: $status" + ); + } + + + /** + * @covers ::__construct + * @covers ::createVersion + */ + public function testcreateVersionThrowsOnFedoraSaveError() + { + $this->fedora_client_prophecy->createVersion(Argument::any(), Argument::any(), Argument::any(), Argument::any()) + ->willReturn($this->forbidden_response); + + $this->expectException(\RuntimeException::class); + $this->expectExceptionCode(403); + + $milliner = $this->getMilliner(); + + $response = $milliner->createVersion( + $this->uuid, + $this->fedoraBaseUrl, + "Bearer islandora" + ); + + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 403, + "Milliner must return 403 when Fedora returns 403. Received: $status" + ); + } +} diff --git a/Milliner/tests/DeleteTest.php b/Milliner/tests/DeleteTest.php new file mode 100644 index 00000000..a1f124eb --- /dev/null +++ b/Milliner/tests/DeleteTest.php @@ -0,0 +1,74 @@ +fedora_client_prophecy->deleteResource(Argument::any(), Argument::any()) + ->willReturn($this->forbidden_response); + + $milliner = $this->getMilliner(); + + $this->expectException(\RuntimeException::class); + $this->expectExceptionCode(403); + + $milliner->deleteNode($this->uuid, $this->fedoraBaseUrl, "Bearer islandora"); + } + + /** + * @covers ::__construct + * @covers ::deleteNode + */ + public function testDeleteReturnsFedoraResult() + { + $this->fedora_client_prophecy->deleteResource(Argument::any(), Argument::any()) + ->willReturn($this->no_content_response); + + $milliner = $this->getMilliner(); + + $response = $milliner->deleteNode($this->uuid, $this->fedoraBaseUrl, "Bearer islandora"); + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 204, + "Milliner must return 204 when Fedora returns 204. Received: $status" + ); + + $this->fedora_client_prophecy->deleteResource(Argument::any(), Argument::any()) + ->willReturn($this->not_found_response); + + $milliner = $this->getMilliner(); + + $response = $milliner->deleteNode($this->uuid, $this->fedoraBaseUrl, "Bearer islandora"); + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 404, + "Milliner must return 404 when Fedora returns 404. Received: $status" + ); + + $this->fedora_client_prophecy->deleteResource(Argument::any(), Argument::any()) + ->willReturn($this->gone_response); + + $milliner = $this->getMilliner(); + + $response = $milliner->deleteNode($this->uuid, $this->fedoraBaseUrl, "Bearer islandora"); + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 410, + "Milliner must return 410 when Fedora returns 410. Received: $status" + ); + } +} diff --git a/Milliner/tests/Islandora/Milliner/Tests/CreateVersionTest.php b/Milliner/tests/Islandora/Milliner/Tests/CreateVersionTest.php deleted file mode 100644 index cca0e91c..00000000 --- a/Milliner/tests/Islandora/Milliner/Tests/CreateVersionTest.php +++ /dev/null @@ -1,197 +0,0 @@ -logger = new Logger('milliner'); - $this->logger->pushHandler(new NullHandler()); - - $this->modifiedDatePredicate = "http://schema.org/dateModified"; - - $this->uuid = '9541c0c1-5bee-4973-a9d0-e55c1658bc8'; - $this->fedoraBaseUrl = 'http://localhost:8080/fcrepo/rest'; - - $this->mapper = $this->prophesize(EntityMapperInterface::class); - $this->mapper->getFedoraPath($this->uuid) - ->willReturn("{$this->fedoraBaseUrl}/95/41/c0/c1/9541c0c1-5bee-4973-a9d0-e55c1658bc8"); - $this->mapper = $this->mapper->reveal(); - - $this->drupal = $this->prophesize(Client::class); - $this->drupal = $this->drupal->reveal(); - } - - - /** - * @covers ::__construct - * @covers ::createVersion - */ - public function testCreateVersionReturnsFedora201() - { - $fedora_response = new Response(201); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->createVersion(Argument::any(), Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_response); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->createVersion( - $this->uuid, - $this->fedoraBaseUrl, - "Bearer islandora" - ); - - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 201, - "Milliner must return 201 when Fedora returns 201. Received: $status" - ); - } - - /** - * @covers ::__construct - * @covers ::createVersion - */ - - public function testCreateVersionReturnsFedora404() - { - $fedora_response = new Response(404); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->createVersion(Argument::any(), Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_response); - $fedora = $fedora->reveal(); - - $this->expectException(\RuntimeException::class, null, 404); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->createVersion( - $this->uuid, - $this->fedoraBaseUrl, - "Bearer islandora" - ); - - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 404, - "Milliner must return 404 when Fedora returns 404. Received: $status" - ); - } - - - /** - * @covers ::__construct - * @covers ::createVersion - */ - public function testcreateVersionThrowsOnFedoraSaveError() - { - $fedora_get_response = new Response( - 200, - ['Content-Type' => 'application/ld+json'], - file_get_contents(__DIR__ . '/../../../../static/ContentLDP-RS.jsonld') - ); - $fedora_response = new Response(403, [], null, '1.1', 'UNAUTHORIZED'); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->createVersion(Argument::any(), Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_response); - $fedora = $fedora->reveal(); - - $this->expectException(\RuntimeException::class, null, 403); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->createVersion( - $this->uuid, - $this->fedoraBaseUrl, - "Bearer islandora" - ); - - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 403, - "Milliner must return 403 when Fedora returns 403. Received: $status" - ); - } -} diff --git a/Milliner/tests/Islandora/Milliner/Tests/DeleteTest.php b/Milliner/tests/Islandora/Milliner/Tests/DeleteTest.php deleted file mode 100644 index 08152451..00000000 --- a/Milliner/tests/Islandora/Milliner/Tests/DeleteTest.php +++ /dev/null @@ -1,178 +0,0 @@ -logger = new Logger('milliner'); - $this->logger->pushHandler(new NullHandler()); - - $this->modifiedDatePredicate = "http://schema.org/dateModified"; - - $this->uuid = '9541c0c1-5bee-4973-a9d0-e55c1658bc8'; - $this->fedoraBaseUrl = 'http://localhost:8080/fcrepo/rest'; - - $this->mapper = $this->prophesize(EntityMapperInterface::class); - $this->mapper->getFedoraPath($this->uuid) - ->willReturn("{$this->fedoraBaseUrl}/95/41/c0/c1/9541c0c1-5bee-4973-a9d0-e55c1658bc8"); - $this->mapper = $this->mapper->reveal(); - - $this->drupal = $this->prophesize(Client::class); - $this->drupal = $this->drupal->reveal(); - } - - /** - * @covers ::__construct - * @covers ::deleteNode - */ - public function testDeleteThrowsFedoraError() - { - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->deleteResource(Argument::any(), Argument::any()) - ->willReturn(new Response(403)); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 403); - - $milliner->deleteNode($this->uuid, $this->fedoraBaseUrl, "Bearer islandora"); - } - - /** - * @covers ::__construct - * @covers ::deleteNode - */ - public function testDeleteReturnsFedoraResult() - { - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->deleteResource(Argument::any(), Argument::any()) - ->willReturn(new Response(204)); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->deleteNode($this->uuid, $this->fedoraBaseUrl, "Bearer islandora"); - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 204, - "Milliner must return 204 when Fedora returns 204. Received: $status" - ); - - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->deleteResource(Argument::any(), Argument::any()) - ->willReturn(new Response(404)); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->deleteNode($this->uuid, $this->fedoraBaseUrl, "Bearer islandora"); - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 404, - "Milliner must return 404 when Fedora returns 404. Received: $status" - ); - - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->deleteResource(Argument::any(), Argument::any()) - ->willReturn(new Response(410)); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->deleteNode($this->uuid, $this->fedoraBaseUrl, "Bearer islandora"); - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 410, - "Milliner must return 410 when Fedora returns 410. Received: $status" - ); - } -} diff --git a/Milliner/tests/Islandora/Milliner/Tests/SaveExternalTest.php b/Milliner/tests/Islandora/Milliner/Tests/SaveExternalTest.php deleted file mode 100644 index d98f314d..00000000 --- a/Milliner/tests/Islandora/Milliner/Tests/SaveExternalTest.php +++ /dev/null @@ -1,148 +0,0 @@ -logger = new Logger('milliner'); - $this->logger->pushHandler(new NullHandler()); - - $this->modifiedDatePredicate = "http://schema.org/dateModified"; - - $this->uuid = '9541c0c1-5bee-4973-a9d0-e55c1658bc8'; - $this->fedoraBaseUrl = 'http://localhost:8080/fcrepo/rest'; - - $this->mapper = $this->prophesize(EntityMapperInterface::class); - $this->mapper->getFedoraPath($this->uuid) - ->willReturn("{$this->fedoraBaseUrl}/95/41/c0/c1/9541c0c1-5bee-4973-a9d0-e55c1658bc8"); - $this->mapper = $this->mapper->reveal(); - } - - /** - * @covers ::__construct - * @covers ::saveExternal - */ - public function testSaveExternalThrowsOnHeadError() - { - $drupal = $this->prophesize(Client::class); - $drupal->head(Argument::any(), Argument::any()) - ->willThrow( - new RequestException( - "Unauthorized", - new Request('HEAD', 'http://localhost:8000/sites/default/files/2017-07/sample_0.jpeg'), - new Response(403, [], null, "1.1", "UNAUTHORIZED") - ) - ); - $drupal = $drupal->reveal(); - - $fedora = $this->prophesize(IFedoraApi::class); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\GuzzleHttp\Exception\RequestException::class, null, 403); - - $milliner->saveExternal( - $this->uuid, - 'http://localhost:8000/sites/default/files/2017-07/sample_0.jpeg', - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveExternal - */ - public function testSaveExternalThrowsOnPutError() - { - $drupal = $this->prophesize(Client::class); - $drupal->head(Argument::any(), Argument::any()) - ->willReturn(new Response(200, ['Content-Type' => 'image/jpeg'])); - $drupal = $drupal->reveal(); - - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->saveResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn(new Response(403, [], null, "1.1", "UNAUTHORIZED")); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 403); - - $milliner->saveExternal( - $this->uuid, - 'http://localhost:8000/sites/default/files/2017-07/sample_0.jpeg', - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } -} diff --git a/Milliner/tests/Islandora/Milliner/Tests/SaveMediaTest.php b/Milliner/tests/Islandora/Milliner/Tests/SaveMediaTest.php deleted file mode 100644 index 364c6ffa..00000000 --- a/Milliner/tests/Islandora/Milliner/Tests/SaveMediaTest.php +++ /dev/null @@ -1,664 +0,0 @@ -logger = new Logger('milliner'); - $this->logger->pushHandler(new NullHandler()); - - $this->modifiedDatePredicate = "http://schema.org/dateModified"; - - $this->uuid = 'ffb15b4f-54db-44ce-ad0b-3588889a3c9b'; - $this->fedoraBaseUrl = 'http://localhost:8080/fcrepo/rest'; - - $this->mapper = $this->prophesize(EntityMapperInterface::class); - $this->mapper->getFedoraPath($this->uuid) - ->willReturn("{$this->fedoraBaseUrl}/ff/b1/5b/4f/ffb15b4f-54db-44ce-ad0b-3588889a3c9b"); - $this->mapper = $this->mapper->reveal(); - } - - /** - * @covers ::__construct - * @covers ::saveMedia - * @covers ::getFirstPredicate - * @covers ::getModifiedTimestamp - * @covers ::processJsonld - * @covers ::getLinkHeader - */ - public function testSaveMediaThrows500WithNoFileField() - { - $drupal_response = new Response( - 200, - ['Content-Type' => 'application/json'], - file_get_contents(__DIR__ . '/../../../../static/MediaNoFileField.json') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get(Argument::any(), Argument::any()) - ->willReturn($drupal_response); - $drupal = $drupal->reveal(); - - $fedora = $this->prophesize(IFedoraApi::class)->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 500); - - $milliner->saveMedia( - "field_image", - "http://localhost:8000/media/6?_format=json", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveMedia - * @covers ::getFirstPredicate - * @covers ::getModifiedTimestamp - * @covers ::processJsonld - * @covers ::getLinkHeader - */ - public function testSaveMediaThrows500WithEmptyFileField() - { - $drupal_response = new Response( - 200, - ['Content-Type' => 'application/json'], - file_get_contents(__DIR__ . '/../../../../static/MediaEmptyFileField.json') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get(Argument::any(), Argument::any()) - ->willReturn($drupal_response); - $drupal = $drupal->reveal(); - - $fedora = $this->prophesize(IFedoraApi::class)->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 500); - - $milliner->saveMedia( - "field_image", - "http://localhost:8000/media/6?_format=json", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveMedia - * @covers ::getFirstPredicate - * @covers ::getModifiedTimestamp - * @covers ::processJsonld - * @covers ::getLinkHeader - */ - public function testSaveMediaThrows404WhenFileIsNotInGemini() - { - $drupal_response = new Response( - 200, - ['Content-Type' => 'application/json'], - file_get_contents(__DIR__ . '/../../../../static/Media.json') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get(Argument::any(), Argument::any()) - ->willReturn($drupal_response); - $drupal = $drupal->reveal(); - - $fedora = $this->prophesize(IFedoraApi::class)->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 404); - - $milliner->saveMedia( - "field_image", - "http://localhost:8000/media/6?_format=json", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveMedia - * @covers ::getFirstPredicate - * @covers ::getModifiedTimestamp - * @covers ::processJsonld - * @covers ::getLinkHeader - */ - public function testSaveMediaThrowsFedoraHeadError() - { - $drupal_response = new Response( - 200, - ['Content-Type' => 'application/json'], - file_get_contents(__DIR__ . '/../../../../static/Media.json') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get(Argument::any(), Argument::any()) - ->willReturn($drupal_response); - - $head_response = new Response(404); - $drupal->head(Argument::any(), Argument::any()) - ->willReturn($head_response); - $drupal = $drupal->reveal(); - - $fedora = $this->prophesize(IFedoraApi::class); - $fedora = $fedora->reveal(); - - $this->expectException(\RuntimeException::class, null, 404); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $milliner->saveMedia( - "field_image", - "http://localhost:8000/media/6?_format=json", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveMedia - * @covers ::getFirstPredicate - * @covers ::getModifiedTimestamp - * @covers ::processJsonld - * @covers ::getLinkHeader - */ - public function testSaveMediaThrows500WhenNoDescribedbyHeader() - { - $drupal_response = new Response( - 200, - ['Content-Type' => 'application/json'], - file_get_contents(__DIR__ . '/../../../../static/Media.json') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get(Argument::any(), Argument::any()) - ->willReturn($drupal_response); - - $head_response = new Response(200); - $drupal->head(Argument::any(), Argument::any()) - ->willReturn($head_response); - $drupal = $drupal->reveal(); - - $fedora = $this->prophesize(IFedoraApi::class); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 500); - - $milliner->saveMedia( - "field_image", - "http://localhost:8000/media/6?_format=json", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveMedia - * @covers ::getFirstPredicate - * @covers ::getModifiedTimestamp - * @covers ::processJsonld - * @covers ::getLinkHeader - */ - public function testSaveMediaThrowsFedoraGetError() - { - $drupal_response = new Response( - 200, - ['Content-Type' => 'application/json'], - file_get_contents(__DIR__ . '/../../../../static/Media.json') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get(Argument::any(), Argument::any()) - ->willReturn($drupal_response); - - $link = ''; - $link .= ';rel="describedby"'; - $head_response = new Response( - 200, - ['Link' => $link] - ); - $drupal->head(Argument::any(), Argument::any()) - ->willReturn($head_response); - $drupal = $drupal->reveal(); - - $fedora_get_response = new Response( - 404 - ); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResource(Argument::any(), Argument::any()) - ->willReturn($fedora_get_response); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 404); - - $milliner->saveMedia( - "field_image", - "http://localhost:8000/media/6?_format=json", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveMedia - * @covers ::getFirstPredicate - * @covers ::getModifiedTimestamp - * @covers ::processJsonld - * @covers ::getLinkHeader - */ - public function testSaveMediaThrows412OnStaleData() - { - $drupal_json_response = new Response( - 200, - [ - 'Content-Type' => 'application/json', - "Link" => '; rel="alternate"; type="application/ld+json"', - ], - file_get_contents(__DIR__ . '/../../../../static/Media.json') - ); - $drupal_jsonld_response = new Response( - 200, - ['Content-Type' => 'application/ld+json'], - file_get_contents(__DIR__ . '/../../../../static/StaleMedia.jsonld') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get('http://localhost:8000/media/6?_format=json', Argument::any()) - ->willReturn($drupal_json_response); - $drupal->get('http://localhost:8000/media/6?_format=jsonld', Argument::any()) - ->willReturn($drupal_jsonld_response); - - $link = ''; - $link .= '; rel="describedby"'; - $head_response = new Response( - 200, - ['Link' => $link] - ); - $drupal->head(Argument::any(), Argument::any()) - ->willReturn($head_response); - $drupal = $drupal->reveal(); - - $fedora_get_response = new Response( - 200, - ['Content-Type' => 'application/ld+json', 'ETag' => 'W\abc123'], - file_get_contents(__DIR__ . '/../../../../static/MediaLDP-RS.jsonld') - ); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResource(Argument::any(), Argument::any()) - ->willReturn($fedora_get_response); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 412); - - $milliner->saveMedia( - "field_image", - "http://localhost:8000/media/6?_format=json", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveMedia - * @covers ::getFirstPredicate - * @covers ::getModifiedTimestamp - * @covers ::processJsonld - * @covers ::getLinkHeader - */ - public function testSaveMediaThrowsFedoraPutError() - { - $drupal_json_response = new Response( - 200, - [ - 'Content-Type' => 'application/json', - "Link" => '; rel="alternate"; type="application/ld+json"', - ], - file_get_contents(__DIR__ . '/../../../../static/Media.json') - ); - $drupal_jsonld_response = new Response( - 200, - ['Content-Type' => 'application/ld+json'], - file_get_contents(__DIR__ . '/../../../../static/Media.jsonld') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get('http://localhost:8000/media/6?_format=json', Argument::any()) - ->willReturn($drupal_json_response); - $drupal->get('http://localhost:8000/media/6?_format=jsonld', Argument::any()) - ->willReturn($drupal_jsonld_response); - - $link = ''; - $link .= '; rel="describedby"'; - $head_response = new Response( - 200, - ['Link' => $link] - ); - $drupal->head(Argument::any(), Argument::any()) - ->willReturn($head_response); - $drupal = $drupal->reveal(); - - $fedora_get_response = new Response( - 200, - ['Content-Type' => 'application/ld+json', 'ETag' => 'W\abc123'], - file_get_contents(__DIR__ . '/../../../../static/MediaLDP-RS.jsonld') - ); - $fedora_put_response = new Response( - 403 - ); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResource(Argument::any(), Argument::any()) - ->willReturn($fedora_get_response); - $fedora->saveResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_put_response); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 403); - - $milliner->saveMedia( - "field_image", - "http://localhost:8000/media/6?_format=json", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveMedia - * @covers ::getFirstPredicate - * @covers ::getModifiedTimestamp - * @covers ::processJsonld - * @covers ::getLinkHeader - */ - public function testSaveMediaReturnsFedoraSuccess() - { - $link = '; rel="alternate"; type="application/ld+json"'; - $link .= ',; rel="describes"'; - $drupal_json_response = new Response( - 200, - [ - 'Content-Type' => 'application/json', - "Link" => $link, - ], - file_get_contents(__DIR__ . '/../../../../static/Media.json') - ); - $drupal_jsonld_response = new Response( - 200, - [ - 'Content-Type' => 'application/ld+json', - ], - file_get_contents(__DIR__ . '/../../../../static/Media.jsonld') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get('http://localhost:8000/media/6?_format=json', Argument::any()) - ->willReturn($drupal_json_response); - $drupal->get('http://localhost:8000/media/6?_format=jsonld', Argument::any()) - ->willReturn($drupal_jsonld_response); - - $link = ''; - $link .= '; rel="describedby"'; - $head_response = new Response( - 200, - ['Link' => $link] - ); - $drupal->head(Argument::any(), Argument::any()) - ->willReturn($head_response); - $drupal = $drupal->reveal(); - - $fedora_get_response = new Response( - 200, - ['Content-Type' => 'application/ld+json', 'ETag' => 'W\abc123'], - file_get_contents(__DIR__ . '/../../../../static/MediaLDP-RS.jsonld') - ); - $fedora_put_response = new Response( - 204 - ); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResource(Argument::any(), Argument::any()) - ->willReturn($fedora_get_response); - $fedora->saveResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_put_response); - $fedora = $fedora->reveal(); - - $this->mapper = $this->prophesize(EntityMapperInterface::class); - $this->mapper->getFedoraPath('f0fd71b3-1fab-45e1-a5e9-78d50e0d7174') - ->willReturn("{$this->fedoraBaseUrl}/f0/fd/71/b3/f0fd71b3-1fab-45e1-a5e9-78d50e0d7174"); - $this->mapper = $this->mapper->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->saveMedia( - "field_image", - "http://localhost:8000/media/6?_format=json", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 204, - "Milliner must return 204 when Fedora returns 204. Received: $status" - ); - } - - /** - * @covers ::__construct - * @covers ::saveMedia - * @covers ::getFirstPredicate - * @covers ::getModifiedTimestamp - * @covers ::processJsonld - * @covers ::getLinkHeader - */ - public function testSaveMediaReturnsNoModifiedDate() - { - $link = '; rel="alternate"; type="application/ld+json"'; - $link .= ',; rel="describes"'; - $drupal_json_response = new Response( - 200, - [ - 'Content-Type' => 'application/json', - "Link" => $link, - ], - file_get_contents(__DIR__ . '/../../../../static/Media.json') - ); - $drupal_jsonld_response = new Response( - 200, - [ - 'Content-Type' => 'application/ld+json', - ], - file_get_contents(__DIR__ . '/../../../../static/Media.jsonld') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get('http://localhost:8000/media/6?_format=json', Argument::any()) - ->willReturn($drupal_json_response); - $drupal->get('http://localhost:8000/media/6?_format=jsonld', Argument::any()) - ->willReturn($drupal_jsonld_response); - - $link = ''; - $link .= '; rel="describedby"'; - $head_response = new Response( - 200, - ['Link' => $link] - ); - $drupal->head(Argument::any(), Argument::any()) - ->willReturn($head_response); - $drupal = $drupal->reveal(); - - $fedora_get_response = new Response( - 200, - ['Content-Type' => 'application/ld+json', 'ETag' => 'W\abc123'], - file_get_contents(__DIR__ . '/../../../../static/MediaLDP-RS-no_date.jsonld') - ); - $fedora_put_response = new Response( - 204 - ); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResource(Argument::any(), Argument::any()) - ->willReturn($fedora_get_response); - $fedora->saveResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_put_response); - $fedora = $fedora->reveal(); - - $this->mapper = $this->prophesize(EntityMapperInterface::class); - $this->mapper->getFedoraPath('f0fd71b3-1fab-45e1-a5e9-78d50e0d7174') - ->willReturn("{$this->fedoraBaseUrl}/f0/fd/71/b3/f0fd71b3-1fab-45e1-a5e9-78d50e0d7174"); - $this->mapper = $this->mapper->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->saveMedia( - "field_image", - "http://localhost:8000/media/6?_format=json", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 204, - "Milliner must return 204 when Fedora returns 204. Received: $status" - ); - } -} diff --git a/Milliner/tests/Islandora/Milliner/Tests/SaveNodeTest.php b/Milliner/tests/Islandora/Milliner/Tests/SaveNodeTest.php deleted file mode 100644 index 0a5c0646..00000000 --- a/Milliner/tests/Islandora/Milliner/Tests/SaveNodeTest.php +++ /dev/null @@ -1,457 +0,0 @@ -logger = new Logger('milliner'); - $this->logger->pushHandler(new NullHandler()); - - $this->modifiedDatePredicate = "http://schema.org/dateModified"; - - $this->uuid = '9541c0c1-5bee-4973-a9d0-e55c1658bc8'; - $this->fedoraBaseUrl = 'http://localhost:8080/fcrepo/rest'; - - $this->mapper = $this->prophesize(EntityMapperInterface::class); - $this->mapper->getFedoraPath($this->uuid) - ->willReturn("{$this->fedoraBaseUrl}/95/41/c0/c1/9541c0c1-5bee-4973-a9d0-e55c1658bc8"); - $this->mapper = $this->mapper->reveal(); - - $drupal_response = new Response( - 200, - ['Content-Type' => 'application/ld+json'], - file_get_contents(__DIR__ . '/../../../../static/Content.jsonld') - ); - $this->drupal = $this->prophesize(Client::class); - $this->drupal->get(Argument::any(), Argument::any()) - ->willReturn($drupal_response); - $this->drupal = $this->drupal->reveal(); - } - - /** - * @covers ::__construct - * @covers ::saveNode - * @covers ::processJsonld - */ - public function testCreateNodeThrowsOnFedoraError() - { - $fedora_head_response = new Response(404); - $fedora_save_response = new Response(403, [], null, '1.1', 'UNAUTHORIZED'); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResourceHeaders(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_head_response); - $fedora->saveResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_save_response); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 403); - - $milliner->saveNode( - $this->uuid, - "http://localhost:8000/node/1?_format=jsonld", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveNode - * @covers ::updateNode - * @covers ::processJsonld - */ - public function testCreateNodeReturnsFedora201() - { - $fedora_head_response = new Response(404); - $fedora_save_response = new Response(201); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResourceHeaders(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_head_response); - $fedora->saveResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_save_response); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->saveNode( - $this->uuid, - "http://localhost:8000/node/1?_format=jsonld", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 201, - "Milliner must return 201 when Fedora returns 201. Received: $status" - ); - } - - /** - * @covers ::__construct - * @covers ::saveNode - * @covers ::createNode - * @covers ::processJsonld - */ - public function testCreateNodeReturnsFedora204() - { - $fedora_head_response = new Response(404); - $fedora_save_response = new Response(204); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResourceHeaders(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_head_response); - $fedora->saveResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_save_response); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->saveNode( - $this->uuid, - "http://localhost:8000/node/1?_format=jsonld", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 204, - "Milliner must return 204 when Fedora returns 204. Received: $status" - ); - } - - /** - * @covers ::__construct - * @covers ::saveNode - * @covers ::updateNode - * @covers ::processJsonld - * @covers ::getModifiedTimestamp - * @covers ::getFirstPredicate - */ - public function testUpdateNodeThrowsOnFedoraError() - { - $fedora_head_response = new Response(200); - $fedora_get_response = new Response( - 200, - ['Content-Type' => 'application/ld+json'], - file_get_contents(__DIR__ . '/../../../../static/ContentLDP-RS.jsonld') - ); - $fedora_save_response = new Response(403, [], null, '1.1', 'UNAUTHORIZED'); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResourceHeaders(Argument::any()) - ->willReturn($fedora_head_response); - $fedora->getResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_get_response); - $fedora->saveResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_save_response); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 403); - - $milliner->saveNode( - $this->uuid, - "http://localhost:8000/node/1?_format=jsonld", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveNode - * @covers ::updateNode - * @covers ::processJsonld - * @covers ::getModifiedTimestamp - * @covers ::getFirstPredicate - */ - public function testUpdateNodeThrows500OnBadDatePredicate() - { - $drupal_response = new Response( - 200, - ['Content-Type' => 'application/ld+json'], - file_get_contents(__DIR__ . '/../../../../static/StaleContent.jsonld') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get(Argument::any(), Argument::any()) - ->willReturn($drupal_response); - $drupal = $drupal->reveal(); - - $fedora_head_response = new Response(200); - $fedora_get_response = new Response( - 200, - ['Content-Type' => 'application/ld+json'], - file_get_contents(__DIR__ . '/../../../../static/ContentLDP-RS.jsonld') - ); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResourceHeaders(Argument::any()) - ->willReturn($fedora_head_response); - $fedora->getResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_get_response); - $fedora = $fedora->reveal(); - - $this->expectException(\RuntimeException::class, null, 500); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $milliner->saveNode( - $this->uuid, - "http://localhost:8000/node/1?_format=jsonld", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveNode - * @covers ::updateNode - * @covers ::processJsonld - * @covers ::getModifiedTimestamp - * @covers ::getFirstPredicate - */ - public function testUpdateNodeThrows412OnStaleContent() - { - $drupal_response = new Response( - 200, - ['Content-Type' => 'application/ld+json'], - file_get_contents(__DIR__ . '/../../../../static/StaleContent.jsonld') - ); - $drupal = $this->prophesize(Client::class); - $drupal->get(Argument::any(), Argument::any()) - ->willReturn($drupal_response); - $drupal = $drupal->reveal(); - - $fedora_head_response = new Response(200); - $fedora_get_response = new Response( - 200, - ['Content-Type' => 'application/ld+json'], - file_get_contents(__DIR__ . '/../../../../static/ContentLDP-RS.jsonld') - ); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResourceHeaders(Argument::any()) - ->willReturn($fedora_head_response); - $fedora->getResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_get_response); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $this->expectException(\RuntimeException::class, null, 412); - - $milliner->saveNode( - $this->uuid, - "http://localhost:8000/node/1?_format=jsonld", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - } - - /** - * @covers ::__construct - * @covers ::saveNode - * @covers ::updateNode - * @covers ::processJsonld - * @covers ::getModifiedTimestamp - * @covers ::getFirstPredicate - */ - public function testUpdateNodeReturnsFedora201() - { - $fedora_head_response = new Response(200); - $fedora_get_response = new Response( - 200, - ['Content-Type' => 'application/ld+json'], - file_get_contents(__DIR__ . '/../../../../static/ContentLDP-RS.jsonld') - ); - $fedora_save_response = new Response(201); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResourceHeaders(Argument::any()) - ->willReturn($fedora_head_response); - $fedora->getResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_get_response); - $fedora->saveResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_save_response); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->saveNode( - $this->uuid, - "http://localhost:8000/node/1?_format=jsonld", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 201, - "Milliner must return 201 when Fedora returns 201. Received: $status" - ); - } - - /** - * @covers ::__construct - * @covers ::saveNode - * @covers ::updateNode - * @covers ::processJsonld - * @covers ::getModifiedTimestamp - * @covers ::getFirstPredicate - */ - public function testUpdateNodeReturnsFedora204() - { - $fedora_head_response = new Response(200); - $fedora_get_response = new Response( - 200, - ['Content-Type' => 'application/ld+json', 'ETag' => 'W\abc123'], - file_get_contents(__DIR__ . '/../../../../static/ContentLDP-RS.jsonld') - ); - $fedora_save_response = new Response(204); - $fedora = $this->prophesize(IFedoraApi::class); - $fedora->getResourceHeaders(Argument::any()) - ->willReturn($fedora_head_response); - $fedora->getResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_get_response); - $fedora->saveResource(Argument::any(), Argument::any(), Argument::any()) - ->willReturn($fedora_save_response); - $fedora = $fedora->reveal(); - - $milliner = new MillinerService( - $fedora, - $this->drupal, - $this->mapper, - $this->logger, - $this->modifiedDatePredicate, - false, - false - ); - - $response = $milliner->saveNode( - $this->uuid, - "http://localhost:8000/node/1?_format=jsonld", - $this->fedoraBaseUrl, - "Bearer islandora" - ); - - $status = $response->getStatusCode(); - $this->assertTrue( - $status == 204, - "Milliner must return 204 when Fedora returns 204. Received: $status" - ); - } -} diff --git a/Milliner/tests/Islandora/Milliner/Tests/MillinerControllerTest.php b/Milliner/tests/MillinerControllerTest.php similarity index 85% rename from Milliner/tests/Islandora/Milliner/Tests/MillinerControllerTest.php rename to Milliner/tests/MillinerControllerTest.php index a807e072..3309de7d 100644 --- a/Milliner/tests/Islandora/Milliner/Tests/MillinerControllerTest.php +++ b/Milliner/tests/MillinerControllerTest.php @@ -1,41 +1,40 @@ logger = new Logger('milliner'); - $this->logger->pushHandler(new NullHandler()); + $this->milliner_service_prophecy = $this->prophesize(MillinerServiceInterface::class); + $this->controller = new MillinerController($this->milliner_service_prophecy->reveal(), $this->logger); } /** @@ -79,7 +78,7 @@ public function testMethodsReturnMillinerErrors() [], [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', - 'X-Islandora-Fedora-Endpoint' => 'http://localhost:8080/fcrepo/rest/', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/node/1?_format=jsonld', ] ); @@ -100,6 +99,7 @@ public function testMethodsReturnMillinerErrors() [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/media/6?_format=json', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', ] ); $response = $controller->saveMedia($source_field, $request); @@ -119,6 +119,7 @@ public function testMethodsReturnMillinerErrors() [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/media/6?_format=json', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', ] ); $response = $controller->createMediaVersion($source_field, $request); @@ -135,7 +136,10 @@ public function testMethodsReturnMillinerErrors() ['uuid' => $uuid], [], [], - ['HTTP_AUTHORIZATION' => 'Bearer islandora'] + [ + 'HTTP_AUTHORIZATION' => 'Bearer islandora', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', + ] ); $response = $controller->deleteNode($uuid, $request); $status = $response->getStatusCode(); @@ -153,7 +157,7 @@ public function testMethodsReturnMillinerErrors() [], [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', - 'X-Islandora-Fedora-Endpoint' => 'http://localhost:8080/fcrepo/rest/', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/sites/default/files/1.jpg', ] ); @@ -172,7 +176,10 @@ public function testMethodsReturnMillinerErrors() ['uuid' => $uuid], [], [], - ['HTTP_AUTHORIZATION' => 'Bearer islandora'] + [ + 'HTTP_AUTHORIZATION' => 'Bearer islandora', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', + ] ); $response = $controller->createNodeVersion($uuid, $request); $status = $response->getStatusCode(); @@ -188,8 +195,6 @@ public function testMethodsReturnMillinerErrors() */ public function testSaveNodeReturns400WithoutContentLocation() { - $milliner = $this->prophesize(MillinerServiceInterface::class)->reveal(); - $controller = new MillinerController($milliner, $this->logger); $uuid = '630e0c1d-1a38-4e3b-84f9-68d519bdc026'; $request = Request::create( @@ -200,11 +205,10 @@ public function testSaveNodeReturns400WithoutContentLocation() [], [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', - 'X-Islandora-Fedora-Endpoint' => 'http://localhost:8080/fcrepo/rest/', - + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', ] ); - $response = $controller->saveNode($uuid, $request); + $response = $this->controller->saveNode($uuid, $request); $status = $response->getStatusCode(); $this->assertTrue( $status == 400, @@ -218,9 +222,6 @@ public function testSaveNodeReturns400WithoutContentLocation() */ public function testSaveMediaReturn400WithoutContentLocation() { - $milliner = $this->prophesize(MillinerServiceInterface::class)->reveal(); - $controller = new MillinerController($milliner, $this->logger); - $source_field = "field_image"; // Media. $request = Request::create( @@ -229,9 +230,12 @@ public function testSaveMediaReturn400WithoutContentLocation() ['source_field' => $source_field], [], [], - ['HTTP_AUTHORIZATION' => 'Bearer islandora'] + [ + 'HTTP_AUTHORIZATION' => 'Bearer islandora', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', + ] ); - $response = $controller->saveMedia($source_field, $request); + $response = $this->controller->saveMedia($source_field, $request); $status = $response->getStatusCode(); $this->assertTrue( $status == 400, @@ -245,9 +249,6 @@ public function testSaveMediaReturn400WithoutContentLocation() */ public function testSaveExternalReturns400WithoutContentLocation() { - $milliner = $this->prophesize(MillinerServiceInterface::class)->reveal(); - $controller = new MillinerController($milliner, $this->logger); - $uuid = '630e0c1d-1a38-4e3b-84f9-68d519bdc026'; $request = Request::create( "http://localhost:8000/milliner/external/$uuid", @@ -257,10 +258,10 @@ public function testSaveExternalReturns400WithoutContentLocation() [], [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', - 'X-Islandora-Fedora-Endpoint' => 'http://localhost:8080/fcrepo/rest/', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', ] ); - $response = $controller->saveExternal($uuid, $request); + $response = $this->controller->saveExternal($uuid, $request); $status = $response->getStatusCode(); $this->assertTrue( $status == 400, @@ -290,7 +291,7 @@ public function testSaveNodeReturnsSuccessOnSuccess() [], [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', - 'X-Islandora-Fedora-Endpoint' => 'http://localhost:8080/fcrepo/rest/', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/node/1?_format=jsonld', ] ); @@ -315,7 +316,7 @@ public function testSaveNodeReturnsSuccessOnSuccess() [], [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', - 'X-Islandora-Fedora-Endpoint' => 'http://localhost:8080/fcrepo/rest/', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/node/1?_format=jsonld', ] ); @@ -348,7 +349,7 @@ public function testSaveMediaReturnsSuccessOnSuccess() [], [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', - 'X-Islandora-Fedora-Endpoint' => 'http://localhost:8080/fcrepo/rest/', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/media/6?_format=json', ] ); @@ -373,7 +374,7 @@ public function testSaveMediaReturnsSuccessOnSuccess() [], [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', - 'X-Islandora-Fedora-Endpoint' => 'http://localhost:8080/fcrepo/rest/', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/media/6?_format=json', ] ); @@ -407,7 +408,7 @@ public function testSaveExternalReturnsSuccessOnSuccess() [], [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', - 'X-Islandora-Fedora-Endpoint' => 'http://localhost:8080/fcrepo/rest/', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/sites/default/files/1.jpeg', ] ); @@ -432,7 +433,7 @@ public function testSaveExternalReturnsSuccessOnSuccess() [], [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', - 'X-Islandora-Fedora-Endpoint' => 'http://localhost:8080/fcrepo/rest/', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/sites/default/files/1.jpeg', ] ); @@ -463,7 +464,10 @@ public function testDeleteReturnsSuccessOnSuccess() ['uuid' => $uuid], [], [], - ['HTTP_AUTHORIZATION' => 'Bearer islandora'] + [ + 'HTTP_AUTHORIZATION' => 'Bearer islandora', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', + ] ); $response = $controller->deleteNode($uuid, $request); @@ -497,6 +501,7 @@ public function testCreateNodeVersionReturnsSuccessOnSuccess() [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/node/1?_format=jsonld', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', ] ); $response = $controller->createNodeVersion($uuid, $request); @@ -521,6 +526,7 @@ public function testCreateNodeVersionReturnsSuccessOnSuccess() [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/node/1?_format=jsonld', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', ] ); $response = $controller->createNodeVersion($uuid, $request); @@ -555,6 +561,7 @@ public function testCreateMediaVersionReturnsSuccessOnSuccess() [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/media/6?_format=json', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', ] ); $response = $controller->createMediaVersion($uuid, $request); @@ -579,6 +586,7 @@ public function testCreateMediaVersionReturnsSuccessOnSuccess() [ 'HTTP_AUTHORIZATION' => 'Bearer islandora', 'HTTP_CONTENT_LOCATION' => 'http://localhost:8000/media/6?_format=json', + 'HTTP_X_ISLANDORA_FEDORA_ENDPOINT' => 'http://localhost:8080/fcrepo/rest', ] ); $response = $controller->createMediaVersion($uuid, $request); diff --git a/Milliner/tests/SaveExternalTest.php b/Milliner/tests/SaveExternalTest.php new file mode 100644 index 00000000..0ea11e02 --- /dev/null +++ b/Milliner/tests/SaveExternalTest.php @@ -0,0 +1,71 @@ +drupal_client_prophecy->head(Argument::any(), Argument::any()) + ->willThrow( + new RequestException( + "Unauthorized", + new Request('HEAD', 'http://localhost:8000/sites/default/files/2017-07/sample_0.jpeg'), + new Response(403, [], null, "1.1", "UNAUTHORIZED") + ) + ); + + $milliner = $this->getMilliner(); + + $this->expectException(RequestException::class); + $this->expectExceptionCode(403); + + $milliner->saveExternal( + $this->uuid, + 'http://localhost:8000/sites/default/files/2017-07/sample_0.jpeg', + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveExternal + */ + public function testSaveExternalThrowsOnPutError() + { + $this->drupal_client_prophecy->head(Argument::any(), Argument::any()) + ->willReturn(new Response(200, ['Content-Type' => 'image/jpeg'])); + + $this->fedora_client_prophecy->saveResource(Argument::any(), Argument::any(), Argument::any()) + ->willReturn($this->forbidden_response); + + $milliner = $this->getMilliner(); + + $this->expectException(\RuntimeException::class); + $this->expectExceptionCode(403); + + $milliner->saveExternal( + $this->uuid, + 'http://localhost:8000/sites/default/files/2017-07/sample_0.jpeg', + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } +} diff --git a/Milliner/tests/SaveMediaTest.php b/Milliner/tests/SaveMediaTest.php new file mode 100644 index 00000000..04a83410 --- /dev/null +++ b/Milliner/tests/SaveMediaTest.php @@ -0,0 +1,441 @@ +uuid = 'ffb15b4f-54db-44ce-ad0b-3588889a3c9b'; + + $this->entity_mapper_prophecy->getFedoraPath($this->uuid) + ->willReturn("{$this->fedoraBaseUrl}/ff/b1/5b/4f/ffb15b4f-54db-44ce-ad0b-3588889a3c9b"); + } + + /** + * @covers ::__construct + * @covers ::saveMedia + * @covers ::getFirstPredicate + * @covers ::getModifiedTimestamp + * @covers ::processJsonld + * @covers ::getLinkHeader + */ + public function testSaveMediaThrows500WithNoFileField() + { + $drupal_response = new Response( + 200, + ['Content-Type' => 'application/json'], + file_get_contents($this->getStaticFile('MediaNoFileField.json')) + ); + + $this->drupal_client_prophecy->get(Argument::any(), Argument::any()) + ->willReturn($drupal_response); + + $milliner = $this->getMilliner(); + + $this->expectException(\RuntimeException::class, null, 500); + + $milliner->saveMedia( + "field_image", + "http://localhost:8000/media/6?_format=json", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveMedia + * @covers ::getFirstPredicate + * @covers ::getModifiedTimestamp + * @covers ::processJsonld + * @covers ::getLinkHeader + */ + public function testSaveMediaThrows500WithEmptyFileField() + { + $drupal_response = new Response( + 200, + ['Content-Type' => 'application/json'], + file_get_contents($this->getStaticFile('MediaEmptyFileField.json')) + ); + + $this->drupal_client_prophecy->get(Argument::any(), Argument::any()) + ->willReturn($drupal_response); + + $milliner = $this->getMilliner(); + + $this->expectException(\RuntimeException::class, null, 500); + + $milliner->saveMedia( + "field_image", + "http://localhost:8000/media/6?_format=json", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveMedia + * @covers ::getFirstPredicate + * @covers ::getModifiedTimestamp + * @covers ::processJsonld + * @covers ::getLinkHeader + */ + public function testSaveMediaThrows404WhenFileIsNotInGemini() + { + $drupal_response = new Response( + 200, + ['Content-Type' => 'application/json'], + file_get_contents($this->getStaticFile('Media.json')) + ); + + $this->drupal_client_prophecy->get(Argument::any(), Argument::any()) + ->willReturn($drupal_response); + + $milliner = $this->getMilliner(); + + $this->expectException(\RuntimeException::class, null, 404); + + $milliner->saveMedia( + "field_image", + "http://localhost:8000/media/6?_format=json", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveMedia + * @covers ::getFirstPredicate + * @covers ::getModifiedTimestamp + * @covers ::processJsonld + * @covers ::getLinkHeader + */ + public function testSaveMediaThrowsFedoraHeadError() + { + $drupal_response = new Response( + 200, + ['Content-Type' => 'application/json'], + file_get_contents($this->getStaticFile('Media.json')) + ); + + $this->drupal_client_prophecy->get(Argument::any(), Argument::any()) + ->willReturn($drupal_response); + + $head_response = new Response(404); + $this->drupal_client_prophecy->head(Argument::any(), Argument::any()) + ->willReturn($head_response); + + $this->expectException(\RuntimeException::class, null, 404); + + $milliner = $this->getMilliner(); + + $milliner->saveMedia( + "field_image", + "http://localhost:8000/media/6?_format=json", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveMedia + * @covers ::getFirstPredicate + * @covers ::getModifiedTimestamp + * @covers ::processJsonld + * @covers ::getLinkHeader + */ + public function testSaveMediaThrows500WhenNoDescribedbyHeader() + { + $drupal_response = new Response( + 200, + ['Content-Type' => 'application/json'], + file_get_contents($this->getStaticFile('Media.json')) + ); + + $this->drupal_client_prophecy->get(Argument::any(), Argument::any()) + ->willReturn($drupal_response); + + $head_response = new Response(200); + $this->drupal_client_prophecy->head(Argument::any(), Argument::any()) + ->willReturn($head_response); + + $milliner = $this->getMilliner(); + + $this->expectException(\RuntimeException::class, null, 500); + + $milliner->saveMedia( + "field_image", + "http://localhost:8000/media/6?_format=json", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveMedia + * @covers ::getFirstPredicate + * @covers ::getModifiedTimestamp + * @covers ::processJsonld + * @covers ::getLinkHeader + */ + public function testSaveMediaThrowsFedoraGetError() + { + $drupal_response = new Response( + 200, + ['Content-Type' => 'application/json'], + file_get_contents($this->getStaticFile('Media.json')) + ); + $this->drupal_client_prophecy->get(Argument::any(), Argument::any()) + ->willReturn($drupal_response); + + $link = ''; + $link .= ';rel="describedby"'; + $head_response = new Response( + 200, + ['Link' => $link] + ); + $this->drupal_client_prophecy->head(Argument::any(), Argument::any()) + ->willReturn($head_response); + + $fedora_get_response = new Response( + 404 + ); + + $this->fedora_client_prophecy->getResource(Argument::any(), Argument::any()) + ->willReturn($fedora_get_response); + + $milliner = $this->getMilliner(); + + $this->expectException(\RuntimeException::class, null, 404); + + $milliner->saveMedia( + "field_image", + "http://localhost:8000/media/6?_format=json", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveMedia + * @covers ::getFirstPredicate + * @covers ::getModifiedTimestamp + * @covers ::processJsonld + * @covers ::getLinkHeader + */ + public function testSaveMediaThrows412OnStaleData() + { + $drupal_json_response = new Response( + 200, + [ + 'Content-Type' => 'application/json', + "Link" => '; rel="alternate"; type="application/ld+json"', + ], + file_get_contents($this->getStaticFile('Media.json')) + ); + $drupal_jsonld_response = new Response( + 200, + ['Content-Type' => 'application/ld+json'], + file_get_contents($this->getStaticFile('StaleMedia.jsonld')) + ); + + $this->drupal_client_prophecy->get('http://localhost:8000/media/6?_format=json', Argument::any()) + ->willReturn($drupal_json_response); + $this->drupal_client_prophecy->get('http://localhost:8000/media/6?_format=jsonld', Argument::any()) + ->willReturn($drupal_jsonld_response); + + $link = ''; + $link .= '; rel="describedby"'; + $head_response = new Response( + 200, + ['Link' => $link] + ); + $this->drupal_client_prophecy->head(Argument::any(), Argument::any()) + ->willReturn($head_response); + + $fedora_get_response = new Response( + 200, + ['Content-Type' => 'application/ld+json', 'ETag' => 'W\abc123'], + file_get_contents($this->getStaticFile('MediaLDP-RS.jsonld')) + ); + + $this->fedora_client_prophecy->getResource(Argument::any(), Argument::any()) + ->willReturn($fedora_get_response); + + $milliner = $this->getMilliner(); + + $this->expectException(\RuntimeException::class, null, 412); + + $milliner->saveMedia( + "field_image", + "http://localhost:8000/media/6?_format=json", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveMedia + * @covers ::getFirstPredicate + * @covers ::getModifiedTimestamp + * @covers ::processJsonld + * @covers ::getLinkHeader + */ + public function testSaveMediaThrowsFedoraPutError() + { + + $milliner = $this->setupMillinerSave('MediaLDP-RS.jsonld', $this->forbidden_response); + + $this->expectException(\RuntimeException::class, null, 403); + + $milliner->saveMedia( + "field_image", + "http://localhost:8000/media/6?_format=json", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveMedia + * @covers ::getFirstPredicate + * @covers ::getModifiedTimestamp + * @covers ::processJsonld + * @covers ::getLinkHeader + */ + public function testSaveMediaReturnsFedoraSuccess() + { + $milliner = $this->setupMillinerSave('MediaLDP-RS.jsonld', $this->no_content_response); + + $response = $milliner->saveMedia( + "field_image", + "http://localhost:8000/media/6?_format=json", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 204, + "Milliner must return 204 when Fedora returns 204. Received: $status" + ); + } + + /** + * @covers ::__construct + * @covers ::saveMedia + * @covers ::getFirstPredicate + * @covers ::getModifiedTimestamp + * @covers ::processJsonld + * @covers ::getLinkHeader + */ + public function testSaveMediaReturnsNoModifiedDate() + { + + $milliner = $this->setupMillinerSave('MediaLDP-RS-no_date.jsonld', $this->no_content_response); + + $response = $milliner->saveMedia( + "field_image", + "http://localhost:8000/media/6?_format=json", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 204, + "Milliner must return 204 when Fedora returns 204. Received: $status" + ); + } + + /** + * Utility to setup mock clients for a milliner service. + * + * @param string $mediaResponseFilename + * The file to use as the response to the Fedora request. + * @param Response $fedora_put_response + * The response to return when attempting to PUT to Fedora. + * + * @return \App\Islandora\Milliner\Service\MillinerService + */ + private function setupMillinerSave(string $mediaResponseFilename, Response $fedora_put_response): MillinerService + { + $link = '; rel="alternate"; type="application/ld+json"'; + $link .= ',; rel="describes"'; + $drupal_json_response = new Response( + 200, + [ + 'Content-Type' => 'application/json', + "Link" => $link, + ], + file_get_contents($this->getStaticFile('Media.json')) + ); + $drupal_jsonld_response = new Response( + 200, + [ + 'Content-Type' => 'application/ld+json', + ], + file_get_contents($this->getStaticFile('Media.jsonld')) + ); + $this->drupal_client_prophecy->get('http://localhost:8000/media/6?_format=json', Argument::any()) + ->willReturn($drupal_json_response); + $this->drupal_client_prophecy->get('http://localhost:8000/media/6?_format=jsonld', Argument::any()) + ->willReturn($drupal_jsonld_response); + + $link = ''; + $link .= '; rel="describedby"'; + $head_response = new Response( + 200, + ['Link' => $link] + ); + $this->drupal_client_prophecy->head(Argument::any(), Argument::any()) + ->willReturn($head_response); + + $fedora_get_response = new Response( + 200, + ['Content-Type' => 'application/ld+json', 'ETag' => 'W\abc123'], + file_get_contents($this->getStaticFile($mediaResponseFilename)) + ); + + $this->fedora_client_prophecy->getResource(Argument::any(), Argument::any()) + ->willReturn($fedora_get_response); + $this->fedora_client_prophecy->saveResource(Argument::any(), Argument::any(), Argument::any()) + ->willReturn($fedora_put_response); + + $this->entity_mapper_prophecy->getFedoraPath('f0fd71b3-1fab-45e1-a5e9-78d50e0d7174') + ->willReturn("{$this->fedoraBaseUrl}/f0/fd/71/b3/f0fd71b3-1fab-45e1-a5e9-78d50e0d7174"); + + return new MillinerService( + $this->fedora_client_prophecy->reveal(), + $this->drupal_client_prophecy->reveal(), + $this->entity_mapper_prophecy->reveal(), + $this->logger, + $this->modifiedDatePredicate, + false, + false + ); + } +} diff --git a/Milliner/tests/SaveNodeTest.php b/Milliner/tests/SaveNodeTest.php new file mode 100644 index 00000000..60c36671 --- /dev/null +++ b/Milliner/tests/SaveNodeTest.php @@ -0,0 +1,296 @@ + 'application/ld+json'], + file_get_contents(__DIR__ . '/static/Content.jsonld') + ); + $this->drupal_client_prophecy->get(Argument::any(), Argument::any()) + ->willReturn($drupal_response); + } + + /** + * @covers ::__construct + * @covers ::saveNode + * @covers ::processJsonld + */ + public function testCreateNodeThrowsOnFedoraError() + { + $milliner = $this->setupMilliner($this->not_found_response, null, $this->unauthorized_response); + + $this->expectException(\RuntimeException::class, null, 403); + + $milliner->saveNode( + $this->uuid, + "http://localhost:8000/node/1?_format=jsonld", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveNode + * @covers ::updateNode + * @covers ::processJsonld + */ + public function testCreateNodeReturnsFedora201() + { + $milliner = $this->setupMilliner($this->not_found_response, null, $this->created_response); + + $response = $milliner->saveNode( + $this->uuid, + "http://localhost:8000/node/1?_format=jsonld", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 201, + "Milliner must return 201 when Fedora returns 201. Received: $status" + ); + } + + /** + * @covers ::__construct + * @covers ::saveNode + * @covers ::createNode + * @covers ::processJsonld + */ + public function testCreateNodeReturnsFedora204() + { + $milliner = $this->setupMilliner($this->not_found_response, null, $this->no_content_response); + + $response = $milliner->saveNode( + $this->uuid, + "http://localhost:8000/node/1?_format=jsonld", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 204, + "Milliner must return 204 when Fedora returns 204. Received: $status" + ); + } + + /** + * @covers ::__construct + * @covers ::saveNode + * @covers ::updateNode + * @covers ::processJsonld + * @covers ::getModifiedTimestamp + * @covers ::getFirstPredicate + */ + public function testUpdateNodeThrowsOnFedoraError() + { + $fedora_get_response = new Response( + 200, + ['Content-Type' => 'application/ld+json'], + file_get_contents(__DIR__ . '/static/ContentLDP-RS.jsonld') + ); + + $milliner = $this->setupMilliner($this->ok_response, $fedora_get_response, $this->unauthorized_response); + + $this->expectException(\RuntimeException::class, null, 403); + + $milliner->saveNode( + $this->uuid, + "http://localhost:8000/node/1?_format=jsonld", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveNode + * @covers ::updateNode + * @covers ::processJsonld + * @covers ::getModifiedTimestamp + * @covers ::getFirstPredicate + */ + public function testUpdateNodeThrows500OnBadDatePredicate() + { + $drupal_response = new Response( + 200, + ['Content-Type' => 'application/ld+json'], + file_get_contents(__DIR__ . '/static/StaleContent.jsonld') + ); + $this->drupal_client_prophecy->get(Argument::any(), Argument::any()) + ->willReturn($drupal_response); + + $fedora_get_response = new Response( + 200, + ['Content-Type' => 'application/ld+json'], + file_get_contents(__DIR__ . '/static/ContentLDP-RS.jsonld') + ); + + $this->expectException(\RuntimeException::class, null, 500); + + $milliner = $this->setupMilliner($this->ok_response, $fedora_get_response, null); + + $milliner->saveNode( + $this->uuid, + "http://localhost:8000/node/1?_format=jsonld", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveNode + * @covers ::updateNode + * @covers ::processJsonld + * @covers ::getModifiedTimestamp + * @covers ::getFirstPredicate + */ + public function testUpdateNodeThrows412OnStaleContent() + { + $drupal_response = new Response( + 200, + ['Content-Type' => 'application/ld+json'], + file_get_contents(__DIR__ . '/static/StaleContent.jsonld') + ); + $this->drupal_client_prophecy->get(Argument::any(), Argument::any()) + ->willReturn($drupal_response); + + $fedora_get_response = new Response( + 200, + ['Content-Type' => 'application/ld+json'], + file_get_contents(__DIR__ . '/static/ContentLDP-RS.jsonld') + ); + + $milliner = $this->setupMilliner($this->ok_response, $fedora_get_response, null); + + $this->expectException(\RuntimeException::class, null, 412); + + $milliner->saveNode( + $this->uuid, + "http://localhost:8000/node/1?_format=jsonld", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + } + + /** + * @covers ::__construct + * @covers ::saveNode + * @covers ::updateNode + * @covers ::processJsonld + * @covers ::getModifiedTimestamp + * @covers ::getFirstPredicate + */ + public function testUpdateNodeReturnsFedora201() + { + $fedora_get_response = new Response( + 200, + ['Content-Type' => 'application/ld+json'], + file_get_contents(__DIR__ . '/static/ContentLDP-RS.jsonld') + ); + $milliner = $this->setupMilliner($this->ok_response, $fedora_get_response, $this->created_response); + + $response = $milliner->saveNode( + $this->uuid, + "http://localhost:8000/node/1?_format=jsonld", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 201, + "Milliner must return 201 when Fedora returns 201. Received: $status" + ); + } + + /** + * @covers ::__construct + * @covers ::saveNode + * @covers ::updateNode + * @covers ::processJsonld + * @covers ::getModifiedTimestamp + * @covers ::getFirstPredicate + */ + public function testUpdateNodeReturnsFedora204() + { + + $fedora_get_response = new Response( + 200, + ['Content-Type' => 'application/ld+json'], + file_get_contents(__DIR__ . '/static/ContentLDP-RS.jsonld') + ); + $milliner = $this->setupMilliner($this->ok_response, $fedora_get_response, $this->no_content_response); + + $response = $milliner->saveNode( + $this->uuid, + "http://localhost:8000/node/1?_format=jsonld", + $this->fedoraBaseUrl, + "Bearer islandora" + ); + + $status = $response->getStatusCode(); + $this->assertTrue( + $status == 204, + "Milliner must return 204 when Fedora returns 204. Received: $status" + ); + } + + /** + * Utility function to setup a MillinerService + * + * @param Response|null $fedora_head_response + * The response Fedora will return to the HEAD request, if null don't set the prophecy. + * @param Response|null $fedora_get_response + * The response Fedora will return to the GET request, if null don't set the prophecy. + * @param Response|null $fedora_save_response + * The response Fedora will return to the PUT request, if null don't set the prophecy. + * + * @return \Islandora\Milliner\Service\MillinerService + */ + private function setupMilliner( + $fedora_head_response, + $fedora_get_response, + $fedora_save_response + ): MillinerService { + + if ($fedora_head_response !== null) { + $this->fedora_client_prophecy->getResourceHeaders(Argument::any()) + ->willReturn($fedora_head_response); + } + if ($fedora_get_response != null) { + $this->fedora_client_prophecy->getResource(Argument::any(), Argument::any(), Argument::any()) + ->willReturn($fedora_get_response); + } + if ($fedora_save_response !== null) { + $this->fedora_client_prophecy->saveResource(Argument::any(), Argument::any(), Argument::any()) + ->willReturn($fedora_save_response); + } + + return $this->getMilliner(); + } +} diff --git a/Milliner/tests/bootstrap.php b/Milliner/tests/bootstrap.php new file mode 100644 index 00000000..469dccee --- /dev/null +++ b/Milliner/tests/bootstrap.php @@ -0,0 +1,11 @@ +bootEnv(dirname(__DIR__).'/.env'); +} diff --git a/Milliner/static/ChecksumResponse.json b/Milliner/tests/static/ChecksumResponse.json similarity index 100% rename from Milliner/static/ChecksumResponse.json rename to Milliner/tests/static/ChecksumResponse.json diff --git a/Milliner/static/Content.jsonld b/Milliner/tests/static/Content.jsonld similarity index 100% rename from Milliner/static/Content.jsonld rename to Milliner/tests/static/Content.jsonld diff --git a/Milliner/static/ContentEvent.jsonld b/Milliner/tests/static/ContentEvent.jsonld similarity index 100% rename from Milliner/static/ContentEvent.jsonld rename to Milliner/tests/static/ContentEvent.jsonld diff --git a/Milliner/static/ContentEventBadUuid.jsonld b/Milliner/tests/static/ContentEventBadUuid.jsonld similarity index 100% rename from Milliner/static/ContentEventBadUuid.jsonld rename to Milliner/tests/static/ContentEventBadUuid.jsonld diff --git a/Milliner/static/ContentEventNoJsonldUrl.jsonld b/Milliner/tests/static/ContentEventNoJsonldUrl.jsonld similarity index 100% rename from Milliner/static/ContentEventNoJsonldUrl.jsonld rename to Milliner/tests/static/ContentEventNoJsonldUrl.jsonld diff --git a/Milliner/static/ContentEventNoUuid.jsonld b/Milliner/tests/static/ContentEventNoUuid.jsonld similarity index 100% rename from Milliner/static/ContentEventNoUuid.jsonld rename to Milliner/tests/static/ContentEventNoUuid.jsonld diff --git a/Milliner/static/ContentLDP-RS.jsonld b/Milliner/tests/static/ContentLDP-RS.jsonld similarity index 100% rename from Milliner/static/ContentLDP-RS.jsonld rename to Milliner/tests/static/ContentLDP-RS.jsonld diff --git a/Milliner/static/FileEvent.jsonld b/Milliner/tests/static/FileEvent.jsonld similarity index 100% rename from Milliner/static/FileEvent.jsonld rename to Milliner/tests/static/FileEvent.jsonld diff --git a/Milliner/static/FileEventBadUuid.jsonld b/Milliner/tests/static/FileEventBadUuid.jsonld similarity index 100% rename from Milliner/static/FileEventBadUuid.jsonld rename to Milliner/tests/static/FileEventBadUuid.jsonld diff --git a/Milliner/static/FileEventNoChecksumUrl.jsonld b/Milliner/tests/static/FileEventNoChecksumUrl.jsonld similarity index 100% rename from Milliner/static/FileEventNoChecksumUrl.jsonld rename to Milliner/tests/static/FileEventNoChecksumUrl.jsonld diff --git a/Milliner/static/FileEventNoFileUrl.jsonld b/Milliner/tests/static/FileEventNoFileUrl.jsonld similarity index 100% rename from Milliner/static/FileEventNoFileUrl.jsonld rename to Milliner/tests/static/FileEventNoFileUrl.jsonld diff --git a/Milliner/static/FileEventNoUuid.jsonld b/Milliner/tests/static/FileEventNoUuid.jsonld similarity index 100% rename from Milliner/static/FileEventNoUuid.jsonld rename to Milliner/tests/static/FileEventNoUuid.jsonld diff --git a/Milliner/static/Media.json b/Milliner/tests/static/Media.json similarity index 100% rename from Milliner/static/Media.json rename to Milliner/tests/static/Media.json diff --git a/Milliner/static/Media.jsonld b/Milliner/tests/static/Media.jsonld similarity index 100% rename from Milliner/static/Media.jsonld rename to Milliner/tests/static/Media.jsonld diff --git a/Milliner/static/MediaEmptyFileField.json b/Milliner/tests/static/MediaEmptyFileField.json similarity index 100% rename from Milliner/static/MediaEmptyFileField.json rename to Milliner/tests/static/MediaEmptyFileField.json diff --git a/Milliner/static/MediaEvent.jsonld b/Milliner/tests/static/MediaEvent.jsonld similarity index 100% rename from Milliner/static/MediaEvent.jsonld rename to Milliner/tests/static/MediaEvent.jsonld diff --git a/Milliner/static/MediaEventNoJsonUrl.jsonld b/Milliner/tests/static/MediaEventNoJsonUrl.jsonld similarity index 100% rename from Milliner/static/MediaEventNoJsonUrl.jsonld rename to Milliner/tests/static/MediaEventNoJsonUrl.jsonld diff --git a/Milliner/static/MediaEventNoJsonldUrl.jsonld b/Milliner/tests/static/MediaEventNoJsonldUrl.jsonld similarity index 100% rename from Milliner/static/MediaEventNoJsonldUrl.jsonld rename to Milliner/tests/static/MediaEventNoJsonldUrl.jsonld diff --git a/Milliner/static/MediaLDP-RS-NoDigest.jsonld b/Milliner/tests/static/MediaLDP-RS-NoDigest.jsonld similarity index 100% rename from Milliner/static/MediaLDP-RS-NoDigest.jsonld rename to Milliner/tests/static/MediaLDP-RS-NoDigest.jsonld diff --git a/Milliner/static/MediaLDP-RS-no_date.jsonld b/Milliner/tests/static/MediaLDP-RS-no_date.jsonld similarity index 100% rename from Milliner/static/MediaLDP-RS-no_date.jsonld rename to Milliner/tests/static/MediaLDP-RS-no_date.jsonld diff --git a/Milliner/static/MediaLDP-RS.jsonld b/Milliner/tests/static/MediaLDP-RS.jsonld similarity index 100% rename from Milliner/static/MediaLDP-RS.jsonld rename to Milliner/tests/static/MediaLDP-RS.jsonld diff --git a/Milliner/static/MediaNoFileField.json b/Milliner/tests/static/MediaNoFileField.json similarity index 100% rename from Milliner/static/MediaNoFileField.json rename to Milliner/tests/static/MediaNoFileField.json diff --git a/Milliner/static/StaleChecksumResponse.json b/Milliner/tests/static/StaleChecksumResponse.json similarity index 100% rename from Milliner/static/StaleChecksumResponse.json rename to Milliner/tests/static/StaleChecksumResponse.json diff --git a/Milliner/static/StaleContent.jsonld b/Milliner/tests/static/StaleContent.jsonld similarity index 100% rename from Milliner/static/StaleContent.jsonld rename to Milliner/tests/static/StaleContent.jsonld diff --git a/Milliner/static/StaleMedia.jsonld b/Milliner/tests/static/StaleMedia.jsonld similarity index 100% rename from Milliner/static/StaleMedia.jsonld rename to Milliner/tests/static/StaleMedia.jsonld diff --git a/Recast/.env b/Recast/.env new file mode 100644 index 00000000..344730a0 --- /dev/null +++ b/Recast/.env @@ -0,0 +1,21 @@ +# In all environments, the following files are loaded if they exist, +# the latter taking precedence over the former: +# +# * .env contains default values for the environment variables needed by the app +# * .env.local uncommitted file with local overrides +# * .env.$APP_ENV committed environment-specific defaults +# * .env.$APP_ENV.local uncommitted environment-specific overrides +# +# Real environment variables win over .env files. +# +# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. +# +# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). +# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET=9ecb305ab0403cacc5ee85a9e480e93e +#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 +#TRUSTED_HOSTS='^(localhost|example\.com)$' +###< symfony/framework-bundle ### diff --git a/Recast/.env.test b/Recast/.env.test new file mode 100644 index 00000000..9e7162f0 --- /dev/null +++ b/Recast/.env.test @@ -0,0 +1,6 @@ +# define your env variables for the test env here +KERNEL_CLASS='App\Kernel' +APP_SECRET='$ecretf0rt3st' +SYMFONY_DEPRECATIONS_HELPER=999999 +PANTHER_APP_ENV=panther +PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots diff --git a/Recast/README.md b/Recast/README.md index 09e15c2d..f13ca3e1 100644 --- a/Recast/README.md +++ b/Recast/README.md @@ -1,4 +1,4 @@ -# ![Recast Mascot](https://user-images.githubusercontent.com/2371345/67399869-3ded6600-f583-11e9-8fec-8e82d57a6d4d.png) +# ![Recast Mascot](https://user-images.githubusercontent.com/2371345/67399869-3ded6600-f583-11e9-8fec-8e82d57a6d4d.png) # Recast [![Contribution Guidelines][2]](./CONTRIBUTING.md) [![LICENSE][3]](./LICENSE) @@ -10,26 +10,59 @@ Microservice that remaps Drupal URIs to add Fedora to Fedora links based on asso ## Installation Recast requires a functioning LDP server to provide RDF (like a [Fedora](http://fedorarepository.org/) repository). -You will also need a working [Gemini](../Gemini) system to use for looking up the URI mappings. - Clone this repository. - Install `composer`. [Install instructions here.][4] - `$ cd /path/to/Recast` and run `$ composer install` -- Then either - - For production, configure your web server appropriately (e.g. add a VirtualHost for Recast in Apache) OR - - For development, run the PHP built-in web server `$ php -S localhost:8888 -t src` from Recast root. +- For production, configure your web server appropriately (e.g. add a VirtualHost for Recast in Apache) + +## Upgrading + +Steps for upgrading Recast can be found in [UPGRADE.md](UPGRADE.md) ## Configuration -Make a copy of the [config file](cfg/config.example.yaml) and name it `config.yaml` in the `cfg` directory. +Symfony uses `.dotenv` to set environment variables. You can check the [.env](./.env) in the root of the Recast directory. +To alter any settings, create a file called `.env.local` to store your specific changes. You can also set an actual environment +variable. + +For production use make sure to set the add `APP_ENV=prod` environment variable. + +There are various configurable parameters located in the [`/path/to/Recast/config/services.yaml`](./config/services.yaml). +``` +parameters: + app.drupal_base_url: "http://localhost:8000" + app.fedora_base_url: "http://localhost:8080/fcrepo/rest" + app.namespaces: + acl: "http://www.w3.org/ns/auth/acl#" + fedora: "http://fedora.info/definitions/v4/repository#" + ... +``` + +`app.fedora_base_url` defines the base URL of your Fedora repository. -You will need to set the `fedora_base_url` entry to point to your Fedora installation. +`app.drupal_base_url` define the base URL of your Drupal 8/9 instance. -You will also need to set up the `drupal_base_url` entry to point to your Drupal 8 installation. +`app.namespaces` is an array of prefix to URIs that can be used when rewriting the RDF. -You will also need to set up the `gemini_base_url` entry to point to you Gemini instance. +You do NOT need to edit the `fedora_base_url` inside `/path/to/Recast/config/packages/crayfish_commons.yaml` as this +re-uses the above setting. However in the same file you can point to the location of your `syn-settings.xml`. +If you don't have a `syn-settings.xml` look at the [Syn](http://github.com/Islandora/Syn) documentation. -You can also configure namespace prefixes, logging level and file and JWT security. +### Logging + +To change your log settings, edit the `/path/to/Recast/config/packages/monolog.yaml` file. + +You can also copy the file into one of the `/path/to/Recast/config/packages/` directories. +Where `` is `dev`, `test`, or `prod` based on the `APP_ENV` variable (see above). The files in the specific +environment directory will take precedence over those in the `/path/to/Recast/config/packages` directory. + +The location specified in the configuration file for the log must be writable by the web server. + +### Disabling Syn + +There are instructions in the `/path/to/Recast/config/packages/security.yaml` file describing what to change and what lines +to comment out to disable Syn. ## Usage @@ -42,7 +75,7 @@ By default the `add` action is assumed if no `action` is provided. The Recast service looks to the `Apix-Ldp-Resource` header for the resource to map. -The Recast service will provide RDF in the format directed by the `Accept` header sent, or `text/turtle` if +The Recast service will provide RDF in the format directed by the `Accept` header sent, or `text/turtle` if the `Accept` header is not provided or the system is unable to provide the requested format. If requests are successful, they return the response from the Fedora server. If the Drupal entity cannot be requested, @@ -132,7 +165,7 @@ You can also explicitly specify the **add** action by using the Recast URI `http #### Replace -If you provide the **replace** action, the original Drupal URI will be removed for any URI that can be mapped. +If you provide the **replace** action, the original Drupal URI will be removed for any URI that can be mapped. ``` > curl -H"Authorization: Bearer islandora" -H"Accept: text/turtle" -H"Apix-Ldp-Resource: http://localhost:8080/fcrepo/rest/82/67/81/b2/826781b2-327d-47b2-9de0-18f85ccfa29b" http://localhost:8000/recast/replace @@ -182,8 +215,6 @@ If you would like to contribute, please get involved by attending our weekly [Te If you would like to contribute code to the project, you need to be covered by an Islandora Foundation [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). Please see the [Contributors](http://islandora.ca/resources/contributors) pages on Islandora.ca for more information. -We recommend using the [islandora-playbook](https://github.com/Islandora-Devops/islandora-playbook) to get started. - ## License [MIT](https://opensource.org/licenses/MIT) diff --git a/Recast/UPGRADE.md b/Recast/UPGRADE.md new file mode 100644 index 00000000..bf6f533e --- /dev/null +++ b/Recast/UPGRADE.md @@ -0,0 +1,157 @@ +This document guides you through the process of upgrading Recast. First, check if a section named "Upgrade to x.x.x" exists, with x.x.x being the version you are planning to upgrade to. + +## Upgrade to 3.0.0 + +Recast (and all of Crayfish) adheres to [semantic versioning](https://semver.org), which makes a distinction between "major", "minor", and "patch" versions. The upgrade path will be different depending on which previous version from which you are migrating. + +### Upgrade from version 2.x.x + +Recast has switched from a Silex application to a Symfony application. This does not require much in code changes, but does use a different file layout. + +Previously your configuration file would be located in the `/path/to/Recast/config` directory and be called `config.yaml`. + +The configuration from this file will now be located several locations documented below. + +#### Base Urls +Old location `/path/to/Recast/config/config.yaml` + +``` +--- + +fedora_resource: + base_url: http://localhost:8080/fcrepo/rest + +gemini_base_url: http://localhost:8000/gemini + +drupal_base_url: http://localhost:8000 +``` + +Two of these variables are now located in `/path/to/Recast/config/services.yaml` and appears in the `parameters`, the third `gemini_base_url` variable is no longer needed. + +``` +parameters: + app.drupal_base_url: "http://localhost:8000" + app.fedora_base_url: "http://localhost:8080/fcrepo/rest" +``` + +**NOTE**: The `app.fedora_base_url` is needed for Recast as well as Crayfish-Commons, hence in `/path/to/Recast/config/packages/crayfish_commons.yaml` you will see: + +``` +crayfish_commons: + # Because we define a Fedora parameter in the services.yaml we can re-use it here. + fedora_base_uri: '%app.fedora_base_url%' +``` + +#### Namespaces +Old location `/path/to/Recast/config/config.yaml` + +``` +# Add namespace prefixes used by Fedora for recast service +# Must be inside an array to maintain the internal associative array. +namespaces: +- + acl: "http://www.w3.org/ns/auth/acl#" + fedora: "http://fedora.info/definitions/v4/repository#" + ldp: "http://www.w3.org/ns/ldp#" + memento: "http://mementoweb.org/ns#" + pcdm: "http://pcdm.org/models#" + pcdmuse: "http://pcdm.org/use#" + webac: "http://fedora.info/definitions/v4/webac#" + vcard: "http://www.w3.org/2006/vcard/ns#" +``` + +This variables are now located in `/path/to/Recast/config/services.yaml` and appears in the `parameters` + +``` +parameters: + ... + app.namespaces: + acl: "http://www.w3.org/ns/auth/acl#" + fedora: "http://fedora.info/definitions/v4/repository#" + ldp: "http://www.w3.org/ns/ldp#" + memento: "http://mementoweb.org/ns#" + pcdm: "http://pcdm.org/models#" + pcdmuse: "http://pcdm.org/use#" + webac: "http://fedora.info/definitions/v4/webac#" + vcard: "http://www.w3.org/2006/vcard/ns#" +``` + +#### Log settings +Old location `/path/to/Recast/config/config.yaml` + +``` +... +log: + # Valid log levels are: + # DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY, NONE + # log level none won't open logfile + level: NONE + file: ../recast.log +``` + +This setting is in `/path/to/Recast/config/packages/monolog.yaml`. This file contains commented out defaults from Symfony and a new handler for Recast. + +``` +monolog: + handlers: + ... + recast: + type: rotating_file + path: /tmp/Recast.log + level: DEBUG + max_files: 1 + channels: ["!event", "!console"] +``` + +#### Syn settings +Old location `/path/to/Recast/config/config.yaml` + +``` +syn: + # toggles JWT security for service + enable: True + # Path to the syn config file for authentication. + # example can be found here: + # https://github.com/Islandora/Syn/blob/main/conf/syn-settings.example$ + config: ../syn-settings.xml +``` + +The `syn.enable` variable is no longer used as Syn is part of the security for Symfony, see [below](#enable-disable-syn) for steps to see where to enable/disable Syn. + +The `syn.config` variable is in `/path/to/Recast/config/crayfish_commons.yaml`. + +``` +crayfish_commons: + ... + #syn_config: '/path/to/syn-settings.xml' +``` + +`crayfish_commons.syn_config` needs to point to a file or be left commented out to use a default syn config of + +``` + + + + +``` + +##### Enable/Disable Syn +To enable/disable Syn look in the `/path/to/Recast/config/packages/security.yaml`. By default Syn is disabled, to enable look the below lines and follow the included instructions + +``` +security: + ... + firewall: + ... + main: + ... + # To enable Syn, change anonymous to false and uncomment the lines further below + anonymous: true + ... + # To enable Syn, uncomment the below 4 lines and change anonymous to false above. + #provider: jwt_user_provider + #guard: + # authenticators: + # - Islandora\Crayfish\Commons\Syn\JwtAuthenticator +``` + diff --git a/Recast/bin/phpunit b/Recast/bin/phpunit new file mode 100755 index 00000000..4d1ed05d --- /dev/null +++ b/Recast/bin/phpunit @@ -0,0 +1,13 @@ +#!/usr/bin/env php +2.2,<2.4" + "ext-dom": "*", + "ext-mbstring": "*", + "ext-pcre": "*", + "ext-xmlreader": "*", + "lib-libxml": "*", + "php": ">=7.1.0" }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "predis/predis": "~1.0", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@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": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + "ml/json-ld": "~1.0", + "semsol/arc2": "~2.2" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + "EasyRdf\\": "lib" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" + "name": "Nicholas Humfrey", + "email": "njh@aelius.com", + "homepage": "http://www.aelius.com/njh/", + "role": "Developer" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Alexey Zakhlestin", + "email": "indeyets@gmail.com", + "homepage": "http://indeyets.ru/", + "role": "Developer" } ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", + "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.", + "homepage": "http://www.easyrdf.org/", "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" + "Linked Data", + "RDF", + "Semantic Web", + "Turtle", + "rdfa", + "sparql" ], "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.1.0" + "forum": "http://groups.google.com/group/easyrdf/", + "issues": "http://github.com/easyrdf/easyrdf/issues", + "source": "https://github.com/easyrdf/easyrdf/tree/1.1.1" }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2021-07-14T11:22:57+00:00" + "time": "2020-12-02T08:47:31+00:00" }, { - "name": "doctrine/dbal", - "version": "2.13.2", + "name": "guzzlehttp/guzzle", + "version": "6.5.5", "source": { "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4" + "url": "https://github.com/guzzle/guzzle.git", + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", "shasum": "" }, "require": { - "doctrine/cache": "^1.0|^2.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" + "ext-json": "*", + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.6.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.17.0" }, "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2020.2", - "phpstan/phpstan": "0.12.81", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.5", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.6.4" + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.1" }, "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." + "psr/log": "Required for using the Log middleware" }, - "bin": [ - "bin/doctrine-dbal" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5-dev" + } + }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + "GuzzleHttp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -154,141 +130,153 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlanywhere", - "sqlite", - "sqlserver", - "sqlsrv" + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" ], "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.2" + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/6.5" }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "time": "2021-06-18T21:48:39+00:00" + "time": "2020-06-16T21:01:06+00:00" }, { - "name": "doctrine/deprecations", - "version": "v0.5.3", + "name": "guzzlehttp/promises", + "version": "1.5.1", "source": { "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" + "url": "https://github.com/guzzle/promises.git", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": ">=5.5" }, "require-dev": { - "doctrine/coding-standard": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "GuzzleHttp\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", + "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/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.5.1" }, - "time": "2021-03-21T12:59:47+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" }, { - "name": "doctrine/event-manager", - "version": "1.1.1", + "name": "guzzlehttp/psr7", + "version": "1.8.5", "source": { "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + "url": "https://github.com/guzzle/psr7.git", + "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/337e3ad8e5716c15f9657bd214d16cc5e69df268", + "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" }, - "conflict": { - "doctrine/common": "<2.9@dev" + "provide": { + "psr/http-message-implementation": "1.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" + "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" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.7-dev" } }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "GuzzleHttp\\Psr7\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -297,89 +285,97 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { - "name": "Roman Borschel", - "email": "roman@code-factory.org" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" }, { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" }, { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" }, { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "description": "PSR-7 message implementation that also provides common utility methods", "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" ], "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.8.5" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" + "url": "https://github.com/GrahamCampbell", + "type": "github" }, { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" + "url": "https://github.com/Nyholm", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", "type": "tidelift" } ], - "time": "2020-05-29T18:28:51+00:00" + "time": "2022-03-20T21:51:18+00:00" }, { - "name": "doctrine/instantiator", - "version": "1.4.0", + "name": "islandora/chullo", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "url": "https://github.com/Islandora/chullo.git", + "reference": "a7c1e051eab2a5077eaf5db2649201fa775c5a02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/Islandora/chullo/zipball/a7c1e051eab2a5077eaf5db2649201fa775c5a02", + "reference": "a7c1e051eab2a5077eaf5db2649201fa775c5a02", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "easyrdf/easyrdf": "^0.9 || ^1", + "guzzlehttp/guzzle": "^6.1.0", + "ml/json-ld": "^1.0.4", + "php": ">=7.3" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", + "mockery/mockery": "^0.9", + "phpunit/phpunit": "^9.0", + "sebastian/phpcpd": "^6.0", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", "autoload": { "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + "Islandora\\Chullo\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -388,154 +384,126 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" + "name": "Islandora Foundation", + "email": "community@islandora.ca", + "role": "Owner" }, { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" + "name": "Daniel Lamb", + "email": "dlamb@islandora.ca", + "role": "Maintainer" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" + "name": "Nick Ruest", + "email": "ruestn@gmail.com", + "role": "Maintainer" } ], - "time": "2020-11-10T18:47:58+00:00" + "description": "A PHP client for interacting with a Fedora 4 server.", + "homepage": "https://github.com/Islandora/chullo", + "support": { + "issues": "https://github.com/Islandora/documentation/issues", + "source": "https://github.com/Islandora/chullo/tree/1.3.0" + }, + "time": "2021-12-16T22:31:48+00:00" }, { - "name": "easyrdf/easyrdf", - "version": "1.1.1", + "name": "islandora/crayfish-commons", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/easyrdf/easyrdf.git", - "reference": "c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64" + "url": "https://github.com/Islandora/Crayfish-Commons.git", + "reference": "e7b8cbd5951286897507f6cfd3e6356201d24f48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easyrdf/easyrdf/zipball/c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64", - "reference": "c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64", + "url": "https://api.github.com/repos/Islandora/Crayfish-Commons/zipball/e7b8cbd5951286897507f6cfd3e6356201d24f48", + "reference": "e7b8cbd5951286897507f6cfd3e6356201d24f48", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "ext-pcre": "*", - "ext-xmlreader": "*", - "lib-libxml": "*", - "php": ">=7.1.0" + "islandora/chullo": "^1.0", + "namshi/jose": "^7.2", + "psr/log": "^1.0.1", + "symfony/config": "4.4.*", + "symfony/dependency-injection": "4.4.*", + "symfony/event-dispatcher": "4.4.*", + "symfony/http-foundation": "4.4.*", + "symfony/monolog-bundle": "^3.4", + "symfony/security-bundle": "4.4.*", + "symfony/yaml": "4.4.*" + }, + "conflict": { + "symfony/symfony": "*" }, "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" + "mikey179/vfsstream": "^1.6", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "sebastian/phpcpd": "^6.0", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "4.4.*" }, - "suggest": { - "ml/json-ld": "~1.0", - "semsol/arc2": "~2.2" + "type": "symfony-bundle", + "extra": { + "symfony": { + "allow-contrib": false, + "require": "4.4.*" + } }, - "type": "library", "autoload": { "psr-4": { - "EasyRdf\\": "lib" + "Islandora\\Crayfish\\Commons\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nicholas Humfrey", - "email": "njh@aelius.com", - "homepage": "http://www.aelius.com/njh/", - "role": "Developer" + "name": "Islandora Foundation", + "email": "community@islandora.ca", + "role": "Owner" }, { - "name": "Alexey Zakhlestin", - "email": "indeyets@gmail.com", - "homepage": "http://indeyets.ru/", - "role": "Developer" + "name": "Daniel Lamb", + "email": "dlamb@islandora.ca", + "role": "Maintainer" } ], - "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" - ], + "description": "Shared code amongst Islandora Crayfish microservices", + "homepage": "https://github.com/Islandora/Crayfish-Commons", "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" + "issues": "https://github.com/Islandora/documentation/issues", + "source": "https://github.com/Islandora/Crayfish-Commons/tree/3.0.0" }, - "time": "2020-12-02T08:47:31+00:00" + "time": "2022-05-05T15:46:41+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "6.5.5", + "name": "ml/iri", + "version": "1.1.4", + "target-dir": "ML/IRI", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" + "url": "https://github.com/lanthaler/IRI.git", + "reference": "cbd44fa913e00ea624241b38cefaa99da8d71341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", + "url": "https://api.github.com/repos/lanthaler/IRI/zipball/cbd44fa913e00ea624241b38cefaa99da8d71341", + "reference": "cbd44fa913e00ea624241b38cefaa99da8d71341", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17.0" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" + "lib-pcre": ">=4.0", + "php": ">=5.3.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5-dev" - } - }, "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + "psr-0": { + "ML\\IRI": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -543,61 +511,54 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Markus Lanthaler", + "email": "mail@markus-lanthaler.com", + "homepage": "http://www.markus-lanthaler.com", + "role": "Developer" } ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", + "description": "IRI handling for PHP", + "homepage": "http://www.markus-lanthaler.com", "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" + "URN", + "iri", + "uri", + "url" ], "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5" + "issues": "https://github.com/lanthaler/IRI/issues", + "source": "https://github.com/lanthaler/IRI/tree/master" }, - "time": "2020-06-16T21:01:06+00:00" + "time": "2014-01-21T13:43:39+00:00" }, { - "name": "guzzlehttp/promises", - "version": "1.4.1", + "name": "ml/json-ld", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "url": "https://github.com/lanthaler/JsonLD.git", + "reference": "c74a1aed5979ed1cfb1be35a55a305fd30e30b93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/lanthaler/JsonLD/zipball/c74a1aed5979ed1cfb1be35a55a305fd30e30b93", + "reference": "c74a1aed5979ed1cfb1be35a55a305fd30e30b93", "shasum": "" }, "require": { - "php": ">=5.5" + "ext-json": "*", + "ml/iri": "^1.1.1", + "php": ">=5.3.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "json-ld/tests": "1.0", + "phpunit/phpunit": "^4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, "autoload": { "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + "ML\\JsonLD\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -605,63 +566,75 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Markus Lanthaler", + "email": "mail@markus-lanthaler.com", + "homepage": "http://www.markus-lanthaler.com", + "role": "Developer" } ], - "description": "Guzzle promises library", + "description": "JSON-LD Processor for PHP", + "homepage": "http://www.markus-lanthaler.com", "keywords": [ - "promise" + "JSON-LD", + "jsonld" ], "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" + "issues": "https://github.com/lanthaler/JsonLD/issues", + "source": "https://github.com/lanthaler/JsonLD/tree/1.2.0" }, - "time": "2021-03-07T09:25:29+00:00" + "time": "2020-06-16T17:45:06+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "1.8.3", + "name": "monolog/monolog", + "version": "1.27.0", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85" + "url": "https://github.com/Seldaek/monolog.git", + "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", - "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/52ebd235c1f7e0d5e1b16464b695a28335f8e44a", + "reference": "52ebd235c1f7e0d5e1b16464b695a28335f8e44a", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": ">=5.3.0", + "psr/log": "~1.0" }, "provide": { - "psr/http-message-implementation": "1.0" + "psr/log-implementation": "1.0.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" + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpstan/phpstan": "^0.12.59", + "phpunit/phpunit": "~4.5", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", "autoload": { "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + "Monolog\\": "src/Monolog" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -669,97 +642,70 @@ ], "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": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "PSR-7 message implementation that also provides common utility methods", + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" + "log", + "logging", + "psr-3" ], "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.3" + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/1.27.0" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", + "url": "https://github.com/Seldaek", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", "type": "tidelift" } ], - "time": "2021-10-05T13:56:00+00:00" + "time": "2022-03-13T20:29:46+00:00" }, { - "name": "islandora/chullo", - "version": "1.2.0", + "name": "namshi/jose", + "version": "7.2.3", "source": { "type": "git", - "url": "https://github.com/Islandora/chullo.git", - "reference": "d563d5e48ef9b15dcf45029277bbc2f6eeef2454" + "url": "https://github.com/namshi/jose.git", + "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Islandora/chullo/zipball/d563d5e48ef9b15dcf45029277bbc2f6eeef2454", - "reference": "d563d5e48ef9b15dcf45029277bbc2f6eeef2454", + "url": "https://api.github.com/repos/namshi/jose/zipball/89a24d7eb3040e285dd5925fcad992378b82bcff", + "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff", "shasum": "" }, "require": { - "easyrdf/easyrdf": "^0.9 || ^1", - "guzzlehttp/guzzle": "^6.1.0", - "ml/json-ld": "^1.0.4", - "php": "^7.3 || ^7.4" + "ext-date": "*", + "ext-hash": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-spl": "*", + "php": ">=5.5", + "symfony/polyfill-php56": "^1.0" }, "require-dev": { - "mockery/mockery": "^0.9", - "phpunit/phpunit": "^9.0", - "sebastian/phpcpd": "^6.0", - "squizlabs/php_codesniffer": "^3.0" + "phpseclib/phpseclib": "^2.0", + "phpunit/phpunit": "^4.5|^5.0", + "satooshi/php-coveralls": "^1.0" + }, + "suggest": { + "ext-openssl": "Allows to use OpenSSL as crypto engine.", + "phpseclib/phpseclib": "Allows to use Phpseclib as crypto engine, use version ^2.0." }, "type": "library", "autoload": { "psr-4": { - "Islandora\\Chullo\\": "src/" + "Namshi\\JOSE\\": "src/Namshi/JOSE/" } }, "notification-url": "https://packagist.org/downloads/", @@ -768,66 +714,55 @@ ], "authors": [ { - "name": "Islandora Foundation", - "email": "community@islandora.ca", - "role": "Owner" - }, - { - "name": "Daniel Lamb", - "email": "dlamb@islandora.ca", - "role": "Maintainer" + "name": "Alessandro Nadalin", + "email": "alessandro.nadalin@gmail.com" }, { - "name": "Nick Ruest", - "email": "ruestn@gmail.com", - "role": "Maintainer" + "name": "Alessandro Cinelli (cirpo)", + "email": "alessandro.cinelli@gmail.com" } ], - "description": "A PHP client for interacting with a Fedora 4 server.", - "homepage": "https://github.com/Islandora/chullo", + "description": "JSON Object Signing and Encryption library for PHP.", + "keywords": [ + "JSON Web Signature", + "JSON Web Token", + "JWS", + "json", + "jwt", + "token" + ], "support": { - "issues": "https://github.com/Islandora/documentation/issues", - "source": "https://github.com/Islandora/chullo/tree/1.2.0" + "issues": "https://github.com/namshi/jose/issues", + "source": "https://github.com/namshi/jose/tree/master" }, - "time": "2021-05-05T17:38:36+00:00" + "time": "2016-12-05T07:27:31+00:00" }, { - "name": "islandora/crayfish-commons", - "version": "2.0.0", + "name": "psr/cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/Islandora/Crayfish-Commons.git", - "reference": "1d4f645764154b165e3bc897724e12d23144867d" + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Islandora/Crayfish-Commons/zipball/1d4f645764154b165e3bc897724e12d23144867d", - "reference": "1d4f645764154b165e3bc897724e12d23144867d", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", "shasum": "" }, "require": { - "doctrine/dbal": "~2.2", - "islandora/chullo": "1.2.0", - "monolog/monolog": "^1.22", - "namshi/jose": "^7.2", - "pimple/pimple": "~3.0", - "psr/log": "^1.0.1", - "silex/silex": "^2.0", - "symfony/http-foundation": "^3.4 || ^4.4", - "symfony/security": "^3.4 || ^4.4", - "symfony/yaml": "^3.4 || ^4.4" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.0", - "sebastian/phpcpd": "^6.0", - "squizlabs/php_codesniffer": "^3.0" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Islandora\\Crayfish\\Commons\\": "src/" + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -836,47 +771,42 @@ ], "authors": [ { - "name": "Islandora Foundation", - "email": "community@islandora.ca", - "role": "Owner" - }, - { - "name": "Daniel Lamb", - "email": "dlamb@islandora.ca", - "role": "Maintainer" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Shared code amongst Islandora Crayfish microservices", - "homepage": "https://github.com/Islandora/Crayfish-Commons", + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], "support": { - "issues": "https://github.com/Islandora/documentation/issues", - "source": "https://github.com/Islandora/Crayfish-Commons/tree/2.0.0" + "source": "https://github.com/php-fig/cache/tree/master" }, - "time": "2021-07-14T13:39:59+00:00" + "time": "2016-08-06T20:24:11+00:00" }, { - "name": "ml/iri", - "version": "1.1.4", - "target-dir": "ML/IRI", + "name": "psr/container", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/lanthaler/IRI.git", - "reference": "cbd44fa913e00ea624241b38cefaa99da8d71341" + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lanthaler/IRI/zipball/cbd44fa913e00ea624241b38cefaa99da8d71341", - "reference": "cbd44fa913e00ea624241b38cefaa99da8d71341", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "shasum": "" }, "require": { - "lib-pcre": ">=4.0", - "php": ">=5.3.0" + "php": ">=7.2.0" }, "type": "library", "autoload": { - "psr-0": { - "ML\\IRI": "" + "psr-4": { + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -885,53 +815,51 @@ ], "authors": [ { - "name": "Markus Lanthaler", - "email": "mail@markus-lanthaler.com", - "homepage": "http://www.markus-lanthaler.com", - "role": "Developer" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "IRI handling for PHP", - "homepage": "http://www.markus-lanthaler.com", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "URN", - "iri", - "uri", - "url" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], "support": { - "issues": "https://github.com/lanthaler/IRI/issues", - "source": "https://github.com/lanthaler/IRI/tree/master" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" }, - "time": "2014-01-21T13:43:39+00:00" + "time": "2021-03-05T17:36:06+00:00" }, { - "name": "ml/json-ld", - "version": "1.2.0", + "name": "psr/http-message", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/lanthaler/JsonLD.git", - "reference": "c74a1aed5979ed1cfb1be35a55a305fd30e30b93" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lanthaler/JsonLD/zipball/c74a1aed5979ed1cfb1be35a55a305fd30e30b93", - "reference": "c74a1aed5979ed1cfb1be35a55a305fd30e30b93", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "ext-json": "*", - "ml/iri": "^1.1.1", "php": ">=5.3.0" }, - "require-dev": { - "json-ld/tests": "1.0", - "phpunit/phpunit": "^4" - }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "ML\\JsonLD\\": "" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -940,74 +868,51 @@ ], "authors": [ { - "name": "Markus Lanthaler", - "email": "mail@markus-lanthaler.com", - "homepage": "http://www.markus-lanthaler.com", - "role": "Developer" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "JSON-LD Processor for PHP", - "homepage": "http://www.markus-lanthaler.com", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "JSON-LD", - "jsonld" - ], - "support": { - "issues": "https://github.com/lanthaler/JsonLD/issues", - "source": "https://github.com/lanthaler/JsonLD/tree/1.2.0" + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" }, - "time": "2020-06-16T17:45:06+00:00" + "time": "2016-08-06T14:39:51+00:00" }, { - "name": "monolog/monolog", - "version": "1.26.1", + "name": "psr/log", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5" + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, "autoload": { "psr-4": { - "Monolog\\": "src/Monolog" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1016,129 +921,121 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ "log", - "logging", + "psr", "psr-3" ], "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.26.1" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2021-05-28T08:32:12+00:00" + "time": "2021-05-03T11:20:27+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.10.2", + "name": "ralouphie/getallheaders", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" + "php": ">=5.6" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ - "src/DeepCopy/deep_copy.php" + "src/getallheaders.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" - }, - "funding": [ + "authors": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" } ], - "time": "2020-11-13T09:40:50+00:00" + "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": "namshi/jose", - "version": "7.2.3", + "name": "symfony/cache", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/namshi/jose.git", - "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff" + "url": "https://github.com/symfony/cache.git", + "reference": "27121284fe32a7cefc225268761ec7ce1741b9ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/namshi/jose/zipball/89a24d7eb3040e285dd5925fcad992378b82bcff", - "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff", + "url": "https://api.github.com/repos/symfony/cache/zipball/27121284fe32a7cefc225268761ec7ce1741b9ac", + "reference": "27121284fe32a7cefc225268761ec7ce1741b9ac", "shasum": "" }, "require": { - "ext-date": "*", - "ext-hash": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-spl": "*", - "php": ">=5.5", - "symfony/polyfill-php56": "^1.0" + "php": ">=7.1.3", + "psr/cache": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.2|^5.0" }, - "require-dev": { - "phpseclib/phpseclib": "^2.0", - "phpunit/phpunit": "^4.5|^5.0", - "satooshi/php-coveralls": "^1.0" + "conflict": { + "doctrine/dbal": "<2.7", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4|>=5.0", + "symfony/var-dumper": "<4.4" }, - "suggest": { - "ext-openssl": "Allows to use OpenSSL as crypto engine.", - "phpseclib/phpseclib": "Allows to use Phpseclib as crypto engine, use version ^2.0." + "provide": { + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0|2.0", + "symfony/cache-implementation": "1.0|2.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.7|^3.0", + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0|^2.0", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.1|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/var-dumper": "^4.4|^5.0" }, "type": "library", "autoload": { "psr-4": { - "Namshi\\JOSE\\": "src/Namshi/JOSE/" - } + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1146,223 +1043,314 @@ ], "authors": [ { - "name": "Alessandro Nadalin", - "email": "alessandro.nadalin@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Alessandro Cinelli (cirpo)", - "email": "alessandro.cinelli@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "JSON Object Signing and Encryption library for PHP.", + "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", + "homepage": "https://symfony.com", "keywords": [ - "JSON Web Signature", - "JSON Web Token", - "JWS", - "json", - "jwt", - "token" + "caching", + "psr6" ], "support": { - "issues": "https://github.com/namshi/jose/issues", - "source": "https://github.com/namshi/jose/tree/master" + "source": "https://github.com/symfony/cache/tree/v4.4.41" }, - "time": "2016-12-05T07:27:31+00:00" + "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-04-25T17:25:00+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.11.0", + "name": "symfony/cache-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94" + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/fe14cf3672a149364fb66dfe11bf6549af899f94", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "suggest": { + "symfony/cache-implementation": "" }, - "bin": [ - "bin/php-parse" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "Symfony\\Contracts\\Cache\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PHP parser written in PHP", + "description": "Generic abstractions related to caching", + "homepage": "https://symfony.com", "keywords": [ - "parser", - "php" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.11.0" + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.1" }, - "time": "2021-07-03T13:36:55+00:00" + "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-01-02T09:53:40+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.1", + "name": "symfony/config", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + "url": "https://github.com/symfony/config.git", + "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "url": "https://api.github.com/repos/symfony/config/zipball/9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7", + "reference": "9d031eb2d4292aed117b0f7fafd5c436dcf3dfd7", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" + "php": ">=7.1.3", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } + "conflict": { + "symfony/finder": "<3.4" + }, + "require-dev": { + "symfony/event-dispatcher": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/messenger": "^4.1|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/symfony/config/tree/v4.4.41" }, - "time": "2020-06-27T14:33:11+00:00" + "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-04-12T15:19:55+00:00" }, { - "name": "phar-io/version", - "version": "3.1.0", + "name": "symfony/debug", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "url": "https://github.com/symfony/debug.git", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/symfony/debug/zipball/6637e62480b60817b9a6984154a533e8e64c6bd5", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=7.1.3", + "psr/log": "^1|^2|^3" + }, + "conflict": { + "symfony/http-kernel": "<3.4" + }, + "require-dev": { + "symfony/http-kernel": "^3.4|^4.0|^5.0" }, "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library for handling version information and constraints", + "description": "Provides tools to ease debugging PHP code", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/symfony/debug/tree/v4.4.41" }, - "time": "2021-02-23T14:00:09+00:00" + "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-04-12T15:19:55+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "symfony/dependency-injection", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "74c7f55de0eced4d3c9654809b1871870386a577" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/74c7f55de0eced4d3c9654809b1871870386a577", + "reference": "74c7f55de0eced4d3c9654809b1871870386a577", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=7.1.3", + "psr/container": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } + "conflict": { + "symfony/config": "<4.3|>=5.0", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<4.4.26" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/config": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/yaml": "^4.4.26|^5.0" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" }, + "type": "library", "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1370,59 +1358,66 @@ ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], + "description": "Allows you to standardize and centralize the way objects are constructed in your application", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "source": "https://github.com/symfony/dependency-injection/tree/v4.4.41" }, - "time": "2020-06-27T09:03:43+00:00" + "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-04-12T15:19:55+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "name": "symfony/deprecation-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "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" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.x-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } + "files": [ + "function.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1430,52 +1425,63 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" }, - "time": "2020-09-03T19:13:55+00:00" + "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-01-02T09:53:40+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "name": "symfony/dotenv", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "url": "https://github.com/symfony/dotenv.git", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", + "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "php": ">=7.1.3" }, "require-dev": { - "ext-tokenizer": "*" + "symfony/process": "^3.4.2|^4.0|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } + "Symfony\\Component\\Dotenv\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1483,52 +1489,72 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "Registers environment variables from a .env file", + "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + "source": "https://github.com/symfony/dotenv/tree/v4.4.37" }, - "time": "2020-09-17T18:55:26+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.13.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" - }, - "dist": { + "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-01-02T09:41:36+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "529feb0e03133dbd5fd3707200147cc4903206da" + }, + "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/529feb0e03133dbd5fd3707200147cc4903206da", + "reference": "529feb0e03133dbd5fd3707200147cc4903206da", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" + "php": ">=7.1.3", + "psr/log": "^1|^2|^3", + "symfony/debug": "^4.4.5", + "symfony/var-dumper": "^4.4|^5.0" }, "require-dev": { - "phpspec/phpspec": "^6.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11.x-dev" - } - }, "autoload": { "psr-4": { - "Prophecy\\": "src/Prophecy" - } + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1536,60 +1562,83 @@ ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + "source": "https://github.com/symfony/error-handler/tree/v4.4.41" }, - "time": "2021-03-17T13:42:18+00:00" + "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-04-12T15:19:55+00:00" }, { - "name": "phpspec/prophecy-phpunit", - "version": "v2.0.1", + "name": "symfony/event-dispatcher", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy-phpunit.git", - "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/2d7a9df55f257d2cba9b1d0c0963a54960657177", - "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", "shasum": "" }, "require": { - "php": "^7.3 || ^8", - "phpspec/prophecy": "^1.3", - "phpunit/phpunit": "^9.1" + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1", + "symfony/polyfill-php80": "^1.16" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "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" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, + "type": "library", "autoload": { "psr-4": { - "Prophecy\\PhpUnit\\": "src" - } + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1597,474 +1646,560 @@ ], "authors": [ { - "name": "Christophe Coevoet", - "email": "stof@notk.org" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Integrating the Prophecy mocking library in PHPUnit test cases", - "homepage": "http://phpspec.net", - "keywords": [ - "phpunit", - "prophecy" - ], + "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": { - "issues": "https://github.com/phpspec/prophecy-phpunit/issues", - "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.0.1" + "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.37" }, - "time": "2020-07-09T08:33:42+00:00" + "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-01-02T09:41:36+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "9.2.6", + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.12", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "php": ">=7.1.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", "keywords": [ - "coverage", - "testing", - "xunit" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.12" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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-03-28T07:26:59+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "name": "symfony/filesystem", + "version": "v4.4.39", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "url": "https://github.com/symfony/filesystem.git", + "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/72a5b35fecaa670b13954e6eaf414acbe2a67b35", + "reference": "72a5b35fecaa670b13954e6eaf414acbe2a67b35", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/symfony/filesystem/tree/v4.4.39" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T05:57:25+00:00" + "time": "2022-02-25T10:38:15+00:00" }, { - "name": "phpunit/php-invoker", - "version": "3.1.1", + "name": "symfony/finder", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "url": "https://github.com/symfony/finder.git", + "reference": "40790bdf293b462798882ef6da72bb49a4a6633a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/symfony/finder/zipball/40790bdf293b462798882ef6da72bb49a4a6633a", + "reference": "40790bdf293b462798882ef6da72bb49a4a6633a", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/symfony/finder/tree/v4.4.41" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T05:58:55+00:00" + "time": "2022-04-14T15:36:10+00:00" }, { - "name": "phpunit/php-text-template", - "version": "2.0.4", + "name": "symfony/flex", + "version": "v1.18.7", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "url": "https://github.com/symfony/flex.git", + "reference": "e74319d17ed4edc5f27b9d24757e172930a7ebc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/symfony/flex/zipball/e74319d17ed4edc5f27b9d24757e172930a7ebc4", + "reference": "e74319d17ed4edc5f27b9d24757e172930a7ebc4", "shasum": "" }, "require": { - "php": ">=7.3" + "composer-plugin-api": "^1.0|^2.0", + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "composer/composer": "^1.0.2|^2.0", + "symfony/dotenv": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/phpunit-bridge": "^4.4.12|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, - "type": "library", + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } + "class": "Symfony\\Flex\\Flex" }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Symfony\\Flex\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], + "description": "Composer plugin for Symfony", "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "issues": "https://github.com/symfony/flex/issues", + "source": "https://github.com/symfony/flex/tree/v1.18.7" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T05:33:50+00:00" + "time": "2022-05-02T10:18:23+00:00" }, { - "name": "phpunit/php-timer", - "version": "5.0.3", + "name": "symfony/framework-bundle", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5", + "reference": "1ebfe9ee486d19a081fc74bb617df76f7ee1c7d5", "shasum": "" }, "require": { - "php": ">=7.3" + "ext-xml": "*", + "php": ">=7.1.3", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4.11|~5.0.11|^5.1.3", + "symfony/dependency-injection": "^4.4.38|^5.0.1", + "symfony/error-handler": "^4.4.1|^5.0.1", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/routing": "^4.4.12|^5.1.4" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "conflict": { + "doctrine/persistence": "<1.3", + "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.3.0|1.3.*", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/asset": "<3.4", + "symfony/browser-kit": "<4.3", + "symfony/console": "<4.4.21", + "symfony/dom-crawler": "<4.3", + "symfony/dotenv": "<4.3.6", + "symfony/form": "<4.3.5", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<4.4", + "symfony/messenger": "<4.4", + "symfony/mime": "<4.4", + "symfony/property-info": "<3.4", + "symfony/security-bundle": "<4.4", + "symfony/serializer": "<4.4", + "symfony/stopwatch": "<3.4", + "symfony/translation": "<4.4", + "symfony/twig-bridge": "<4.1.1", + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<4.4", + "symfony/web-profiler-bundle": "<4.4", + "symfony/workflow": "<4.3.6" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } + "require-dev": { + "doctrine/annotations": "^1.10.4", + "doctrine/cache": "^1.0|^2.0", + "doctrine/persistence": "^1.3|^2|^3", + "paragonie/sodium_compat": "^1.8", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.3|^5.0", + "symfony/console": "^4.4.21|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7", + "symfony/dotenv": "^4.3.6|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^4.3.5|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/security-core": "^3.4|^4.4|^5.2", + "symfony/security-csrf": "^3.4|^4.0|^5.0", + "symfony/security-http": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^4.3.6|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" }, + "suggest": { + "ext-apcu": "For best performance of the system caches", + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], + "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/symfony/framework-bundle/tree/v4.4.41" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:16:10+00:00" + "time": "2022-04-26T13:36:00+00:00" }, { - "name": "phpunit/phpunit", - "version": "9.5.6", + "name": "symfony/http-client-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb" + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1a4f708e4e87f335d1b1be6148060739152f0bd5", + "reference": "1a4f708e4e87f335d1b1be6148060739152f0bd5", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.1", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" + "php": ">=7.2.5" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "symfony/http-client-implementation": "" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "classmap": [ - "src/" - ], - "files": [ - "src/Framework/Assert/Functions.php" - ] + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", "keywords": [ - "phpunit", - "testing", - "xunit" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.6" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.1" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://symfony.com/sponsor", "type": "custom" }, { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/fabpot", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2021-06-23T05:14:38+00:00" + "time": "2022-03-13T20:07:29+00:00" }, { - "name": "pimple/pimple", - "version": "v3.4.0", + "name": "symfony/http-foundation", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "86406047271859ffc13424a048541f4531f53601" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "27441220aebeb096b4eb8267acaaa7feb5e4266c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/86406047271859ffc13424a048541f4531f53601", - "reference": "86406047271859ffc13424a048541f4531f53601", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/27441220aebeb096b4eb8267acaaa7feb5e4266c", + "reference": "27441220aebeb096b4eb8267acaaa7feb5e4266c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" + "php": ">=7.1.3", + "symfony/mime": "^4.3|^5.0", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/phpunit-bridge": "^5.0" + "predis/predis": "~1.0", + "symfony/expression-language": "^3.4|^4.0|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Pimple": "src/" - } + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2074,41 +2209,101 @@ { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", - "keywords": [ - "container", - "dependency injection" - ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.4.0" + "source": "https://github.com/symfony/http-foundation/tree/v4.4.41" }, - "time": "2021-03-06T08:28:00+00:00" + "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-04-21T07:22:34+00:00" }, { - "name": "psr/container", - "version": "1.1.1", + "name": "symfony/http-kernel", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "7f8ce5bffc3939c63b7da32de5a546c98eb67698" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7f8ce5bffc3939c63b7da32de5a546c98eb67698", + "reference": "7f8ce5bffc3939c63b7da32de5a546c98eb67698", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.1.3", + "psr/log": "^1|^2", + "symfony/error-handler": "^4.4", + "symfony/event-dispatcher": "^4.4", + "symfony/http-client-contracts": "^1.1|^2", + "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "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|2.0" + }, + "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" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" }, "type": "library", "autoload": { "psr-4": { - "Psr\\Container\\": "src/" - } + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2116,52 +2311,62 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.41" }, - "time": "2021-03-05T17:36:06+00:00" + "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-04-27T17:13:11+00:00" }, { - "name": "psr/http-message", - "version": "1.0.1", + "name": "symfony/inflector", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "url": "https://github.com/symfony/inflector.git", + "reference": "e5e4c618a40e562d51757b54305bd113df59c29f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/symfony/inflector/zipball/e5e4c618a40e562d51757b54305bd113df59c29f", + "reference": "e5e4c618a40e562d51757b54305bd113df59c29f", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" - } + "Symfony\\Component\\Inflector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2169,52 +2374,80 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "Converts words between their singular and plural forms (English only)", + "homepage": "https://symfony.com", "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" + "inflection", + "pluralize", + "singularize", + "string", + "symfony", + "words" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/symfony/inflector/tree/v4.4.37" }, - "time": "2016-08-06T14:39:51+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "abandoned": "EnglishInflector from the String component", + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "psr/log", - "version": "1.1.4", + "name": "symfony/mime", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "url": "https://github.com/symfony/mime.git", + "reference": "5b05a62a714bb7e8ba1ce7412f7442debe67c291" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/symfony/mime/zipball/5b05a62a714bb7e8ba1ce7412f7442debe67c291", + "reference": "5b05a62a714bb7e8ba1ce7412f7442debe67c291", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.1.3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } + "conflict": { + "egulias/email-validator": "~3.0.0", + "symfony/mailer": "<4.4" }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "symfony/dependency-injection": "^3.4|^4.1|^5.0" + }, + "type": "library", "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2222,47 +2455,82 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", "keywords": [ - "log", - "psr", - "psr-3" + "mime", + "mime-type" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/symfony/mime/tree/v4.4.41" }, - "time": "2021-05-03T11:20:27+00:00" + "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-04-12T15:19:55+00:00" }, { - "name": "ralouphie/getallheaders", - "version": "3.0.3", + "name": "symfony/monolog-bridge", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "152dcde5092b6fe034369f4a2dea05de38db9b79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/152dcde5092b6fe034369f4a2dea05de38db9b79", + "reference": "152dcde5092b6fe034369f4a2dea05de38db9b79", "shasum": "" }, "require": { - "php": ">=5.6" + "monolog/monolog": "^1.25.1", + "php": ">=7.1.3", + "symfony/http-kernel": "^4.3", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/console": "<3.4", + "symfony/http-foundation": "<3.4" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/security-core": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^3.4|^4.0|^5.0" }, - "type": "library", + "suggest": { + "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", + "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", + "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." + }, + "type": "symfony-bridge", "autoload": { - "files": [ - "src/getallheaders.php" + "psr-4": { + "Symfony\\Bridge\\Monolog\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2271,784 +2539,1738 @@ ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A polyfill for getallheaders.", + "description": "Provides integration for Monolog with various Symfony components", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "source": "https://github.com/symfony/monolog-bridge/tree/v4.4.37" }, - "time": "2019-03-08T08:55:37+00:00" + "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-01-02T09:41:36+00:00" }, { - "name": "sebastian/cli-parser", - "version": "1.0.1", + "name": "symfony/monolog-bundle", + "version": "v3.7.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "fde12fc628162787a4e53877abadc30047fd868b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/fde12fc628162787a4e53877abadc30047fd868b", + "reference": "fde12fc628162787a4e53877abadc30047fd868b", "shasum": "" }, "require": { - "php": ">=7.3" + "monolog/monolog": "~1.22 || ~2.0", + "php": ">=7.1.3", + "symfony/config": "~4.4 || ^5.0 || ^6.0", + "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", + "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "symfony/console": "~4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.2 || ^6.0", + "symfony/yaml": "~4.4 || ^5.0 || ^6.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MonologBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony MonologBundle", + "homepage": "https://symfony.com", + "keywords": [ + "log", + "logging" + ], + "support": { + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-05T10:34:29+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-09-14T14:02:44+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, "classmap": [ - "src/" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T06:08:49+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { - "name": "sebastian/code-unit", - "version": "1.0.8", + "name": "symfony/polyfill-mbstring", + "version": "v1.25.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-30T18:21:41+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-27T09:17:38+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", + "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-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.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-06-05T21:20:04+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-03-04T08:16:47+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "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 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-09-13T13:58:11+00:00" + }, + { + "name": "symfony/property-access", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "363945473bc6ec784e75037b075cb98f85cdae36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/363945473bc6ec784e75037b075cb98f85cdae36", + "reference": "363945473bc6ec784e75037b075cb98f85cdae36", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/inflector": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/cache": "^3.4|^4.0|^5.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" + ], + "support": { + "source": "https://github.com/symfony/property-access/tree/v4.4.41" + }, + "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-04-12T15:19:55+00:00" + }, + { + "name": "symfony/routing", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/c25e38d403c00d5ddcfc514f016f1b534abdf052", + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "psr/log": "^1|^2|^3", + "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" + }, + "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", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "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": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v4.4.41" + }, + "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-04-12T15:19:55+00:00" + }, + { + "name": "symfony/security-bundle", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-bundle.git", + "reference": "6549321a5abecccb311a697b6cb508a3c325ed18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6549321a5abecccb311a697b6cb508a3c325ed18", + "reference": "6549321a5abecccb311a697b6cb508a3c325ed18", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": ">=7.1.3", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^4.4", + "symfony/security-csrf": "^4.2|^5.0", + "symfony/security-guard": "^4.2|^5.0", + "symfony/security-http": "^4.4.5" + }, + "conflict": { + "symfony/browser-kit": "<4.2", + "symfony/console": "<3.4", + "symfony/framework-bundle": "<4.4", + "symfony/ldap": "<4.4", + "symfony/twig-bundle": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.2|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^3.4|^4.0|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/translation": "^3.4|^4.0|^5.0", + "symfony/twig-bridge": "^3.4|^4.0|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SecurityBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/symfony/security-bundle/tree/v4.4.41" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:08:54+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "name": "symfony/security-core", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "url": "https://github.com/symfony/security-core.git", + "reference": "254b083d923592383f42c45611d235b04e27749d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/symfony/security-core/zipball/254b083d923592383f42c45611d235b04e27749d", + "reference": "254b083d923592383f42c45611d235b04e27749d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/ldap": "<4.4", + "symfony/security-guard": "<4.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "psr/container": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/ldap": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^3.4.31|^4.3.4|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } + "suggest": { + "psr/container-implementation": "To instantiate the Security class", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/ldap": "For using LDAP integration", + "symfony/validator": "For using the user password constraint" }, + "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Security\\Core\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "description": "Symfony Security Component - Core Library", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "source": "https://github.com/symfony/security-core/tree/v4.4.41" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T05:30:19+00:00" + "time": "2022-04-14T15:50:15+00:00" }, { - "name": "sebastian/comparator", - "version": "4.0.6", + "name": "symfony/security-csrf", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "url": "https://github.com/symfony/security-csrf.git", + "reference": "45c956ef58135091f53732646a0acd28034f02c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/45c956ef58135091f53732646a0acd28034f02c0", + "reference": "45c956ef58135091f53732646a0acd28034f02c0", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^3.4|^4.0|^5.0" + }, + "conflict": { + "symfony/http-foundation": "<3.4" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "symfony/http-foundation": "^3.4|^4.0|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } + "suggest": { + "symfony/http-foundation": "For using the class SessionTokenStorage." }, + "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Security\\Csrf\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], + "description": "Symfony Security Component - CSRF Library", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/symfony/security-csrf/tree/v4.4.37" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T15:49:45+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "sebastian/complexity", - "version": "2.0.2", + "name": "symfony/security-guard", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "url": "https://github.com/symfony/security-guard.git", + "reference": "cf8922b164e1659726c8852663eaaa593eef668c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/cf8922b164e1659726c8852663eaaa593eef668c", + "reference": "cf8922b164e1659726c8852663eaaa593eef668c", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" + "php": ">=7.1.3", + "symfony/security-core": "^3.4.22|^4.2.3|^5.0", + "symfony/security-http": "^4.4.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "psr/log": "^1|^2|^3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Security\\Guard\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", + "description": "Symfony Security Component - Guard", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/symfony/security-guard/tree/v4.4.37" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T15:52:27+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { - "name": "sebastian/diff", - "version": "4.0.4", + "name": "symfony/security-http", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "url": "https://github.com/symfony/security-http.git", + "reference": "36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/symfony/security-http/zipball/36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e", + "reference": "36736d8d5fcb1ff0f74e569f6a4bc64e8c9c267e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1.3", + "symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/property-access": "^3.4|^4.0|^5.0", + "symfony/security-core": "^4.4.8" + }, + "conflict": { + "symfony/event-dispatcher": ">=5", + "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "psr/log": "^1|^2|^3", + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } + "suggest": { + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" }, + "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Security\\Http\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], + "description": "Symfony Security Component - HTTP Integration", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/symfony/security-http/tree/v4.4.41" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:10:38+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { - "name": "sebastian/environment", - "version": "5.1.3", + "name": "symfony/service-contracts", + "version": "v2.5.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { - "ext-posix": "*" + "symfony/service-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", "keywords": [ - "Xdebug", - "environment", - "hhvm" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T05:52:38+00:00" + "time": "2022-03-13T20:07:29+00:00" }, { - "name": "sebastian/exporter", - "version": "4.0.3", + "name": "symfony/var-dumper", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "58eb36075c04aaf92a7a9f38ee9a8b97e24eb481" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/58eb36075c04aaf92a7a9f38ee9a8b97e24eb481", + "reference": "58eb36075c04aaf92a7a9f38ee9a8b97e24eb481", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "ext-iconv": "*", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", "autoload": { - "classmap": [ - "src/" + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", "keywords": [ - "export", - "exporter" + "debug", + "dump" ], "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/symfony/var-dumper/tree/v4.4.41" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T05:24:23+00:00" + "time": "2022-04-25T21:15:06+00:00" }, { - "name": "sebastian/global-state", - "version": "5.0.3", + "name": "symfony/var-exporter", + "version": "v4.4.41", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "url": "https://github.com/symfony/var-exporter.git", + "reference": "bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7", + "reference": "bc5f57ae61b5e492b3f6f21be6e503dcc7b898b7", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "symfony/var-dumper": "^4.4.9|^5.0.9" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", "keywords": [ - "global state" + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" ], "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/symfony/var-exporter/tree/v4.4.41" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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-06-11T13:31:12+00:00" + "time": "2022-04-25T17:40:48+00:00" }, { - "name": "sebastian/lines-of-code", - "version": "1.0.3", + "name": "symfony/yaml", + "version": "v4.4.37", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "url": "https://github.com/symfony/yaml.git", + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d7f637cc0f0cc14beb0984f2bb50da560b271311", + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "symfony/console": "^3.4|^4.0|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } + "suggest": { + "symfony/console": "For validating YAML files using the lint command" }, + "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/symfony/yaml/tree/v4.4.37" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-11-28T06:42:11+00:00" - }, + "time": "2022-01-24T20:11:01+00:00" + } + ], + "packages-dev": [ { - "name": "sebastian/object-enumerator", - "version": "4.0.4", + "name": "doctrine/instantiator", + "version": "1.4.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "doctrine/coding-standard": "^9", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" } ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { - "name": "sebastian/object-reflector", - "version": "2.0.4", + "name": "myclabs/deep-copy", + "version": "1.11.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { - "php": ">=7.3" + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { - "name": "sebastian/recursion-context", - "version": "4.0.4", + "name": "nikic/php-parser", + "version": "v4.13.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", "shasum": "" }, "require": { - "php": ">=7.3" + "ext-tokenizer": "*", + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "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.0-dev" + "dev-master": "4.9-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3056,56 +4278,45 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Nikita Popov" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2021-11-30T19:35:32+00:00" }, { - "name": "sebastian/resource-operations", - "version": "3.0.3", + "name": "phar-io/manifest", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -3118,51 +4329,47 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { - "name": "sebastian/type", - "version": "2.3.4", + "name": "phar-io/version", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "php": "^7.2 || ^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, "autoload": { "classmap": [ "src/" @@ -3173,142 +4380,116 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", - "role": "lead" + "role": "Developer" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "Library for handling version information and constraints", "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { - "name": "sebastian/version", - "version": "3.0.2", + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=7.3" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } }, - "funding": [ + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "time": "2020-09-28T06:39:44+00:00" + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "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": "silex/silex", - "version": "v2.3.0", + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", "source": { "type": "git", - "url": "https://github.com/silexphp/Silex.git", - "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Silex/zipball/6bc31c1b8c4ef614a7115320fd2d3b958032f131", - "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { - "php": ">=7.1.3", - "pimple/pimple": "^3.0", - "symfony/event-dispatcher": "^4.0", - "symfony/http-foundation": "^4.0", - "symfony/http-kernel": "^4.0", - "symfony/routing": "^4.0" - }, - "replace": { - "silex/api": "self.version", - "silex/providers": "self.version" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "doctrine/dbal": "^2.2", - "monolog/monolog": "^1.4.1", - "swiftmailer/swiftmailer": "^5", - "symfony/asset": "^4.0", - "symfony/browser-kit": "^4.0", - "symfony/config": "^4.0", - "symfony/css-selector": "^4.0", - "symfony/debug": "^4.0", - "symfony/doctrine-bridge": "^4.0", - "symfony/dom-crawler": "^4.0", - "symfony/expression-language": "^4.0", - "symfony/finder": "^4.0", - "symfony/form": "^4.0", - "symfony/intl": "^4.0", - "symfony/monolog-bridge": "^4.0", - "symfony/options-resolver": "^4.0", - "symfony/phpunit-bridge": "^3.2", - "symfony/process": "^4.0", - "symfony/security": "^4.0", - "symfony/serializer": "^4.0", - "symfony/translation": "^4.0", - "symfony/twig-bridge": "^4.0", - "symfony/validator": "^4.0", - "symfony/var-dumper": "^4.0", - "symfony/web-link": "^4.0", - "twig/twig": "^2.0" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "Silex\\": "src/Silex" + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3317,70 +4498,53 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" }, { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], - "description": "The PHP micro-framework based on the Symfony Components", - "homepage": "http://silex.sensiolabs.org", - "keywords": [ - "microframework" - ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { - "issues": "https://github.com/silexphp/Silex/issues", - "source": "https://github.com/silexphp/Silex/tree/v2.3.0" + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "abandoned": "symfony/flex", - "time": "2018-04-20T05:17:01+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { - "name": "symfony/contracts", - "version": "v1.1.0", + "name": "phpdocumentor/type-resolver", + "version": "1.6.1", "source": { "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "d3636025e8253c6144358ec0a62773cae588395b" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "77a32518733312af16a44300404e945338981de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/d3636025e8253c6144358ec0a62773cae588395b", - "reference": "d3636025e8253c6144358ec0a62773cae588395b", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "psr/cache": "^1.0", - "psr/container": "^1.0", - "symfony/polyfill-intl-idn": "^1.10" - }, - "suggest": { - "psr/cache": "When using the Cache contracts", - "psr/container": "When using the Service contracts", - "symfony/cache-contracts-implementation": "", - "symfony/event-dispatcher-implementation": "", - "symfony/http-client-contracts-implementation": "", - "symfony/service-contracts-implementation": "", - "symfony/translation-contracts-implementation": "" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\": "" - }, - "exclude-from-classmap": [ - "**/Tests/" - ] + "phpDocumentor\\Reflection\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3388,62 +4552,52 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "A set of abstractions extracted out of the Symfony components", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { - "source": "https://github.com/symfony/contracts/tree/master" + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" }, - "time": "2019-04-27T14:29:50+00:00" + "time": "2022-03-15T21:29:03+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.25", + "name": "phpspec/prophecy", + "version": "v1.15.0", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f" + "url": "https://github.com/phpspec/prophecy.git", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/a8d2d5c94438548bff9f998ca874e202bb29d07f", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/http-kernel": "<3.4" + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Prophecy\\": "src/Prophecy" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3451,66 +4605,60 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" } ], - "description": "Provides tools to ease debugging PHP code", - "homepage": "https://symfony.com", + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.25" + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2021-12-08T12:19:24+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "name": "phpspec/prophecy-phpunit", + "version": "v2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "url": "https://github.com/phpspec/prophecy-phpunit.git", + "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/2d7a9df55f257d2cba9b1d0c0963a54960657177", + "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.3 || ^8", + "phpspec/prophecy": "^1.3", + "phpunit/phpunit": "^9.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-master": "2.0-dev" } }, "autoload": { - "files": [ - "function.php" - ] + "psr-4": { + "Prophecy\\PhpUnit\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3518,1656 +4666,1330 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Christophe Coevoet", + "email": "stof@notk.org" } ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", + "description": "Integrating the Prophecy mocking library in PHPUnit test cases", + "homepage": "http://phpspec.net", + "keywords": [ + "phpunit", + "prophecy" + ], "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "issues": "https://github.com/phpspec/prophecy-phpunit/issues", + "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.0.1" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2020-07-09T08:33:42+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v4.4.25", + "name": "phpunit/php-code-coverage", + "version": "9.2.15", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/047773e7016e4fd45102cedf4bd2558ae0d0c32f", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.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" + "phpunit/phpunit": "^9.3" }, "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.25" + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2022-03-07T09:28:20+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", + "name": "phpunit/php-file-iterator", + "version": "3.0.6", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.3" }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-master": "3.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "filesystem", + "iterator" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.9" + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2020-07-06T13:19:58+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { - "name": "symfony/http-foundation", - "version": "v4.4.26", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8759ed5c27c2a8a47cb60f367f4be6727f08d58b", - "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.15" + "php": ">=7.3" }, "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Defines an object-oriented layer for the HTTP specification", - "homepage": "https://symfony.com", + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.26" + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-06-26T21:56:04+00:00" + "time": "2020-09-28T05:58:55+00:00" }, { - "name": "symfony/http-kernel", - "version": "v4.2.12", + "name": "phpunit/php-text-template", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "8a7c5ef599466af6e972c705507f815df9c490ae" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8a7c5ef599466af6e972c705507f815df9c490ae", - "reference": "8a7c5ef599466af6e972c705507f815df9c490ae", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0", - "symfony/contracts": "^1.0.2", - "symfony/debug": "~3.4|~4.0", - "symfony/event-dispatcher": "~4.1", - "symfony/http-foundation": "^4.1.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php56": "~1.8" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<4.2", - "symfony/translation": "<4.2", - "symfony/var-dumper": "<4.1.1", - "twig/twig": "<1.34|<2.4,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" + "php": ">=7.3" }, "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "~3.4|~4.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dependency-injection": "^4.2", - "symfony/dom-crawler": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0", - "symfony/templating": "~3.4|~4.0", - "symfony/translation": "~4.2", - "symfony/var-dumper": "^4.1.1" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/var-dumper": "" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.2.12" + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, - "time": "2019-11-13T08:51:34+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" }, { - "name": "symfony/inflector", - "version": "v5.3.0", + "name": "phpunit/php-timer", + "version": "5.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "ce80a8295f4b08c0f4a850dd3284f95808744dba" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/ce80a8295f4b08c0f4a850dd3284f95808744dba", - "reference": "ce80a8295f4b08c0f4a850dd3284f95808744dba", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/string": "^5.2.8" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Inflector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Converts words between their singular and plural forms (English only)", - "homepage": "https://symfony.com", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "inflection", - "pluralize", - "singularize", - "string", - "symfony", - "words" + "timer" ], "support": { - "source": "https://github.com/symfony/inflector/tree/v5.3.0" + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "abandoned": "use `EnglishInflector` from the String component instead", - "time": "2021-05-26T17:33:56+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { - "name": "symfony/mime", - "version": "v5.3.2", + "name": "phpunit/phpunit", + "version": "9.5.20", "source": { "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/47dd7912152b82d0d4c8d9040dbc93d6232d472a", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", + "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.0", + "sebastian/version": "^3.0.2" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "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" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" }, + "bin": [ + "phpunit" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "mime", - "mime-type" + "phpunit", + "testing", + "xunit" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.2" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-06-09T10:58:01+00:00" + "time": "2022-04-01T12:37:26+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "name": "sebastian/cli-parser", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, - "suggest": { - "ext-ctype": "For best performance" + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "1.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2020-09-28T06:08:49+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.0", + "name": "sebastian/code-unit", + "version": "1.0.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab" + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "1.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0" + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2020-10-26T13:08:54+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "php": ">=7.3" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2020-09-28T05:30:19+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "name": "sebastian/comparator", + "version": "4.0.6", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "4.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], "classmap": [ - "Resources/stubs" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "comparator", + "compare", + "equality" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2020-10-26T15:49:45+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "name": "sebastian/complexity", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { - "php": ">=7.1" + "nikic/php-parser": "^4.7", + "php": ">=7.3" }, - "suggest": { - "ext-mbstring": "For best performance" + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2020-10-26T15:52:27+00:00" }, { - "name": "symfony/polyfill-php56", - "version": "v1.20.0", + "name": "sebastian/diff", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, - "type": "metapackage", + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "4.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "diff", + "udiff", + "unidiff", + "unified diff" ], "support": { - "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.0" + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2020-10-26T13:10:38+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.20.0", + "name": "sebastian/environment", + "version": "5.1.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, - "type": "metapackage", + "suggest": { + "ext-posix": "*" + }, + "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "5.1-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "Xdebug", + "environment", + "hhvm" ], "support": { - "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0" + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.23.0", + "name": "sebastian/exporter", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "4.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "export", + "exporter" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.23.0", + "name": "sebastian/global-state", + "version": "5.0.5", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "5.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], "classmap": [ - "Resources/stubs" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "global state" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { - "name": "symfony/property-access", - "version": "v4.4.25", + "name": "sebastian/lines-of-code", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "3af7c21b4128eadbace0800b51054a81bff896c6" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/3af7c21b4128eadbace0800b51054a81bff896c6", - "reference": "3af7c21b4128eadbace0800b51054a81bff896c6", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0" + "nikic/php-parser": "^4.6", + "php": ">=7.3" }, "require-dev": { - "symfony/cache": "^3.4|^4.0|^5.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." + "phpunit/phpunit": "^9.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", - "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property path", - "reflection" - ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { - "source": "https://github.com/symfony/property-access/tree/v4.4.25" + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2020-11-28T06:42:11+00:00" }, { - "name": "symfony/routing", - "version": "v4.4.25", + "name": "sebastian/object-enumerator", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3a3c2f197ad0846ac6413225fc78868ba1c61434", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": ">=7.1.3" - }, - "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "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" - }, - "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", - "symfony/yaml": "For using the YAML loader" + "phpunit/phpunit": "^9.3" }, "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Maps an HTTP request to a set of configuration variables", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.25" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { - "name": "symfony/security", - "version": "v3.4.49", + "name": "sebastian/object-reflector", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/security.git", - "reference": "ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security/zipball/ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3", - "reference": "ac1af40e3e0a183f80f0ff8c3d22b18bfb74dbb3", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~3.4.40|^4.4.7", - "symfony/http-kernel": "~3.3|~4.0", - "symfony/polyfill-php56": "~1.0", - "symfony/polyfill-php70": "~1.0", - "symfony/property-access": "~2.8|~3.0|~4.0" - }, - "replace": { - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version" + "php": ">=7.3" }, "require-dev": { - "psr/container": "^1.0", - "psr/log": "~1.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/ldap": "~3.1|~4.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "~2.8|~3.0|~4.0", - "symfony/validator": "^3.2.5|~4.0" - }, - "suggest": { - "psr/container-implementation": "To instantiate the Security class", - "symfony/expression-language": "For using the expression voter", - "symfony/form": "", - "symfony/ldap": "For using the LDAP user and authentication providers", - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/validator": "For using the user password constraint" + "phpunit/phpunit": "^9.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\": "" - }, - "exclude-from-classmap": [ - "/Core/Tests/", - "/Csrf/Tests/", - "/Guard/Tests/", - "/Http/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Symfony Security Component", - "homepage": "https://symfony.com", + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { - "source": "https://github.com/symfony/security/tree/v3.4.49" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-19T12:03:21+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { - "name": "symfony/string", - "version": "v5.3.3", + "name": "sebastian/phpcpd", + "version": "6.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1" + "url": "https://github.com/sebastianbergmann/phpcpd.git", + "reference": "f3683aa0db2e8e09287c2bb33a595b2873ea9176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/f3683aa0db2e8e09287c2bb33a595b2873ea9176", + "reference": "f3683aa0db2e8e09287c2bb33a595b2873ea9176", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "ext-dom": "*", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0", + "phpunit/php-timer": "^5.0", + "sebastian/cli-parser": "^1.0", + "sebastian/version": "^3.0" }, + "bin": [ + "phpcpd" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.php" - ], - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], + "description": "Copy/Paste Detector (CPD) for PHP code.", + "homepage": "https://github.com/sebastianbergmann/phpcpd", "support": { - "source": "https://github.com/symfony/string/tree/v5.3.3" + "issues": "https://github.com/sebastianbergmann/phpcpd/issues", + "source": "https://github.com/sebastianbergmann/phpcpd/tree/6.0.3" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-06-27T11:44:38+00:00" + "time": "2020-12-07T05:39:23+00:00" }, { - "name": "symfony/yaml", - "version": "v4.4.26", + "name": "sebastian/recursion-context", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8", - "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" + "php": ">=7.3" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "phpunit/phpunit": "^9.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.26" + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-06-23T19:06:53+00:00" + "time": "2020-10-26T13:17:30+00:00" }, { - "name": "theseer/tokenizer", - "version": "1.2.0", + "name": "sebastian/resource-operations", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "75a63c33a8577608444246075ea0af0d052e452a" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", - "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -5179,113 +6001,101 @@ ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/master" + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" }, "funding": [ { - "url": "https://github.com/theseer", + "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-07-12T23:59:07+00:00" + "time": "2020-09-28T06:45:17+00:00" }, - { - "name": "webmozart/assert", - "version": "1.10.0", + { + "name": "sebastian/type", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5.13" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.10-dev" + "dev-master": "3.0-dev" } }, "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "packages-dev": [ + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-15T09:54:48+00:00" + }, { - "name": "sebastian/phpcpd", - "version": "6.0.3", + "name": "sebastian/version", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpcpd.git", - "reference": "f3683aa0db2e8e09287c2bb33a595b2873ea9176" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/f3683aa0db2e8e09287c2bb33a595b2873ea9176", - "reference": "f3683aa0db2e8e09287c2bb33a595b2873ea9176", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "ext-dom": "*", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0", - "phpunit/php-timer": "^5.0", - "sebastian/cli-parser": "^1.0", - "sebastian/version": "^3.0" + "php": ">=7.3" }, - "bin": [ - "phpcpd" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "6.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5304,11 +6114,11 @@ "role": "lead" } ], - "description": "Copy/Paste Detector (CPD) for PHP code.", - "homepage": "https://github.com/sebastianbergmann/phpcpd", + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", "support": { - "issues": "https://github.com/sebastianbergmann/phpcpd/issues", - "source": "https://github.com/sebastianbergmann/phpcpd/tree/6.0.3" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, "funding": [ { @@ -5316,20 +6126,20 @@ "type": "github" } ], - "time": "2020-12-07T05:39:23+00:00" + "time": "2020-09-28T06:39:44+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "version": "3.6.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", "shasum": "" }, "require": { @@ -5372,29 +6182,32 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-04-09T00:54:41+00:00" + "time": "2021-12-12T21:44:58+00:00" }, { "name": "symfony/browser-kit", - "version": "v3.4.47", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c" + "reference": "6e81008cac62369871cb6b8de64576ed138e3998" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c", - "reference": "9590bd3d3f9fa2f28d34b713ed4765a8cc8ad15c", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/6e81008cac62369871cb6b8de64576ed138e3998", + "reference": "6e81008cac62369871cb6b8de64576ed138e3998", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/dom-crawler": "~2.8|~3.0|~4.0" + "php": ">=7.1.3", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0" + "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": "" @@ -5422,10 +6235,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony BrowserKit Component", + "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/v3.4.47" + "source": "https://github.com/symfony/browser-kit/tree/v4.4.37" }, "funding": [ { @@ -5441,24 +6254,25 @@ "type": "tidelift" } ], - "time": "2020-10-24T10:57:07+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/css-selector", - "version": "v3.4.47", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "da3d9da2ce0026771f5fe64cb332158f1bd2bc33" + "reference": "0628e6c6d7c92f1a7bae543959bdc17347be2436" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/da3d9da2ce0026771f5fe64cb332158f1bd2bc33", - "reference": "da3d9da2ce0026771f5fe64cb332158f1bd2bc33", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/0628e6c6d7c92f1a7bae543959bdc17347be2436", + "reference": "0628e6c6d7c92f1a7bae543959bdc17347be2436", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": ">=7.1.3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -5487,10 +6301,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony CssSelector Component", + "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v3.4.47" + "source": "https://github.com/symfony/css-selector/tree/v4.4.37" }, "funding": [ { @@ -5506,26 +6320,27 @@ "type": "tidelift" } ], - "time": "2020-10-24T10:57:07+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.25", + "version": "v4.4.39", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef" + "reference": "4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/41d15bb6d6b95d2be763c514bb2494215d9c5eef", - "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3", + "reference": "4e9215a8b533802ba84a3cc5bd3c43103e7a6dc3", "shasum": "" }, "require": { "php": ">=7.1.3", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" }, "conflict": { "masterminds/html5": "<2.6" @@ -5563,7 +6378,89 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.25" + "source": "https://github.com/symfony/dom-crawler/tree/v4.4.39" + }, + "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-02-25T10:38:15+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v4.4.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "66d1857e9565b70855d79e2639672b33baa9cbc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/66d1857e9565b70855d79e2639672b33baa9cbc8", + "reference": "66d1857e9565b70855d79e2639672b33baa9cbc8", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|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" + }, + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", + "extra": { + "thanks": { + "name": "phpunit/phpunit", + "url": "https://github.com/sebastianbergmann/phpunit" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides utilities for PHPUnit, especially user deprecation notices management", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.41" }, "funding": [ { @@ -5579,7 +6476,115 @@ "type": "tidelift" } ], - "time": "2021-05-26T11:20:16+00:00" + "time": "2022-04-12T15:19:55+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" } ], "aliases": [], @@ -5588,8 +6593,10 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.3 || ^7.4" + "php": "^7.3 || ^7.4", + "ext-ctype": "*", + "ext-iconv": "*" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } diff --git a/Recast/config/bootstrap.php b/Recast/config/bootstrap.php new file mode 100644 index 00000000..55560fb8 --- /dev/null +++ b/Recast/config/bootstrap.php @@ -0,0 +1,23 @@ +=1.2) +if (is_array($env = @include dirname(__DIR__).'/.env.local.php') && (!isset($env['APP_ENV']) || ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env['APP_ENV']) === $env['APP_ENV'])) { + (new Dotenv(false))->populate($env); +} else { + // load all the .env files + (new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env'); +} + +$_SERVER += $_ENV; +$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; +$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; +$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; diff --git a/Recast/config/bundles.php b/Recast/config/bundles.php new file mode 100644 index 00000000..17f89aa1 --- /dev/null +++ b/Recast/config/bundles.php @@ -0,0 +1,8 @@ + ['all' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + Islandora\Crayfish\Commons\CrayfishCommonsBundle::class => ['all' => true], +]; diff --git a/Recast/config/packages/cache.yaml b/Recast/config/packages/cache.yaml new file mode 100644 index 00000000..6899b720 --- /dev/null +++ b/Recast/config/packages/cache.yaml @@ -0,0 +1,19 @@ +framework: + cache: + # Unique name of your app: used to compute stable namespaces for cache keys. + #prefix_seed: your_vendor_name/app_name + + # The "app" cache stores to the filesystem by default. + # The data in this cache should persist between deploys. + # Other options include: + + # Redis + #app: cache.adapter.redis + #default_redis_provider: redis://localhost + + # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) + #app: cache.adapter.apcu + + # Namespaced pools use the above "app" backend by default + #pools: + #my.dedicated.cache: null diff --git a/Recast/config/packages/crayfish_commons.yaml b/Recast/config/packages/crayfish_commons.yaml new file mode 100644 index 00000000..5994e748 --- /dev/null +++ b/Recast/config/packages/crayfish_commons.yaml @@ -0,0 +1,4 @@ +crayfish_commons: + # Because we define a Fedora parameter in the services.yaml we can re-use it here. + fedora_base_uri: '%app.fedora_base_url%' + #syn_config: '/path/to/syn-settings.xml' diff --git a/Recast/config/packages/framework.yaml b/Recast/config/packages/framework.yaml new file mode 100644 index 00000000..cad7f780 --- /dev/null +++ b/Recast/config/packages/framework.yaml @@ -0,0 +1,17 @@ +# see https://symfony.com/doc/current/reference/configuration/framework.html +framework: + secret: '%env(APP_SECRET)%' + #csrf_protection: true + #http_method_override: true + + # Enables session support. Note that the session will ONLY be started if you read or write from it. + # Remove or comment this section to explicitly disable session support. + session: + handler_id: null + cookie_secure: auto + cookie_samesite: lax + + #esi: true + #fragments: true + php_errors: + log: true diff --git a/Recast/config/packages/monolog.yaml b/Recast/config/packages/monolog.yaml new file mode 100644 index 00000000..b0ec7586 --- /dev/null +++ b/Recast/config/packages/monolog.yaml @@ -0,0 +1,27 @@ +monolog: + handlers: + #main: + # type: stream + # path: "%kernel.logs_dir%/%kernel.environment%.log" + # level: debug + # channels: ["!event"] + #console: + # type: console + # process_psr_3_messages: false + # channels: ["!event", "!doctrine", "!console"] + + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + + recast: + type: rotating_file + path: /tmp/Recast.log + level: DEBUG + max_files: 1 + channels: ["!event", "!console"] diff --git a/Recast/config/packages/prod/routing.yaml b/Recast/config/packages/prod/routing.yaml new file mode 100644 index 00000000..b3e6a0af --- /dev/null +++ b/Recast/config/packages/prod/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: null diff --git a/Recast/config/packages/routing.yaml b/Recast/config/packages/routing.yaml new file mode 100644 index 00000000..7e977620 --- /dev/null +++ b/Recast/config/packages/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + utf8: true diff --git a/Recast/config/packages/security.yaml b/Recast/config/packages/security.yaml new file mode 100644 index 00000000..284b7a30 --- /dev/null +++ b/Recast/config/packages/security.yaml @@ -0,0 +1,33 @@ +security: + # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers + providers: + users_in_memory: { memory: null } + jwt_user_provider: + id: Islandora\Crayfish\Commons\Syn\JwtUserProvider + firewalls: + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + main: + # To enable Syn, change anonymous to false and uncomment the lines further below + anonymous: true + # Need stateless or it reloads the User based on a token. + stateless: true + + # To enable Syn, uncomment the below 4 lines and change anonymous to false above. + #provider: jwt_user_provider + #guard: + # authenticators: + # - Islandora\Crayfish\Commons\Syn\JwtAuthenticator + + # activate different ways to authenticate + # https://symfony.com/doc/current/security.html#firewalls-authentication + + # https://symfony.com/doc/current/security/impersonating_user.html + # switch_user: true + + # Easy way to control access for large sections of your site + # Note: Only the *first* access control that matches will be used + access_control: + # - { path: ^/admin, roles: ROLE_ADMIN } + # - { path: ^/profile, roles: ROLE_USER } diff --git a/Recast/config/packages/test/framework.yaml b/Recast/config/packages/test/framework.yaml new file mode 100644 index 00000000..d051c840 --- /dev/null +++ b/Recast/config/packages/test/framework.yaml @@ -0,0 +1,4 @@ +framework: + test: true + session: + storage_id: session.storage.mock_file diff --git a/Recast/config/preload.php b/Recast/config/preload.php new file mode 100644 index 00000000..064bdcd6 --- /dev/null +++ b/Recast/config/preload.php @@ -0,0 +1,9 @@ + - - - - ./src - - - ./src/index.php - ./src/app.php - - - - - - - - ./tests - - - + + + + + + + + + + + + + + + tests + + + + + + ./src + + + ./src/Kernel.php + + + + + + + + + + + + diff --git a/Recast/public/index.php b/Recast/public/index.php new file mode 100644 index 00000000..443711cc --- /dev/null +++ b/Recast/public/index.php @@ -0,0 +1,27 @@ +handle($request); +$response->send(); +$kernel->terminate($request, $response); diff --git a/Recast/static/recast.ttl b/Recast/public/static/options.ttl similarity index 100% rename from Recast/static/recast.ttl rename to Recast/public/static/options.ttl diff --git a/Recast/src/Controller/RecastController.php b/Recast/src/Controller/RecastController.php index 95662b7f..c79a17d8 100644 --- a/Recast/src/Controller/RecastController.php +++ b/Recast/src/Controller/RecastController.php @@ -1,111 +1,127 @@ entityMapper = $entityMapper; $this->http = $http; $this->log = $log; + $this->drupal_base_url = $drupal_base_url; + $this->fcrepo_base_url = $fcrepo_base_url; + $this->namespaces = $namespaces; } - /** - * Send API-X Options information. - * - * @return \Symfony\Component\HttpFoundation\BinaryFileResponse - * The turtle file of the options response. - */ - public function recastOptions() + /** + * Send API-X Options information. + * + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + * The turtle file of the options response. + */ + public function recastOptions(): BinaryFileResponse { return new BinaryFileResponse( - __DIR__ . "/../../static/recast.ttl", + __DIR__ . "/../../public/static/options.ttl", 200, ['Content-Type' => 'text/turtle'] ); } - /** - * @param \Symfony\Component\HttpFoundation\Request $request - * The incoming request. - * @param \Silex\Application $app - * The Silex application - * @param string $operation - * Whether to add or - * - * @return \Symfony\Component\HttpFoundation\Response - * The response. - */ - public function recast(Request $request, Application $app, $operation) + /** + * @param \Symfony\Component\HttpFoundation\Request $request + * The incoming request. + * @param string $operation + * Whether to add or + * + * @return \Symfony\Component\HttpFoundation\Response + * The response. + */ + public function recast(Request $request, string $operation): Response { if (!in_array($operation, $this->availableMethods)) { - return new Response(sprintf( - 'Valid methods for recast are [%s] received "%s".', - implode(', ', $this->availableMethods), - $operation - ), 400); + return new Response( + sprintf( + 'Valid methods for recast are [%s] received "%s".', + implode(', ', $this->availableMethods), + $operation + ), + 400 + ); } $this->log->info("Request to {$operation} resource."); @@ -119,13 +135,13 @@ public function recast(Request $request, Application $app, $operation) // Look for a describes Link header. $describe_uri = $fedora_resource->hasHeader('Link') ? self::describeUri($fedora_resource->getheader('Link')) - : false; + : false; if ($describe_uri !== false) { // We found a describes URI so use that for the subject of the graph. $fedora_uri = $describe_uri; } - $body = (string) $fedora_resource->getBody(); + $body = (string)$fedora_resource->getBody(); $mimeType = $fedora_resource->getHeader('Content-type'); if (is_array($mimeType)) { $mimeType = reset($mimeType); @@ -134,20 +150,20 @@ public function recast(Request $request, Application $app, $operation) $mimeType = $matches[1]; } try { - $format = \EasyRdf\Format::getFormat($mimeType)->getName(); - } catch (\EasyRdf\Exception $e) { + $format = Format::getFormat($mimeType)->getName(); + } catch (Exception $e) { $this->log->info("Could not parse format {$mimeType}"); return new Response("Cannot process resource in format ({$mimeType})", 400); } try { - $graph = new \EasyRdf\Graph(); + $graph = new Graph(); $graph->parse( $body, $format, $fedora_uri ); - } catch (\EasyRdf\Exception $e) { + } catch (Exception $e) { $this->log->error("Error parsing graph in {$format}"); return new Response("Error parsing graph", 400); } @@ -156,6 +172,8 @@ public function recast(Request $request, Application $app, $operation) foreach ($resources as $uri => $data) { // Ignore http vs https $exploded = explode('://', $uri); + // Add a default, just in case. + $protocol = "http"; if (count($exploded) > 1) { $protocol = $exploded[0]; $without_protocol = $exploded[1]; @@ -163,20 +181,18 @@ public function recast(Request $request, Application $app, $operation) // Check for Drupal urls, making sure to ignore Fedora urls. // They may share a domain so false positives can happen. - $drupal_base_url = $app['crayfish.drupal_base_url']; - $fcrepo_base_url = $app['crayfish.fedora_resource.base_url']; - $is_drupal_url = strpos($without_protocol, $drupal_base_url) === 0 && - strpos($without_protocol, $fcrepo_base_url) !== 0; + $is_drupal_url = strpos($without_protocol, $this->drupal_base_url) === 0 && + strpos($without_protocol, $this->fcrepo_base_url) !== 0; $this->log->debug("Looking for reverse URI for: $uri"); - $this->log->debug("$uri ". $is_drupal_url ? 'is a Drupal URL' : 'is not a Drupal URL'); + $this->log->debug("$uri " . $is_drupal_url ? 'is a Drupal URL' : 'is not a Drupal URL'); if ($is_drupal_url) { - $reverse_uri = $this->getFedoraUrl($uri, $fcrepo_base_url, $token); + $reverse_uri = $this->getFedoraUrl($uri, $this->fcrepo_base_url, $token); if (!empty($reverse_uri)) { // Add the protocol back in. - $reverse_uri = "http://$reverse_uri"; + $reverse_uri = "{$protocol}://{$reverse_uri}"; // Don't rewrite the current URI (in-case of sameAs) if ($reverse_uri !== $fedora_uri) { $predicate = $this->findPredicateForObject($graph, $uri); @@ -210,9 +226,9 @@ public function recast(Request $request, Application $app, $operation) $output_type = "text/turtle"; } try { - $format = \EasyRdf\Format::getFormat($output_type)->getName(); + $format = Format::getFormat($output_type)->getName(); break; - } catch (\EasyRdf\Exception $e) { + } catch (Exception $e) { // pass } } @@ -225,15 +241,11 @@ public function recast(Request $request, Application $app, $operation) } // Add in user configured prefixes/uris for rdf mapping. - if (isset($app['crayfish.namespaces'])) { - // To get the prefixes we nest the associative array inside an array - $namespaces = $app['crayfish.namespaces'][0]; - if (is_array($namespaces) && count($namespaces) > 0) { - foreach ($namespaces as $prefix => $uri) { - if (\EasyRdf\RdfNamespace::prefixOfUri($uri) == '') { - $this->log->debug("Adding $prefix -> $uri"); - \EasyRdf\RdfNamespace::set($prefix, $uri); - } + if (is_array($this->namespaces) && count($this->namespaces) > 0) { + foreach ($this->namespaces as $prefix => $uri) { + if (RdfNamespace::prefixOfUri($uri) == '') { + $this->log->debug("Adding $prefix -> $uri"); + RdfNamespace::set($prefix, $uri); } } } @@ -251,8 +263,8 @@ function ($item) use ($fedora_uri) { $new_body = json_encode(array_values($temp)); } $headers = [ - 'Content-type' => $output_type, - 'Content-length' => strlen($new_body), + 'Content-type' => $output_type, + 'Content-length' => strlen($new_body), ]; return new Response($new_body, 200, $headers); @@ -268,7 +280,7 @@ private function getFedoraUrl($drupal_url, $fcrepo_base_url, $token) $response = $this->http->get($drupal_url, ['Authorization' => $token]); $json_str = $response->getBody(); $json = json_decode($json_str, true); - $this->log->debug("GOT THIS JSON: $json_str"); + $this->log->debug("GOT THIS JSON: $json_str"); $is_media = isset($json['bundle']) && !empty($json['bundle']) && @@ -306,18 +318,18 @@ private function getFedoraUrl($drupal_url, $fcrepo_base_url, $token) } } - /** - * Locate the predicate for an object in a graph. - * - * @param \EasyRdf\Graph $graph - * The graph to look in. - * @param string $object - * The object to look for. - * - * @return mixed string|null - * Return the predicate or null. - */ - private function findPredicateForObject(\EasyRdf\Graph $graph, $object) + /** + * Locate the predicate for an object in a graph. + * + * @param \EasyRdf\Graph $graph + * The graph to look in. + * @param string $object + * The object to look for. + * + * @return string|null + * Return the predicate or null. + */ + private function findPredicateForObject(Graph $graph, $object): ?string { $properties = $graph->reversePropertyUris($object); foreach ($properties as $p) { @@ -326,14 +338,14 @@ private function findPredicateForObject(\EasyRdf\Graph $graph, $object) return null; } - /** - * Return any found describes link headers or FALSE. - * - * @param array $link_header - * The array of Link headers. - * @return false|string - * The URI described or false if not found. - */ + /** + * Return any found describes link headers or FALSE. + * + * @param array $link_header + * The array of Link headers. + * @return false|string + * The URI described or false if not found. + */ private static function describeUri(array $link_header) { array_walk($link_header, ['self', 'parseLinkHeaders']); @@ -344,17 +356,17 @@ private static function describeUri(array $link_header) return $match; } - /** - * Parse an array of string link headers in to associative arrays. - * - * Format is [ - * 'uri' => 'the uri', - * 'rel' => 'the rel parameter', - * ] - * - * @param $o - * The input array of link headers. - */ + /** + * Parse an array of string link headers in to associative arrays. + * + * Format is [ + * 'uri' => 'the uri', + * 'rel' => 'the rel parameter', + * ] + * + * @param $o + * The input array of link headers. + */ private static function parseLinkHeaders(&$o) { $part = trim($o); diff --git a/Recast/src/Kernel.php b/Recast/src/Kernel.php new file mode 100644 index 00000000..6f32cc2f --- /dev/null +++ b/Recast/src/Kernel.php @@ -0,0 +1,54 @@ +getProjectDir().'/config/bundles.php'; + foreach ($contents as $class => $envs) { + if ($envs[$this->environment] ?? $envs['all'] ?? false) { + yield new $class(); + } + } + } + + public function getProjectDir(): string + { + return \dirname(__DIR__); + } + + protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void + { + $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); + $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || $this->debug); + $container->setParameter('container.dumper.inline_factories', true); + $confDir = $this->getProjectDir().'/config'; + + $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{packages}/'.$this->environment.'/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); + } + + protected function configureRoutes(RouteCollectionBuilder $routes): void + { + $confDir = $this->getProjectDir().'/config'; + + $routes->import($confDir.'/{routes}/'.$this->environment.'/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); + } +} diff --git a/Recast/src/app.php b/Recast/src/app.php deleted file mode 100644 index a1823feb..00000000 --- a/Recast/src/app.php +++ /dev/null @@ -1,33 +0,0 @@ -register(new IslandoraServiceProvider()); -$app->register(new YamlConfigServiceProvider(__DIR__ . '/../cfg/config.yaml')); - -$test = new RecastController( - new EntityMapper(), - new Client(), - $app['monolog'] -); - -$app['recast.controller'] = $test; - -$app->options('/', 'recast.controller:recastOptions'); -$app->get('/{operation}', "recast.controller:recast") - ->before(function (Request $request, Application $app) { - return $app['crayfish.apix_middleware']->before($request); - }) - ->value('operation', 'add'); - -return $app; diff --git a/Recast/src/index.php b/Recast/src/index.php deleted file mode 100644 index 3e23d477..00000000 --- a/Recast/src/index.php +++ /dev/null @@ -1,4 +0,0 @@ -run(); diff --git a/Recast/symfony.lock b/Recast/symfony.lock new file mode 100644 index 00000000..7aadeab2 --- /dev/null +++ b/Recast/symfony.lock @@ -0,0 +1,372 @@ +{ + "doctrine/instantiator": { + "version": "1.4.0" + }, + "easyrdf/easyrdf": { + "version": "1.1.1" + }, + "guzzlehttp/guzzle": { + "version": "6.5.5" + }, + "guzzlehttp/promises": { + "version": "1.5.1" + }, + "guzzlehttp/psr7": { + "version": "1.8.3" + }, + "islandora/chullo": { + "version": "1.3.0" + }, + "islandora/crayfish-commons": { + "version": "3.0.0" + }, + "ml/iri": { + "version": "1.1.4" + }, + "ml/json-ld": { + "version": "1.2.0" + }, + "monolog/monolog": { + "version": "1.26.1" + }, + "myclabs/deep-copy": { + "version": "1.10.2" + }, + "namshi/jose": { + "version": "7.2.3" + }, + "nikic/php-parser": { + "version": "v4.13.0" + }, + "phar-io/manifest": { + "version": "2.0.3" + }, + "phar-io/version": { + "version": "3.1.0" + }, + "phpdocumentor/reflection-common": { + "version": "2.2.0" + }, + "phpdocumentor/reflection-docblock": { + "version": "5.3.0" + }, + "phpdocumentor/type-resolver": { + "version": "1.5.1" + }, + "phpspec/prophecy": { + "version": "1.14.0" + }, + "phpspec/prophecy-phpunit": { + "version": "v2.0.1" + }, + "phpunit/php-code-coverage": { + "version": "9.2.7" + }, + "phpunit/php-file-iterator": { + "version": "3.0.5" + }, + "phpunit/php-invoker": { + "version": "3.1.1" + }, + "phpunit/php-text-template": { + "version": "2.0.4" + }, + "phpunit/php-timer": { + "version": "5.0.3" + }, + "phpunit/phpunit": { + "version": "9.5", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "9.3", + "ref": "a6249a6c4392e9169b87abf93225f7f9f59025e6" + }, + "files": [ + ".env.test", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "psr/cache": { + "version": "1.0.1" + }, + "psr/container": { + "version": "1.1.1" + }, + "psr/http-message": { + "version": "1.0.1" + }, + "psr/log": { + "version": "1.1.4" + }, + "ralouphie/getallheaders": { + "version": "3.0.3" + }, + "sebastian/cli-parser": { + "version": "1.0.1" + }, + "sebastian/code-unit": { + "version": "1.0.8" + }, + "sebastian/code-unit-reverse-lookup": { + "version": "2.0.3" + }, + "sebastian/comparator": { + "version": "4.0.6" + }, + "sebastian/complexity": { + "version": "2.0.2" + }, + "sebastian/diff": { + "version": "4.0.4" + }, + "sebastian/environment": { + "version": "5.1.3" + }, + "sebastian/exporter": { + "version": "4.0.3" + }, + "sebastian/global-state": { + "version": "5.0.3" + }, + "sebastian/lines-of-code": { + "version": "1.0.3" + }, + "sebastian/object-enumerator": { + "version": "4.0.4" + }, + "sebastian/object-reflector": { + "version": "2.0.4" + }, + "sebastian/phpcpd": { + "version": "6.0.3" + }, + "sebastian/recursion-context": { + "version": "4.0.4" + }, + "sebastian/resource-operations": { + "version": "3.0.3" + }, + "sebastian/type": { + "version": "2.3.4" + }, + "sebastian/version": { + "version": "3.0.2" + }, + "squizlabs/php_codesniffer": { + "version": "3.6", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "master", + "version": "3.6", + "ref": "1019e5c08d4821cb9b77f4891f8e9c31ff20ac6f" + } + }, + "symfony/browser-kit": { + "version": "v4.4.27" + }, + "symfony/cache": { + "version": "v4.4.31" + }, + "symfony/cache-contracts": { + "version": "v2.4.0" + }, + "symfony/config": { + "version": "v4.4.30" + }, + "symfony/css-selector": { + "version": "v4.4.27" + }, + "symfony/debug": { + "version": "v4.4.31" + }, + "symfony/dependency-injection": { + "version": "v4.4.31" + }, + "symfony/deprecation-contracts": { + "version": "v2.5.1" + }, + "symfony/dom-crawler": { + "version": "v4.4.30" + }, + "symfony/dotenv": { + "version": "v4.4.29" + }, + "symfony/error-handler": { + "version": "v4.4.30" + }, + "symfony/event-dispatcher": { + "version": "v4.4.30" + }, + "symfony/event-dispatcher-contracts": { + "version": "v1.1.9" + }, + "symfony/filesystem": { + "version": "v4.4.27" + }, + "symfony/finder": { + "version": "v4.4.30" + }, + "symfony/flex": { + "version": "1.17", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" + }, + "files": [ + ".env" + ] + }, + "symfony/framework-bundle": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.4", + "ref": "3b9c85f14cad439042f88f94a1fd15fb8ed923c9" + }, + "files": [ + "config/services.yaml", + "config/bootstrap.php", + "config/routes/dev/framework.yaml", + "config/preload.php", + "config/packages/cache.yaml", + "config/packages/framework.yaml", + "config/packages/test/framework.yaml", + "public/index.php", + "src/Kernel.php", + "src/Controller/.gitignore" + ] + }, + "symfony/http-client-contracts": { + "version": "v2.4.0" + }, + "symfony/http-foundation": { + "version": "v4.4.30" + }, + "symfony/http-kernel": { + "version": "v4.4.32" + }, + "symfony/inflector": { + "version": "v4.4.27" + }, + "symfony/mime": { + "version": "v4.4.31" + }, + "symfony/monolog-bridge": { + "version": "v4.4.27" + }, + "symfony/monolog-bundle": { + "version": "3.7", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.7", + "ref": "a7bace7dbc5a7ed5608dbe2165e0774c87175fe6" + }, + "files": [ + "config/packages/test/monolog.yaml", + "config/packages/prod/monolog.yaml", + "config/packages/prod/deprecations.yaml", + "config/packages/dev/monolog.yaml" + ] + }, + "symfony/phpunit-bridge": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.3", + "ref": "0e1b186400de9d4ab83363138b4eb0072c99b2ab" + }, + "files": [ + ".env.test", + "bin/phpunit", + "phpunit.xml.dist", + "tests/bootstrap.php" + ] + }, + "symfony/polyfill-intl-idn": { + "version": "v1.23.0" + }, + "symfony/polyfill-intl-normalizer": { + "version": "v1.23.0" + }, + "symfony/polyfill-mbstring": { + "version": "v1.23.1" + }, + "symfony/polyfill-php72": { + "version": "v1.23.0" + }, + "symfony/polyfill-php73": { + "version": "v1.23.0" + }, + "symfony/polyfill-php80": { + "version": "v1.23.1" + }, + "symfony/polyfill-php81": { + "version": "v1.23.0" + }, + "symfony/property-access": { + "version": "v4.4.30" + }, + "symfony/routing": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.2", + "ref": "683dcb08707ba8d41b7e34adb0344bfd68d248a7" + }, + "files": [ + "config/routes.yaml", + "config/packages/routing.yaml", + "config/packages/prod/routing.yaml" + ] + }, + "symfony/security-bundle": { + "version": "4.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.4", + "ref": "7b4408dc203049666fe23fabed23cbadc6d8440f" + }, + "files": [ + "config/packages/security.yaml" + ] + }, + "symfony/security-core": { + "version": "v4.4.31" + }, + "symfony/security-csrf": { + "version": "v4.4.27" + }, + "symfony/security-guard": { + "version": "v4.4.27" + }, + "symfony/security-http": { + "version": "v4.4.30" + }, + "symfony/service-contracts": { + "version": "v2.4.0" + }, + "symfony/var-dumper": { + "version": "v4.4.31" + }, + "symfony/var-exporter": { + "version": "v4.4.31" + }, + "symfony/yaml": { + "version": "v4.4.29" + }, + "theseer/tokenizer": { + "version": "1.2.1" + }, + "webmozart/assert": { + "version": "1.10.0" + } +} diff --git a/Recast/tests/RecastControllerTests.php b/Recast/tests/RecastControllerTest.php similarity index 68% rename from Recast/tests/RecastControllerTests.php rename to Recast/tests/RecastControllerTest.php index 8d5f3e8d..3bac6607 100644 --- a/Recast/tests/RecastControllerTests.php +++ b/Recast/tests/RecastControllerTest.php @@ -1,31 +1,26 @@ "http://fedora.info/definitions/v4/repository#", - "pcdm" => "http://pcdm.org/models#", - ), - ); + private $drupal_base_url = 'localhost:8000'; + + private $fedora_base_url = 'localhost:8080/fcrepo/rest'; + + private $namespaces = [ + "fedora" => "http://fedora.info/definitions/v4/repository#", + "pcdm" => "http://pcdm.org/models#", + ]; /** * {@inheritdoc} @@ -56,11 +53,7 @@ public function setUp(): void */ public function testOptions() { - $controller = new RecastController( - new EntityMapper(), - $this->http_prophecy->reveal(), - $this->logger_prophecy->reveal() - ); + $controller = $this->getController(); $response = $controller->recastOptions(); $this->assertTrue($response->getStatusCode() == 200, 'Identify OPTIONS should return 200'); @@ -86,28 +79,20 @@ public function testImageAdd() ->willThrow( new RequestException( "NOT FOUND", - new \GuzzleHttp\Psr7\Request('GET', 'http://localhost:8000/user/1?_format=json') + new GuzzleRequest('GET', 'http://localhost:8000/user/1?_format=json') ) ); $this->http_prophecy->get('http://localhost:8000/media/1?_format=json', Argument::any()) ->willThrow(new RequestException( "NOT FOUND", - new \GuzzleHttp\Psr7\Request('GET', 'http://localhost:8000/media/1?_format=json') + new GuzzleRequest('GET', 'http://localhost:8000/media/1?_format=json') )); $this->http_prophecy->get('http://localhost:8000/node/1?_format=json', Argument::any()) - ->willReturn(new \GuzzleHttp\Psr7\Response(200, [], file_get_contents($node_1))); - - $mock_silex_app = new Application(); - $mock_silex_app['crayfish.drupal_base_url'] = 'localhost:8000'; - $mock_silex_app['crayfish.fedora_resource.base_url'] = 'localhost:8080/fcrepo/rest'; + ->willReturn(new GuzzleResponse(200, [], file_get_contents($node_1))); $mock_fedora_response = $this->getMockFedoraStream(); - $controller = new RecastController( - new EntityMapper(), - $this->http_prophecy->reveal(), - $this->logger_prophecy->reveal() - ); + $controller = $this->getController(); $request = Request::create( "/add", @@ -119,7 +104,7 @@ public function testImageAdd() $request->attributes->set('fedora_resource', $mock_fedora_response); // Do with add - $response = $controller->recast($request, $mock_silex_app, 'add'); + $response = $controller->recast($request, 'add'); $this->assertEquals(200, $response->getStatusCode(), "Invalid status code"); $json = json_decode($response->getContent(), true); @@ -127,7 +112,7 @@ public function testImageAdd() $this->assertEquals($expected, $json, "Response does not match expected additions."); // Do with replace - $response = $controller->recast($request, $mock_silex_app, 'replace'); + $response = $controller->recast($request, 'replace'); $this->assertEquals(200, $response->getStatusCode(), "Invalid status code"); $json = json_decode($response->getContent(), true); @@ -141,14 +126,8 @@ public function testImageAdd() public function testInvalidType() { $resource_id = 'http://localhost:8080/fcrepo/rest/object1'; - $mock_silex_app = new Application(); - $mock_silex_app['crayfish.drupal_base_url'] = 'http://localhost:8000'; - $controller = new RecastController( - new EntityMapper(), - $this->http_prophecy->reveal(), - $this->logger_prophecy->reveal() - ); + $controller = $this->getController(); $mock_fedora_response = $this->getMockFedoraStream(); @@ -162,7 +141,7 @@ public function testInvalidType() $request->attributes->set('fedora_resource', $mock_fedora_response); // Do with add - $response = $controller->recast($request, $mock_silex_app, 'oops'); + $response = $controller->recast($request, 'oops'); $this->assertEquals($response->getStatusCode(), 400, "Invalid status code"); } @@ -179,27 +158,18 @@ public function testPrefixes() ->willThrow( new RequestException( "NOT FOUND", - new \GuzzleHttp\Psr7\Request('GET', 'http://localhost:8000/user/1?_format=json') + new GuzzleRequest('GET', 'http://localhost:8000/user/1?_format=json') ) ); $this->http_prophecy->get('http://localhost:8000/node/1?_format=json', Argument::any()) - ->willReturn(new \GuzzleHttp\Psr7\Response(200, [], file_get_contents($node_1))); - - $mock_silex_app = new Application(); - $mock_silex_app['crayfish.drupal_base_url'] = 'localhost:8000'; - $mock_silex_app['crayfish.fedora_resource.base_url'] = 'localhost:8080/fcrepo/rest'; - $mock_silex_app['crayfish.namespaces'] = $this->namespaces; + ->willReturn(new GuzzleResponse(200, [], file_get_contents($node_1))); $mock_fedora_response = $this->getMockFedoraStream( realpath(__DIR__ . '/resources/drupal_image.ttl'), 'text/turtle' ); - $controller = new RecastController( - new EntityMapper(), - $this->http_prophecy->reveal(), - $this->logger_prophecy->reveal() - ); + $controller = $this->getController(); $request = Request::create( "/add", @@ -210,15 +180,9 @@ public function testPrefixes() $request->headers->set('Accept', 'text/turtle'); $request->attributes->set('fedora_resource', $mock_fedora_response); - $response = $controller->recast($request, $mock_silex_app, 'add'); + $response = $controller->recast($request, 'add'); $body = $response->getContent(); $this->assertStringContainsString('fedora:', $body, "Did not find fedora: prefix"); - // These two assertions are failing with the EasyRdf update to 1.1.1 in Chullo. - // It could be the resolution of: - // Fixes for format guessing, so it works with SPARQL-style PREFIX and BASE - // https://github.com/easyrdf/easyrdf/blob/master/CHANGELOG.md#bug-fixes - //$this->assertStringNotContainsString('ldp:', $body, "Found ldp: prefix"); - //$this->assertStringContainsString('', $body, "Did not find full LDP uri"); $this->assertStringContainsString('pcdm:', $body, "Did not find pcdm: prefix"); } @@ -256,4 +220,20 @@ protected function getMockFedoraStream($input_resource = null, $content_type = ' $mock_fedora_response = $prophecy->reveal(); return $mock_fedora_response; } + + /** + * Utility to get the controller. + * @return \App\Islandora\Recast\Controller\RecastController + */ + private function getController(): RecastController + { + return new RecastController( + new EntityMapper(), + $this->http_prophecy->reveal(), + $this->logger_prophecy->reveal(), + $this->drupal_base_url, + $this->fedora_base_url, + $this->namespaces + ); + } } diff --git a/Recast/tests/bootstrap.php b/Recast/tests/bootstrap.php new file mode 100644 index 00000000..469dccee --- /dev/null +++ b/Recast/tests/bootstrap.php @@ -0,0 +1,11 @@ +bootEnv(dirname(__DIR__).'/.env'); +}