├── .docker ├── Dockerfile └── bin │ ├── composer │ ├── console │ └── php-cs-fixer ├── .env ├── .gitignore ├── LICENSE ├── README.md ├── bin └── console ├── composer.json ├── composer.lock ├── config ├── bundles.php ├── packages │ ├── cache.yaml │ ├── framework.yaml │ ├── google_apiclient.yaml │ └── routing.yaml ├── preload.php ├── routes.yaml ├── routes │ └── framework.yaml └── services.yaml ├── data └── movies-100.csv ├── docker-compose.yml ├── public └── index.php ├── src ├── Cli │ └── ManipulateGoogleSheetsCommand.php ├── Controller │ └── .gitignore └── Kernel.php └── symfony.lock /.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8-cli 2 | 3 | # Add a "docker" user 4 | RUN useradd docker --shell /bin/bash --create-home \ 5 | && usermod --append --groups sudo docker \ 6 | && echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers \ 7 | && echo 'docker:secret' | chpasswd 8 | 9 | # Install unzip & composer 10 | RUN apt-get update && apt-get install unzip && curl -sSL https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && chmod +x /usr/local/bin/composer 11 | 12 | # Install and configure ext-lib 13 | RUN apt-get install -y libzip-dev zip && docker-php-ext-install zip 14 | 15 | # Install php cs fixer 16 | RUN curl -L https://cs.symfony.com/download/php-cs-fixer-v2.phar -o php-cs-fixer && chmod a+x php-cs-fixer && mv php-cs-fixer /usr/local/bin/php-cs-fixer 17 | 18 | # Increase PHP Memory Limit to do some tests on large JSON file 19 | # RUN echo 'memory_limit = 2048M' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini; 20 | -------------------------------------------------------------------------------- /.docker/bin/composer: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | docker-compose run --rm app-cli /bin/bash -c "composer $1 $2 $3 $4 $5 $6" 4 | -------------------------------------------------------------------------------- /.docker/bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | docker-compose run --rm app-cli /bin/bash -c "php bin/console $1 $2 $3 $4 $5 $6" 4 | -------------------------------------------------------------------------------- /.docker/bin/php-cs-fixer: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | docker-compose run --rm app-cli /bin/bash -c "php-cs-fixer fix --diff src/ --rules=@PSR2,no_unused_imports" 4 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | # In all environments, the following files are loaded if they exist, 2 | # the latter taking precedence over the former: 3 | # 4 | # * .env contains default values for the environment variables needed by the app 5 | # * .env.local uncommitted file with local overrides 6 | # * .env.$APP_ENV committed environment-specific defaults 7 | # * .env.$APP_ENV.local uncommitted environment-specific overrides 8 | # 9 | # Real environment variables win over .env files. 10 | # 11 | # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. 12 | # 13 | # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). 14 | # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration 15 | 16 | ###> symfony/framework-bundle ### 17 | APP_ENV=dev 18 | APP_SECRET=2d71bbfe21773c8d3159800ee3ab1e3c 19 | ###< symfony/framework-bundle ### 20 | 21 | ###> google/apiclient ### 22 | GOOGLE_API_KEY= 23 | GOOGLE_CLIENT_ID= 24 | GOOGLE_CLIENT_SECRET= 25 | ###< google/apiclient ### 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | ###> symfony/framework-bundle ### 3 | /.env.local 4 | /.env.local.php 5 | /.env.*.local 6 | /config/secrets/prod/prod.decrypt.private.php 7 | /public/bundles/ 8 | /var/ 9 | /vendor/ 10 | ###< symfony/framework-bundle ### 11 | 12 | .php_cs.cache 13 | .idea 14 | data/credentials.json 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Nicolas Dupont 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Manipulate Google Sheets API in PHP 🐘 2 | 3 | Code examples for the tutorial [How to Use Google Sheets API in PHP?](https://www.nidup.io/blog/manipulate-google-sheets-in-php-with-api) 4 | 5 | The code is packaged as a simple Symfony application with cli commands. 6 | 7 | This series also proposes other PHP data integration tutorials: 8 | - [How to Read and Write CSV Files in PHP?](https://www.nidup.io/blog/manipulate-csv-files-in-php) 9 | - [How to Read and Write Excel Files in PHP?](https://www.nidup.io/blog/manipulate-excel-files-in-php) 10 | - [How to Read, Decode, Encode, and Write JSON Files in PHP?](https://www.nidup.io/blog/manipulate-json-files-in-php) 11 | 12 | ## Installation 📦 13 | 14 | Download the source code: 15 | 16 | ``` 17 | git clone git@github.com:nidup/manipulate-google-sheets-api-in-php.git 18 | cd manipulate-google-sheets-api-in-php 19 | ``` 20 | 21 | Then the installation comes into 2 flavors, directly on your host or using docker. 22 | 23 | Once installed the commands are the same, some docker shortcuts are provided in `.docker/bin`. 24 | 25 | ### Install directly on your system (option A) 💻 26 | 27 | Install the PHP dependencies: 28 | 29 | ``` 30 | composer install 31 | ``` 32 | 33 | ### Install with docker & docker-compose (option B) 🐋 34 | 35 | Build the docker image and install the PHP dependencies: 36 | 37 | ``` 38 | docker-compose up -d 39 | .docker/bin/composer install 40 | ``` 41 | 42 | ## Use the console commands 🚀 43 | 44 | Use `bin/console` or `.docker/bin/console` to launch a command. 45 | 46 | List the commands: 47 | ``` 48 | bin/console --env=prod 49 | [...] 50 | nidup 51 | nidup:google-sheets:manipulate-google-sheets Manipulate Google Sheets 52 | [...] 53 | ``` 54 | 55 | The example of data is in data/movies-100.csv, it can be imported in a new google sheet. 56 | 57 | Then the google sheet id can be used as the argument of the following command. 58 | 59 | Launch a command: 60 | ``` 61 | bin/console nidup:google-sheets:manipulate-google-sheets myGoogleSheetId --env=prod 62 | ``` 63 | 64 | This command contains various examples that can be commented out to read, write, filter, etc. 65 | 66 | We use the prod environment here to have the most efficient execution. 67 | -------------------------------------------------------------------------------- /bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | =8.0.2", 8 | "ext-ctype": "*", 9 | "ext-iconv": "*", 10 | "google/apiclient": "^2.12", 11 | "symfony/console": "6.0.*", 12 | "symfony/dotenv": "6.0.*", 13 | "symfony/flex": "^2", 14 | "symfony/framework-bundle": "6.0.*", 15 | "symfony/runtime": "6.0.*", 16 | "symfony/yaml": "6.0.*" 17 | }, 18 | "config": { 19 | "allow-plugins": { 20 | "composer/package-versions-deprecated": true, 21 | "symfony/flex": true, 22 | "symfony/runtime": true 23 | }, 24 | "optimize-autoloader": true, 25 | "preferred-install": { 26 | "*": "dist" 27 | }, 28 | "sort-packages": true 29 | }, 30 | "autoload": { 31 | "psr-4": { 32 | "App\\": "src/" 33 | } 34 | }, 35 | "autoload-dev": { 36 | "psr-4": { 37 | "App\\Tests\\": "tests/" 38 | } 39 | }, 40 | "replace": { 41 | "symfony/polyfill-ctype": "*", 42 | "symfony/polyfill-iconv": "*", 43 | "symfony/polyfill-php72": "*", 44 | "symfony/polyfill-php73": "*", 45 | "symfony/polyfill-php74": "*", 46 | "symfony/polyfill-php80": "*" 47 | }, 48 | "scripts": { 49 | "auto-scripts": { 50 | "cache:clear": "symfony-cmd", 51 | "assets:install %PUBLIC_DIR%": "symfony-cmd" 52 | }, 53 | "post-install-cmd": [ 54 | "@auto-scripts" 55 | ], 56 | "post-update-cmd": [ 57 | "@auto-scripts" 58 | ] 59 | }, 60 | "conflict": { 61 | "symfony/symfony": "*" 62 | }, 63 | "extra": { 64 | "symfony": { 65 | "allow-contrib": false, 66 | "require": "6.0.*" 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "cbbc502c29ef8f231243db6b167a6cba", 8 | "packages": [ 9 | { 10 | "name": "firebase/php-jwt", 11 | "version": "v5.5.1", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/firebase/php-jwt.git", 15 | "reference": "83b609028194aa042ea33b5af2d41a7427de80e6" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/firebase/php-jwt/zipball/83b609028194aa042ea33b5af2d41a7427de80e6", 20 | "reference": "83b609028194aa042ea33b5af2d41a7427de80e6", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": ">=5.3.0" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": ">=4.8 <=9" 28 | }, 29 | "suggest": { 30 | "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" 31 | }, 32 | "type": "library", 33 | "autoload": { 34 | "psr-4": { 35 | "Firebase\\JWT\\": "src" 36 | } 37 | }, 38 | "notification-url": "https://packagist.org/downloads/", 39 | "license": [ 40 | "BSD-3-Clause" 41 | ], 42 | "authors": [ 43 | { 44 | "name": "Neuman Vong", 45 | "email": "neuman+pear@twilio.com", 46 | "role": "Developer" 47 | }, 48 | { 49 | "name": "Anant Narayanan", 50 | "email": "anant@php.net", 51 | "role": "Developer" 52 | } 53 | ], 54 | "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", 55 | "homepage": "https://github.com/firebase/php-jwt", 56 | "keywords": [ 57 | "jwt", 58 | "php" 59 | ], 60 | "support": { 61 | "issues": "https://github.com/firebase/php-jwt/issues", 62 | "source": "https://github.com/firebase/php-jwt/tree/v5.5.1" 63 | }, 64 | "time": "2021-11-08T20:18:51+00:00" 65 | }, 66 | { 67 | "name": "google/apiclient", 68 | "version": "v2.12.1", 69 | "source": { 70 | "type": "git", 71 | "url": "https://github.com/googleapis/google-api-php-client.git", 72 | "reference": "1530583a711f4414407112c4068464bcbace1c71" 73 | }, 74 | "dist": { 75 | "type": "zip", 76 | "url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/1530583a711f4414407112c4068464bcbace1c71", 77 | "reference": "1530583a711f4414407112c4068464bcbace1c71", 78 | "shasum": "" 79 | }, 80 | "require": { 81 | "firebase/php-jwt": "~2.0||~3.0||~4.0||~5.0", 82 | "google/apiclient-services": "~0.200", 83 | "google/auth": "^1.10", 84 | "guzzlehttp/guzzle": "~5.3.3||~6.0||~7.0", 85 | "guzzlehttp/psr7": "^1.7||^2.0.0", 86 | "monolog/monolog": "^1.17||^2.0", 87 | "php": "^5.6|^7.0|^8.0", 88 | "phpseclib/phpseclib": "~2.0||^3.0.2" 89 | }, 90 | "require-dev": { 91 | "cache/filesystem-adapter": "^0.3.2|^1.1", 92 | "composer/composer": "^1.10.22", 93 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7", 94 | "phpcompatibility/php-compatibility": "^9.2", 95 | "phpspec/prophecy-phpunit": "^1.1||^2.0", 96 | "phpunit/phpunit": "^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0", 97 | "squizlabs/php_codesniffer": "~2.3", 98 | "symfony/css-selector": "~2.1", 99 | "symfony/dom-crawler": "~2.1", 100 | "yoast/phpunit-polyfills": "^1.0" 101 | }, 102 | "suggest": { 103 | "cache/filesystem-adapter": "For caching certs and tokens (using Google\\Client::setCache)" 104 | }, 105 | "type": "library", 106 | "extra": { 107 | "branch-alias": { 108 | "dev-main": "2.x-dev" 109 | } 110 | }, 111 | "autoload": { 112 | "files": [ 113 | "src/aliases.php" 114 | ], 115 | "psr-4": { 116 | "Google\\": "src/" 117 | }, 118 | "classmap": [ 119 | "src/aliases.php" 120 | ] 121 | }, 122 | "notification-url": "https://packagist.org/downloads/", 123 | "license": [ 124 | "Apache-2.0" 125 | ], 126 | "description": "Client library for Google APIs", 127 | "homepage": "http://developers.google.com/api-client-library/php", 128 | "keywords": [ 129 | "google" 130 | ], 131 | "support": { 132 | "issues": "https://github.com/googleapis/google-api-php-client/issues", 133 | "source": "https://github.com/googleapis/google-api-php-client/tree/v2.12.1" 134 | }, 135 | "time": "2021-12-02T03:34:25+00:00" 136 | }, 137 | { 138 | "name": "google/apiclient-services", 139 | "version": "v0.240.0", 140 | "source": { 141 | "type": "git", 142 | "url": "https://github.com/googleapis/google-api-php-client-services.git", 143 | "reference": "c6d39cda24d7ada02ecf8c464a1c8adb02607ba7" 144 | }, 145 | "dist": { 146 | "type": "zip", 147 | "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/c6d39cda24d7ada02ecf8c464a1c8adb02607ba7", 148 | "reference": "c6d39cda24d7ada02ecf8c464a1c8adb02607ba7", 149 | "shasum": "" 150 | }, 151 | "require": { 152 | "php": ">=5.6" 153 | }, 154 | "require-dev": { 155 | "phpunit/phpunit": "^5.7||^8.5.13" 156 | }, 157 | "type": "library", 158 | "autoload": { 159 | "files": [ 160 | "autoload.php" 161 | ], 162 | "psr-4": { 163 | "Google\\Service\\": "src" 164 | } 165 | }, 166 | "notification-url": "https://packagist.org/downloads/", 167 | "license": [ 168 | "Apache-2.0" 169 | ], 170 | "description": "Client library for Google APIs", 171 | "homepage": "http://developers.google.com/api-client-library/php", 172 | "keywords": [ 173 | "google" 174 | ], 175 | "support": { 176 | "issues": "https://github.com/googleapis/google-api-php-client-services/issues", 177 | "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.240.0" 178 | }, 179 | "time": "2022-03-21T01:20:11+00:00" 180 | }, 181 | { 182 | "name": "google/auth", 183 | "version": "v1.18.0", 184 | "source": { 185 | "type": "git", 186 | "url": "https://github.com/googleapis/google-auth-library-php.git", 187 | "reference": "21dd478e77b0634ed9e3a68613f74ed250ca9347" 188 | }, 189 | "dist": { 190 | "type": "zip", 191 | "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/21dd478e77b0634ed9e3a68613f74ed250ca9347", 192 | "reference": "21dd478e77b0634ed9e3a68613f74ed250ca9347", 193 | "shasum": "" 194 | }, 195 | "require": { 196 | "firebase/php-jwt": "~2.0|~3.0|~4.0|~5.0", 197 | "guzzlehttp/guzzle": "^5.3.1|^6.2.1|^7.0", 198 | "guzzlehttp/psr7": "^1.7|^2.0", 199 | "php": ">=5.4", 200 | "psr/cache": "^1.0|^2.0", 201 | "psr/http-message": "^1.0" 202 | }, 203 | "require-dev": { 204 | "guzzlehttp/promises": "0.1.1|^1.3", 205 | "kelvinmo/simplejwt": "^0.2.5|^0.5.1", 206 | "phpseclib/phpseclib": "^2.0.31", 207 | "phpunit/phpunit": "^4.8.36|^5.7", 208 | "sebastian/comparator": ">=1.2.3" 209 | }, 210 | "suggest": { 211 | "phpseclib/phpseclib": "May be used in place of OpenSSL for signing strings or for token management. Please require version ^2." 212 | }, 213 | "type": "library", 214 | "autoload": { 215 | "psr-4": { 216 | "Google\\Auth\\": "src" 217 | } 218 | }, 219 | "notification-url": "https://packagist.org/downloads/", 220 | "license": [ 221 | "Apache-2.0" 222 | ], 223 | "description": "Google Auth Library for PHP", 224 | "homepage": "http://github.com/google/google-auth-library-php", 225 | "keywords": [ 226 | "Authentication", 227 | "google", 228 | "oauth2" 229 | ], 230 | "support": { 231 | "docs": "https://googleapis.github.io/google-auth-library-php/master/", 232 | "issues": "https://github.com/googleapis/google-auth-library-php/issues", 233 | "source": "https://github.com/googleapis/google-auth-library-php/tree/v1.18.0" 234 | }, 235 | "time": "2021-08-24T18:03:18+00:00" 236 | }, 237 | { 238 | "name": "guzzlehttp/guzzle", 239 | "version": "7.4.2", 240 | "source": { 241 | "type": "git", 242 | "url": "https://github.com/guzzle/guzzle.git", 243 | "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4" 244 | }, 245 | "dist": { 246 | "type": "zip", 247 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ac1ec1cd9b5624694c3a40be801d94137afb12b4", 248 | "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4", 249 | "shasum": "" 250 | }, 251 | "require": { 252 | "ext-json": "*", 253 | "guzzlehttp/promises": "^1.5", 254 | "guzzlehttp/psr7": "^1.8.3 || ^2.1", 255 | "php": "^7.2.5 || ^8.0", 256 | "psr/http-client": "^1.0", 257 | "symfony/deprecation-contracts": "^2.2 || ^3.0" 258 | }, 259 | "provide": { 260 | "psr/http-client-implementation": "1.0" 261 | }, 262 | "require-dev": { 263 | "bamarni/composer-bin-plugin": "^1.4.1", 264 | "ext-curl": "*", 265 | "php-http/client-integration-tests": "^3.0", 266 | "phpunit/phpunit": "^8.5.5 || ^9.3.5", 267 | "psr/log": "^1.1 || ^2.0 || ^3.0" 268 | }, 269 | "suggest": { 270 | "ext-curl": "Required for CURL handler support", 271 | "ext-intl": "Required for Internationalized Domain Name (IDN) support", 272 | "psr/log": "Required for using the Log middleware" 273 | }, 274 | "type": "library", 275 | "extra": { 276 | "branch-alias": { 277 | "dev-master": "7.4-dev" 278 | } 279 | }, 280 | "autoload": { 281 | "files": [ 282 | "src/functions_include.php" 283 | ], 284 | "psr-4": { 285 | "GuzzleHttp\\": "src/" 286 | } 287 | }, 288 | "notification-url": "https://packagist.org/downloads/", 289 | "license": [ 290 | "MIT" 291 | ], 292 | "authors": [ 293 | { 294 | "name": "Graham Campbell", 295 | "email": "hello@gjcampbell.co.uk", 296 | "homepage": "https://github.com/GrahamCampbell" 297 | }, 298 | { 299 | "name": "Michael Dowling", 300 | "email": "mtdowling@gmail.com", 301 | "homepage": "https://github.com/mtdowling" 302 | }, 303 | { 304 | "name": "Jeremy Lindblom", 305 | "email": "jeremeamia@gmail.com", 306 | "homepage": "https://github.com/jeremeamia" 307 | }, 308 | { 309 | "name": "George Mponos", 310 | "email": "gmponos@gmail.com", 311 | "homepage": "https://github.com/gmponos" 312 | }, 313 | { 314 | "name": "Tobias Nyholm", 315 | "email": "tobias.nyholm@gmail.com", 316 | "homepage": "https://github.com/Nyholm" 317 | }, 318 | { 319 | "name": "Márk Sági-Kazár", 320 | "email": "mark.sagikazar@gmail.com", 321 | "homepage": "https://github.com/sagikazarmark" 322 | }, 323 | { 324 | "name": "Tobias Schultze", 325 | "email": "webmaster@tubo-world.de", 326 | "homepage": "https://github.com/Tobion" 327 | } 328 | ], 329 | "description": "Guzzle is a PHP HTTP client library", 330 | "keywords": [ 331 | "client", 332 | "curl", 333 | "framework", 334 | "http", 335 | "http client", 336 | "psr-18", 337 | "psr-7", 338 | "rest", 339 | "web service" 340 | ], 341 | "support": { 342 | "issues": "https://github.com/guzzle/guzzle/issues", 343 | "source": "https://github.com/guzzle/guzzle/tree/7.4.2" 344 | }, 345 | "funding": [ 346 | { 347 | "url": "https://github.com/GrahamCampbell", 348 | "type": "github" 349 | }, 350 | { 351 | "url": "https://github.com/Nyholm", 352 | "type": "github" 353 | }, 354 | { 355 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", 356 | "type": "tidelift" 357 | } 358 | ], 359 | "time": "2022-03-20T14:16:28+00:00" 360 | }, 361 | { 362 | "name": "guzzlehttp/promises", 363 | "version": "1.5.1", 364 | "source": { 365 | "type": "git", 366 | "url": "https://github.com/guzzle/promises.git", 367 | "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" 368 | }, 369 | "dist": { 370 | "type": "zip", 371 | "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", 372 | "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", 373 | "shasum": "" 374 | }, 375 | "require": { 376 | "php": ">=5.5" 377 | }, 378 | "require-dev": { 379 | "symfony/phpunit-bridge": "^4.4 || ^5.1" 380 | }, 381 | "type": "library", 382 | "extra": { 383 | "branch-alias": { 384 | "dev-master": "1.5-dev" 385 | } 386 | }, 387 | "autoload": { 388 | "files": [ 389 | "src/functions_include.php" 390 | ], 391 | "psr-4": { 392 | "GuzzleHttp\\Promise\\": "src/" 393 | } 394 | }, 395 | "notification-url": "https://packagist.org/downloads/", 396 | "license": [ 397 | "MIT" 398 | ], 399 | "authors": [ 400 | { 401 | "name": "Graham Campbell", 402 | "email": "hello@gjcampbell.co.uk", 403 | "homepage": "https://github.com/GrahamCampbell" 404 | }, 405 | { 406 | "name": "Michael Dowling", 407 | "email": "mtdowling@gmail.com", 408 | "homepage": "https://github.com/mtdowling" 409 | }, 410 | { 411 | "name": "Tobias Nyholm", 412 | "email": "tobias.nyholm@gmail.com", 413 | "homepage": "https://github.com/Nyholm" 414 | }, 415 | { 416 | "name": "Tobias Schultze", 417 | "email": "webmaster@tubo-world.de", 418 | "homepage": "https://github.com/Tobion" 419 | } 420 | ], 421 | "description": "Guzzle promises library", 422 | "keywords": [ 423 | "promise" 424 | ], 425 | "support": { 426 | "issues": "https://github.com/guzzle/promises/issues", 427 | "source": "https://github.com/guzzle/promises/tree/1.5.1" 428 | }, 429 | "funding": [ 430 | { 431 | "url": "https://github.com/GrahamCampbell", 432 | "type": "github" 433 | }, 434 | { 435 | "url": "https://github.com/Nyholm", 436 | "type": "github" 437 | }, 438 | { 439 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", 440 | "type": "tidelift" 441 | } 442 | ], 443 | "time": "2021-10-22T20:56:57+00:00" 444 | }, 445 | { 446 | "name": "guzzlehttp/psr7", 447 | "version": "2.2.1", 448 | "source": { 449 | "type": "git", 450 | "url": "https://github.com/guzzle/psr7.git", 451 | "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2" 452 | }, 453 | "dist": { 454 | "type": "zip", 455 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2", 456 | "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2", 457 | "shasum": "" 458 | }, 459 | "require": { 460 | "php": "^7.2.5 || ^8.0", 461 | "psr/http-factory": "^1.0", 462 | "psr/http-message": "^1.0", 463 | "ralouphie/getallheaders": "^3.0" 464 | }, 465 | "provide": { 466 | "psr/http-factory-implementation": "1.0", 467 | "psr/http-message-implementation": "1.0" 468 | }, 469 | "require-dev": { 470 | "bamarni/composer-bin-plugin": "^1.4.1", 471 | "http-interop/http-factory-tests": "^0.9", 472 | "phpunit/phpunit": "^8.5.8 || ^9.3.10" 473 | }, 474 | "suggest": { 475 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" 476 | }, 477 | "type": "library", 478 | "extra": { 479 | "branch-alias": { 480 | "dev-master": "2.2-dev" 481 | } 482 | }, 483 | "autoload": { 484 | "psr-4": { 485 | "GuzzleHttp\\Psr7\\": "src/" 486 | } 487 | }, 488 | "notification-url": "https://packagist.org/downloads/", 489 | "license": [ 490 | "MIT" 491 | ], 492 | "authors": [ 493 | { 494 | "name": "Graham Campbell", 495 | "email": "hello@gjcampbell.co.uk", 496 | "homepage": "https://github.com/GrahamCampbell" 497 | }, 498 | { 499 | "name": "Michael Dowling", 500 | "email": "mtdowling@gmail.com", 501 | "homepage": "https://github.com/mtdowling" 502 | }, 503 | { 504 | "name": "George Mponos", 505 | "email": "gmponos@gmail.com", 506 | "homepage": "https://github.com/gmponos" 507 | }, 508 | { 509 | "name": "Tobias Nyholm", 510 | "email": "tobias.nyholm@gmail.com", 511 | "homepage": "https://github.com/Nyholm" 512 | }, 513 | { 514 | "name": "Márk Sági-Kazár", 515 | "email": "mark.sagikazar@gmail.com", 516 | "homepage": "https://github.com/sagikazarmark" 517 | }, 518 | { 519 | "name": "Tobias Schultze", 520 | "email": "webmaster@tubo-world.de", 521 | "homepage": "https://github.com/Tobion" 522 | }, 523 | { 524 | "name": "Márk Sági-Kazár", 525 | "email": "mark.sagikazar@gmail.com", 526 | "homepage": "https://sagikazarmark.hu" 527 | } 528 | ], 529 | "description": "PSR-7 message implementation that also provides common utility methods", 530 | "keywords": [ 531 | "http", 532 | "message", 533 | "psr-7", 534 | "request", 535 | "response", 536 | "stream", 537 | "uri", 538 | "url" 539 | ], 540 | "support": { 541 | "issues": "https://github.com/guzzle/psr7/issues", 542 | "source": "https://github.com/guzzle/psr7/tree/2.2.1" 543 | }, 544 | "funding": [ 545 | { 546 | "url": "https://github.com/GrahamCampbell", 547 | "type": "github" 548 | }, 549 | { 550 | "url": "https://github.com/Nyholm", 551 | "type": "github" 552 | }, 553 | { 554 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", 555 | "type": "tidelift" 556 | } 557 | ], 558 | "time": "2022-03-20T21:55:58+00:00" 559 | }, 560 | { 561 | "name": "monolog/monolog", 562 | "version": "2.4.0", 563 | "source": { 564 | "type": "git", 565 | "url": "https://github.com/Seldaek/monolog.git", 566 | "reference": "d7fd7450628561ba697b7097d86db72662f54aef" 567 | }, 568 | "dist": { 569 | "type": "zip", 570 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/d7fd7450628561ba697b7097d86db72662f54aef", 571 | "reference": "d7fd7450628561ba697b7097d86db72662f54aef", 572 | "shasum": "" 573 | }, 574 | "require": { 575 | "php": ">=7.2", 576 | "psr/log": "^1.0.1 || ^2.0 || ^3.0" 577 | }, 578 | "provide": { 579 | "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" 580 | }, 581 | "require-dev": { 582 | "aws/aws-sdk-php": "^2.4.9 || ^3.0", 583 | "doctrine/couchdb": "~1.0@dev", 584 | "elasticsearch/elasticsearch": "^7", 585 | "graylog2/gelf-php": "^1.4.2", 586 | "mongodb/mongodb": "^1.8", 587 | "php-amqplib/php-amqplib": "~2.4 || ^3", 588 | "php-console/php-console": "^3.1.3", 589 | "phpspec/prophecy": "^1.6.1", 590 | "phpstan/phpstan": "^0.12.91", 591 | "phpunit/phpunit": "^8.5", 592 | "predis/predis": "^1.1", 593 | "rollbar/rollbar": "^1.3 || ^2 || ^3", 594 | "ruflin/elastica": ">=0.90@dev", 595 | "swiftmailer/swiftmailer": "^5.3|^6.0" 596 | }, 597 | "suggest": { 598 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 599 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 600 | "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", 601 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 602 | "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", 603 | "ext-mbstring": "Allow to work properly with unicode symbols", 604 | "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", 605 | "ext-openssl": "Required to send log messages using SSL", 606 | "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", 607 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 608 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", 609 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", 610 | "php-console/php-console": "Allow sending log messages to Google Chrome", 611 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 612 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server" 613 | }, 614 | "type": "library", 615 | "extra": { 616 | "branch-alias": { 617 | "dev-main": "2.x-dev" 618 | } 619 | }, 620 | "autoload": { 621 | "psr-4": { 622 | "Monolog\\": "src/Monolog" 623 | } 624 | }, 625 | "notification-url": "https://packagist.org/downloads/", 626 | "license": [ 627 | "MIT" 628 | ], 629 | "authors": [ 630 | { 631 | "name": "Jordi Boggiano", 632 | "email": "j.boggiano@seld.be", 633 | "homepage": "https://seld.be" 634 | } 635 | ], 636 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 637 | "homepage": "https://github.com/Seldaek/monolog", 638 | "keywords": [ 639 | "log", 640 | "logging", 641 | "psr-3" 642 | ], 643 | "support": { 644 | "issues": "https://github.com/Seldaek/monolog/issues", 645 | "source": "https://github.com/Seldaek/monolog/tree/2.4.0" 646 | }, 647 | "funding": [ 648 | { 649 | "url": "https://github.com/Seldaek", 650 | "type": "github" 651 | }, 652 | { 653 | "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", 654 | "type": "tidelift" 655 | } 656 | ], 657 | "time": "2022-03-14T12:44:37+00:00" 658 | }, 659 | { 660 | "name": "paragonie/constant_time_encoding", 661 | "version": "v2.5.0", 662 | "source": { 663 | "type": "git", 664 | "url": "https://github.com/paragonie/constant_time_encoding.git", 665 | "reference": "9229e15f2e6ba772f0c55dd6986c563b937170a8" 666 | }, 667 | "dist": { 668 | "type": "zip", 669 | "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/9229e15f2e6ba772f0c55dd6986c563b937170a8", 670 | "reference": "9229e15f2e6ba772f0c55dd6986c563b937170a8", 671 | "shasum": "" 672 | }, 673 | "require": { 674 | "php": "^7|^8" 675 | }, 676 | "require-dev": { 677 | "phpunit/phpunit": "^6|^7|^8|^9", 678 | "vimeo/psalm": "^1|^2|^3|^4" 679 | }, 680 | "type": "library", 681 | "autoload": { 682 | "psr-4": { 683 | "ParagonIE\\ConstantTime\\": "src/" 684 | } 685 | }, 686 | "notification-url": "https://packagist.org/downloads/", 687 | "license": [ 688 | "MIT" 689 | ], 690 | "authors": [ 691 | { 692 | "name": "Paragon Initiative Enterprises", 693 | "email": "security@paragonie.com", 694 | "homepage": "https://paragonie.com", 695 | "role": "Maintainer" 696 | }, 697 | { 698 | "name": "Steve 'Sc00bz' Thomas", 699 | "email": "steve@tobtu.com", 700 | "homepage": "https://www.tobtu.com", 701 | "role": "Original Developer" 702 | } 703 | ], 704 | "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", 705 | "keywords": [ 706 | "base16", 707 | "base32", 708 | "base32_decode", 709 | "base32_encode", 710 | "base64", 711 | "base64_decode", 712 | "base64_encode", 713 | "bin2hex", 714 | "encoding", 715 | "hex", 716 | "hex2bin", 717 | "rfc4648" 718 | ], 719 | "support": { 720 | "email": "info@paragonie.com", 721 | "issues": "https://github.com/paragonie/constant_time_encoding/issues", 722 | "source": "https://github.com/paragonie/constant_time_encoding" 723 | }, 724 | "time": "2022-01-17T05:32:27+00:00" 725 | }, 726 | { 727 | "name": "paragonie/random_compat", 728 | "version": "v9.99.100", 729 | "source": { 730 | "type": "git", 731 | "url": "https://github.com/paragonie/random_compat.git", 732 | "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" 733 | }, 734 | "dist": { 735 | "type": "zip", 736 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", 737 | "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", 738 | "shasum": "" 739 | }, 740 | "require": { 741 | "php": ">= 7" 742 | }, 743 | "require-dev": { 744 | "phpunit/phpunit": "4.*|5.*", 745 | "vimeo/psalm": "^1" 746 | }, 747 | "suggest": { 748 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 749 | }, 750 | "type": "library", 751 | "notification-url": "https://packagist.org/downloads/", 752 | "license": [ 753 | "MIT" 754 | ], 755 | "authors": [ 756 | { 757 | "name": "Paragon Initiative Enterprises", 758 | "email": "security@paragonie.com", 759 | "homepage": "https://paragonie.com" 760 | } 761 | ], 762 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 763 | "keywords": [ 764 | "csprng", 765 | "polyfill", 766 | "pseudorandom", 767 | "random" 768 | ], 769 | "support": { 770 | "email": "info@paragonie.com", 771 | "issues": "https://github.com/paragonie/random_compat/issues", 772 | "source": "https://github.com/paragonie/random_compat" 773 | }, 774 | "time": "2020-10-15T08:29:30+00:00" 775 | }, 776 | { 777 | "name": "phpseclib/phpseclib", 778 | "version": "3.0.13", 779 | "source": { 780 | "type": "git", 781 | "url": "https://github.com/phpseclib/phpseclib.git", 782 | "reference": "1443ab79364eea48665fa8c09ac67f37d1025f7e" 783 | }, 784 | "dist": { 785 | "type": "zip", 786 | "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/1443ab79364eea48665fa8c09ac67f37d1025f7e", 787 | "reference": "1443ab79364eea48665fa8c09ac67f37d1025f7e", 788 | "shasum": "" 789 | }, 790 | "require": { 791 | "paragonie/constant_time_encoding": "^1|^2", 792 | "paragonie/random_compat": "^1.4|^2.0|^9.99.99", 793 | "php": ">=5.6.1" 794 | }, 795 | "require-dev": { 796 | "phing/phing": "~2.7", 797 | "phpunit/phpunit": "^5.7|^6.0|^9.4", 798 | "squizlabs/php_codesniffer": "~2.0" 799 | }, 800 | "suggest": { 801 | "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", 802 | "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", 803 | "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", 804 | "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." 805 | }, 806 | "type": "library", 807 | "autoload": { 808 | "files": [ 809 | "phpseclib/bootstrap.php" 810 | ], 811 | "psr-4": { 812 | "phpseclib3\\": "phpseclib/" 813 | } 814 | }, 815 | "notification-url": "https://packagist.org/downloads/", 816 | "license": [ 817 | "MIT" 818 | ], 819 | "authors": [ 820 | { 821 | "name": "Jim Wigginton", 822 | "email": "terrafrost@php.net", 823 | "role": "Lead Developer" 824 | }, 825 | { 826 | "name": "Patrick Monnerat", 827 | "email": "pm@datasphere.ch", 828 | "role": "Developer" 829 | }, 830 | { 831 | "name": "Andreas Fischer", 832 | "email": "bantu@phpbb.com", 833 | "role": "Developer" 834 | }, 835 | { 836 | "name": "Hans-Jürgen Petrich", 837 | "email": "petrich@tronic-media.com", 838 | "role": "Developer" 839 | }, 840 | { 841 | "name": "Graham Campbell", 842 | "email": "graham@alt-three.com", 843 | "role": "Developer" 844 | } 845 | ], 846 | "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", 847 | "homepage": "http://phpseclib.sourceforge.net", 848 | "keywords": [ 849 | "BigInteger", 850 | "aes", 851 | "asn.1", 852 | "asn1", 853 | "blowfish", 854 | "crypto", 855 | "cryptography", 856 | "encryption", 857 | "rsa", 858 | "security", 859 | "sftp", 860 | "signature", 861 | "signing", 862 | "ssh", 863 | "twofish", 864 | "x.509", 865 | "x509" 866 | ], 867 | "support": { 868 | "issues": "https://github.com/phpseclib/phpseclib/issues", 869 | "source": "https://github.com/phpseclib/phpseclib/tree/3.0.13" 870 | }, 871 | "funding": [ 872 | { 873 | "url": "https://github.com/terrafrost", 874 | "type": "github" 875 | }, 876 | { 877 | "url": "https://www.patreon.com/phpseclib", 878 | "type": "patreon" 879 | }, 880 | { 881 | "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", 882 | "type": "tidelift" 883 | } 884 | ], 885 | "time": "2022-01-30T08:50:05+00:00" 886 | }, 887 | { 888 | "name": "psr/cache", 889 | "version": "2.0.0", 890 | "source": { 891 | "type": "git", 892 | "url": "https://github.com/php-fig/cache.git", 893 | "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" 894 | }, 895 | "dist": { 896 | "type": "zip", 897 | "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", 898 | "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", 899 | "shasum": "" 900 | }, 901 | "require": { 902 | "php": ">=8.0.0" 903 | }, 904 | "type": "library", 905 | "extra": { 906 | "branch-alias": { 907 | "dev-master": "1.0.x-dev" 908 | } 909 | }, 910 | "autoload": { 911 | "psr-4": { 912 | "Psr\\Cache\\": "src/" 913 | } 914 | }, 915 | "notification-url": "https://packagist.org/downloads/", 916 | "license": [ 917 | "MIT" 918 | ], 919 | "authors": [ 920 | { 921 | "name": "PHP-FIG", 922 | "homepage": "https://www.php-fig.org/" 923 | } 924 | ], 925 | "description": "Common interface for caching libraries", 926 | "keywords": [ 927 | "cache", 928 | "psr", 929 | "psr-6" 930 | ], 931 | "support": { 932 | "source": "https://github.com/php-fig/cache/tree/2.0.0" 933 | }, 934 | "time": "2021-02-03T23:23:37+00:00" 935 | }, 936 | { 937 | "name": "psr/container", 938 | "version": "2.0.2", 939 | "source": { 940 | "type": "git", 941 | "url": "https://github.com/php-fig/container.git", 942 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 943 | }, 944 | "dist": { 945 | "type": "zip", 946 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 947 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 948 | "shasum": "" 949 | }, 950 | "require": { 951 | "php": ">=7.4.0" 952 | }, 953 | "type": "library", 954 | "extra": { 955 | "branch-alias": { 956 | "dev-master": "2.0.x-dev" 957 | } 958 | }, 959 | "autoload": { 960 | "psr-4": { 961 | "Psr\\Container\\": "src/" 962 | } 963 | }, 964 | "notification-url": "https://packagist.org/downloads/", 965 | "license": [ 966 | "MIT" 967 | ], 968 | "authors": [ 969 | { 970 | "name": "PHP-FIG", 971 | "homepage": "https://www.php-fig.org/" 972 | } 973 | ], 974 | "description": "Common Container Interface (PHP FIG PSR-11)", 975 | "homepage": "https://github.com/php-fig/container", 976 | "keywords": [ 977 | "PSR-11", 978 | "container", 979 | "container-interface", 980 | "container-interop", 981 | "psr" 982 | ], 983 | "support": { 984 | "issues": "https://github.com/php-fig/container/issues", 985 | "source": "https://github.com/php-fig/container/tree/2.0.2" 986 | }, 987 | "time": "2021-11-05T16:47:00+00:00" 988 | }, 989 | { 990 | "name": "psr/event-dispatcher", 991 | "version": "1.0.0", 992 | "source": { 993 | "type": "git", 994 | "url": "https://github.com/php-fig/event-dispatcher.git", 995 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 996 | }, 997 | "dist": { 998 | "type": "zip", 999 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 1000 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 1001 | "shasum": "" 1002 | }, 1003 | "require": { 1004 | "php": ">=7.2.0" 1005 | }, 1006 | "type": "library", 1007 | "extra": { 1008 | "branch-alias": { 1009 | "dev-master": "1.0.x-dev" 1010 | } 1011 | }, 1012 | "autoload": { 1013 | "psr-4": { 1014 | "Psr\\EventDispatcher\\": "src/" 1015 | } 1016 | }, 1017 | "notification-url": "https://packagist.org/downloads/", 1018 | "license": [ 1019 | "MIT" 1020 | ], 1021 | "authors": [ 1022 | { 1023 | "name": "PHP-FIG", 1024 | "homepage": "http://www.php-fig.org/" 1025 | } 1026 | ], 1027 | "description": "Standard interfaces for event handling.", 1028 | "keywords": [ 1029 | "events", 1030 | "psr", 1031 | "psr-14" 1032 | ], 1033 | "support": { 1034 | "issues": "https://github.com/php-fig/event-dispatcher/issues", 1035 | "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" 1036 | }, 1037 | "time": "2019-01-08T18:20:26+00:00" 1038 | }, 1039 | { 1040 | "name": "psr/http-client", 1041 | "version": "1.0.1", 1042 | "source": { 1043 | "type": "git", 1044 | "url": "https://github.com/php-fig/http-client.git", 1045 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" 1046 | }, 1047 | "dist": { 1048 | "type": "zip", 1049 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 1050 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 1051 | "shasum": "" 1052 | }, 1053 | "require": { 1054 | "php": "^7.0 || ^8.0", 1055 | "psr/http-message": "^1.0" 1056 | }, 1057 | "type": "library", 1058 | "extra": { 1059 | "branch-alias": { 1060 | "dev-master": "1.0.x-dev" 1061 | } 1062 | }, 1063 | "autoload": { 1064 | "psr-4": { 1065 | "Psr\\Http\\Client\\": "src/" 1066 | } 1067 | }, 1068 | "notification-url": "https://packagist.org/downloads/", 1069 | "license": [ 1070 | "MIT" 1071 | ], 1072 | "authors": [ 1073 | { 1074 | "name": "PHP-FIG", 1075 | "homepage": "http://www.php-fig.org/" 1076 | } 1077 | ], 1078 | "description": "Common interface for HTTP clients", 1079 | "homepage": "https://github.com/php-fig/http-client", 1080 | "keywords": [ 1081 | "http", 1082 | "http-client", 1083 | "psr", 1084 | "psr-18" 1085 | ], 1086 | "support": { 1087 | "source": "https://github.com/php-fig/http-client/tree/master" 1088 | }, 1089 | "time": "2020-06-29T06:28:15+00:00" 1090 | }, 1091 | { 1092 | "name": "psr/http-factory", 1093 | "version": "1.0.1", 1094 | "source": { 1095 | "type": "git", 1096 | "url": "https://github.com/php-fig/http-factory.git", 1097 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" 1098 | }, 1099 | "dist": { 1100 | "type": "zip", 1101 | "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 1102 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 1103 | "shasum": "" 1104 | }, 1105 | "require": { 1106 | "php": ">=7.0.0", 1107 | "psr/http-message": "^1.0" 1108 | }, 1109 | "type": "library", 1110 | "extra": { 1111 | "branch-alias": { 1112 | "dev-master": "1.0.x-dev" 1113 | } 1114 | }, 1115 | "autoload": { 1116 | "psr-4": { 1117 | "Psr\\Http\\Message\\": "src/" 1118 | } 1119 | }, 1120 | "notification-url": "https://packagist.org/downloads/", 1121 | "license": [ 1122 | "MIT" 1123 | ], 1124 | "authors": [ 1125 | { 1126 | "name": "PHP-FIG", 1127 | "homepage": "http://www.php-fig.org/" 1128 | } 1129 | ], 1130 | "description": "Common interfaces for PSR-7 HTTP message factories", 1131 | "keywords": [ 1132 | "factory", 1133 | "http", 1134 | "message", 1135 | "psr", 1136 | "psr-17", 1137 | "psr-7", 1138 | "request", 1139 | "response" 1140 | ], 1141 | "support": { 1142 | "source": "https://github.com/php-fig/http-factory/tree/master" 1143 | }, 1144 | "time": "2019-04-30T12:38:16+00:00" 1145 | }, 1146 | { 1147 | "name": "psr/http-message", 1148 | "version": "1.0.1", 1149 | "source": { 1150 | "type": "git", 1151 | "url": "https://github.com/php-fig/http-message.git", 1152 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 1153 | }, 1154 | "dist": { 1155 | "type": "zip", 1156 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 1157 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 1158 | "shasum": "" 1159 | }, 1160 | "require": { 1161 | "php": ">=5.3.0" 1162 | }, 1163 | "type": "library", 1164 | "extra": { 1165 | "branch-alias": { 1166 | "dev-master": "1.0.x-dev" 1167 | } 1168 | }, 1169 | "autoload": { 1170 | "psr-4": { 1171 | "Psr\\Http\\Message\\": "src/" 1172 | } 1173 | }, 1174 | "notification-url": "https://packagist.org/downloads/", 1175 | "license": [ 1176 | "MIT" 1177 | ], 1178 | "authors": [ 1179 | { 1180 | "name": "PHP-FIG", 1181 | "homepage": "http://www.php-fig.org/" 1182 | } 1183 | ], 1184 | "description": "Common interface for HTTP messages", 1185 | "homepage": "https://github.com/php-fig/http-message", 1186 | "keywords": [ 1187 | "http", 1188 | "http-message", 1189 | "psr", 1190 | "psr-7", 1191 | "request", 1192 | "response" 1193 | ], 1194 | "support": { 1195 | "source": "https://github.com/php-fig/http-message/tree/master" 1196 | }, 1197 | "time": "2016-08-06T14:39:51+00:00" 1198 | }, 1199 | { 1200 | "name": "psr/log", 1201 | "version": "3.0.0", 1202 | "source": { 1203 | "type": "git", 1204 | "url": "https://github.com/php-fig/log.git", 1205 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" 1206 | }, 1207 | "dist": { 1208 | "type": "zip", 1209 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", 1210 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", 1211 | "shasum": "" 1212 | }, 1213 | "require": { 1214 | "php": ">=8.0.0" 1215 | }, 1216 | "type": "library", 1217 | "extra": { 1218 | "branch-alias": { 1219 | "dev-master": "3.x-dev" 1220 | } 1221 | }, 1222 | "autoload": { 1223 | "psr-4": { 1224 | "Psr\\Log\\": "src" 1225 | } 1226 | }, 1227 | "notification-url": "https://packagist.org/downloads/", 1228 | "license": [ 1229 | "MIT" 1230 | ], 1231 | "authors": [ 1232 | { 1233 | "name": "PHP-FIG", 1234 | "homepage": "https://www.php-fig.org/" 1235 | } 1236 | ], 1237 | "description": "Common interface for logging libraries", 1238 | "homepage": "https://github.com/php-fig/log", 1239 | "keywords": [ 1240 | "log", 1241 | "psr", 1242 | "psr-3" 1243 | ], 1244 | "support": { 1245 | "source": "https://github.com/php-fig/log/tree/3.0.0" 1246 | }, 1247 | "time": "2021-07-14T16:46:02+00:00" 1248 | }, 1249 | { 1250 | "name": "ralouphie/getallheaders", 1251 | "version": "3.0.3", 1252 | "source": { 1253 | "type": "git", 1254 | "url": "https://github.com/ralouphie/getallheaders.git", 1255 | "reference": "120b605dfeb996808c31b6477290a714d356e822" 1256 | }, 1257 | "dist": { 1258 | "type": "zip", 1259 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", 1260 | "reference": "120b605dfeb996808c31b6477290a714d356e822", 1261 | "shasum": "" 1262 | }, 1263 | "require": { 1264 | "php": ">=5.6" 1265 | }, 1266 | "require-dev": { 1267 | "php-coveralls/php-coveralls": "^2.1", 1268 | "phpunit/phpunit": "^5 || ^6.5" 1269 | }, 1270 | "type": "library", 1271 | "autoload": { 1272 | "files": [ 1273 | "src/getallheaders.php" 1274 | ] 1275 | }, 1276 | "notification-url": "https://packagist.org/downloads/", 1277 | "license": [ 1278 | "MIT" 1279 | ], 1280 | "authors": [ 1281 | { 1282 | "name": "Ralph Khattar", 1283 | "email": "ralph.khattar@gmail.com" 1284 | } 1285 | ], 1286 | "description": "A polyfill for getallheaders.", 1287 | "support": { 1288 | "issues": "https://github.com/ralouphie/getallheaders/issues", 1289 | "source": "https://github.com/ralouphie/getallheaders/tree/develop" 1290 | }, 1291 | "time": "2019-03-08T08:55:37+00:00" 1292 | }, 1293 | { 1294 | "name": "symfony/cache", 1295 | "version": "v6.0.6", 1296 | "source": { 1297 | "type": "git", 1298 | "url": "https://github.com/symfony/cache.git", 1299 | "reference": "57faad4e0d694f9961f517fdd5e6fbb1f6d0e04f" 1300 | }, 1301 | "dist": { 1302 | "type": "zip", 1303 | "url": "https://api.github.com/repos/symfony/cache/zipball/57faad4e0d694f9961f517fdd5e6fbb1f6d0e04f", 1304 | "reference": "57faad4e0d694f9961f517fdd5e6fbb1f6d0e04f", 1305 | "shasum": "" 1306 | }, 1307 | "require": { 1308 | "php": ">=8.0.2", 1309 | "psr/cache": "^2.0|^3.0", 1310 | "psr/log": "^1.1|^2|^3", 1311 | "symfony/cache-contracts": "^1.1.7|^2|^3", 1312 | "symfony/service-contracts": "^1.1|^2|^3", 1313 | "symfony/var-exporter": "^5.4|^6.0" 1314 | }, 1315 | "conflict": { 1316 | "doctrine/dbal": "<2.13.1", 1317 | "symfony/dependency-injection": "<5.4", 1318 | "symfony/http-kernel": "<5.4", 1319 | "symfony/var-dumper": "<5.4" 1320 | }, 1321 | "provide": { 1322 | "psr/cache-implementation": "2.0|3.0", 1323 | "psr/simple-cache-implementation": "1.0|2.0|3.0", 1324 | "symfony/cache-implementation": "1.1|2.0|3.0" 1325 | }, 1326 | "require-dev": { 1327 | "cache/integration-tests": "dev-master", 1328 | "doctrine/dbal": "^2.13.1|^3.0", 1329 | "predis/predis": "^1.1", 1330 | "psr/simple-cache": "^1.0|^2.0|^3.0", 1331 | "symfony/config": "^5.4|^6.0", 1332 | "symfony/dependency-injection": "^5.4|^6.0", 1333 | "symfony/filesystem": "^5.4|^6.0", 1334 | "symfony/http-kernel": "^5.4|^6.0", 1335 | "symfony/messenger": "^5.4|^6.0", 1336 | "symfony/var-dumper": "^5.4|^6.0" 1337 | }, 1338 | "type": "library", 1339 | "autoload": { 1340 | "psr-4": { 1341 | "Symfony\\Component\\Cache\\": "" 1342 | }, 1343 | "exclude-from-classmap": [ 1344 | "/Tests/" 1345 | ] 1346 | }, 1347 | "notification-url": "https://packagist.org/downloads/", 1348 | "license": [ 1349 | "MIT" 1350 | ], 1351 | "authors": [ 1352 | { 1353 | "name": "Nicolas Grekas", 1354 | "email": "p@tchwork.com" 1355 | }, 1356 | { 1357 | "name": "Symfony Community", 1358 | "homepage": "https://symfony.com/contributors" 1359 | } 1360 | ], 1361 | "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", 1362 | "homepage": "https://symfony.com", 1363 | "keywords": [ 1364 | "caching", 1365 | "psr6" 1366 | ], 1367 | "support": { 1368 | "source": "https://github.com/symfony/cache/tree/v6.0.6" 1369 | }, 1370 | "funding": [ 1371 | { 1372 | "url": "https://symfony.com/sponsor", 1373 | "type": "custom" 1374 | }, 1375 | { 1376 | "url": "https://github.com/fabpot", 1377 | "type": "github" 1378 | }, 1379 | { 1380 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1381 | "type": "tidelift" 1382 | } 1383 | ], 1384 | "time": "2022-03-02T12:58:14+00:00" 1385 | }, 1386 | { 1387 | "name": "symfony/cache-contracts", 1388 | "version": "v2.5.0", 1389 | "source": { 1390 | "type": "git", 1391 | "url": "https://github.com/symfony/cache-contracts.git", 1392 | "reference": "ac2e168102a2e06a2624f0379bde94cd5854ced2" 1393 | }, 1394 | "dist": { 1395 | "type": "zip", 1396 | "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ac2e168102a2e06a2624f0379bde94cd5854ced2", 1397 | "reference": "ac2e168102a2e06a2624f0379bde94cd5854ced2", 1398 | "shasum": "" 1399 | }, 1400 | "require": { 1401 | "php": ">=7.2.5", 1402 | "psr/cache": "^1.0|^2.0|^3.0" 1403 | }, 1404 | "suggest": { 1405 | "symfony/cache-implementation": "" 1406 | }, 1407 | "type": "library", 1408 | "extra": { 1409 | "branch-alias": { 1410 | "dev-main": "2.5-dev" 1411 | }, 1412 | "thanks": { 1413 | "name": "symfony/contracts", 1414 | "url": "https://github.com/symfony/contracts" 1415 | } 1416 | }, 1417 | "autoload": { 1418 | "psr-4": { 1419 | "Symfony\\Contracts\\Cache\\": "" 1420 | } 1421 | }, 1422 | "notification-url": "https://packagist.org/downloads/", 1423 | "license": [ 1424 | "MIT" 1425 | ], 1426 | "authors": [ 1427 | { 1428 | "name": "Nicolas Grekas", 1429 | "email": "p@tchwork.com" 1430 | }, 1431 | { 1432 | "name": "Symfony Community", 1433 | "homepage": "https://symfony.com/contributors" 1434 | } 1435 | ], 1436 | "description": "Generic abstractions related to caching", 1437 | "homepage": "https://symfony.com", 1438 | "keywords": [ 1439 | "abstractions", 1440 | "contracts", 1441 | "decoupling", 1442 | "interfaces", 1443 | "interoperability", 1444 | "standards" 1445 | ], 1446 | "support": { 1447 | "source": "https://github.com/symfony/cache-contracts/tree/v2.5.0" 1448 | }, 1449 | "funding": [ 1450 | { 1451 | "url": "https://symfony.com/sponsor", 1452 | "type": "custom" 1453 | }, 1454 | { 1455 | "url": "https://github.com/fabpot", 1456 | "type": "github" 1457 | }, 1458 | { 1459 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1460 | "type": "tidelift" 1461 | } 1462 | ], 1463 | "time": "2021-08-17T14:20:01+00:00" 1464 | }, 1465 | { 1466 | "name": "symfony/config", 1467 | "version": "v6.0.3", 1468 | "source": { 1469 | "type": "git", 1470 | "url": "https://github.com/symfony/config.git", 1471 | "reference": "c14f32ae4cd2a3c29d8825c5093463ac08ade7d8" 1472 | }, 1473 | "dist": { 1474 | "type": "zip", 1475 | "url": "https://api.github.com/repos/symfony/config/zipball/c14f32ae4cd2a3c29d8825c5093463ac08ade7d8", 1476 | "reference": "c14f32ae4cd2a3c29d8825c5093463ac08ade7d8", 1477 | "shasum": "" 1478 | }, 1479 | "require": { 1480 | "php": ">=8.0.2", 1481 | "symfony/deprecation-contracts": "^2.1|^3", 1482 | "symfony/filesystem": "^5.4|^6.0", 1483 | "symfony/polyfill-ctype": "~1.8", 1484 | "symfony/polyfill-php81": "^1.22" 1485 | }, 1486 | "conflict": { 1487 | "symfony/finder": "<4.4" 1488 | }, 1489 | "require-dev": { 1490 | "symfony/event-dispatcher": "^5.4|^6.0", 1491 | "symfony/finder": "^5.4|^6.0", 1492 | "symfony/messenger": "^5.4|^6.0", 1493 | "symfony/service-contracts": "^1.1|^2|^3", 1494 | "symfony/yaml": "^5.4|^6.0" 1495 | }, 1496 | "suggest": { 1497 | "symfony/yaml": "To use the yaml reference dumper" 1498 | }, 1499 | "type": "library", 1500 | "autoload": { 1501 | "psr-4": { 1502 | "Symfony\\Component\\Config\\": "" 1503 | }, 1504 | "exclude-from-classmap": [ 1505 | "/Tests/" 1506 | ] 1507 | }, 1508 | "notification-url": "https://packagist.org/downloads/", 1509 | "license": [ 1510 | "MIT" 1511 | ], 1512 | "authors": [ 1513 | { 1514 | "name": "Fabien Potencier", 1515 | "email": "fabien@symfony.com" 1516 | }, 1517 | { 1518 | "name": "Symfony Community", 1519 | "homepage": "https://symfony.com/contributors" 1520 | } 1521 | ], 1522 | "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", 1523 | "homepage": "https://symfony.com", 1524 | "support": { 1525 | "source": "https://github.com/symfony/config/tree/v6.0.3" 1526 | }, 1527 | "funding": [ 1528 | { 1529 | "url": "https://symfony.com/sponsor", 1530 | "type": "custom" 1531 | }, 1532 | { 1533 | "url": "https://github.com/fabpot", 1534 | "type": "github" 1535 | }, 1536 | { 1537 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1538 | "type": "tidelift" 1539 | } 1540 | ], 1541 | "time": "2022-01-03T09:53:43+00:00" 1542 | }, 1543 | { 1544 | "name": "symfony/console", 1545 | "version": "v6.0.5", 1546 | "source": { 1547 | "type": "git", 1548 | "url": "https://github.com/symfony/console.git", 1549 | "reference": "3bebf4108b9e07492a2a4057d207aa5a77d146b1" 1550 | }, 1551 | "dist": { 1552 | "type": "zip", 1553 | "url": "https://api.github.com/repos/symfony/console/zipball/3bebf4108b9e07492a2a4057d207aa5a77d146b1", 1554 | "reference": "3bebf4108b9e07492a2a4057d207aa5a77d146b1", 1555 | "shasum": "" 1556 | }, 1557 | "require": { 1558 | "php": ">=8.0.2", 1559 | "symfony/polyfill-mbstring": "~1.0", 1560 | "symfony/service-contracts": "^1.1|^2|^3", 1561 | "symfony/string": "^5.4|^6.0" 1562 | }, 1563 | "conflict": { 1564 | "symfony/dependency-injection": "<5.4", 1565 | "symfony/dotenv": "<5.4", 1566 | "symfony/event-dispatcher": "<5.4", 1567 | "symfony/lock": "<5.4", 1568 | "symfony/process": "<5.4" 1569 | }, 1570 | "provide": { 1571 | "psr/log-implementation": "1.0|2.0|3.0" 1572 | }, 1573 | "require-dev": { 1574 | "psr/log": "^1|^2|^3", 1575 | "symfony/config": "^5.4|^6.0", 1576 | "symfony/dependency-injection": "^5.4|^6.0", 1577 | "symfony/event-dispatcher": "^5.4|^6.0", 1578 | "symfony/lock": "^5.4|^6.0", 1579 | "symfony/process": "^5.4|^6.0", 1580 | "symfony/var-dumper": "^5.4|^6.0" 1581 | }, 1582 | "suggest": { 1583 | "psr/log": "For using the console logger", 1584 | "symfony/event-dispatcher": "", 1585 | "symfony/lock": "", 1586 | "symfony/process": "" 1587 | }, 1588 | "type": "library", 1589 | "autoload": { 1590 | "psr-4": { 1591 | "Symfony\\Component\\Console\\": "" 1592 | }, 1593 | "exclude-from-classmap": [ 1594 | "/Tests/" 1595 | ] 1596 | }, 1597 | "notification-url": "https://packagist.org/downloads/", 1598 | "license": [ 1599 | "MIT" 1600 | ], 1601 | "authors": [ 1602 | { 1603 | "name": "Fabien Potencier", 1604 | "email": "fabien@symfony.com" 1605 | }, 1606 | { 1607 | "name": "Symfony Community", 1608 | "homepage": "https://symfony.com/contributors" 1609 | } 1610 | ], 1611 | "description": "Eases the creation of beautiful and testable command line interfaces", 1612 | "homepage": "https://symfony.com", 1613 | "keywords": [ 1614 | "cli", 1615 | "command line", 1616 | "console", 1617 | "terminal" 1618 | ], 1619 | "support": { 1620 | "source": "https://github.com/symfony/console/tree/v6.0.5" 1621 | }, 1622 | "funding": [ 1623 | { 1624 | "url": "https://symfony.com/sponsor", 1625 | "type": "custom" 1626 | }, 1627 | { 1628 | "url": "https://github.com/fabpot", 1629 | "type": "github" 1630 | }, 1631 | { 1632 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1633 | "type": "tidelift" 1634 | } 1635 | ], 1636 | "time": "2022-02-25T10:48:52+00:00" 1637 | }, 1638 | { 1639 | "name": "symfony/dependency-injection", 1640 | "version": "v6.0.6", 1641 | "source": { 1642 | "type": "git", 1643 | "url": "https://github.com/symfony/dependency-injection.git", 1644 | "reference": "a296611f599d0b28e7af88798f830f9cb4d1e8e6" 1645 | }, 1646 | "dist": { 1647 | "type": "zip", 1648 | "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a296611f599d0b28e7af88798f830f9cb4d1e8e6", 1649 | "reference": "a296611f599d0b28e7af88798f830f9cb4d1e8e6", 1650 | "shasum": "" 1651 | }, 1652 | "require": { 1653 | "php": ">=8.0.2", 1654 | "psr/container": "^1.1|^2.0", 1655 | "symfony/deprecation-contracts": "^2.1|^3", 1656 | "symfony/polyfill-php81": "^1.22", 1657 | "symfony/service-contracts": "^1.1.6|^2.0|^3.0" 1658 | }, 1659 | "conflict": { 1660 | "ext-psr": "<1.1|>=2", 1661 | "symfony/config": "<5.4", 1662 | "symfony/finder": "<5.4", 1663 | "symfony/proxy-manager-bridge": "<5.4", 1664 | "symfony/yaml": "<5.4" 1665 | }, 1666 | "provide": { 1667 | "psr/container-implementation": "1.1|2.0", 1668 | "symfony/service-implementation": "1.1|2.0|3.0" 1669 | }, 1670 | "require-dev": { 1671 | "symfony/config": "^5.4|^6.0", 1672 | "symfony/expression-language": "^5.4|^6.0", 1673 | "symfony/yaml": "^5.4|^6.0" 1674 | }, 1675 | "suggest": { 1676 | "symfony/config": "", 1677 | "symfony/expression-language": "For using expressions in service container configuration", 1678 | "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", 1679 | "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", 1680 | "symfony/yaml": "" 1681 | }, 1682 | "type": "library", 1683 | "autoload": { 1684 | "psr-4": { 1685 | "Symfony\\Component\\DependencyInjection\\": "" 1686 | }, 1687 | "exclude-from-classmap": [ 1688 | "/Tests/" 1689 | ] 1690 | }, 1691 | "notification-url": "https://packagist.org/downloads/", 1692 | "license": [ 1693 | "MIT" 1694 | ], 1695 | "authors": [ 1696 | { 1697 | "name": "Fabien Potencier", 1698 | "email": "fabien@symfony.com" 1699 | }, 1700 | { 1701 | "name": "Symfony Community", 1702 | "homepage": "https://symfony.com/contributors" 1703 | } 1704 | ], 1705 | "description": "Allows you to standardize and centralize the way objects are constructed in your application", 1706 | "homepage": "https://symfony.com", 1707 | "support": { 1708 | "source": "https://github.com/symfony/dependency-injection/tree/v6.0.6" 1709 | }, 1710 | "funding": [ 1711 | { 1712 | "url": "https://symfony.com/sponsor", 1713 | "type": "custom" 1714 | }, 1715 | { 1716 | "url": "https://github.com/fabpot", 1717 | "type": "github" 1718 | }, 1719 | { 1720 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1721 | "type": "tidelift" 1722 | } 1723 | ], 1724 | "time": "2022-03-02T12:58:14+00:00" 1725 | }, 1726 | { 1727 | "name": "symfony/deprecation-contracts", 1728 | "version": "v3.0.0", 1729 | "source": { 1730 | "type": "git", 1731 | "url": "https://github.com/symfony/deprecation-contracts.git", 1732 | "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" 1733 | }, 1734 | "dist": { 1735 | "type": "zip", 1736 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", 1737 | "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", 1738 | "shasum": "" 1739 | }, 1740 | "require": { 1741 | "php": ">=8.0.2" 1742 | }, 1743 | "type": "library", 1744 | "extra": { 1745 | "branch-alias": { 1746 | "dev-main": "3.0-dev" 1747 | }, 1748 | "thanks": { 1749 | "name": "symfony/contracts", 1750 | "url": "https://github.com/symfony/contracts" 1751 | } 1752 | }, 1753 | "autoload": { 1754 | "files": [ 1755 | "function.php" 1756 | ] 1757 | }, 1758 | "notification-url": "https://packagist.org/downloads/", 1759 | "license": [ 1760 | "MIT" 1761 | ], 1762 | "authors": [ 1763 | { 1764 | "name": "Nicolas Grekas", 1765 | "email": "p@tchwork.com" 1766 | }, 1767 | { 1768 | "name": "Symfony Community", 1769 | "homepage": "https://symfony.com/contributors" 1770 | } 1771 | ], 1772 | "description": "A generic function and convention to trigger deprecation notices", 1773 | "homepage": "https://symfony.com", 1774 | "support": { 1775 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0" 1776 | }, 1777 | "funding": [ 1778 | { 1779 | "url": "https://symfony.com/sponsor", 1780 | "type": "custom" 1781 | }, 1782 | { 1783 | "url": "https://github.com/fabpot", 1784 | "type": "github" 1785 | }, 1786 | { 1787 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1788 | "type": "tidelift" 1789 | } 1790 | ], 1791 | "time": "2021-11-01T23:48:49+00:00" 1792 | }, 1793 | { 1794 | "name": "symfony/dotenv", 1795 | "version": "v6.0.5", 1796 | "source": { 1797 | "type": "git", 1798 | "url": "https://github.com/symfony/dotenv.git", 1799 | "reference": "1c2288fdfd0787288cd04b9868f879f2212159c4" 1800 | }, 1801 | "dist": { 1802 | "type": "zip", 1803 | "url": "https://api.github.com/repos/symfony/dotenv/zipball/1c2288fdfd0787288cd04b9868f879f2212159c4", 1804 | "reference": "1c2288fdfd0787288cd04b9868f879f2212159c4", 1805 | "shasum": "" 1806 | }, 1807 | "require": { 1808 | "php": ">=8.0.2" 1809 | }, 1810 | "require-dev": { 1811 | "symfony/console": "^5.4|^6.0", 1812 | "symfony/process": "^5.4|^6.0" 1813 | }, 1814 | "type": "library", 1815 | "autoload": { 1816 | "psr-4": { 1817 | "Symfony\\Component\\Dotenv\\": "" 1818 | }, 1819 | "exclude-from-classmap": [ 1820 | "/Tests/" 1821 | ] 1822 | }, 1823 | "notification-url": "https://packagist.org/downloads/", 1824 | "license": [ 1825 | "MIT" 1826 | ], 1827 | "authors": [ 1828 | { 1829 | "name": "Fabien Potencier", 1830 | "email": "fabien@symfony.com" 1831 | }, 1832 | { 1833 | "name": "Symfony Community", 1834 | "homepage": "https://symfony.com/contributors" 1835 | } 1836 | ], 1837 | "description": "Registers environment variables from a .env file", 1838 | "homepage": "https://symfony.com", 1839 | "keywords": [ 1840 | "dotenv", 1841 | "env", 1842 | "environment" 1843 | ], 1844 | "support": { 1845 | "source": "https://github.com/symfony/dotenv/tree/v6.0.5" 1846 | }, 1847 | "funding": [ 1848 | { 1849 | "url": "https://symfony.com/sponsor", 1850 | "type": "custom" 1851 | }, 1852 | { 1853 | "url": "https://github.com/fabpot", 1854 | "type": "github" 1855 | }, 1856 | { 1857 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1858 | "type": "tidelift" 1859 | } 1860 | ], 1861 | "time": "2022-02-21T17:15:17+00:00" 1862 | }, 1863 | { 1864 | "name": "symfony/error-handler", 1865 | "version": "v6.0.3", 1866 | "source": { 1867 | "type": "git", 1868 | "url": "https://github.com/symfony/error-handler.git", 1869 | "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b" 1870 | }, 1871 | "dist": { 1872 | "type": "zip", 1873 | "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b", 1874 | "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b", 1875 | "shasum": "" 1876 | }, 1877 | "require": { 1878 | "php": ">=8.0.2", 1879 | "psr/log": "^1|^2|^3", 1880 | "symfony/var-dumper": "^5.4|^6.0" 1881 | }, 1882 | "require-dev": { 1883 | "symfony/deprecation-contracts": "^2.1|^3", 1884 | "symfony/http-kernel": "^5.4|^6.0", 1885 | "symfony/serializer": "^5.4|^6.0" 1886 | }, 1887 | "bin": [ 1888 | "Resources/bin/patch-type-declarations" 1889 | ], 1890 | "type": "library", 1891 | "autoload": { 1892 | "psr-4": { 1893 | "Symfony\\Component\\ErrorHandler\\": "" 1894 | }, 1895 | "exclude-from-classmap": [ 1896 | "/Tests/" 1897 | ] 1898 | }, 1899 | "notification-url": "https://packagist.org/downloads/", 1900 | "license": [ 1901 | "MIT" 1902 | ], 1903 | "authors": [ 1904 | { 1905 | "name": "Fabien Potencier", 1906 | "email": "fabien@symfony.com" 1907 | }, 1908 | { 1909 | "name": "Symfony Community", 1910 | "homepage": "https://symfony.com/contributors" 1911 | } 1912 | ], 1913 | "description": "Provides tools to manage errors and ease debugging PHP code", 1914 | "homepage": "https://symfony.com", 1915 | "support": { 1916 | "source": "https://github.com/symfony/error-handler/tree/v6.0.3" 1917 | }, 1918 | "funding": [ 1919 | { 1920 | "url": "https://symfony.com/sponsor", 1921 | "type": "custom" 1922 | }, 1923 | { 1924 | "url": "https://github.com/fabpot", 1925 | "type": "github" 1926 | }, 1927 | { 1928 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1929 | "type": "tidelift" 1930 | } 1931 | ], 1932 | "time": "2022-01-02T09:55:41+00:00" 1933 | }, 1934 | { 1935 | "name": "symfony/event-dispatcher", 1936 | "version": "v6.0.3", 1937 | "source": { 1938 | "type": "git", 1939 | "url": "https://github.com/symfony/event-dispatcher.git", 1940 | "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" 1941 | }, 1942 | "dist": { 1943 | "type": "zip", 1944 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", 1945 | "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", 1946 | "shasum": "" 1947 | }, 1948 | "require": { 1949 | "php": ">=8.0.2", 1950 | "symfony/event-dispatcher-contracts": "^2|^3" 1951 | }, 1952 | "conflict": { 1953 | "symfony/dependency-injection": "<5.4" 1954 | }, 1955 | "provide": { 1956 | "psr/event-dispatcher-implementation": "1.0", 1957 | "symfony/event-dispatcher-implementation": "2.0|3.0" 1958 | }, 1959 | "require-dev": { 1960 | "psr/log": "^1|^2|^3", 1961 | "symfony/config": "^5.4|^6.0", 1962 | "symfony/dependency-injection": "^5.4|^6.0", 1963 | "symfony/error-handler": "^5.4|^6.0", 1964 | "symfony/expression-language": "^5.4|^6.0", 1965 | "symfony/http-foundation": "^5.4|^6.0", 1966 | "symfony/service-contracts": "^1.1|^2|^3", 1967 | "symfony/stopwatch": "^5.4|^6.0" 1968 | }, 1969 | "suggest": { 1970 | "symfony/dependency-injection": "", 1971 | "symfony/http-kernel": "" 1972 | }, 1973 | "type": "library", 1974 | "autoload": { 1975 | "psr-4": { 1976 | "Symfony\\Component\\EventDispatcher\\": "" 1977 | }, 1978 | "exclude-from-classmap": [ 1979 | "/Tests/" 1980 | ] 1981 | }, 1982 | "notification-url": "https://packagist.org/downloads/", 1983 | "license": [ 1984 | "MIT" 1985 | ], 1986 | "authors": [ 1987 | { 1988 | "name": "Fabien Potencier", 1989 | "email": "fabien@symfony.com" 1990 | }, 1991 | { 1992 | "name": "Symfony Community", 1993 | "homepage": "https://symfony.com/contributors" 1994 | } 1995 | ], 1996 | "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", 1997 | "homepage": "https://symfony.com", 1998 | "support": { 1999 | "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" 2000 | }, 2001 | "funding": [ 2002 | { 2003 | "url": "https://symfony.com/sponsor", 2004 | "type": "custom" 2005 | }, 2006 | { 2007 | "url": "https://github.com/fabpot", 2008 | "type": "github" 2009 | }, 2010 | { 2011 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2012 | "type": "tidelift" 2013 | } 2014 | ], 2015 | "time": "2022-01-02T09:55:41+00:00" 2016 | }, 2017 | { 2018 | "name": "symfony/event-dispatcher-contracts", 2019 | "version": "v3.0.0", 2020 | "source": { 2021 | "type": "git", 2022 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 2023 | "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" 2024 | }, 2025 | "dist": { 2026 | "type": "zip", 2027 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", 2028 | "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", 2029 | "shasum": "" 2030 | }, 2031 | "require": { 2032 | "php": ">=8.0.2", 2033 | "psr/event-dispatcher": "^1" 2034 | }, 2035 | "suggest": { 2036 | "symfony/event-dispatcher-implementation": "" 2037 | }, 2038 | "type": "library", 2039 | "extra": { 2040 | "branch-alias": { 2041 | "dev-main": "3.0-dev" 2042 | }, 2043 | "thanks": { 2044 | "name": "symfony/contracts", 2045 | "url": "https://github.com/symfony/contracts" 2046 | } 2047 | }, 2048 | "autoload": { 2049 | "psr-4": { 2050 | "Symfony\\Contracts\\EventDispatcher\\": "" 2051 | } 2052 | }, 2053 | "notification-url": "https://packagist.org/downloads/", 2054 | "license": [ 2055 | "MIT" 2056 | ], 2057 | "authors": [ 2058 | { 2059 | "name": "Nicolas Grekas", 2060 | "email": "p@tchwork.com" 2061 | }, 2062 | { 2063 | "name": "Symfony Community", 2064 | "homepage": "https://symfony.com/contributors" 2065 | } 2066 | ], 2067 | "description": "Generic abstractions related to dispatching event", 2068 | "homepage": "https://symfony.com", 2069 | "keywords": [ 2070 | "abstractions", 2071 | "contracts", 2072 | "decoupling", 2073 | "interfaces", 2074 | "interoperability", 2075 | "standards" 2076 | ], 2077 | "support": { 2078 | "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.0" 2079 | }, 2080 | "funding": [ 2081 | { 2082 | "url": "https://symfony.com/sponsor", 2083 | "type": "custom" 2084 | }, 2085 | { 2086 | "url": "https://github.com/fabpot", 2087 | "type": "github" 2088 | }, 2089 | { 2090 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2091 | "type": "tidelift" 2092 | } 2093 | ], 2094 | "time": "2021-07-15T12:33:35+00:00" 2095 | }, 2096 | { 2097 | "name": "symfony/filesystem", 2098 | "version": "v6.0.6", 2099 | "source": { 2100 | "type": "git", 2101 | "url": "https://github.com/symfony/filesystem.git", 2102 | "reference": "52b888523545b0b4049ab9ce48766802484d7046" 2103 | }, 2104 | "dist": { 2105 | "type": "zip", 2106 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/52b888523545b0b4049ab9ce48766802484d7046", 2107 | "reference": "52b888523545b0b4049ab9ce48766802484d7046", 2108 | "shasum": "" 2109 | }, 2110 | "require": { 2111 | "php": ">=8.0.2", 2112 | "symfony/polyfill-ctype": "~1.8", 2113 | "symfony/polyfill-mbstring": "~1.8" 2114 | }, 2115 | "type": "library", 2116 | "autoload": { 2117 | "psr-4": { 2118 | "Symfony\\Component\\Filesystem\\": "" 2119 | }, 2120 | "exclude-from-classmap": [ 2121 | "/Tests/" 2122 | ] 2123 | }, 2124 | "notification-url": "https://packagist.org/downloads/", 2125 | "license": [ 2126 | "MIT" 2127 | ], 2128 | "authors": [ 2129 | { 2130 | "name": "Fabien Potencier", 2131 | "email": "fabien@symfony.com" 2132 | }, 2133 | { 2134 | "name": "Symfony Community", 2135 | "homepage": "https://symfony.com/contributors" 2136 | } 2137 | ], 2138 | "description": "Provides basic utilities for the filesystem", 2139 | "homepage": "https://symfony.com", 2140 | "support": { 2141 | "source": "https://github.com/symfony/filesystem/tree/v6.0.6" 2142 | }, 2143 | "funding": [ 2144 | { 2145 | "url": "https://symfony.com/sponsor", 2146 | "type": "custom" 2147 | }, 2148 | { 2149 | "url": "https://github.com/fabpot", 2150 | "type": "github" 2151 | }, 2152 | { 2153 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2154 | "type": "tidelift" 2155 | } 2156 | ], 2157 | "time": "2022-03-02T12:58:14+00:00" 2158 | }, 2159 | { 2160 | "name": "symfony/finder", 2161 | "version": "v6.0.3", 2162 | "source": { 2163 | "type": "git", 2164 | "url": "https://github.com/symfony/finder.git", 2165 | "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430" 2166 | }, 2167 | "dist": { 2168 | "type": "zip", 2169 | "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430", 2170 | "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430", 2171 | "shasum": "" 2172 | }, 2173 | "require": { 2174 | "php": ">=8.0.2" 2175 | }, 2176 | "type": "library", 2177 | "autoload": { 2178 | "psr-4": { 2179 | "Symfony\\Component\\Finder\\": "" 2180 | }, 2181 | "exclude-from-classmap": [ 2182 | "/Tests/" 2183 | ] 2184 | }, 2185 | "notification-url": "https://packagist.org/downloads/", 2186 | "license": [ 2187 | "MIT" 2188 | ], 2189 | "authors": [ 2190 | { 2191 | "name": "Fabien Potencier", 2192 | "email": "fabien@symfony.com" 2193 | }, 2194 | { 2195 | "name": "Symfony Community", 2196 | "homepage": "https://symfony.com/contributors" 2197 | } 2198 | ], 2199 | "description": "Finds files and directories via an intuitive fluent interface", 2200 | "homepage": "https://symfony.com", 2201 | "support": { 2202 | "source": "https://github.com/symfony/finder/tree/v6.0.3" 2203 | }, 2204 | "funding": [ 2205 | { 2206 | "url": "https://symfony.com/sponsor", 2207 | "type": "custom" 2208 | }, 2209 | { 2210 | "url": "https://github.com/fabpot", 2211 | "type": "github" 2212 | }, 2213 | { 2214 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2215 | "type": "tidelift" 2216 | } 2217 | ], 2218 | "time": "2022-01-26T17:23:29+00:00" 2219 | }, 2220 | { 2221 | "name": "symfony/flex", 2222 | "version": "v2.1.6", 2223 | "source": { 2224 | "type": "git", 2225 | "url": "https://github.com/symfony/flex.git", 2226 | "reference": "dd7dafe3bfebf8441e167b76d8a18974585467f3" 2227 | }, 2228 | "dist": { 2229 | "type": "zip", 2230 | "url": "https://api.github.com/repos/symfony/flex/zipball/dd7dafe3bfebf8441e167b76d8a18974585467f3", 2231 | "reference": "dd7dafe3bfebf8441e167b76d8a18974585467f3", 2232 | "shasum": "" 2233 | }, 2234 | "require": { 2235 | "composer-plugin-api": "^2.1", 2236 | "php": ">=8.0" 2237 | }, 2238 | "require-dev": { 2239 | "composer/composer": "^2.1", 2240 | "symfony/dotenv": "^5.4|^6.0", 2241 | "symfony/filesystem": "^5.4|^6.0", 2242 | "symfony/phpunit-bridge": "^5.4|^6.0", 2243 | "symfony/process": "^5.4|^6.0" 2244 | }, 2245 | "type": "composer-plugin", 2246 | "extra": { 2247 | "class": "Symfony\\Flex\\Flex" 2248 | }, 2249 | "autoload": { 2250 | "psr-4": { 2251 | "Symfony\\Flex\\": "src" 2252 | } 2253 | }, 2254 | "notification-url": "https://packagist.org/downloads/", 2255 | "license": [ 2256 | "MIT" 2257 | ], 2258 | "authors": [ 2259 | { 2260 | "name": "Fabien Potencier", 2261 | "email": "fabien.potencier@gmail.com" 2262 | } 2263 | ], 2264 | "description": "Composer plugin for Symfony", 2265 | "support": { 2266 | "issues": "https://github.com/symfony/flex/issues", 2267 | "source": "https://github.com/symfony/flex/tree/v2.1.6" 2268 | }, 2269 | "funding": [ 2270 | { 2271 | "url": "https://symfony.com/sponsor", 2272 | "type": "custom" 2273 | }, 2274 | { 2275 | "url": "https://github.com/fabpot", 2276 | "type": "github" 2277 | }, 2278 | { 2279 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2280 | "type": "tidelift" 2281 | } 2282 | ], 2283 | "time": "2022-02-16T17:31:43+00:00" 2284 | }, 2285 | { 2286 | "name": "symfony/framework-bundle", 2287 | "version": "v6.0.6", 2288 | "source": { 2289 | "type": "git", 2290 | "url": "https://github.com/symfony/framework-bundle.git", 2291 | "reference": "f78efa223a25c711883b873308f2b3c039e92ca6" 2292 | }, 2293 | "dist": { 2294 | "type": "zip", 2295 | "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f78efa223a25c711883b873308f2b3c039e92ca6", 2296 | "reference": "f78efa223a25c711883b873308f2b3c039e92ca6", 2297 | "shasum": "" 2298 | }, 2299 | "require": { 2300 | "composer-runtime-api": ">=2.1", 2301 | "ext-xml": "*", 2302 | "php": ">=8.0.2", 2303 | "symfony/cache": "^5.4|^6.0", 2304 | "symfony/config": "^5.4|^6.0", 2305 | "symfony/dependency-injection": "^5.4.5|^6.0.5", 2306 | "symfony/error-handler": "^5.4|^6.0", 2307 | "symfony/event-dispatcher": "^5.4|^6.0", 2308 | "symfony/filesystem": "^5.4|^6.0", 2309 | "symfony/finder": "^5.4|^6.0", 2310 | "symfony/http-foundation": "^5.4|^6.0", 2311 | "symfony/http-kernel": "^5.4|^6.0", 2312 | "symfony/polyfill-mbstring": "~1.0", 2313 | "symfony/polyfill-php81": "^1.22", 2314 | "symfony/routing": "^5.4|^6.0" 2315 | }, 2316 | "conflict": { 2317 | "doctrine/annotations": "<1.13.1", 2318 | "doctrine/persistence": "<1.3", 2319 | "phpdocumentor/reflection-docblock": "<3.2.2", 2320 | "phpdocumentor/type-resolver": "<1.4.0", 2321 | "phpunit/phpunit": "<5.4.3", 2322 | "symfony/asset": "<5.4", 2323 | "symfony/console": "<5.4", 2324 | "symfony/dom-crawler": "<5.4", 2325 | "symfony/dotenv": "<5.4", 2326 | "symfony/form": "<5.4", 2327 | "symfony/http-client": "<5.4", 2328 | "symfony/lock": "<5.4", 2329 | "symfony/mailer": "<5.4", 2330 | "symfony/messenger": "<5.4", 2331 | "symfony/mime": "<5.4", 2332 | "symfony/property-access": "<5.4", 2333 | "symfony/property-info": "<5.4", 2334 | "symfony/security-core": "<5.4", 2335 | "symfony/security-csrf": "<5.4", 2336 | "symfony/serializer": "<5.4", 2337 | "symfony/stopwatch": "<5.4", 2338 | "symfony/translation": "<5.4", 2339 | "symfony/twig-bridge": "<5.4", 2340 | "symfony/twig-bundle": "<5.4", 2341 | "symfony/validator": "<5.4", 2342 | "symfony/web-profiler-bundle": "<5.4", 2343 | "symfony/workflow": "<5.4" 2344 | }, 2345 | "require-dev": { 2346 | "doctrine/annotations": "^1.13.1", 2347 | "doctrine/persistence": "^1.3|^2.0", 2348 | "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", 2349 | "symfony/asset": "^5.4|^6.0", 2350 | "symfony/browser-kit": "^5.4|^6.0", 2351 | "symfony/console": "^5.4|^6.0", 2352 | "symfony/css-selector": "^5.4|^6.0", 2353 | "symfony/dom-crawler": "^5.4|^6.0", 2354 | "symfony/dotenv": "^5.4|^6.0", 2355 | "symfony/expression-language": "^5.4|^6.0", 2356 | "symfony/form": "^5.4|^6.0", 2357 | "symfony/http-client": "^5.4|^6.0", 2358 | "symfony/lock": "^5.4|^6.0", 2359 | "symfony/mailer": "^5.4|^6.0", 2360 | "symfony/messenger": "^5.4|^6.0", 2361 | "symfony/mime": "^5.4|^6.0", 2362 | "symfony/notifier": "^5.4|^6.0", 2363 | "symfony/phpunit-bridge": "^5.4|^6.0", 2364 | "symfony/polyfill-intl-icu": "~1.0", 2365 | "symfony/process": "^5.4|^6.0", 2366 | "symfony/property-info": "^5.4|^6.0", 2367 | "symfony/rate-limiter": "^5.4|^6.0", 2368 | "symfony/security-bundle": "^5.4|^6.0", 2369 | "symfony/serializer": "^5.4|^6.0", 2370 | "symfony/stopwatch": "^5.4|^6.0", 2371 | "symfony/string": "^5.4|^6.0", 2372 | "symfony/translation": "^5.4|^6.0", 2373 | "symfony/twig-bundle": "^5.4|^6.0", 2374 | "symfony/validator": "^5.4|^6.0", 2375 | "symfony/web-link": "^5.4|^6.0", 2376 | "symfony/workflow": "^5.4|^6.0", 2377 | "symfony/yaml": "^5.4|^6.0", 2378 | "twig/twig": "^2.10|^3.0" 2379 | }, 2380 | "suggest": { 2381 | "ext-apcu": "For best performance of the system caches", 2382 | "symfony/console": "For using the console commands", 2383 | "symfony/form": "For using forms", 2384 | "symfony/property-info": "For using the property_info service", 2385 | "symfony/serializer": "For using the serializer service", 2386 | "symfony/validator": "For using validation", 2387 | "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", 2388 | "symfony/yaml": "For using the debug:config and lint:yaml commands" 2389 | }, 2390 | "type": "symfony-bundle", 2391 | "autoload": { 2392 | "psr-4": { 2393 | "Symfony\\Bundle\\FrameworkBundle\\": "" 2394 | }, 2395 | "exclude-from-classmap": [ 2396 | "/Tests/" 2397 | ] 2398 | }, 2399 | "notification-url": "https://packagist.org/downloads/", 2400 | "license": [ 2401 | "MIT" 2402 | ], 2403 | "authors": [ 2404 | { 2405 | "name": "Fabien Potencier", 2406 | "email": "fabien@symfony.com" 2407 | }, 2408 | { 2409 | "name": "Symfony Community", 2410 | "homepage": "https://symfony.com/contributors" 2411 | } 2412 | ], 2413 | "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", 2414 | "homepage": "https://symfony.com", 2415 | "support": { 2416 | "source": "https://github.com/symfony/framework-bundle/tree/v6.0.6" 2417 | }, 2418 | "funding": [ 2419 | { 2420 | "url": "https://symfony.com/sponsor", 2421 | "type": "custom" 2422 | }, 2423 | { 2424 | "url": "https://github.com/fabpot", 2425 | "type": "github" 2426 | }, 2427 | { 2428 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2429 | "type": "tidelift" 2430 | } 2431 | ], 2432 | "time": "2022-03-05T21:04:00+00:00" 2433 | }, 2434 | { 2435 | "name": "symfony/http-foundation", 2436 | "version": "v6.0.6", 2437 | "source": { 2438 | "type": "git", 2439 | "url": "https://github.com/symfony/http-foundation.git", 2440 | "reference": "a000fcf2298a1bc79a1dcff22608792506534719" 2441 | }, 2442 | "dist": { 2443 | "type": "zip", 2444 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a000fcf2298a1bc79a1dcff22608792506534719", 2445 | "reference": "a000fcf2298a1bc79a1dcff22608792506534719", 2446 | "shasum": "" 2447 | }, 2448 | "require": { 2449 | "php": ">=8.0.2", 2450 | "symfony/deprecation-contracts": "^2.1|^3", 2451 | "symfony/polyfill-mbstring": "~1.1" 2452 | }, 2453 | "require-dev": { 2454 | "predis/predis": "~1.0", 2455 | "symfony/cache": "^5.4|^6.0", 2456 | "symfony/expression-language": "^5.4|^6.0", 2457 | "symfony/mime": "^5.4|^6.0" 2458 | }, 2459 | "suggest": { 2460 | "symfony/mime": "To use the file extension guesser" 2461 | }, 2462 | "type": "library", 2463 | "autoload": { 2464 | "psr-4": { 2465 | "Symfony\\Component\\HttpFoundation\\": "" 2466 | }, 2467 | "exclude-from-classmap": [ 2468 | "/Tests/" 2469 | ] 2470 | }, 2471 | "notification-url": "https://packagist.org/downloads/", 2472 | "license": [ 2473 | "MIT" 2474 | ], 2475 | "authors": [ 2476 | { 2477 | "name": "Fabien Potencier", 2478 | "email": "fabien@symfony.com" 2479 | }, 2480 | { 2481 | "name": "Symfony Community", 2482 | "homepage": "https://symfony.com/contributors" 2483 | } 2484 | ], 2485 | "description": "Defines an object-oriented layer for the HTTP specification", 2486 | "homepage": "https://symfony.com", 2487 | "support": { 2488 | "source": "https://github.com/symfony/http-foundation/tree/v6.0.6" 2489 | }, 2490 | "funding": [ 2491 | { 2492 | "url": "https://symfony.com/sponsor", 2493 | "type": "custom" 2494 | }, 2495 | { 2496 | "url": "https://github.com/fabpot", 2497 | "type": "github" 2498 | }, 2499 | { 2500 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2501 | "type": "tidelift" 2502 | } 2503 | ], 2504 | "time": "2022-03-05T21:04:00+00:00" 2505 | }, 2506 | { 2507 | "name": "symfony/http-kernel", 2508 | "version": "v6.0.6", 2509 | "source": { 2510 | "type": "git", 2511 | "url": "https://github.com/symfony/http-kernel.git", 2512 | "reference": "f9e49ad9fe16895b24cd7a09dc28d3364282e21a" 2513 | }, 2514 | "dist": { 2515 | "type": "zip", 2516 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f9e49ad9fe16895b24cd7a09dc28d3364282e21a", 2517 | "reference": "f9e49ad9fe16895b24cd7a09dc28d3364282e21a", 2518 | "shasum": "" 2519 | }, 2520 | "require": { 2521 | "php": ">=8.0.2", 2522 | "psr/log": "^1|^2|^3", 2523 | "symfony/error-handler": "^5.4|^6.0", 2524 | "symfony/event-dispatcher": "^5.4|^6.0", 2525 | "symfony/http-foundation": "^5.4|^6.0", 2526 | "symfony/polyfill-ctype": "^1.8" 2527 | }, 2528 | "conflict": { 2529 | "symfony/browser-kit": "<5.4", 2530 | "symfony/cache": "<5.4", 2531 | "symfony/config": "<5.4", 2532 | "symfony/console": "<5.4", 2533 | "symfony/dependency-injection": "<5.4", 2534 | "symfony/doctrine-bridge": "<5.4", 2535 | "symfony/form": "<5.4", 2536 | "symfony/http-client": "<5.4", 2537 | "symfony/mailer": "<5.4", 2538 | "symfony/messenger": "<5.4", 2539 | "symfony/translation": "<5.4", 2540 | "symfony/twig-bridge": "<5.4", 2541 | "symfony/validator": "<5.4", 2542 | "twig/twig": "<2.13" 2543 | }, 2544 | "provide": { 2545 | "psr/log-implementation": "1.0|2.0|3.0" 2546 | }, 2547 | "require-dev": { 2548 | "psr/cache": "^1.0|^2.0|^3.0", 2549 | "symfony/browser-kit": "^5.4|^6.0", 2550 | "symfony/config": "^5.4|^6.0", 2551 | "symfony/console": "^5.4|^6.0", 2552 | "symfony/css-selector": "^5.4|^6.0", 2553 | "symfony/dependency-injection": "^5.4|^6.0", 2554 | "symfony/dom-crawler": "^5.4|^6.0", 2555 | "symfony/expression-language": "^5.4|^6.0", 2556 | "symfony/finder": "^5.4|^6.0", 2557 | "symfony/http-client-contracts": "^1.1|^2|^3", 2558 | "symfony/process": "^5.4|^6.0", 2559 | "symfony/routing": "^5.4|^6.0", 2560 | "symfony/stopwatch": "^5.4|^6.0", 2561 | "symfony/translation": "^5.4|^6.0", 2562 | "symfony/translation-contracts": "^1.1|^2|^3", 2563 | "twig/twig": "^2.13|^3.0.4" 2564 | }, 2565 | "suggest": { 2566 | "symfony/browser-kit": "", 2567 | "symfony/config": "", 2568 | "symfony/console": "", 2569 | "symfony/dependency-injection": "" 2570 | }, 2571 | "type": "library", 2572 | "autoload": { 2573 | "psr-4": { 2574 | "Symfony\\Component\\HttpKernel\\": "" 2575 | }, 2576 | "exclude-from-classmap": [ 2577 | "/Tests/" 2578 | ] 2579 | }, 2580 | "notification-url": "https://packagist.org/downloads/", 2581 | "license": [ 2582 | "MIT" 2583 | ], 2584 | "authors": [ 2585 | { 2586 | "name": "Fabien Potencier", 2587 | "email": "fabien@symfony.com" 2588 | }, 2589 | { 2590 | "name": "Symfony Community", 2591 | "homepage": "https://symfony.com/contributors" 2592 | } 2593 | ], 2594 | "description": "Provides a structured process for converting a Request into a Response", 2595 | "homepage": "https://symfony.com", 2596 | "support": { 2597 | "source": "https://github.com/symfony/http-kernel/tree/v6.0.6" 2598 | }, 2599 | "funding": [ 2600 | { 2601 | "url": "https://symfony.com/sponsor", 2602 | "type": "custom" 2603 | }, 2604 | { 2605 | "url": "https://github.com/fabpot", 2606 | "type": "github" 2607 | }, 2608 | { 2609 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2610 | "type": "tidelift" 2611 | } 2612 | ], 2613 | "time": "2022-03-05T21:19:20+00:00" 2614 | }, 2615 | { 2616 | "name": "symfony/polyfill-intl-grapheme", 2617 | "version": "v1.25.0", 2618 | "source": { 2619 | "type": "git", 2620 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 2621 | "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" 2622 | }, 2623 | "dist": { 2624 | "type": "zip", 2625 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", 2626 | "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", 2627 | "shasum": "" 2628 | }, 2629 | "require": { 2630 | "php": ">=7.1" 2631 | }, 2632 | "suggest": { 2633 | "ext-intl": "For best performance" 2634 | }, 2635 | "type": "library", 2636 | "extra": { 2637 | "branch-alias": { 2638 | "dev-main": "1.23-dev" 2639 | }, 2640 | "thanks": { 2641 | "name": "symfony/polyfill", 2642 | "url": "https://github.com/symfony/polyfill" 2643 | } 2644 | }, 2645 | "autoload": { 2646 | "files": [ 2647 | "bootstrap.php" 2648 | ], 2649 | "psr-4": { 2650 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 2651 | } 2652 | }, 2653 | "notification-url": "https://packagist.org/downloads/", 2654 | "license": [ 2655 | "MIT" 2656 | ], 2657 | "authors": [ 2658 | { 2659 | "name": "Nicolas Grekas", 2660 | "email": "p@tchwork.com" 2661 | }, 2662 | { 2663 | "name": "Symfony Community", 2664 | "homepage": "https://symfony.com/contributors" 2665 | } 2666 | ], 2667 | "description": "Symfony polyfill for intl's grapheme_* functions", 2668 | "homepage": "https://symfony.com", 2669 | "keywords": [ 2670 | "compatibility", 2671 | "grapheme", 2672 | "intl", 2673 | "polyfill", 2674 | "portable", 2675 | "shim" 2676 | ], 2677 | "support": { 2678 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" 2679 | }, 2680 | "funding": [ 2681 | { 2682 | "url": "https://symfony.com/sponsor", 2683 | "type": "custom" 2684 | }, 2685 | { 2686 | "url": "https://github.com/fabpot", 2687 | "type": "github" 2688 | }, 2689 | { 2690 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2691 | "type": "tidelift" 2692 | } 2693 | ], 2694 | "time": "2021-11-23T21:10:46+00:00" 2695 | }, 2696 | { 2697 | "name": "symfony/polyfill-intl-normalizer", 2698 | "version": "v1.25.0", 2699 | "source": { 2700 | "type": "git", 2701 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 2702 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" 2703 | }, 2704 | "dist": { 2705 | "type": "zip", 2706 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", 2707 | "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", 2708 | "shasum": "" 2709 | }, 2710 | "require": { 2711 | "php": ">=7.1" 2712 | }, 2713 | "suggest": { 2714 | "ext-intl": "For best performance" 2715 | }, 2716 | "type": "library", 2717 | "extra": { 2718 | "branch-alias": { 2719 | "dev-main": "1.23-dev" 2720 | }, 2721 | "thanks": { 2722 | "name": "symfony/polyfill", 2723 | "url": "https://github.com/symfony/polyfill" 2724 | } 2725 | }, 2726 | "autoload": { 2727 | "files": [ 2728 | "bootstrap.php" 2729 | ], 2730 | "psr-4": { 2731 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 2732 | }, 2733 | "classmap": [ 2734 | "Resources/stubs" 2735 | ] 2736 | }, 2737 | "notification-url": "https://packagist.org/downloads/", 2738 | "license": [ 2739 | "MIT" 2740 | ], 2741 | "authors": [ 2742 | { 2743 | "name": "Nicolas Grekas", 2744 | "email": "p@tchwork.com" 2745 | }, 2746 | { 2747 | "name": "Symfony Community", 2748 | "homepage": "https://symfony.com/contributors" 2749 | } 2750 | ], 2751 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 2752 | "homepage": "https://symfony.com", 2753 | "keywords": [ 2754 | "compatibility", 2755 | "intl", 2756 | "normalizer", 2757 | "polyfill", 2758 | "portable", 2759 | "shim" 2760 | ], 2761 | "support": { 2762 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" 2763 | }, 2764 | "funding": [ 2765 | { 2766 | "url": "https://symfony.com/sponsor", 2767 | "type": "custom" 2768 | }, 2769 | { 2770 | "url": "https://github.com/fabpot", 2771 | "type": "github" 2772 | }, 2773 | { 2774 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2775 | "type": "tidelift" 2776 | } 2777 | ], 2778 | "time": "2021-02-19T12:13:01+00:00" 2779 | }, 2780 | { 2781 | "name": "symfony/polyfill-mbstring", 2782 | "version": "v1.25.0", 2783 | "source": { 2784 | "type": "git", 2785 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2786 | "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" 2787 | }, 2788 | "dist": { 2789 | "type": "zip", 2790 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", 2791 | "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", 2792 | "shasum": "" 2793 | }, 2794 | "require": { 2795 | "php": ">=7.1" 2796 | }, 2797 | "provide": { 2798 | "ext-mbstring": "*" 2799 | }, 2800 | "suggest": { 2801 | "ext-mbstring": "For best performance" 2802 | }, 2803 | "type": "library", 2804 | "extra": { 2805 | "branch-alias": { 2806 | "dev-main": "1.23-dev" 2807 | }, 2808 | "thanks": { 2809 | "name": "symfony/polyfill", 2810 | "url": "https://github.com/symfony/polyfill" 2811 | } 2812 | }, 2813 | "autoload": { 2814 | "files": [ 2815 | "bootstrap.php" 2816 | ], 2817 | "psr-4": { 2818 | "Symfony\\Polyfill\\Mbstring\\": "" 2819 | } 2820 | }, 2821 | "notification-url": "https://packagist.org/downloads/", 2822 | "license": [ 2823 | "MIT" 2824 | ], 2825 | "authors": [ 2826 | { 2827 | "name": "Nicolas Grekas", 2828 | "email": "p@tchwork.com" 2829 | }, 2830 | { 2831 | "name": "Symfony Community", 2832 | "homepage": "https://symfony.com/contributors" 2833 | } 2834 | ], 2835 | "description": "Symfony polyfill for the Mbstring extension", 2836 | "homepage": "https://symfony.com", 2837 | "keywords": [ 2838 | "compatibility", 2839 | "mbstring", 2840 | "polyfill", 2841 | "portable", 2842 | "shim" 2843 | ], 2844 | "support": { 2845 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" 2846 | }, 2847 | "funding": [ 2848 | { 2849 | "url": "https://symfony.com/sponsor", 2850 | "type": "custom" 2851 | }, 2852 | { 2853 | "url": "https://github.com/fabpot", 2854 | "type": "github" 2855 | }, 2856 | { 2857 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2858 | "type": "tidelift" 2859 | } 2860 | ], 2861 | "time": "2021-11-30T18:21:41+00:00" 2862 | }, 2863 | { 2864 | "name": "symfony/polyfill-php81", 2865 | "version": "v1.25.0", 2866 | "source": { 2867 | "type": "git", 2868 | "url": "https://github.com/symfony/polyfill-php81.git", 2869 | "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" 2870 | }, 2871 | "dist": { 2872 | "type": "zip", 2873 | "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", 2874 | "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", 2875 | "shasum": "" 2876 | }, 2877 | "require": { 2878 | "php": ">=7.1" 2879 | }, 2880 | "type": "library", 2881 | "extra": { 2882 | "branch-alias": { 2883 | "dev-main": "1.23-dev" 2884 | }, 2885 | "thanks": { 2886 | "name": "symfony/polyfill", 2887 | "url": "https://github.com/symfony/polyfill" 2888 | } 2889 | }, 2890 | "autoload": { 2891 | "files": [ 2892 | "bootstrap.php" 2893 | ], 2894 | "psr-4": { 2895 | "Symfony\\Polyfill\\Php81\\": "" 2896 | }, 2897 | "classmap": [ 2898 | "Resources/stubs" 2899 | ] 2900 | }, 2901 | "notification-url": "https://packagist.org/downloads/", 2902 | "license": [ 2903 | "MIT" 2904 | ], 2905 | "authors": [ 2906 | { 2907 | "name": "Nicolas Grekas", 2908 | "email": "p@tchwork.com" 2909 | }, 2910 | { 2911 | "name": "Symfony Community", 2912 | "homepage": "https://symfony.com/contributors" 2913 | } 2914 | ], 2915 | "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", 2916 | "homepage": "https://symfony.com", 2917 | "keywords": [ 2918 | "compatibility", 2919 | "polyfill", 2920 | "portable", 2921 | "shim" 2922 | ], 2923 | "support": { 2924 | "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0" 2925 | }, 2926 | "funding": [ 2927 | { 2928 | "url": "https://symfony.com/sponsor", 2929 | "type": "custom" 2930 | }, 2931 | { 2932 | "url": "https://github.com/fabpot", 2933 | "type": "github" 2934 | }, 2935 | { 2936 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2937 | "type": "tidelift" 2938 | } 2939 | ], 2940 | "time": "2021-09-13T13:58:11+00:00" 2941 | }, 2942 | { 2943 | "name": "symfony/routing", 2944 | "version": "v6.0.5", 2945 | "source": { 2946 | "type": "git", 2947 | "url": "https://github.com/symfony/routing.git", 2948 | "reference": "a738b152426ac7fcb94bdab8188264652238bef1" 2949 | }, 2950 | "dist": { 2951 | "type": "zip", 2952 | "url": "https://api.github.com/repos/symfony/routing/zipball/a738b152426ac7fcb94bdab8188264652238bef1", 2953 | "reference": "a738b152426ac7fcb94bdab8188264652238bef1", 2954 | "shasum": "" 2955 | }, 2956 | "require": { 2957 | "php": ">=8.0.2" 2958 | }, 2959 | "conflict": { 2960 | "doctrine/annotations": "<1.12", 2961 | "symfony/config": "<5.4", 2962 | "symfony/dependency-injection": "<5.4", 2963 | "symfony/yaml": "<5.4" 2964 | }, 2965 | "require-dev": { 2966 | "doctrine/annotations": "^1.12", 2967 | "psr/log": "^1|^2|^3", 2968 | "symfony/config": "^5.4|^6.0", 2969 | "symfony/dependency-injection": "^5.4|^6.0", 2970 | "symfony/expression-language": "^5.4|^6.0", 2971 | "symfony/http-foundation": "^5.4|^6.0", 2972 | "symfony/yaml": "^5.4|^6.0" 2973 | }, 2974 | "suggest": { 2975 | "symfony/config": "For using the all-in-one router or any loader", 2976 | "symfony/expression-language": "For using expression matching", 2977 | "symfony/http-foundation": "For using a Symfony Request object", 2978 | "symfony/yaml": "For using the YAML loader" 2979 | }, 2980 | "type": "library", 2981 | "autoload": { 2982 | "psr-4": { 2983 | "Symfony\\Component\\Routing\\": "" 2984 | }, 2985 | "exclude-from-classmap": [ 2986 | "/Tests/" 2987 | ] 2988 | }, 2989 | "notification-url": "https://packagist.org/downloads/", 2990 | "license": [ 2991 | "MIT" 2992 | ], 2993 | "authors": [ 2994 | { 2995 | "name": "Fabien Potencier", 2996 | "email": "fabien@symfony.com" 2997 | }, 2998 | { 2999 | "name": "Symfony Community", 3000 | "homepage": "https://symfony.com/contributors" 3001 | } 3002 | ], 3003 | "description": "Maps an HTTP request to a set of configuration variables", 3004 | "homepage": "https://symfony.com", 3005 | "keywords": [ 3006 | "router", 3007 | "routing", 3008 | "uri", 3009 | "url" 3010 | ], 3011 | "support": { 3012 | "source": "https://github.com/symfony/routing/tree/v6.0.5" 3013 | }, 3014 | "funding": [ 3015 | { 3016 | "url": "https://symfony.com/sponsor", 3017 | "type": "custom" 3018 | }, 3019 | { 3020 | "url": "https://github.com/fabpot", 3021 | "type": "github" 3022 | }, 3023 | { 3024 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3025 | "type": "tidelift" 3026 | } 3027 | ], 3028 | "time": "2022-01-31T19:46:53+00:00" 3029 | }, 3030 | { 3031 | "name": "symfony/runtime", 3032 | "version": "v6.0.5", 3033 | "source": { 3034 | "type": "git", 3035 | "url": "https://github.com/symfony/runtime.git", 3036 | "reference": "af6571d85ab8dfb7cca55ed103172ce7c467b8c0" 3037 | }, 3038 | "dist": { 3039 | "type": "zip", 3040 | "url": "https://api.github.com/repos/symfony/runtime/zipball/af6571d85ab8dfb7cca55ed103172ce7c467b8c0", 3041 | "reference": "af6571d85ab8dfb7cca55ed103172ce7c467b8c0", 3042 | "shasum": "" 3043 | }, 3044 | "require": { 3045 | "composer-plugin-api": "^1.0|^2.0", 3046 | "php": ">=8.0.2" 3047 | }, 3048 | "conflict": { 3049 | "symfony/dotenv": "<5.4" 3050 | }, 3051 | "require-dev": { 3052 | "composer/composer": "^1.0.2|^2.0", 3053 | "symfony/console": "^5.4|^6.0", 3054 | "symfony/dotenv": "^5.4|^6.0", 3055 | "symfony/http-foundation": "^5.4|^6.0", 3056 | "symfony/http-kernel": "^5.4|^6.0" 3057 | }, 3058 | "type": "composer-plugin", 3059 | "extra": { 3060 | "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin" 3061 | }, 3062 | "autoload": { 3063 | "psr-4": { 3064 | "Symfony\\Component\\Runtime\\": "", 3065 | "Symfony\\Runtime\\Symfony\\Component\\": "Internal/" 3066 | }, 3067 | "exclude-from-classmap": [ 3068 | "/Tests/" 3069 | ] 3070 | }, 3071 | "notification-url": "https://packagist.org/downloads/", 3072 | "license": [ 3073 | "MIT" 3074 | ], 3075 | "authors": [ 3076 | { 3077 | "name": "Nicolas Grekas", 3078 | "email": "p@tchwork.com" 3079 | }, 3080 | { 3081 | "name": "Symfony Community", 3082 | "homepage": "https://symfony.com/contributors" 3083 | } 3084 | ], 3085 | "description": "Enables decoupling PHP applications from global state", 3086 | "homepage": "https://symfony.com", 3087 | "support": { 3088 | "source": "https://github.com/symfony/runtime/tree/v6.0.5" 3089 | }, 3090 | "funding": [ 3091 | { 3092 | "url": "https://symfony.com/sponsor", 3093 | "type": "custom" 3094 | }, 3095 | { 3096 | "url": "https://github.com/fabpot", 3097 | "type": "github" 3098 | }, 3099 | { 3100 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3101 | "type": "tidelift" 3102 | } 3103 | ], 3104 | "time": "2022-02-21T17:15:17+00:00" 3105 | }, 3106 | { 3107 | "name": "symfony/service-contracts", 3108 | "version": "v3.0.0", 3109 | "source": { 3110 | "type": "git", 3111 | "url": "https://github.com/symfony/service-contracts.git", 3112 | "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603" 3113 | }, 3114 | "dist": { 3115 | "type": "zip", 3116 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/36715ebf9fb9db73db0cb24263c79077c6fe8603", 3117 | "reference": "36715ebf9fb9db73db0cb24263c79077c6fe8603", 3118 | "shasum": "" 3119 | }, 3120 | "require": { 3121 | "php": ">=8.0.2", 3122 | "psr/container": "^2.0" 3123 | }, 3124 | "conflict": { 3125 | "ext-psr": "<1.1|>=2" 3126 | }, 3127 | "suggest": { 3128 | "symfony/service-implementation": "" 3129 | }, 3130 | "type": "library", 3131 | "extra": { 3132 | "branch-alias": { 3133 | "dev-main": "3.0-dev" 3134 | }, 3135 | "thanks": { 3136 | "name": "symfony/contracts", 3137 | "url": "https://github.com/symfony/contracts" 3138 | } 3139 | }, 3140 | "autoload": { 3141 | "psr-4": { 3142 | "Symfony\\Contracts\\Service\\": "" 3143 | } 3144 | }, 3145 | "notification-url": "https://packagist.org/downloads/", 3146 | "license": [ 3147 | "MIT" 3148 | ], 3149 | "authors": [ 3150 | { 3151 | "name": "Nicolas Grekas", 3152 | "email": "p@tchwork.com" 3153 | }, 3154 | { 3155 | "name": "Symfony Community", 3156 | "homepage": "https://symfony.com/contributors" 3157 | } 3158 | ], 3159 | "description": "Generic abstractions related to writing services", 3160 | "homepage": "https://symfony.com", 3161 | "keywords": [ 3162 | "abstractions", 3163 | "contracts", 3164 | "decoupling", 3165 | "interfaces", 3166 | "interoperability", 3167 | "standards" 3168 | ], 3169 | "support": { 3170 | "source": "https://github.com/symfony/service-contracts/tree/v3.0.0" 3171 | }, 3172 | "funding": [ 3173 | { 3174 | "url": "https://symfony.com/sponsor", 3175 | "type": "custom" 3176 | }, 3177 | { 3178 | "url": "https://github.com/fabpot", 3179 | "type": "github" 3180 | }, 3181 | { 3182 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3183 | "type": "tidelift" 3184 | } 3185 | ], 3186 | "time": "2021-11-04T17:53:12+00:00" 3187 | }, 3188 | { 3189 | "name": "symfony/string", 3190 | "version": "v6.0.3", 3191 | "source": { 3192 | "type": "git", 3193 | "url": "https://github.com/symfony/string.git", 3194 | "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" 3195 | }, 3196 | "dist": { 3197 | "type": "zip", 3198 | "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", 3199 | "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", 3200 | "shasum": "" 3201 | }, 3202 | "require": { 3203 | "php": ">=8.0.2", 3204 | "symfony/polyfill-ctype": "~1.8", 3205 | "symfony/polyfill-intl-grapheme": "~1.0", 3206 | "symfony/polyfill-intl-normalizer": "~1.0", 3207 | "symfony/polyfill-mbstring": "~1.0" 3208 | }, 3209 | "conflict": { 3210 | "symfony/translation-contracts": "<2.0" 3211 | }, 3212 | "require-dev": { 3213 | "symfony/error-handler": "^5.4|^6.0", 3214 | "symfony/http-client": "^5.4|^6.0", 3215 | "symfony/translation-contracts": "^2.0|^3.0", 3216 | "symfony/var-exporter": "^5.4|^6.0" 3217 | }, 3218 | "type": "library", 3219 | "autoload": { 3220 | "files": [ 3221 | "Resources/functions.php" 3222 | ], 3223 | "psr-4": { 3224 | "Symfony\\Component\\String\\": "" 3225 | }, 3226 | "exclude-from-classmap": [ 3227 | "/Tests/" 3228 | ] 3229 | }, 3230 | "notification-url": "https://packagist.org/downloads/", 3231 | "license": [ 3232 | "MIT" 3233 | ], 3234 | "authors": [ 3235 | { 3236 | "name": "Nicolas Grekas", 3237 | "email": "p@tchwork.com" 3238 | }, 3239 | { 3240 | "name": "Symfony Community", 3241 | "homepage": "https://symfony.com/contributors" 3242 | } 3243 | ], 3244 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 3245 | "homepage": "https://symfony.com", 3246 | "keywords": [ 3247 | "grapheme", 3248 | "i18n", 3249 | "string", 3250 | "unicode", 3251 | "utf-8", 3252 | "utf8" 3253 | ], 3254 | "support": { 3255 | "source": "https://github.com/symfony/string/tree/v6.0.3" 3256 | }, 3257 | "funding": [ 3258 | { 3259 | "url": "https://symfony.com/sponsor", 3260 | "type": "custom" 3261 | }, 3262 | { 3263 | "url": "https://github.com/fabpot", 3264 | "type": "github" 3265 | }, 3266 | { 3267 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3268 | "type": "tidelift" 3269 | } 3270 | ], 3271 | "time": "2022-01-02T09:55:41+00:00" 3272 | }, 3273 | { 3274 | "name": "symfony/var-dumper", 3275 | "version": "v6.0.6", 3276 | "source": { 3277 | "type": "git", 3278 | "url": "https://github.com/symfony/var-dumper.git", 3279 | "reference": "38358405ae948963c50a3aae3dfea598223ba15e" 3280 | }, 3281 | "dist": { 3282 | "type": "zip", 3283 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/38358405ae948963c50a3aae3dfea598223ba15e", 3284 | "reference": "38358405ae948963c50a3aae3dfea598223ba15e", 3285 | "shasum": "" 3286 | }, 3287 | "require": { 3288 | "php": ">=8.0.2", 3289 | "symfony/polyfill-mbstring": "~1.0" 3290 | }, 3291 | "conflict": { 3292 | "phpunit/phpunit": "<5.4.3", 3293 | "symfony/console": "<5.4" 3294 | }, 3295 | "require-dev": { 3296 | "ext-iconv": "*", 3297 | "symfony/console": "^5.4|^6.0", 3298 | "symfony/process": "^5.4|^6.0", 3299 | "symfony/uid": "^5.4|^6.0", 3300 | "twig/twig": "^2.13|^3.0.4" 3301 | }, 3302 | "suggest": { 3303 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 3304 | "ext-intl": "To show region name in time zone dump", 3305 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 3306 | }, 3307 | "bin": [ 3308 | "Resources/bin/var-dump-server" 3309 | ], 3310 | "type": "library", 3311 | "autoload": { 3312 | "files": [ 3313 | "Resources/functions/dump.php" 3314 | ], 3315 | "psr-4": { 3316 | "Symfony\\Component\\VarDumper\\": "" 3317 | }, 3318 | "exclude-from-classmap": [ 3319 | "/Tests/" 3320 | ] 3321 | }, 3322 | "notification-url": "https://packagist.org/downloads/", 3323 | "license": [ 3324 | "MIT" 3325 | ], 3326 | "authors": [ 3327 | { 3328 | "name": "Nicolas Grekas", 3329 | "email": "p@tchwork.com" 3330 | }, 3331 | { 3332 | "name": "Symfony Community", 3333 | "homepage": "https://symfony.com/contributors" 3334 | } 3335 | ], 3336 | "description": "Provides mechanisms for walking through any arbitrary PHP variable", 3337 | "homepage": "https://symfony.com", 3338 | "keywords": [ 3339 | "debug", 3340 | "dump" 3341 | ], 3342 | "support": { 3343 | "source": "https://github.com/symfony/var-dumper/tree/v6.0.6" 3344 | }, 3345 | "funding": [ 3346 | { 3347 | "url": "https://symfony.com/sponsor", 3348 | "type": "custom" 3349 | }, 3350 | { 3351 | "url": "https://github.com/fabpot", 3352 | "type": "github" 3353 | }, 3354 | { 3355 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3356 | "type": "tidelift" 3357 | } 3358 | ], 3359 | "time": "2022-03-02T12:58:14+00:00" 3360 | }, 3361 | { 3362 | "name": "symfony/var-exporter", 3363 | "version": "v6.0.6", 3364 | "source": { 3365 | "type": "git", 3366 | "url": "https://github.com/symfony/var-exporter.git", 3367 | "reference": "130229a482abf17635a685590958894dfb4b4360" 3368 | }, 3369 | "dist": { 3370 | "type": "zip", 3371 | "url": "https://api.github.com/repos/symfony/var-exporter/zipball/130229a482abf17635a685590958894dfb4b4360", 3372 | "reference": "130229a482abf17635a685590958894dfb4b4360", 3373 | "shasum": "" 3374 | }, 3375 | "require": { 3376 | "php": ">=8.0.2" 3377 | }, 3378 | "require-dev": { 3379 | "symfony/var-dumper": "^5.4|^6.0" 3380 | }, 3381 | "type": "library", 3382 | "autoload": { 3383 | "psr-4": { 3384 | "Symfony\\Component\\VarExporter\\": "" 3385 | }, 3386 | "exclude-from-classmap": [ 3387 | "/Tests/" 3388 | ] 3389 | }, 3390 | "notification-url": "https://packagist.org/downloads/", 3391 | "license": [ 3392 | "MIT" 3393 | ], 3394 | "authors": [ 3395 | { 3396 | "name": "Nicolas Grekas", 3397 | "email": "p@tchwork.com" 3398 | }, 3399 | { 3400 | "name": "Symfony Community", 3401 | "homepage": "https://symfony.com/contributors" 3402 | } 3403 | ], 3404 | "description": "Allows exporting any serializable PHP data structure to plain PHP code", 3405 | "homepage": "https://symfony.com", 3406 | "keywords": [ 3407 | "clone", 3408 | "construct", 3409 | "export", 3410 | "hydrate", 3411 | "instantiate", 3412 | "serialize" 3413 | ], 3414 | "support": { 3415 | "source": "https://github.com/symfony/var-exporter/tree/v6.0.6" 3416 | }, 3417 | "funding": [ 3418 | { 3419 | "url": "https://symfony.com/sponsor", 3420 | "type": "custom" 3421 | }, 3422 | { 3423 | "url": "https://github.com/fabpot", 3424 | "type": "github" 3425 | }, 3426 | { 3427 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3428 | "type": "tidelift" 3429 | } 3430 | ], 3431 | "time": "2022-03-02T12:58:14+00:00" 3432 | }, 3433 | { 3434 | "name": "symfony/yaml", 3435 | "version": "v6.0.3", 3436 | "source": { 3437 | "type": "git", 3438 | "url": "https://github.com/symfony/yaml.git", 3439 | "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5" 3440 | }, 3441 | "dist": { 3442 | "type": "zip", 3443 | "url": "https://api.github.com/repos/symfony/yaml/zipball/e77f3ea0b21141d771d4a5655faa54f692b34af5", 3444 | "reference": "e77f3ea0b21141d771d4a5655faa54f692b34af5", 3445 | "shasum": "" 3446 | }, 3447 | "require": { 3448 | "php": ">=8.0.2", 3449 | "symfony/polyfill-ctype": "^1.8" 3450 | }, 3451 | "conflict": { 3452 | "symfony/console": "<5.4" 3453 | }, 3454 | "require-dev": { 3455 | "symfony/console": "^5.4|^6.0" 3456 | }, 3457 | "suggest": { 3458 | "symfony/console": "For validating YAML files using the lint command" 3459 | }, 3460 | "bin": [ 3461 | "Resources/bin/yaml-lint" 3462 | ], 3463 | "type": "library", 3464 | "autoload": { 3465 | "psr-4": { 3466 | "Symfony\\Component\\Yaml\\": "" 3467 | }, 3468 | "exclude-from-classmap": [ 3469 | "/Tests/" 3470 | ] 3471 | }, 3472 | "notification-url": "https://packagist.org/downloads/", 3473 | "license": [ 3474 | "MIT" 3475 | ], 3476 | "authors": [ 3477 | { 3478 | "name": "Fabien Potencier", 3479 | "email": "fabien@symfony.com" 3480 | }, 3481 | { 3482 | "name": "Symfony Community", 3483 | "homepage": "https://symfony.com/contributors" 3484 | } 3485 | ], 3486 | "description": "Loads and dumps YAML files", 3487 | "homepage": "https://symfony.com", 3488 | "support": { 3489 | "source": "https://github.com/symfony/yaml/tree/v6.0.3" 3490 | }, 3491 | "funding": [ 3492 | { 3493 | "url": "https://symfony.com/sponsor", 3494 | "type": "custom" 3495 | }, 3496 | { 3497 | "url": "https://github.com/fabpot", 3498 | "type": "github" 3499 | }, 3500 | { 3501 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3502 | "type": "tidelift" 3503 | } 3504 | ], 3505 | "time": "2022-01-26T17:23:29+00:00" 3506 | } 3507 | ], 3508 | "packages-dev": [], 3509 | "aliases": [], 3510 | "minimum-stability": "stable", 3511 | "stability-flags": [], 3512 | "prefer-stable": true, 3513 | "prefer-lowest": false, 3514 | "platform": { 3515 | "php": ">=8.0.2", 3516 | "ext-ctype": "*", 3517 | "ext-iconv": "*" 3518 | }, 3519 | "platform-dev": [], 3520 | "plugin-api-version": "2.2.0" 3521 | } 3522 | -------------------------------------------------------------------------------- /config/bundles.php: -------------------------------------------------------------------------------- 1 | ['all' => true], 5 | ]; 6 | -------------------------------------------------------------------------------- /config/packages/cache.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | cache: 3 | # Unique name of your app: used to compute stable namespaces for cache keys. 4 | #prefix_seed: your_vendor_name/app_name 5 | 6 | # The "app" cache stores to the filesystem by default. 7 | # The data in this cache should persist between deploys. 8 | # Other options include: 9 | 10 | # Redis 11 | #app: cache.adapter.redis 12 | #default_redis_provider: redis://localhost 13 | 14 | # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) 15 | #app: cache.adapter.apcu 16 | 17 | # Namespaced pools use the above "app" backend by default 18 | #pools: 19 | #my.dedicated.cache: null 20 | -------------------------------------------------------------------------------- /config/packages/framework.yaml: -------------------------------------------------------------------------------- 1 | # see https://symfony.com/doc/current/reference/configuration/framework.html 2 | framework: 3 | secret: '%env(APP_SECRET)%' 4 | #csrf_protection: true 5 | http_method_override: false 6 | 7 | # Enables session support. Note that the session will ONLY be started if you read or write from it. 8 | # Remove or comment this section to explicitly disable session support. 9 | session: 10 | handler_id: null 11 | cookie_secure: auto 12 | cookie_samesite: lax 13 | storage_factory_id: session.storage.factory.native 14 | 15 | #esi: true 16 | #fragments: true 17 | php_errors: 18 | log: true 19 | 20 | when@test: 21 | framework: 22 | test: true 23 | session: 24 | storage_factory_id: session.storage.factory.mock_file 25 | -------------------------------------------------------------------------------- /config/packages/google_apiclient.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | Google_Client: 3 | class: Google_Client 4 | calls: 5 | - [setDeveloperKey, ['%env(GOOGLE_API_KEY)%']] 6 | - [setClientId, ['%env(GOOGLE_CLIENT_ID)%']] 7 | - [setClientSecret, ['%env(GOOGLE_CLIENT_SECRET)%']] 8 | -------------------------------------------------------------------------------- /config/packages/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | utf8: true 4 | 5 | # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. 6 | # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands 7 | #default_uri: http://localhost 8 | 9 | when@prod: 10 | framework: 11 | router: 12 | strict_requirements: null 13 | -------------------------------------------------------------------------------- /config/preload.php: -------------------------------------------------------------------------------- 1 | setName('nidup:google-sheets:manipulate-google-sheets') 19 | ->setDescription('Manipulate Google Sheets') 20 | ->addArgument('spreadsheet_id', InputArgument::REQUIRED, 'The spreadsheet id that can be found in the url'); 21 | } 22 | 23 | /** 24 | * @param InputInterface $input 25 | * @param OutputInterface $output 26 | * @return int 27 | * @throws \Google\Exception 28 | */ 29 | protected function execute(InputInterface $input, OutputInterface $output) 30 | { 31 | // the $spreadsheetId can be found in the url https://docs.google.com/spreadsheets/d/143xVs9lPopFSF4eJQWloDYCQ-s7perMaBlaBlaBla/edit 32 | $spreadsheetId = $input->getArgument('spreadsheet_id'); 33 | 34 | // configure the Google Client 35 | $client = new \Google_Client(); 36 | $client->setApplicationName('Google Sheets API'); 37 | $client->setScopes([\Google_Service_Sheets::SPREADSHEETS]); 38 | $client->setAccessType('offline'); 39 | // credentials.json is the key file we downloaded while setting up our Google Sheets API 40 | $path = 'data/credentials.json'; 41 | $client->setAuthConfig($path); 42 | // configure the Sheets Service 43 | $service = new \Google_Service_Sheets($client); 44 | 45 | // get the spreadsheet 46 | if (false) { 47 | $spreadsheet = $service->spreadsheets->get($spreadsheetId); 48 | var_dump($spreadsheet); 49 | exit(); 50 | } 51 | 52 | // get all the rows of a sheet 53 | if (true) { 54 | $range = 'Sheet1'; // here we use the name of the Sheet to get all the rows 55 | $response = $service->spreadsheets_values->get($spreadsheetId, $range); 56 | $values = $response->getValues(); 57 | var_dump($values); 58 | } 59 | 60 | // retrieve the 10 first rows of the sheet 61 | if (false) { 62 | $range = 'Sheet1!A1:F10'; 63 | $response = $service->spreadsheets_values->get($spreadsheetId, $range); 64 | $values = $response->getValues(); 65 | var_dump($values); 66 | } 67 | 68 | // Transform Rows in Associative Array 69 | if (false) { 70 | // Fetch the rows 71 | $range = 'Sheet1'; 72 | $response = $service->spreadsheets_values->get($spreadsheetId, $range); 73 | $rows = $response->getValues(); 74 | // Remove the first one that contains headers 75 | $headers = array_shift($rows); 76 | // Combine the headers with each following row 77 | $array = []; 78 | foreach ($rows as $row) { 79 | $array[] = array_combine($headers, $row); 80 | } 81 | var_dump($array); 82 | 83 | // transform to json string 84 | $jsonString = json_encode($array, JSON_PRETTY_PRINT); 85 | print($jsonString); 86 | } 87 | 88 | // Fetch a single column 89 | if (false) { 90 | $range = 'Sheet1!B1:B21'; // the title column 91 | $response = $service->spreadsheets_values->get($spreadsheetId, $range); 92 | $values = $response->getValues(); 93 | var_dump($values); 94 | } 95 | 96 | 97 | // Fetch the rows by a filter 98 | // TODO: does not work 99 | /* 100 | $range = 'Sheet1'; 101 | $filters = new BatchGetValuesByDataFilterRequest(); 102 | $filters->setDataFilters( 103 | [ 104 | [ 105 | "developerMetadataLookup" => [ 106 | "metadataValue" => "Captain Marvel" 107 | ] 108 | ] 109 | ] 110 | ); 111 | $response = $service->spreadsheets_values->batchGetByDataFilter($spreadsheetId, $filters); 112 | $values = $response->getValueRanges(); 113 | var_dump($values); 114 | */ 115 | 116 | // append a new row 117 | if (false) { 118 | $newRow = [ 119 | '456740', 120 | 'Hellboy', 121 | 'https://image.tmdb.org/t/p/w500/bk8LyaMqUtaQ9hUShuvFznQYQKR.jpg', 122 | "Hellboy comes to England, where he must defeat Nimue, Merlin's consort and the Blood Queen. But their battle will bring about the end of the world, a fate he desperately tries to turn away.", 123 | '1554944400', 124 | 'Fantasy, Action' 125 | ]; 126 | $rows = [$newRow]; 127 | $valueRange = new \Google_Service_Sheets_ValueRange(); 128 | $valueRange->setValues($rows); 129 | $range = 'Sheet1'; 130 | $options = ['valueInputOption' => 'USER_ENTERED']; 131 | $service->spreadsheets_values->append($spreadsheetId, $range, $valueRange, $options); 132 | } 133 | 134 | // update a row 135 | if (false) { 136 | $updateRow = [ 137 | '456740', 138 | 'Hellboy Updated Row', 139 | 'https://image.tmdb.org/t/p/w500/bk8LyaMqUtaQ9hUShuvFznQYQKR.jpg', 140 | "Hellboy comes to England, where he must defeat Nimue, Merlin's consort and the Blood Queen. But their battle will bring about the end of the world, a fate he desperately tries to turn away.", 141 | '1554944400', 142 | 'Fantasy, Action' 143 | ]; 144 | $rows = [$updateRow]; 145 | $valueRange = new \Google_Service_Sheets_ValueRange(); 146 | $valueRange->setValues($rows); 147 | $range = 'Sheet1!A2'; // where the replacement will start, here, first column and second line 148 | $options = ['valueInputOption' => 'USER_ENTERED']; 149 | $service->spreadsheets_values->update($spreadsheetId, $range, $valueRange, $options); 150 | } 151 | 152 | if (false) { 153 | // delete some rows 154 | $range = 'Sheet1!A23:F24'; // the range to clear, the 23th and 24th lines 155 | $clear = new \Google_Service_Sheets_ClearValuesRequest(); 156 | $service->spreadsheets_values->clear($spreadsheetId, $range, $clear); 157 | } 158 | 159 | return 0; 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /src/Controller/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nidup/manipulate-google-sheets-api-in-php/a02e406db57478219a90e136a56c7923ed18e22e/src/Controller/.gitignore -------------------------------------------------------------------------------- /src/Kernel.php: -------------------------------------------------------------------------------- 1 |