diff --git a/.gitattributes b/.gitattributes
index 178595fa..7aa10315 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -9,5 +9,6 @@
/phpmd.xml export-ignore
/phpunit.xml export-ignore
/README.md export-ignore
+/rector.php export-ignore
/tests export-ignore
/.github export-ignore
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 00000000..fc84026d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,32 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: Bug, Triage
+assignees: ''
+---
+
+
+
+**What are you attempting to do**
+A clear and concise description of what you are trying to do.
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Actual behavior**
+A clear and concise description of what is actually happening.
+
+**Code example**
+
+```php
+// Include code that demonstrates the issue.
+```
+
+**Versions:**
+
+- TwitterOAuth: [e.g. v3.3.0]
+- PHP: v [e.g. v8.0]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 00000000..7f0ec4db
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,19 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: Triage
+assignees: ''
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index e064c4e0..43e29808 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,14 +1,14 @@
version: 2
updates:
+ - package-ecosystem: github-actions
+ directory: '/'
+ schedule:
+ interval: weekly
- package-ecosystem: npm
directory: '/'
schedule:
- interval: daily
- time: '11:00'
- open-pull-requests-limit: 10
+ interval: weekly
- package-ecosystem: composer
directory: '/'
schedule:
- interval: daily
- time: '11:00'
- open-pull-requests-limit: 10
+ interval: weekly
diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml
index 6b718cd8..f1194edb 100644
--- a/.github/workflows/lint.yaml
+++ b/.github/workflows/lint.yaml
@@ -4,9 +4,9 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-node@v1
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
with:
- node-version: 12
+ node-version: 20
- run: npm ci
- run: npm run lint
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 0eeabeca..e9e6ebb5 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -6,13 +6,14 @@ jobs:
strategy:
fail-fast: false
matrix:
- php-versions: ['7.3', '7.4', '8.0']
+ php-versions: ['8.0', '8.1']
name: PHP ${{ matrix.php-versions }}
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
+ extensions: soap
- run: composer validate --no-interaction --strict
- run: composer install --no-interaction --prefer-dist
- run: npm test
diff --git a/.prettierrc.json b/.prettierrc.json
index 9071fb3e..548210e9 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -1,6 +1,6 @@
{
"singleQuote": true,
- "phpVersion": "7.3",
+ "phpVersion": "8.0",
"trailingCommaPHP": true,
"braceStyle": "psr-2"
}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d941b2c9..c18be165 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -12,6 +12,7 @@ GitHub has [outlined instructions](https://help.github.com/articles/fork-a-repo/
- Fork the repo
- Make the changes
+- Add tests
- Submit a pull request
Once the [pull request](https://help.github.com/articles/about-pull-requests/) is reviewed, if the changes are approved they will be merged in to the project.
diff --git a/README.md b/README.md
index 5afe95f0..a1df7f26 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-TwitterOAuth [![Build Status](https://github.com/abraham/twitteroauth/workflows/Test/badge.svg)](https://github.com/abraham/twitteroauth/actions) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/abraham/twitteroauth/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/abraham/twitteroauth/?branch=master) [![Issues Count](https://img.shields.io/github/issues/abraham/twitteroauth.svg)](https://github.com/abraham/twitteroauth/issues) [![Latest Version](https://img.shields.io/packagist/v/abraham/twitteroauth.svg)](https://packagist.org/packages/abraham/twitteroauth) [![Downloads this Month](https://img.shields.io/packagist/dm/abraham/twitteroauth.svg)](https://packagist.org/packages/abraham/twitteroauth)
+TwitterOAuth [![Build Status](https://github.com/abraham/twitteroauth/workflows/Test/badge.svg)](https://github.com/abraham/twitteroauth/actions) [![Issues Count](https://img.shields.io/github/issues/abraham/twitteroauth.svg)](https://github.com/abraham/twitteroauth/issues) [![Latest Version](https://img.shields.io/packagist/v/abraham/twitteroauth.svg)](https://packagist.org/packages/abraham/twitteroauth) [![Downloads this Month](https://img.shields.io/packagist/dm/abraham/twitteroauth.svg)](https://packagist.org/packages/abraham/twitteroauth)
---
@@ -8,4 +8,4 @@ See documentation at https://twitteroauth.com.
PHP versions [listed](https://secure.php.net/supported-versions.php) as "active support" or "security fixes only" are supported.
-
+
diff --git a/composer.json b/composer.json
index 6845e25a..13bf0325 100644
--- a/composer.json
+++ b/composer.json
@@ -26,26 +26,23 @@
"issues": "https://github.com/abraham/twitteroauth/issues"
},
"repositories": [
- {
- "type": "git",
- "url": "https://github.com/morozov/php-vcr"
- },
{
"type": "git",
"url": "https://github.com/abraham/phpunit-testlistener-vcr"
}
],
"require": {
- "php": "^7.3 || ^7.4 || ^8.0",
+ "php": "^8.0 || ^8.1",
"ext-curl": "*",
"composer/ca-bundle": "^1.2"
},
"require-dev": {
- "phpunit/phpunit": "^8 || ^9",
+ "phpunit/phpunit": "^9",
"squizlabs/php_codesniffer": "^3",
"phpmd/phpmd": "^2",
"php-vcr/php-vcr": "^1",
- "php-vcr/phpunit-testlistener-vcr": "dev-php-8"
+ "php-vcr/phpunit-testlistener-vcr": "dev-php8",
+ "rector/rector": "^0.15.7"
},
"autoload": {
"psr-4": {
diff --git a/composer.lock b/composer.lock
index 8e7bf3ab..96796d5e 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "462de928e9afd2f385e1cc2d751c7dfc",
+ "content-hash": "eb65624f614e4f314a6da6b054ed20a2",
"packages": [
{
"name": "composer/ca-bundle",
- "version": "1.2.8",
+ "version": "1.3.5",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
- "reference": "8a7ecad675253e4654ea05505233285377405215"
+ "reference": "74780ccf8c19d6acb8d65c5f39cd72110e132bbd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215",
- "reference": "8a7ecad675253e4654ea05505233285377405215",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/74780ccf8c19d6acb8d65c5f39cd72110e132bbd",
+ "reference": "74780ccf8c19d6acb8d65c5f39cd72110e132bbd",
"shasum": ""
},
"require": {
@@ -26,14 +26,15 @@
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
+ "phpstan/phpstan": "^0.12.55",
"psr/log": "^1.0",
- "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
+ "symfony/phpunit-bridge": "^4.2 || ^5",
+ "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.x-dev"
+ "dev-main": "1.x-dev"
}
},
"autoload": {
@@ -60,6 +61,11 @@
"ssl",
"tls"
],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/ca-bundle/issues",
+ "source": "https://github.com/composer/ca-bundle/tree/1.3.5"
+ },
"funding": [
{
"url": "https://packagist.com",
@@ -74,27 +80,26 @@
"type": "tidelift"
}
],
- "time": "2020-08-23T12:54:47+00:00"
+ "time": "2023-01-11T08:27:00+00:00"
}
],
"packages-dev": [
{
"name": "beberlei/assert",
- "version": "v3.3.0",
+ "version": "v3.3.2",
"source": {
"type": "git",
"url": "https://github.com/beberlei/assert.git",
- "reference": "5367e3895976b49704ae671f75bc5f0ba1b986ab"
+ "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/beberlei/assert/zipball/5367e3895976b49704ae671f75bc5f0ba1b986ab",
- "reference": "5367e3895976b49704ae671f75bc5f0ba1b986ab",
+ "url": "https://api.github.com/repos/beberlei/assert/zipball/cb70015c04be1baee6f5f5c953703347c0ac1655",
+ "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655",
"shasum": ""
},
"require": {
"ext-ctype": "*",
- "ext-intl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-simplexml": "*",
@@ -106,14 +111,17 @@
"phpunit/phpunit": ">=6.0.0",
"yoast/phpunit-polyfills": "^0.1.0"
},
+ "suggest": {
+ "ext-intl": "Needed to allow Assertion::count(), Assertion::isCountable(), Assertion::minCount(), and Assertion::maxCount() to operate on ResourceBundles"
+ },
"type": "library",
"autoload": {
- "psr-4": {
- "Assert\\": "lib/Assert"
- },
"files": [
"lib/Assert/functions.php"
- ]
+ ],
+ "psr-4": {
+ "Assert\\": "lib/Assert"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -137,28 +145,106 @@
"assertion",
"validation"
],
- "time": "2020-11-13T20:02:54+00:00"
+ "support": {
+ "issues": "https://github.com/beberlei/assert/issues",
+ "source": "https://github.com/beberlei/assert/tree/v3.3.2"
+ },
+ "time": "2021-12-16T21:41:27+00:00"
+ },
+ {
+ "name": "composer/pcre",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/pcre.git",
+ "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
+ "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Pcre\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+ "keywords": [
+ "PCRE",
+ "preg",
+ "regex",
+ "regular expression"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/pcre/issues",
+ "source": "https://github.com/composer/pcre/tree/3.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-11-17T09:50:14+00:00"
},
{
"name": "composer/xdebug-handler",
- "version": "1.4.3",
+ "version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
- "reference": "ebd27a9866ae8254e873866f795491f02418c5a5"
+ "reference": "ced299686f41dce890debac69273b47ffe98a40c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ebd27a9866ae8254e873866f795491f02418c5a5",
- "reference": "ebd27a9866ae8254e873866f795491f02418c5a5",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
+ "reference": "ced299686f41dce890debac69273b47ffe98a40c",
"shasum": ""
},
"require": {
- "php": "^5.3.2 || ^7.0 || ^8.0",
- "psr/log": "^1.0"
+ "composer/pcre": "^1 || ^2 || ^3",
+ "php": "^7.2.5 || ^8.0",
+ "psr/log": "^1 || ^2 || ^3"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^6.0"
},
"type": "library",
"autoload": {
@@ -181,6 +267,11 @@
"Xdebug",
"performance"
],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues",
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
+ },
"funding": [
{
"url": "https://packagist.com",
@@ -195,33 +286,34 @@
"type": "tidelift"
}
],
- "time": "2020-08-19T10:27:58+00:00"
+ "time": "2022-02-25T21:32:43+00:00"
},
{
"name": "doctrine/instantiator",
- "version": "1.4.0",
+ "version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
+ "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^8.0",
+ "doctrine/coding-standard": "^9 || ^11",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ "phpbench/phpbench": "^0.16 || ^1",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.30 || ^5.4"
},
"type": "library",
"autoload": {
@@ -246,6 +338,10 @@
"constructor",
"instantiate"
],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.5.0"
+ },
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
@@ -260,41 +356,42 @@
"type": "tidelift"
}
],
- "time": "2020-11-10T18:47:58+00:00"
+ "time": "2022-12-30T00:15:36+00:00"
},
{
"name": "myclabs/deep-copy",
- "version": "1.10.2",
+ "version": "1.11.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
- "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
- "replace": {
- "myclabs/deep-copy": "self.version"
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3,<3.2.2"
},
"require-dev": {
- "doctrine/collections": "^1.0",
- "doctrine/common": "^2.6",
- "phpunit/phpunit": "^7.1"
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
"autoload": {
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- },
"files": [
"src/DeepCopy/deep_copy.php"
- ]
+ ],
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -308,26 +405,30 @@
"object",
"object graph"
],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
+ },
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
"type": "tidelift"
}
],
- "time": "2020-11-13T09:40:50+00:00"
+ "time": "2022-03-03T13:19:32+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v4.10.3",
+ "version": "v4.15.3",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984"
+ "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984",
- "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039",
+ "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039",
"shasum": ""
},
"require": {
@@ -366,32 +467,36 @@
"parser",
"php"
],
- "time": "2020-12-03T17:45:45+00:00"
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3"
+ },
+ "time": "2023-01-16T22:05:37+00:00"
},
{
"name": "pdepend/pdepend",
- "version": "2.8.0",
+ "version": "2.12.1",
"source": {
"type": "git",
"url": "https://github.com/pdepend/pdepend.git",
- "reference": "c64472f8e76ca858c79ad9a4cf1e2734b3f8cc38"
+ "reference": "7a892d56ceafd804b4a2ecc85184640937ce9e84"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pdepend/pdepend/zipball/c64472f8e76ca858c79ad9a4cf1e2734b3f8cc38",
- "reference": "c64472f8e76ca858c79ad9a4cf1e2734b3f8cc38",
+ "url": "https://api.github.com/repos/pdepend/pdepend/zipball/7a892d56ceafd804b4a2ecc85184640937ce9e84",
+ "reference": "7a892d56ceafd804b4a2ecc85184640937ce9e84",
"shasum": ""
},
"require": {
"php": ">=5.3.7",
- "symfony/config": "^2.3.0|^3|^4|^5",
- "symfony/dependency-injection": "^2.3.0|^3|^4|^5",
- "symfony/filesystem": "^2.3.0|^3|^4|^5"
+ "symfony/config": "^2.3.0|^3|^4|^5|^6.0",
+ "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0",
+ "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0"
},
"require-dev": {
- "easy-doc/easy-doc": "0.0.0 || ^1.2.3",
+ "easy-doc/easy-doc": "0.0.0|^1.2.3",
"gregwar/rst": "^1.0",
- "phpunit/phpunit": "^4.8.35|^5.7",
+ "phpunit/phpunit": "^4.8.36|^5.7.27",
"squizlabs/php_codesniffer": "^2.0.0"
},
"bin": [
@@ -413,26 +518,30 @@
"BSD-3-Clause"
],
"description": "Official version of pdepend to be handled with Composer",
+ "support": {
+ "issues": "https://github.com/pdepend/pdepend/issues",
+ "source": "https://github.com/pdepend/pdepend/tree/2.12.1"
+ },
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/pdepend/pdepend",
"type": "tidelift"
}
],
- "time": "2020-06-20T10:53:13+00:00"
+ "time": "2022-09-08T19:30:37+00:00"
},
{
"name": "phar-io/manifest",
- "version": "2.0.1",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
"shasum": ""
},
"require": {
@@ -475,20 +584,24 @@
}
],
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
- "time": "2020-06-27T14:33:11+00:00"
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+ },
+ "time": "2021-07-20T11:28:43+00:00"
},
{
"name": "phar-io/version",
- "version": "3.0.3",
+ "version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/phar-io/version.git",
- "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae"
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/726c026815142e4f8677b7cb7f2249c9ffb7ecae",
- "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
"shasum": ""
},
"require": {
@@ -522,37 +635,45 @@
}
],
"description": "Library for handling version information and constraints",
- "time": "2020-11-30T09:21:21+00:00"
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.2.1"
+ },
+ "time": "2022-02-21T01:04:05+00:00"
},
{
"name": "php-vcr/php-vcr",
- "version": "1.5.1",
+ "version": "1.6.4",
"source": {
"type": "git",
"url": "https://github.com/php-vcr/php-vcr.git",
- "reference": "c482b6e7da4135a04329ffe1e0528ccc3c082bc6"
+ "reference": "bddc1fea824c9b571d21899a484dc680ff256091"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-vcr/php-vcr/zipball/c482b6e7da4135a04329ffe1e0528ccc3c082bc6",
- "reference": "c482b6e7da4135a04329ffe1e0528ccc3c082bc6",
+ "url": "https://api.github.com/repos/php-vcr/php-vcr/zipball/bddc1fea824c9b571d21899a484dc680ff256091",
+ "reference": "bddc1fea824c9b571d21899a484dc680ff256091",
"shasum": ""
},
"require": {
"beberlei/assert": "^3.2.5",
"ext-curl": "*",
- "php": ">=7.2",
- "symfony/event-dispatcher": "^2.4|^3.0|^4.0|^5.0",
- "symfony/yaml": "~2.1|^3.0|^4.0|^5.0"
+ "php": "^8",
+ "symfony/event-dispatcher": "^4|^5|^6",
+ "symfony/event-dispatcher-contracts": "^1|^2|^3",
+ "symfony/yaml": "^3|^4|^5|^6"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^2.16",
- "mikey179/vfsstream": "^1.6",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-beberlei-assert": "^0.12.0",
- "phpunit/phpunit": "^7.4.3",
- "sebastian/version": "^1.0.3|^2.0",
- "thecodingmachine/phpstan-strict-rules": "^0.12"
+ "editorconfig-checker/editorconfig-checker": "^10.3",
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "guzzlehttp/guzzle": "^7",
+ "mikey179/vfsstream": "^1.6.10",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1",
+ "phpstan/phpstan-beberlei-assert": "^1",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^9.5.10",
+ "thecodingmachine/phpstan-strict-rules": "^1"
},
"type": "library",
"autoload": {
@@ -571,22 +692,26 @@
}
],
"description": "Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.",
- "time": "2020-11-22T13:11:57+00:00"
+ "support": {
+ "issues": "https://github.com/php-vcr/php-vcr/issues",
+ "source": "https://github.com/php-vcr/php-vcr/tree/1.6.4"
+ },
+ "time": "2022-12-27T21:48:04+00:00"
},
{
"name": "php-vcr/phpunit-testlistener-vcr",
- "version": "dev-php-8",
+ "version": "dev-php8",
"source": {
"type": "git",
"url": "https://github.com/abraham/phpunit-testlistener-vcr",
- "reference": "13a0e1213d3415e3c5cdda9450a4979b5867020a"
+ "reference": "4e466130ada12b722411ac930fa661cdbe441752"
},
"require": {
- "php": "^7.1 | ^8.0",
+ "php": "^7.1|^8.0",
"php-vcr/php-vcr": "^1.4"
},
"require-dev": {
- "phpunit/phpunit": "^7.0"
+ "phpunit/phpunit": "^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -609,172 +734,26 @@
}
],
"description": "Integrates PHPUnit with PHP-VCR.",
- "time": "2020-11-28T17:40:26+00:00"
- },
- {
- "name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-2.x": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
- }
- ],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
- "keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
- "static analysis"
- ],
- "time": "2020-06-27T09:03:43+00:00"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.2.2",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
- "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
- "shasum": ""
- },
- "require": {
- "ext-filter": "*",
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
- "webmozart/assert": "^1.9.1"
- },
- "require-dev": {
- "mockery/mockery": "~1.3.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- },
- {
- "name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
- }
- ],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2020-09-03T19:13:55+00:00"
- },
- {
- "name": "phpdocumentor/type-resolver",
- "version": "1.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
- "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0"
- },
- "require-dev": {
- "ext-tokenizer": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-1.x": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "time": "2020-09-17T18:55:26+00:00"
+ "time": "2020-12-22T10:54:04+00:00"
},
{
"name": "phpmd/phpmd",
- "version": "2.9.1",
+ "version": "2.13.0",
"source": {
"type": "git",
"url": "https://github.com/phpmd/phpmd.git",
- "reference": "ce10831d4ddc2686c1348a98069771dd314534a8"
+ "reference": "dad0228156856b3ad959992f9748514fa943f3e3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpmd/phpmd/zipball/ce10831d4ddc2686c1348a98069771dd314534a8",
- "reference": "ce10831d4ddc2686c1348a98069771dd314534a8",
+ "url": "https://api.github.com/repos/phpmd/phpmd/zipball/dad0228156856b3ad959992f9748514fa943f3e3",
+ "reference": "dad0228156856b3ad959992f9748514fa943f3e3",
"shasum": ""
},
"require": {
- "composer/xdebug-handler": "^1.0",
+ "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
"ext-xml": "*",
- "pdepend/pdepend": "^2.7.1",
+ "pdepend/pdepend": "^2.12.1",
"php": ">=5.3.9"
},
"require-dev": {
@@ -782,7 +761,7 @@
"ext-json": "*",
"ext-simplexml": "*",
"gregwar/rst": "^1.0",
- "mikey179/vfsstream": "^1.6.4",
+ "mikey179/vfsstream": "^1.6.8",
"phpunit/phpunit": "^4.8.36 || ^5.7.27",
"squizlabs/php_codesniffer": "^2.0"
},
@@ -827,96 +806,97 @@
"phpmd",
"pmd"
],
+ "support": {
+ "irc": "irc://irc.freenode.org/phpmd",
+ "issues": "https://github.com/phpmd/phpmd/issues",
+ "source": "https://github.com/phpmd/phpmd/tree/2.13.0"
+ },
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/phpmd/phpmd",
"type": "tidelift"
}
],
- "time": "2020-09-23T22:06:32+00:00"
+ "time": "2022-09-10T08:44:15+00:00"
},
{
- "name": "phpspec/prophecy",
- "version": "1.12.1",
+ "name": "phpstan/phpstan",
+ "version": "1.9.11",
"source": {
"type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d"
+ "url": "https://github.com/phpstan/phpstan.git",
+ "reference": "60f3d68481eef216199eae7a2603cd5fe124d464"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d",
- "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/60f3d68481eef216199eae7a2603cd5fe124d464",
+ "reference": "60f3d68481eef216199eae7a2603cd5fe124d464",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.2",
- "php": "^7.2 || ~8.0, <8.1",
- "phpdocumentor/reflection-docblock": "^5.2",
- "sebastian/comparator": "^3.0 || ^4.0",
- "sebastian/recursion-context": "^3.0 || ^4.0"
+ "php": "^7.2|^8.0"
},
- "require-dev": {
- "phpspec/phpspec": "^6.0",
- "phpunit/phpunit": "^8.0 || ^9.0 <9.3"
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
},
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.11.x-dev"
- }
- },
"autoload": {
- "psr-4": {
- "Prophecy\\": "src/Prophecy"
- }
+ "files": [
+ "bootstrap.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "authors": [
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "keywords": [
+ "dev",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpstan/phpstan/issues",
+ "source": "https://github.com/phpstan/phpstan/tree/1.9.11"
+ },
+ "funding": [
{
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
+ "url": "https://github.com/ondrejmirtes",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/phpstan",
+ "type": "github"
},
{
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
+ "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
+ "type": "tidelift"
}
],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2020-09-29T09:10:42+00:00"
+ "time": "2023-01-12T14:04:13+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.5",
+ "version": "9.2.23",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1"
+ "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1",
- "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c",
+ "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^4.10.2",
+ "nikic/php-parser": "^4.14",
"php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2",
@@ -963,26 +943,30 @@
"testing",
"xunit"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-11-28T06:44:49+00:00"
+ "time": "2022-12-28T12:41:10+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "3.0.5",
+ "version": "3.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
- "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
"shasum": ""
},
"require": {
@@ -1019,13 +1003,17 @@
"filesystem",
"iterator"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-09-28T05:57:25+00:00"
+ "time": "2021-12-02T12:48:52+00:00"
},
{
"name": "phpunit/php-invoker",
@@ -1078,6 +1066,10 @@
"keywords": [
"process"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -1133,6 +1125,10 @@
"keywords": [
"template"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -1188,6 +1184,10 @@
"keywords": [
"timer"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -1198,20 +1198,20 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.0",
+ "version": "9.5.28",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe"
+ "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e16c225d57c3d6808014df6b1dd7598d0a5bbbe",
- "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/954ca3113a03bf780d22f07bf055d883ee04b65e",
+ "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.3.1",
+ "doctrine/instantiator": "^1.3.1 || ^2",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
@@ -1219,31 +1219,26 @@
"ext-xml": "*",
"ext-xmlwriter": "*",
"myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.1",
+ "phar-io/manifest": "^2.0.3",
"phar-io/version": "^3.0.2",
"php": ">=7.3",
- "phpspec/prophecy": "^1.12.1",
- "phpunit/php-code-coverage": "^9.2.3",
+ "phpunit/php-code-coverage": "^9.2.13",
"phpunit/php-file-iterator": "^3.0.5",
"phpunit/php-invoker": "^3.1.1",
"phpunit/php-text-template": "^2.0.3",
"phpunit/php-timer": "^5.0.2",
"sebastian/cli-parser": "^1.0.1",
"sebastian/code-unit": "^1.0.6",
- "sebastian/comparator": "^4.0.5",
+ "sebastian/comparator": "^4.0.8",
"sebastian/diff": "^4.0.3",
"sebastian/environment": "^5.1.3",
- "sebastian/exporter": "^4.0.3",
+ "sebastian/exporter": "^4.0.5",
"sebastian/global-state": "^5.0.1",
"sebastian/object-enumerator": "^4.0.3",
"sebastian/resource-operations": "^3.0.3",
- "sebastian/type": "^2.3",
+ "sebastian/type": "^3.2",
"sebastian/version": "^3.0.2"
},
- "require-dev": {
- "ext-pdo": "*",
- "phpspec/prophecy-phpunit": "^2.0.1"
- },
"suggest": {
"ext-soap": "*",
"ext-xdebug": "*"
@@ -1258,11 +1253,11 @@
}
},
"autoload": {
- "classmap": [
- "src/"
- ],
"files": [
"src/Framework/Assert/Functions.php"
+ ],
+ "classmap": [
+ "src/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -1283,39 +1278,47 @@
"testing",
"xunit"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.28"
+ },
"funding": [
{
- "url": "https://phpunit.de/donate.html",
+ "url": "https://phpunit.de/sponsors.html",
"type": "custom"
},
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+ "type": "tidelift"
}
],
- "time": "2020-12-04T05:05:53+00:00"
+ "time": "2023-01-14T12:32:24+00:00"
},
{
"name": "psr/container",
- "version": "1.0.0",
+ "version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=7.4.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
@@ -1330,7 +1333,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common Container Interface (PHP FIG PSR-11)",
@@ -1342,34 +1345,38 @@
"container-interop",
"psr"
],
- "time": "2017-02-14T16:28:37+00:00"
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "time": "2021-11-05T16:47:00+00:00"
},
{
- "name": "psr/log",
- "version": "1.1.3",
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=7.2.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Log\\": "Psr/Log/"
+ "Psr\\EventDispatcher\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1382,49 +1389,158 @@
"homepage": "http://www.php-fig.org/"
}
],
- "description": "Common interface for logging libraries",
- "homepage": "https://github.com/php-fig/log",
+ "description": "Standard interfaces for event handling.",
"keywords": [
- "log",
+ "events",
"psr",
- "psr-3"
+ "psr-14"
],
- "time": "2020-03-23T09:12:05+00:00"
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
},
{
- "name": "sebastian/cli-parser",
- "version": "1.0.1",
+ "name": "psr/log",
+ "version": "3.0.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
"shasum": ""
},
"require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
+ "php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
- "classmap": [
- "src/"
- ]
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
+ },
+ "time": "2021-07-14T16:46:02+00:00"
+ },
+ {
+ "name": "rector/rector",
+ "version": "0.15.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/rectorphp/rector.git",
+ "reference": "a43370e1f4c47aaa96c0f85bf9db73db1be7552f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/a43370e1f4c47aaa96c0f85bf9db73db1be7552f",
+ "reference": "a43370e1f4c47aaa96c0f85bf9db73db1be7552f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2|^8.0",
+ "phpstan/phpstan": "^1.9.7"
+ },
+ "conflict": {
+ "rector/rector-doctrine": "*",
+ "rector/rector-downgrade-php": "*",
+ "rector/rector-php-parser": "*",
+ "rector/rector-phpunit": "*",
+ "rector/rector-symfony": "*"
+ },
+ "bin": [
+ "bin/rector"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "0.14-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Instant Upgrade and Automated Refactoring of any PHP code",
+ "support": {
+ "issues": "https://github.com/rectorphp/rector/issues",
+ "source": "https://github.com/rectorphp/rector/tree/0.15.7"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/tomasvotruba",
+ "type": "github"
+ }
+ ],
+ "time": "2023-01-13T21:14:19+00:00"
+ },
+ {
+ "name": "sebastian/cli-parser",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
],
"authors": [
{
@@ -1435,6 +1551,10 @@
],
"description": "Library for parsing CLI options",
"homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -1487,6 +1607,10 @@
],
"description": "Collection of value objects that represent the PHP code units",
"homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -1538,6 +1662,10 @@
],
"description": "Looks up which function or method a line of code belongs to",
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -1548,16 +1676,16 @@
},
{
"name": "sebastian/comparator",
- "version": "4.0.6",
+ "version": "4.0.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
- "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
+ "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
"shasum": ""
},
"require": {
@@ -1608,13 +1736,17 @@
"compare",
"equality"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-10-26T15:49:45+00:00"
+ "time": "2022-09-14T12:41:17+00:00"
},
{
"name": "sebastian/complexity",
@@ -1661,6 +1793,10 @@
],
"description": "Library for calculating the complexity of PHP code units",
"homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -1723,6 +1859,10 @@
"unidiff",
"unified diff"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -1733,16 +1873,16 @@
},
{
"name": "sebastian/environment",
- "version": "5.1.3",
+ "version": "5.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
- "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7",
+ "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7",
"shasum": ""
},
"require": {
@@ -1782,26 +1922,30 @@
"environment",
"hhvm"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-09-28T05:52:38+00:00"
+ "time": "2022-04-03T09:37:03+00:00"
},
{
"name": "sebastian/exporter",
- "version": "4.0.3",
+ "version": "4.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
+ "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
- "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+ "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
"shasum": ""
},
"require": {
@@ -1850,31 +1994,35 @@
}
],
"description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "homepage": "https://www.github.com/sebastianbergmann/exporter",
"keywords": [
"export",
"exporter"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-09-28T05:24:23+00:00"
+ "time": "2022-09-14T06:03:37+00:00"
},
{
"name": "sebastian/global-state",
- "version": "5.0.2",
+ "version": "5.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "a90ccbddffa067b51f574dea6eb25d5680839455"
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455",
- "reference": "a90ccbddffa067b51f574dea6eb25d5680839455",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
"shasum": ""
},
"require": {
@@ -1915,13 +2063,17 @@
"keywords": [
"global state"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-10-26T15:55:19+00:00"
+ "time": "2022-02-14T08:28:10+00:00"
},
{
"name": "sebastian/lines-of-code",
@@ -1968,6 +2120,10 @@
],
"description": "Library for counting the lines of code in PHP source code",
"homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -2021,6 +2177,10 @@
],
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -2072,6 +2232,10 @@
],
"description": "Allows reflection of object attributes, including inherited and non-public ones",
"homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -2131,6 +2295,10 @@
],
"description": "Provides functionality to recursively process PHP variables",
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -2182,6 +2350,10 @@
],
"description": "Provides a list of PHP built-in functions that operate on resources",
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -2192,28 +2364,28 @@
},
{
"name": "sebastian/type",
- "version": "2.3.1",
+ "version": "3.2.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2"
+ "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
- "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
+ "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
"shasum": ""
},
"require": {
"php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^9.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.3-dev"
+ "dev-master": "3.2-dev"
}
},
"autoload": {
@@ -2234,13 +2406,17 @@
],
"description": "Collection of value objects that represent the types of the PHP type system",
"homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/3.2.0"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-10-26T13:18:59+00:00"
+ "time": "2022-09-12T14:47:03+00:00"
},
{
"name": "sebastian/version",
@@ -2283,6 +2459,10 @@
],
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
"homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
@@ -2293,16 +2473,16 @@
},
{
"name": "squizlabs/php_codesniffer",
- "version": "3.5.8",
+ "version": "3.7.1",
"source": {
"type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
- "reference": "9d583721a7157ee997f235f327de038e7ea6dac4"
+ "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4",
- "reference": "9d583721a7157ee997f235f327de038e7ea6dac4",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619",
+ "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619",
"shasum": ""
},
"require": {
@@ -2340,46 +2520,48 @@
"phpcs",
"standards"
],
- "time": "2020-10-23T02:01:07+00:00"
+ "support": {
+ "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
+ "source": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
+ },
+ "time": "2022-06-18T07:21:10+00:00"
},
{
"name": "symfony/config",
- "version": "v4.4.13",
+ "version": "v6.0.11",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "043bf8652c307ebc23ce44047d215eec889d8850"
+ "reference": "956d4ec5df274dda91a4cedfccc2bfd063f6f649"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/043bf8652c307ebc23ce44047d215eec889d8850",
- "reference": "043bf8652c307ebc23ce44047d215eec889d8850",
+ "url": "https://api.github.com/repos/symfony/config/zipball/956d4ec5df274dda91a4cedfccc2bfd063f6f649",
+ "reference": "956d4ec5df274dda91a4cedfccc2bfd063f6f649",
"shasum": ""
},
"require": {
- "php": ">=7.1.3",
- "symfony/filesystem": "^3.4|^4.0|^5.0",
- "symfony/polyfill-ctype": "~1.8"
+ "php": ">=8.0.2",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/filesystem": "^5.4|^6.0",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php81": "^1.22"
},
"conflict": {
- "symfony/finder": "<3.4"
+ "symfony/finder": "<4.4"
},
"require-dev": {
- "symfony/event-dispatcher": "^3.4|^4.0|^5.0",
- "symfony/finder": "^3.4|^4.0|^5.0",
- "symfony/messenger": "^4.1|^5.0",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/yaml": "^3.4|^4.0|^5.0"
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/yaml": "^5.4|^6.0"
},
"suggest": {
"symfony/yaml": "To use the yaml reference dumper"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\Config\\": ""
@@ -2402,8 +2584,11 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Config Component",
+ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/config/tree/v6.0.11"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2418,41 +2603,44 @@
"type": "tidelift"
}
],
- "time": "2020-08-10T07:27:51+00:00"
+ "time": "2022-06-27T17:10:44+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v4.4.13",
+ "version": "v6.0.17",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "384c2601e5a6228d60b041911d63f010e0885ffb"
+ "reference": "37ffd67504beedbacaa7fd7358eff7042970d4dc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/384c2601e5a6228d60b041911d63f010e0885ffb",
- "reference": "384c2601e5a6228d60b041911d63f010e0885ffb",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/37ffd67504beedbacaa7fd7358eff7042970d4dc",
+ "reference": "37ffd67504beedbacaa7fd7358eff7042970d4dc",
"shasum": ""
},
"require": {
- "php": ">=7.1.3",
- "psr/container": "^1.0",
- "symfony/service-contracts": "^1.1.6|^2"
+ "php": ">=8.0.2",
+ "psr/container": "^1.1|^2.0",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php81": "^1.22",
+ "symfony/service-contracts": "^1.1.6|^2.0|^3.0"
},
"conflict": {
- "symfony/config": "<4.3|>=5.0",
- "symfony/finder": "<3.4",
- "symfony/proxy-manager-bridge": "<3.4",
- "symfony/yaml": "<3.4"
+ "ext-psr": "<1.1|>=2",
+ "symfony/config": "<5.4",
+ "symfony/finder": "<5.4",
+ "symfony/proxy-manager-bridge": "<5.4",
+ "symfony/yaml": "<5.4"
},
"provide": {
- "psr/container-implementation": "1.0",
- "symfony/service-implementation": "1.0"
+ "psr/container-implementation": "1.1|2.0",
+ "symfony/service-implementation": "1.1|2.0|3.0"
},
"require-dev": {
- "symfony/config": "^4.3",
- "symfony/expression-language": "^3.4|^4.0|^5.0",
- "symfony/yaml": "^3.4|^4.0|^5.0"
+ "symfony/config": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0"
},
"suggest": {
"symfony/config": "",
@@ -2462,11 +2650,6 @@
"symfony/yaml": ""
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\DependencyInjection\\": ""
@@ -2489,8 +2672,11 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony DependencyInjection Component",
+ "description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/dependency-injection/tree/v6.0.17"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2505,42 +2691,109 @@
"type": "tidelift"
}
],
- "time": "2020-09-01T17:42:15+00:00"
+ "time": "2022-12-28T14:21:34+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.0-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v4.4.16",
+ "version": "v6.0.17",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98"
+ "reference": "42b3985aa07837c9df36013ec5b965e9f2d480bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
- "reference": "4204f13d2d0b7ad09454f221bb2195fccdf1fe98",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/42b3985aa07837c9df36013ec5b965e9f2d480bc",
+ "reference": "42b3985aa07837c9df36013ec5b965e9f2d480bc",
"shasum": ""
},
"require": {
- "php": ">=7.1.3",
- "symfony/event-dispatcher-contracts": "^1.1"
+ "php": ">=8.0.2",
+ "symfony/event-dispatcher-contracts": "^2|^3"
},
"conflict": {
- "symfony/dependency-injection": "<3.4"
+ "symfony/dependency-injection": "<5.4"
},
"provide": {
"psr/event-dispatcher-implementation": "1.0",
- "symfony/event-dispatcher-implementation": "1.1"
+ "symfony/event-dispatcher-implementation": "2.0|3.0"
},
"require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "^3.4|^4.0|^5.0",
- "symfony/dependency-injection": "^3.4|^4.0|^5.0",
- "symfony/error-handler": "~3.4|~4.4",
- "symfony/expression-language": "^3.4|^4.0|^5.0",
- "symfony/http-foundation": "^3.4|^4.0|^5.0",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/stopwatch": "^3.4|^4.0|^5.0"
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/stopwatch": "^5.4|^6.0"
},
"suggest": {
"symfony/dependency-injection": "",
@@ -2569,8 +2822,11 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony EventDispatcher Component",
+ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.17"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2585,33 +2841,33 @@
"type": "tidelift"
}
],
- "time": "2020-10-24T11:50:19+00:00"
+ "time": "2022-12-14T15:52:41+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v1.1.9",
+ "version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7"
+ "reference": "7bc61cc2db649b4637d331240c5346dcc7708051"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7",
- "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051",
+ "reference": "7bc61cc2db649b4637d331240c5346dcc7708051",
"shasum": ""
},
"require": {
- "php": ">=7.1.3"
+ "php": ">=8.0.2",
+ "psr/event-dispatcher": "^1"
},
"suggest": {
- "psr/event-dispatcher": "",
"symfony/event-dispatcher-implementation": ""
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1-dev"
+ "dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2647,6 +2903,9 @@
"interoperability",
"standards"
],
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.2"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2661,32 +2920,28 @@
"type": "tidelift"
}
],
- "time": "2020-07-06T13:19:58+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v4.4.13",
+ "version": "v6.0.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "27575bcbc68db1f6d06218891296572c9b845704"
+ "reference": "3adca49133bd055ebe6011ed1e012be3c908af79"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/27575bcbc68db1f6d06218891296572c9b845704",
- "reference": "27575bcbc68db1f6d06218891296572c9b845704",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/3adca49133bd055ebe6011ed1e012be3c908af79",
+ "reference": "3adca49133bd055ebe6011ed1e012be3c908af79",
"shasum": ""
},
"require": {
- "php": ">=7.1.3",
- "symfony/polyfill-ctype": "~1.8"
+ "php": ">=8.0.2",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.8"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\Filesystem\\": ""
@@ -2709,8 +2964,11 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Filesystem Component",
+ "description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/v6.0.13"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2725,32 +2983,35 @@
"type": "tidelift"
}
],
- "time": "2020-08-21T17:19:37+00:00"
+ "time": "2022-09-21T20:25:27+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.20.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
+ "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
- "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
+ "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
+ "provide": {
+ "ext-ctype": "*"
+ },
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.20-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -2758,12 +3019,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- },
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2787,6 +3048,171 @@
"polyfill",
"portable"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-11-03T14:55:06+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+ "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.27-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-11-03T14:55:06+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php81",
+ "version": "v1.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a",
+ "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.27-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php81\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2801,25 +3227,28 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T14:02:19+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v1.1.9",
+ "version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26"
+ "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b776d18b303a39f56c63747bcb977ad4b27aca26",
- "reference": "b776d18b303a39f56c63747bcb977ad4b27aca26",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66",
+ "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66",
"shasum": ""
},
"require": {
- "php": ">=7.1.3",
- "psr/container": "^1.0"
+ "php": ">=8.0.2",
+ "psr/container": "^2.0"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
},
"suggest": {
"symfony/service-implementation": ""
@@ -2827,7 +3256,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1-dev"
+ "dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2863,6 +3292,9 @@
"interoperability",
"standards"
],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v3.0.2"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2877,35 +3309,38 @@
"type": "tidelift"
}
],
- "time": "2020-07-06T13:19:58+00:00"
+ "time": "2022-05-30T19:17:58+00:00"
},
{
"name": "symfony/yaml",
- "version": "v4.4.16",
+ "version": "v6.0.17",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "543cb4dbd45ed803f08a9a65f27fb149b5dd20c2"
+ "reference": "76c08913ea1c50541503a4563b2172710189fa29"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/543cb4dbd45ed803f08a9a65f27fb149b5dd20c2",
- "reference": "543cb4dbd45ed803f08a9a65f27fb149b5dd20c2",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/76c08913ea1c50541503a4563b2172710189fa29",
+ "reference": "76c08913ea1c50541503a4563b2172710189fa29",
"shasum": ""
},
"require": {
- "php": ">=7.1.3",
- "symfony/polyfill-ctype": "~1.8"
+ "php": ">=8.0.2",
+ "symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "symfony/console": "<3.4"
+ "symfony/console": "<5.4"
},
"require-dev": {
- "symfony/console": "^3.4|^4.0|^5.0"
+ "symfony/console": "^5.4|^6.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
},
+ "bin": [
+ "Resources/bin/yaml-lint"
+ ],
"type": "library",
"autoload": {
"psr-4": {
@@ -2929,8 +3364,11 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Yaml Component",
+ "description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/yaml/tree/v6.0.17"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2945,20 +3383,20 @@
"type": "tidelift"
}
],
- "time": "2020-10-24T11:50:19+00:00"
+ "time": "2022-12-14T15:52:41+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.0",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
"shasum": ""
},
"require": {
@@ -2985,62 +3423,17 @@
}
],
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ },
"funding": [
{
"url": "https://github.com/theseer",
"type": "github"
}
],
- "time": "2020-07-12T23:59:07+00:00"
- },
- {
- "name": "webmozart/assert",
- "version": "1.9.1",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.3 || ^7.0 || ^8.0",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<3.9.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Webmozart\\Assert\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "Assertions to validate method input/output with nice error messages.",
- "keywords": [
- "assert",
- "check",
- "validate"
- ],
- "time": "2020-07-08T17:02:28+00:00"
+ "time": "2021-07-28T10:34:58+00:00"
}
],
"aliases": [],
@@ -3051,9 +3444,9 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": "^7.3 || ^7.4 || ^8.0",
+ "php": "^8.0 || ^8.1",
"ext-curl": "*"
},
"platform-dev": [],
- "plugin-api-version": "1.1.0"
+ "plugin-api-version": "2.3.0"
}
diff --git a/package-lock.json b/package-lock.json
index daafae0c..86e046f0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,147 +1,576 @@
{
"name": "twitteroauth",
"version": "0.0.0",
- "lockfileVersion": 1,
+ "lockfileVersion": 2,
"requires": true,
+ "packages": {
+ "": {
+ "name": "twitteroauth",
+ "version": "0.0.0",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "devDependencies": {
+ "@prettier/plugin-php": "0.19.6",
+ "concurrently": "^8.2.0",
+ "prettier": "2.8.8",
+ "prettier-plugin-package": "1.3.1"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz",
+ "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==",
+ "dev": true,
+ "dependencies": {
+ "regenerator-runtime": "^0.13.11"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@prettier/plugin-php": {
+ "version": "0.19.6",
+ "resolved": "https://registry.npmjs.org/@prettier/plugin-php/-/plugin-php-0.19.6.tgz",
+ "integrity": "sha512-MFaBfdxfTbGNwClJ/EZd2ROTa/Bd7EV+ff2KG769I9RsmNcVWcHARIYlSlJqFGgSbumOm+Ylm6RIXdxb5kG+OA==",
+ "dev": true,
+ "dependencies": {
+ "linguist-languages": "^7.21.0",
+ "mem": "^8.0.0",
+ "php-parser": "^3.1.5"
+ },
+ "peerDependencies": {
+ "prettier": "^1.15.0 || ^2.0.0"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chalk/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/concurrently": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.0.tgz",
+ "integrity": "sha512-nnLMxO2LU492mTUj9qX/az/lESonSZu81UznYDoXtz1IQf996ixVqPAgHXwvHiHCAef/7S8HIK+fTFK7Ifk8YA==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.2",
+ "date-fns": "^2.30.0",
+ "lodash": "^4.17.21",
+ "rxjs": "^7.8.1",
+ "shell-quote": "^1.8.1",
+ "spawn-command": "0.0.2",
+ "supports-color": "^8.1.1",
+ "tree-kill": "^1.2.2",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "conc": "dist/bin/concurrently.js",
+ "concurrently": "dist/bin/concurrently.js"
+ },
+ "engines": {
+ "node": "^14.13.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/open-cli-tools/concurrently?sponsor=1"
+ }
+ },
+ "node_modules/date-fns": {
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+ "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.21.0"
+ },
+ "engines": {
+ "node": ">=0.11"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/date-fns"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/linguist-languages": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/linguist-languages/-/linguist-languages-7.21.0.tgz",
+ "integrity": "sha512-KrWJJbFOvlDhjlt5OhUipVlXg+plUfRurICAyij1ZVxQcqPt/zeReb9KiUVdGUwwhS/2KS9h3TbyfYLA5MDlxQ==",
+ "dev": true
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/map-age-cleaner": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "dev": true,
+ "dependencies": {
+ "p-defer": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mem": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz",
+ "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==",
+ "dev": true,
+ "dependencies": {
+ "map-age-cleaner": "^0.1.3",
+ "mimic-fn": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/mem?sponsor=1"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz",
+ "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/php-parser": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/php-parser/-/php-parser-3.1.5.tgz",
+ "integrity": "sha512-jEY2DcbgCm5aclzBdfW86GM6VEIWcSlhTBSHN1qhJguVePlYe28GhwS0yoeLYXpM2K8y6wzLwrbq814n2PHSoQ==",
+ "dev": true
+ },
+ "node_modules/prettier": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-plugin-package": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-package/-/prettier-plugin-package-1.3.1.tgz",
+ "integrity": "sha512-/0x1ZJLaf+ru5TH0bTOZCcb7aVNWFqY4Pb4CHx1p56dS/HiNeQfCdrarMqwE8huqW7ohp8fMvQTyPjlqqzmw1Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "peerDependencies": {
+ "prettier": "^2.0.0"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "dev": true
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/spawn-command": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz",
+ "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==",
+ "dev": true
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/tree-kill": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
+ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
+ "dev": true,
+ "bin": {
+ "tree-kill": "cli.js"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ }
+ },
"dependencies": {
+ "@babel/runtime": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz",
+ "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==",
+ "dev": true,
+ "requires": {
+ "regenerator-runtime": "^0.13.11"
+ }
+ },
"@prettier/plugin-php": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/@prettier/plugin-php/-/plugin-php-0.16.0.tgz",
- "integrity": "sha512-HG/FamMUtq4/9hZmeuvwy0BWmOr4m9OWacvLSUmmgUrQd4+TRZW7Nqs2MAJkwSNiBIgAKTt2Vw9PK+33Gxxx8g==",
+ "version": "0.19.6",
+ "resolved": "https://registry.npmjs.org/@prettier/plugin-php/-/plugin-php-0.19.6.tgz",
+ "integrity": "sha512-MFaBfdxfTbGNwClJ/EZd2ROTa/Bd7EV+ff2KG769I9RsmNcVWcHARIYlSlJqFGgSbumOm+Ylm6RIXdxb5kG+OA==",
"dev": true,
"requires": {
- "linguist-languages": "^7.5.1",
+ "linguist-languages": "^7.21.0",
"mem": "^8.0.0",
- "php-parser": "3.0.2"
+ "php-parser": "^3.1.5"
}
},
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "color-convert": "^1.9.0"
+ "color-convert": "^2.0.1"
}
},
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
"chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"dependencies": {
"supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "^4.0.0"
}
}
}
},
"cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
"requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
}
},
"color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "color-name": "1.1.3"
+ "color-name": "~1.1.4"
}
},
"color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"concurrently": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz",
- "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.0.tgz",
+ "integrity": "sha512-nnLMxO2LU492mTUj9qX/az/lESonSZu81UznYDoXtz1IQf996ixVqPAgHXwvHiHCAef/7S8HIK+fTFK7Ifk8YA==",
"dev": true,
"requires": {
- "chalk": "^2.4.2",
- "date-fns": "^2.0.1",
- "lodash": "^4.17.15",
- "read-pkg": "^4.0.1",
- "rxjs": "^6.5.2",
- "spawn-command": "^0.0.2-1",
- "supports-color": "^6.1.0",
+ "chalk": "^4.1.2",
+ "date-fns": "^2.30.0",
+ "lodash": "^4.17.21",
+ "rxjs": "^7.8.1",
+ "shell-quote": "^1.8.1",
+ "spawn-command": "0.0.2",
+ "supports-color": "^8.1.1",
"tree-kill": "^1.2.2",
- "yargs": "^13.3.0"
+ "yargs": "^17.7.2"
}
},
"date-fns": {
- "version": "2.15.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.15.0.tgz",
- "integrity": "sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ==",
- "dev": true
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "version": "2.30.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
+ "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
"dev": true,
"requires": {
- "is-arrayish": "^0.2.1"
+ "@babel/runtime": "^7.21.0"
}
},
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
},
"get-caller-file": {
"version": "2.0.5",
@@ -150,55 +579,27 @@
"dev": true
},
"has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "hosted-git-info": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
- "dev": true
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"linguist-languages": {
- "version": "7.11.1",
- "resolved": "https://registry.npmjs.org/linguist-languages/-/linguist-languages-7.11.1.tgz",
- "integrity": "sha512-+cRUk+1WTbydcdzipXQER2iilX+wMrb1LPkbkGuDP/IcGPJRDmOZH6Olf1iH6sHlHwPnJYiNJH39YsFCVZxvUQ==",
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/linguist-languages/-/linguist-languages-7.21.0.tgz",
+ "integrity": "sha512-KrWJJbFOvlDhjlt5OhUipVlXg+plUfRurICAyij1ZVxQcqPt/zeReb9KiUVdGUwwhS/2KS9h3TbyfYLA5MDlxQ==",
"dev": true
},
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
"lodash": {
- "version": "4.17.19",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
- "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
"map-age-cleaner": {
@@ -211,9 +612,9 @@
}
},
"mem": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-8.0.0.tgz",
- "integrity": "sha512-qrcJOe6uD+EW8Wrci1Vdiua/15Xw3n/QnaNXE7varnB6InxSk7nu3/i5jfy3S6kWxr8WYJ6R1o0afMUtvorTsA==",
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz",
+ "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==",
"dev": true,
"requires": {
"map-age-cleaner": "^0.1.3",
@@ -226,212 +627,91 @@
"integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
"dev": true
},
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
"p-defer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
"integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
"dev": true
},
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
- },
"php-parser": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/php-parser/-/php-parser-3.0.2.tgz",
- "integrity": "sha512-a7y1+odEGsceLDLpu7oNyspZ0pK8FMWJOoim4/yd82AtnEZNLdCLZ67arnOQZ9K0lHJiSp4/7lVUpGELVxE14w==",
- "dev": true
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/php-parser/-/php-parser-3.1.5.tgz",
+ "integrity": "sha512-jEY2DcbgCm5aclzBdfW86GM6VEIWcSlhTBSHN1qhJguVePlYe28GhwS0yoeLYXpM2K8y6wzLwrbq814n2PHSoQ==",
"dev": true
},
"prettier": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz",
- "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==",
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"dev": true
},
"prettier-plugin-package": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/prettier-plugin-package/-/prettier-plugin-package-1.3.0.tgz",
- "integrity": "sha512-KPNHR/Jm2zTevBp1SnjzMnooO1BOQW2bixVbOp8flOJoW+dxdDwEncObfsKZdkjwrv6AIH4oWqm5EO/etDmK9Q==",
- "dev": true
- },
- "read-pkg": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
- "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-package/-/prettier-plugin-package-1.3.1.tgz",
+ "integrity": "sha512-/0x1ZJLaf+ru5TH0bTOZCcb7aVNWFqY4Pb4CHx1p56dS/HiNeQfCdrarMqwE8huqW7ohp8fMvQTyPjlqqzmw1Q==",
"dev": true,
- "requires": {
- "normalize-package-data": "^2.3.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0"
- }
+ "requires": {}
+ },
+ "regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "dev": true
},
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true
},
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
- },
- "resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
"rxjs": {
- "version": "6.6.2",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
- "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"dev": true,
"requires": {
- "tslib": "^1.9.0"
+ "tslib": "^2.1.0"
}
},
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "shell-quote": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
"dev": true
},
"spawn-command": {
- "version": "0.0.2-1",
- "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
- "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz",
+ "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==",
"dev": true
},
"string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
}
},
"strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
- "ansi-regex": "^4.1.0"
+ "ansi-regex": "^5.0.1"
}
},
"supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "^4.0.0"
}
},
"tree-kill": {
@@ -441,71 +721,48 @@
"dev": true
},
"tslib": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
- "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
- "dev": true
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
"dev": true
},
"wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
}
},
"y18n": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
"yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
"requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
}
},
"yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true
}
}
}
diff --git a/package.json b/package.json
index 81746e3d..9ac55c75 100644
--- a/package.json
+++ b/package.json
@@ -16,9 +16,11 @@
"fix": "concurrently npm:fix:*",
"fix:phpcbf": "./vendor/bin/phpcbf src tests --standard=PSR12",
"fix:prettier": "prettier . --write",
+ "fix:rector": "vendor/bin/rector process",
"lint": "concurrently npm:lint:*",
"lint:phpcs": "./vendor/bin/phpcs src tests --standard=PSR12",
"lint:prettier": "prettier . --check",
+ "lint:rector": "vendor/bin/rector process --dry-run",
"postinstall": "composer install --no-interaction",
"test": "./vendor/bin/phpunit"
},
@@ -33,10 +35,10 @@
],
"dependencies": {},
"devDependencies": {
- "@prettier/plugin-php": "0.16.0",
- "concurrently": "^5.3.0",
- "prettier": "2.2.1",
- "prettier-plugin-package": "1.3.0"
+ "@prettier/plugin-php": "0.19.6",
+ "concurrently": "^8.2.0",
+ "prettier": "2.8.8",
+ "prettier-plugin-package": "1.3.1"
},
"directories": {
"test": "tests"
diff --git a/rector.php b/rector.php
new file mode 100644
index 00000000..1d849c4a
--- /dev/null
+++ b/rector.php
@@ -0,0 +1,17 @@
+paths([
+ __DIR__ . '/src',
+ __DIR__ . '/tests',
+ __DIR__ . '/*.php',
+ ]);
+
+ $rectorConfig->sets([LevelSetList::UP_TO_PHP_74]);
+};
diff --git a/src/Config.php b/src/Config.php
index ab7ee2e4..b9cae2ab 100644
--- a/src/Config.php
+++ b/src/Config.php
@@ -11,6 +11,9 @@
*/
class Config
{
+ // Update extension function when updating this list.
+ private const SUPPORTED_VERSIONS = ['1.1', '2'];
+
/** @var int How long to wait for a response from the API */
protected $timeout = 5;
/** @var int how long to wait while connecting to the API */
@@ -19,6 +22,8 @@ class Config
protected $maxRetries = 0;
/** @var int Delay in seconds before we retry the request */
protected $retriesDelay = 1;
+ /** @var string Version of the Twitter API requests should target */
+ protected $apiVersion = '2';
/**
* Decode JSON Response as associative Array
@@ -39,6 +44,20 @@ class Config
/** @var integer Size for Chunked Uploads */
protected $chunkSize = 250000; // 0.25 MegaByte
+ /**
+ * Set the the Twitter API version.
+ *
+ * @param string $apiVersion
+ */
+ public function setApiVersion(string $apiVersion): void
+ {
+ if (in_array($apiVersion, self::SUPPORTED_VERSIONS, true)) {
+ $this->apiVersion = $apiVersion;
+ } else {
+ throw new TwitterOAuthException('Unsupported API version');
+ }
+ }
+
/**
* Set the connection and response timeouts.
*
diff --git a/src/Consumer.php b/src/Consumer.php
index 3f3797a0..c676c1b4 100644
--- a/src/Consumer.php
+++ b/src/Consumer.php
@@ -26,7 +26,7 @@ class Consumer
public function __construct(
?string $key,
?string $secret,
- ?string $callbackUrl = null
+ ?string $callbackUrl = null,
) {
$this->key = $key;
$this->secret = $secret;
diff --git a/src/HmacSha1.php b/src/HmacSha1.php
index 922b2cf0..47c32743 100644
--- a/src/HmacSha1.php
+++ b/src/HmacSha1.php
@@ -32,7 +32,7 @@ public function getName()
public function buildSignature(
Request $request,
Consumer $consumer,
- Token $token = null
+ Token $token = null,
): string {
$signatureBase = $request->getSignatureBaseString();
diff --git a/src/Request.php b/src/Request.php
index 4183c7ee..dc502d11 100644
--- a/src/Request.php
+++ b/src/Request.php
@@ -27,7 +27,7 @@ class Request
public function __construct(
string $httpMethod,
string $httpUrl,
- ?array $parameters = []
+ ?array $parameters = [],
) {
$parameters = array_merge(
Util::parseParameters(parse_url($httpUrl, PHP_URL_QUERY)),
@@ -55,7 +55,7 @@ public static function fromConsumerAndToken(
string $httpMethod,
string $httpUrl,
array $parameters = [],
- $json = false
+ $json = false,
) {
$defaults = [
'oauth_version' => Request::$version,
@@ -94,9 +94,7 @@ public function setParameter(string $name, string $value)
*/
public function getParameter(string $name): ?string
{
- return isset($this->parameters[$name])
- ? $this->parameters[$name]
- : null;
+ return $this->parameters[$name] ?? null;
}
/**
@@ -254,7 +252,7 @@ public function __toString(): string
public function signRequest(
SignatureMethod $signatureMethod,
Consumer $consumer,
- Token $token = null
+ Token $token = null,
) {
$this->setParameter(
'oauth_signature_method',
@@ -274,7 +272,7 @@ public function signRequest(
public function buildSignature(
SignatureMethod $signatureMethod,
Consumer $consumer,
- Token $token = null
+ Token $token = null,
): string {
return $signatureMethod->buildSignature($this, $consumer, $token);
}
@@ -284,6 +282,6 @@ public function buildSignature(
*/
public static function generateNonce(): string
{
- return md5(microtime() . mt_rand());
+ return md5(microtime() . random_int(PHP_INT_MIN, PHP_INT_MAX));
}
}
diff --git a/src/Response.php b/src/Response.php
index 1d5af5f0..0bca6cc4 100644
--- a/src/Response.php
+++ b/src/Response.php
@@ -12,15 +12,15 @@
class Response
{
/** @var string|null API path from the most recent request */
- private $apiPath;
+ private ?string $apiPath = null;
/** @var int HTTP status code from the most recent request */
- private $httpCode = 0;
+ private int $httpCode = 0;
/** @var array HTTP headers from the most recent request */
- private $headers = [];
- /** @var array|object Response body from the most recent request */
- private $body = [];
+ private array $headers = [];
+ /** @var array|object|null Response body from the most recent request */
+ private array|object|null $body = [];
/** @var array HTTP headers from the most recent request that start with X */
- private $xHeaders = [];
+ private array $xHeaders = [];
/**
* @param string $apiPath
diff --git a/src/SignatureMethod.php b/src/SignatureMethod.php
index 9d726e8b..ca877454 100644
--- a/src/SignatureMethod.php
+++ b/src/SignatureMethod.php
@@ -37,7 +37,7 @@ abstract public function getName();
abstract public function buildSignature(
Request $request,
Consumer $consumer,
- Token $token = null
+ Token $token = null,
);
/**
@@ -54,7 +54,7 @@ public function checkSignature(
Request $request,
Consumer $consumer,
Token $token,
- string $signature
+ string $signature,
): bool {
$built = $this->buildSignature($request, $consumer, $token);
diff --git a/src/TwitterOAuth.php b/src/TwitterOAuth.php
index e65af32f..fc365825 100644
--- a/src/TwitterOAuth.php
+++ b/src/TwitterOAuth.php
@@ -10,7 +10,13 @@
namespace Abraham\TwitterOAuth;
-use Abraham\TwitterOAuth\Util\JsonDecoder;
+use Abraham\TwitterOAuth\{
+ Consumer,
+ HmacSha1,
+ Response,
+ Token,
+ Util\JsonDecoder,
+};
use Composer\CaBundle\CaBundle;
/**
@@ -20,22 +26,21 @@
*/
class TwitterOAuth extends Config
{
- private const API_VERSION = '1.1';
private const API_HOST = 'https://api.twitter.com';
private const UPLOAD_HOST = 'https://upload.twitter.com';
/** @var Response details about the result of the last request */
- private $response;
+ private ?Response $response = null;
/** @var string|null Application bearer token */
- private $bearer;
+ private ?string $bearer = null;
/** @var Consumer Twitter application details */
- private $consumer;
+ private Consumer $consumer;
/** @var Token|null User access token details */
- private $token;
+ private ?Token $token = null;
/** @var HmacSha1 OAuth 1 signature type used by Twitter */
- private $signatureMethod;
+ private HmacSha1 $signatureMethod;
/** @var int Number of attempts we made for the request */
- private $attempts = 0;
+ private int $attempts = 0;
/**
* Constructor
@@ -49,7 +54,7 @@ public function __construct(
string $consumerKey,
string $consumerSecret,
?string $oauthToken = null,
- ?string $oauthTokenSecret = null
+ ?string $oauthTokenSecret = null,
) {
$this->resetLastResponse();
$this->signatureMethod = new HmacSha1();
@@ -68,7 +73,7 @@ public function __construct(
*/
public function setOauthToken(
string $oauthToken,
- string $oauthTokenSecret
+ string $oauthTokenSecret,
): void {
$this->token = new Token($oauthToken, $oauthTokenSecret);
$this->bearer = null;
@@ -244,7 +249,7 @@ public function get(string $path, array $parameters = [])
public function post(
string $path,
array $parameters = [],
- bool $json = false
+ bool $json = false,
) {
return $this->http('POST', self::API_HOST, $path, $parameters, $json);
}
@@ -267,12 +272,16 @@ public function delete(string $path, array $parameters = [])
*
* @param string $path
* @param array $parameters
+ * @param bool $json
*
* @return array|object
*/
- public function put(string $path, array $parameters = [])
- {
- return $this->http('PUT', self::API_HOST, $path, $parameters, false);
+ public function put(
+ string $path,
+ array $parameters = [],
+ bool $json = false,
+ ) {
+ return $this->http('PUT', self::API_HOST, $path, $parameters, $json);
}
/**
@@ -287,7 +296,7 @@ public function put(string $path, array $parameters = [])
public function upload(
string $path,
array $parameters = [],
- bool $chunked = false
+ bool $chunked = false,
) {
if ($chunked) {
return $this->uploadMediaChunked($path, $parameters);
@@ -374,6 +383,7 @@ private function uploadMediaNotChunked(string $path, array $parameters)
*/
private function uploadMediaChunked(string $path, array $parameters)
{
+ /** @var object $init */
$init = $this->http(
'POST',
self::UPLOAD_HOST,
@@ -381,6 +391,9 @@ private function uploadMediaChunked(string $path, array $parameters)
$this->mediaInitParameters($parameters),
false,
);
+ if (!property_exists($init, 'media_id_string')) {
+ throw new TwitterOAuthException('Missing "media_id_string"');
+ }
// Append
$segmentIndex = 0;
$media = fopen($parameters['media'], 'rb');
@@ -460,6 +473,19 @@ private function cleanUpParameters(array $parameters)
return $parameters;
}
+ /**
+ * Get URL extension for current API Version.
+ *
+ * @return string
+ */
+ private function extension()
+ {
+ return [
+ '1.1' => '.json',
+ '2' => '',
+ ][$this->apiVersion];
+ }
+
/**
* @param string $method
* @param string $host
@@ -474,16 +500,41 @@ private function http(
string $host,
string $path,
array $parameters,
- bool $json
+ bool $json,
) {
$this->resetLastResponse();
$this->resetAttemptsNumber();
- $url = sprintf('%s/%s/%s.json', $host, self::API_VERSION, $path);
$this->response->setApiPath($path);
if (!$json) {
$parameters = $this->cleanUpParameters($parameters);
}
- return $this->makeRequests($url, $method, $parameters, $json);
+ return $this->makeRequests(
+ $this->apiUrl($host, $path),
+ $method,
+ $parameters,
+ $json,
+ );
+ }
+
+ /**
+ * Generate API URL.
+ *
+ * Overriding this function is not supported and may cause unintended issues.
+ *
+ * @param string $host
+ * @param string $path
+ *
+ * @return string
+ */
+ protected function apiUrl(string $host, string $path)
+ {
+ return sprintf(
+ '%s/%s/%s%s',
+ $host,
+ $this->apiVersion,
+ $path,
+ $this->extension(),
+ );
}
/**
@@ -502,7 +553,7 @@ private function makeRequests(
string $url,
string $method,
array $parameters,
- bool $json
+ bool $json,
) {
do {
$this->sleepIfNeeded();
@@ -543,7 +594,7 @@ private function oAuthRequest(
string $url,
string $method,
array $parameters,
- bool $json = false
+ bool $json = false,
) {
$request = Request::fromConsumerAndToken(
$this->consumer,
@@ -634,7 +685,7 @@ private function request(
string $method,
string $authorization,
array $postfields,
- bool $json = false
+ bool $json = false,
): string {
$options = $this->curlOptions();
$options[CURLOPT_URL] = $url;
@@ -649,21 +700,22 @@ private function request(
break;
case 'POST':
$options[CURLOPT_POST] = true;
- if ($json) {
- $options[CURLOPT_HTTPHEADER][] =
- 'Content-type: application/json';
- $options[CURLOPT_POSTFIELDS] = json_encode($postfields);
- } else {
- $options[CURLOPT_POSTFIELDS] = Util::buildHttpQuery(
- $postfields,
- );
- }
+ $options = $this->setPostfieldsOptions(
+ $options,
+ $postfields,
+ $json,
+ );
break;
case 'DELETE':
$options[CURLOPT_CUSTOMREQUEST] = 'DELETE';
break;
case 'PUT':
$options[CURLOPT_CUSTOMREQUEST] = 'PUT';
+ $options = $this->setPostfieldsOptions(
+ $options,
+ $postfields,
+ $json,
+ );
break;
}
@@ -743,4 +795,31 @@ private function curlCaOpt(string $path): int
{
return is_dir($path) ? CURLOPT_CAPATH : CURLOPT_CAINFO;
}
+
+ /**
+ * Set options for JSON Requests
+ *
+ * @param array $options
+ * @param array $postfields
+ * @param bool $json
+ *
+ * @return array
+ */
+ private function setPostfieldsOptions(
+ array $options,
+ array $postfields,
+ bool $json,
+ ): array {
+ if ($json) {
+ $options[CURLOPT_HTTPHEADER][] = 'Content-type: application/json';
+ $options[CURLOPT_POSTFIELDS] = json_encode(
+ $postfields,
+ JSON_THROW_ON_ERROR,
+ );
+ } else {
+ $options[CURLOPT_POSTFIELDS] = Util::buildHttpQuery($postfields);
+ }
+
+ return $options;
+ }
}
diff --git a/src/Util/JsonDecoder.php b/src/Util/JsonDecoder.php
index 989f3406..09e6e1a9 100644
--- a/src/Util/JsonDecoder.php
+++ b/src/Util/JsonDecoder.php
@@ -24,6 +24,6 @@ public static function decode(string $string, bool $asArray)
return json_decode($string, $asArray, 512, JSON_BIGINT_AS_STRING);
}
- return json_decode($string, $asArray);
+ return json_decode($string, $asArray, 512, JSON_THROW_ON_ERROR);
}
}
diff --git a/tests/AbstractSignatureMethodTest.php b/tests/AbstractSignatureMethodTest.php
index f43451ec..aa8c054f 100644
--- a/tests/AbstractSignatureMethodTest.php
+++ b/tests/AbstractSignatureMethodTest.php
@@ -5,7 +5,6 @@
namespace Abraham\TwitterOAuth\Tests;
use PHPUnit\Framework\TestCase;
-use Abraham\TwitterOAuth\SignatureMethod;
abstract class AbstractSignatureMethodTest extends TestCase
{
@@ -36,7 +35,7 @@ public function testBuildSignature($expected, $request, $consumer, $token)
protected function getRequest()
{
- return $this->getMockBuilder('Abraham\TwitterOAuth\Request')
+ return $this->getMockBuilder(\Abraham\TwitterOAuth\Request::class)
->disableOriginalConstructor()
->getMock();
}
@@ -44,16 +43,16 @@ protected function getRequest()
protected function getConsumer(
$key = null,
$secret = null,
- $callbackUrl = null
+ $callbackUrl = null,
) {
- return $this->getMockBuilder('Abraham\TwitterOAuth\Consumer')
+ return $this->getMockBuilder(\Abraham\TwitterOAuth\Consumer::class)
->setConstructorArgs([$key, $secret, $callbackUrl])
->getMock();
}
protected function getToken($key = null, $secret = null)
{
- return $this->getMockBuilder('Abraham\TwitterOAuth\Token')
+ return $this->getMockBuilder(\Abraham\TwitterOAuth\Token::class)
->setConstructorArgs([$key, $secret])
->getMock();
}
diff --git a/tests/TwitterOAuthDirectMessagesTest.php b/tests/TwitterOAuthDirectMessagesTest.php
new file mode 100644
index 00000000..fab15a11
--- /dev/null
+++ b/tests/TwitterOAuthDirectMessagesTest.php
@@ -0,0 +1,69 @@
+twitter = new TwitterOAuth(
+ CONSUMER_KEY,
+ CONSUMER_SECRET,
+ ACCESS_TOKEN,
+ ACCESS_TOKEN_SECRET,
+ );
+ $this->twitter->setApiVersion('1.1');
+ $this->userId = explode('-', ACCESS_TOKEN)[0];
+ }
+
+ /**
+ * @vcr testPostDirectMessagesEventsNew.json
+ */
+ public function testPostDirectMessagesEventsNew()
+ {
+ $data = [
+ 'event' => [
+ 'type' => 'message_create',
+ 'message_create' => [
+ 'target' => [
+ 'recipient_id' => $this->userId,
+ ],
+ 'message_data' => [
+ 'text' => 'Hello World!',
+ ],
+ ],
+ ],
+ ];
+ $result = $this->twitter->post(
+ 'direct_messages/events/new',
+ $data,
+ true,
+ );
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ return $result;
+ }
+
+ /**
+ * @depends testPostDirectMessagesEventsNew
+ * @vcr testDeleteDirectMessagesEventsDestroy.json
+ */
+ public function testDeleteDirectMessagesEventsDestroy($message)
+ {
+ $this->twitter->delete('direct_messages/events/destroy', [
+ 'id' => $message->event->id,
+ ]);
+ $this->assertEquals(204, $this->twitter->getLastHttpCode());
+ }
+}
diff --git a/tests/TwitterOAuthFavoritesTest.php b/tests/TwitterOAuthFavoritesTest.php
new file mode 100644
index 00000000..199bda5b
--- /dev/null
+++ b/tests/TwitterOAuthFavoritesTest.php
@@ -0,0 +1,51 @@
+twitter = new TwitterOAuth(
+ CONSUMER_KEY,
+ CONSUMER_SECRET,
+ ACCESS_TOKEN,
+ ACCESS_TOKEN_SECRET,
+ );
+ $this->twitter->setApiVersion('1.1');
+ $this->userId = explode('-', ACCESS_TOKEN)[0];
+ }
+
+ /**
+ * @vcr testPostFavoritesCreate.json
+ */
+ public function testPostFavoritesCreate()
+ {
+ $result = $this->twitter->post('favorites/create', [
+ 'id' => '6242973112',
+ ]);
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ }
+
+ /**
+ * @depends testPostFavoritesCreate
+ * @vcr testPostFavoritesDestroy.json
+ */
+ public function testPostFavoritesDestroy()
+ {
+ $this->twitter->post('favorites/destroy', ['id' => '6242973112']);
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ }
+}
diff --git a/tests/TwitterOAuthLastTest.php b/tests/TwitterOAuthLastTest.php
new file mode 100644
index 00000000..525cf7aa
--- /dev/null
+++ b/tests/TwitterOAuthLastTest.php
@@ -0,0 +1,56 @@
+twitter = new TwitterOAuth(
+ CONSUMER_KEY,
+ CONSUMER_SECRET,
+ ACCESS_TOKEN,
+ ACCESS_TOKEN_SECRET,
+ );
+ $this->twitter->setApiVersion('1.1');
+ $this->userId = explode('-', ACCESS_TOKEN)[0];
+ }
+
+ /**
+ * @vcr testLastResult.json
+ */
+ public function testLastResult()
+ {
+ $this->twitter->get('search/tweets', ['q' => 'twitter']);
+ $this->assertEquals('search/tweets', $this->twitter->getLastApiPath());
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ $this->assertObjectHasAttribute(
+ 'statuses',
+ $this->twitter->getLastBody(),
+ );
+ }
+
+ /**
+ * @depends testLastResult
+ * @vcr testResetLastResponse.json
+ */
+ public function testResetLastResponse()
+ {
+ $this->twitter->resetLastResponse();
+ $this->assertEquals('', $this->twitter->getLastApiPath());
+ $this->assertEquals(0, $this->twitter->getLastHttpCode());
+ $this->assertEquals([], $this->twitter->getLastBody());
+ }
+}
diff --git a/tests/TwitterOAuthMediaTest.php b/tests/TwitterOAuthMediaTest.php
new file mode 100644
index 00000000..cf7e5684
--- /dev/null
+++ b/tests/TwitterOAuthMediaTest.php
@@ -0,0 +1,109 @@
+twitter = new TwitterOAuth(
+ CONSUMER_KEY,
+ CONSUMER_SECRET,
+ ACCESS_TOKEN,
+ ACCESS_TOKEN_SECRET,
+ );
+ $this->twitter->setApiVersion('1.1');
+ $this->userId = explode('-', ACCESS_TOKEN)[0];
+ }
+
+ /**
+ * @vcr testPostStatusesUpdateWithMedia.json
+ */
+ public function testPostStatusesUpdateWithMedia()
+ {
+ $this->twitter->setTimeouts(60, 60);
+ // Image source https://www.flickr.com/photos/titrans/8548825587/
+ $file_path = __DIR__ . '/kitten.jpg';
+ $result = $this->twitter->upload('media/upload', [
+ 'media' => $file_path,
+ ]);
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ $this->assertObjectHasAttribute('media_id_string', $result);
+ $parameters = [
+ 'status' => 'Hello World ' . MOCK_TIME,
+ 'media_ids' => $result->media_id_string,
+ ];
+ $result = $this->twitter->post('statuses/update', $parameters);
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ $result = $this->twitter->post('statuses/destroy/' . $result->id_str);
+ return $result;
+ }
+
+ /**
+ * @vcr testPostStatusUpdateWithInvalidMediaThrowsException.json
+ */
+ public function testPostStatusUpdateWithInvalidMediaThrowsException()
+ {
+ $this->expectException(\InvalidArgumentException::class);
+ $file_path = __DIR__ . '/12345678900987654321.jpg';
+ $this->assertFalse(\is_readable($file_path));
+ $result = $this->twitter->upload('media/upload', [
+ 'media' => $file_path,
+ ]);
+ }
+
+ /**
+ * @vcr testPostStatusesUpdateWithMediaChunked.json
+ */
+ public function testPostStatusesUpdateWithMediaChunked()
+ {
+ $this->twitter->setTimeouts(60, 30);
+ // Video source http://www.sample-videos.com/
+ $file_path = __DIR__ . '/video.mp4';
+ $result = $this->twitter->upload(
+ 'media/upload',
+ ['media' => $file_path, 'media_type' => 'video/mp4'],
+ true,
+ );
+ $this->assertEquals(201, $this->twitter->getLastHttpCode());
+ $this->assertObjectHasAttribute('media_id_string', $result);
+ $parameters = [
+ 'status' => 'Hello World ' . MOCK_TIME,
+ 'media_ids' => $result->media_id_string,
+ ];
+ $result = $this->twitter->post('statuses/update', $parameters);
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ $result = $this->twitter->post('statuses/destroy/' . $result->id_str);
+ return $result;
+ }
+
+ /**
+ * @vcr testPostStatusesUpdateWithMediaChunkedException.json
+ */
+ public function testPostStatusesUpdateWithMediaChunkedException()
+ {
+ $this->expectException(
+ \Abraham\TwitterOAuth\TwitterOAuthException::class,
+ );
+ $this->expectErrorMessage('Missing "media_id_string"');
+ // Video source http://www.sample-videos.com/
+ $file_path = __DIR__ . '/video.mp4';
+ $result = $this->twitter->upload(
+ 'media/upload',
+ ['media' => $file_path, 'media_type' => 'video/mp4'],
+ true,
+ );
+ }
+}
diff --git a/tests/TwitterOAuthOAuthTest.php b/tests/TwitterOAuthOAuthTest.php
new file mode 100644
index 00000000..39b6e24b
--- /dev/null
+++ b/tests/TwitterOAuthOAuthTest.php
@@ -0,0 +1,169 @@
+twitter = new TwitterOAuth(
+ CONSUMER_KEY,
+ CONSUMER_SECRET,
+ ACCESS_TOKEN,
+ ACCESS_TOKEN_SECRET,
+ );
+ $this->twitter->setApiVersion('1.1');
+ $this->userId = explode('-', ACCESS_TOKEN)[0];
+ }
+
+ public function testBuildClient()
+ {
+ $this->assertObjectHasAttribute('consumer', $this->twitter);
+ $this->assertObjectHasAttribute('token', $this->twitter);
+ }
+
+ /**
+ * @vcr testSetOauthToken.json
+ */
+ public function testSetOauthToken()
+ {
+ $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
+ $twitter->setApiVersion('1.1');
+ $twitter->setOauthToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
+ $this->assertObjectHasAttribute('consumer', $twitter);
+ $this->assertObjectHasAttribute('token', $twitter);
+ $twitter->get('friendships/show', [
+ 'target_screen_name' => 'twitterapi',
+ ]);
+ $this->assertEquals(200, $twitter->getLastHttpCode());
+ }
+
+ /**
+ * @vcr testOauth2Token.json
+ */
+ public function testOauth2Token()
+ {
+ $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
+ $result = $twitter->oauth2('oauth2/token', [
+ 'grant_type' => 'client_credentials',
+ ]);
+ $this->assertEquals(200, $twitter->getLastHttpCode());
+ $this->assertObjectHasAttribute('token_type', $result);
+ $this->assertObjectHasAttribute('access_token', $result);
+ $this->assertEquals('bearer', $result->token_type);
+ return $result;
+ }
+
+ /**
+ * @depends testOauth2Token
+ * @vcr testOauth2BearerToken.json
+ */
+ public function testOauth2BearerToken($accessToken)
+ {
+ $twitter = new TwitterOAuth(
+ CONSUMER_KEY,
+ CONSUMER_SECRET,
+ null,
+ $accessToken->access_token,
+ );
+ $twitter->setApiVersion('1.1');
+ $result = $twitter->get('statuses/user_timeline', [
+ 'screen_name' => 'twitterapi',
+ ]);
+ $this->assertEquals(200, $twitter->getLastHttpCode());
+ return $accessToken;
+ }
+
+ /**
+ * @depends testOauth2BearerToken
+ * @vcr testOauth2TokenInvalidate.json
+ */
+ public function testOauth2TokenInvalidate($accessToken)
+ {
+ $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
+ // HACK: access_token is already urlencoded but gets urlencoded again breaking the invalidate request.
+ $result = $twitter->oauth2('oauth2/invalidate_token', [
+ 'access_token' => urldecode($accessToken->access_token),
+ ]);
+ $this->assertEquals(200, $twitter->getLastHttpCode());
+ $this->assertObjectHasAttribute('access_token', $result);
+ }
+
+ /**
+ * @vcr testOauthRequestToken.json
+ */
+ public function testOauthRequestToken()
+ {
+ $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
+ $result = $twitter->oauth('oauth/request_token', [
+ 'oauth_callback' => OAUTH_CALLBACK,
+ ]);
+ $this->assertEquals(200, $twitter->getLastHttpCode());
+ $this->assertArrayHasKey('oauth_token', $result);
+ $this->assertArrayHasKey('oauth_token_secret', $result);
+ $this->assertArrayHasKey('oauth_callback_confirmed', $result);
+ $this->assertEquals('true', $result['oauth_callback_confirmed']);
+ return $result;
+ }
+
+ /**
+ * @vcr testOauthRequestTokenException.json
+ */
+ public function testOauthRequestTokenException()
+ {
+ $this->expectException(
+ \Abraham\TwitterOAuth\TwitterOAuthException::class,
+ );
+ $this->expectErrorMessage('Could not authenticate you');
+ $twitter = new TwitterOAuth('CONSUMER_KEY', 'CONSUMER_SECRET');
+ $result = $twitter->oauth('oauth/request_token', [
+ 'oauth_callback' => OAUTH_CALLBACK,
+ ]);
+ }
+
+ /**
+ * @depends testOauthRequestToken
+ * @vcr testOauthAccessTokenTokenException.json
+ */
+ public function testOauthAccessTokenTokenException(array $requestToken)
+ {
+ // Can't test this without a browser logging into Twitter so check for the correct error instead.
+ $this->expectException(
+ \Abraham\TwitterOAuth\TwitterOAuthException::class,
+ );
+ $this->expectErrorMessage('Invalid oauth_verifier parameter');
+ $twitter = new TwitterOAuth(
+ CONSUMER_KEY,
+ CONSUMER_SECRET,
+ $requestToken['oauth_token'],
+ $requestToken['oauth_token_secret'],
+ );
+ $twitter->oauth('oauth/access_token', [
+ 'oauth_verifier' => 'fake_oauth_verifier',
+ ]);
+ }
+
+ public function testUrl()
+ {
+ $url = $this->twitter->url('oauth/authorize', [
+ 'foo' => 'bar',
+ 'baz' => 'qux',
+ ]);
+ $this->assertEquals(
+ 'https://api.twitter.com/oauth/authorize?foo=bar&baz=qux',
+ $url,
+ );
+ }
+}
diff --git a/tests/TwitterOAuthProxyTest.php b/tests/TwitterOAuthProxyTest.php
new file mode 100644
index 00000000..d9bfc7bc
--- /dev/null
+++ b/tests/TwitterOAuthProxyTest.php
@@ -0,0 +1,46 @@
+twitter = new TwitterOAuth(
+ CONSUMER_KEY,
+ CONSUMER_SECRET,
+ ACCESS_TOKEN,
+ ACCESS_TOKEN_SECRET,
+ );
+ $this->twitter->setApiVersion('1.1');
+ $this->userId = explode('-', ACCESS_TOKEN)[0];
+ }
+
+ /**
+ * @vcr testSetProxy.json
+ */
+ public function testSetProxy()
+ {
+ $this->twitter->setProxy([
+ 'CURLOPT_PROXY' => PROXY,
+ 'CURLOPT_PROXYUSERPWD' => PROXYUSERPWD,
+ 'CURLOPT_PROXYPORT' => PROXYPORT,
+ ]);
+ $this->twitter->setTimeouts(60, 60);
+ $result = $this->twitter->get('account/verify_credentials');
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ $this->assertObjectHasAttribute('id', $result);
+ }
+}
diff --git a/tests/TwitterOAuthStatusesTest.php b/tests/TwitterOAuthStatusesTest.php
new file mode 100644
index 00000000..8518b3da
--- /dev/null
+++ b/tests/TwitterOAuthStatusesTest.php
@@ -0,0 +1,85 @@
+twitter = new TwitterOAuth(
+ CONSUMER_KEY,
+ CONSUMER_SECRET,
+ ACCESS_TOKEN,
+ ACCESS_TOKEN_SECRET,
+ );
+ $this->twitter->setApiVersion('1.1');
+ $this->userId = explode('-', ACCESS_TOKEN)[0];
+ }
+
+ /**
+ * @vcr testGetStatusesMentionsTimeline.json
+ */
+ public function testGetStatusesMentionsTimeline()
+ {
+ $this->twitter->get('statuses/mentions_timeline');
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ }
+
+ /**
+ * @vcr testGetSearchTweets.json
+ */
+ public function testGetSearchTweets()
+ {
+ $result = $this->twitter->get('search/tweets', ['q' => 'twitter']);
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ return $result->statuses;
+ }
+
+ /**
+ * @depends testGetSearchTweets
+ * @vcr testGetSearchTweetsWithMaxId.json
+ */
+ public function testGetSearchTweetsWithMaxId($statuses)
+ {
+ $maxId = array_pop($statuses)->id_str;
+ $this->twitter->get('search/tweets', [
+ 'q' => 'twitter',
+ 'max_id' => $maxId,
+ ]);
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ }
+
+ /**
+ * @vcr testPostStatusesUpdateUtf8.json
+ */
+ public function testPostStatusesUpdateUtf8()
+ {
+ $result = $this->twitter->post('statuses/update', [
+ 'status' => 'xこんにちは世界 ' . MOCK_TIME,
+ ]);
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ return $result;
+ }
+
+ /**
+ * @depends testPostStatusesUpdateUtf8
+ * @vcr testPostStatusesDestroy.json
+ */
+ public function testPostStatusesDestroy($status)
+ {
+ $this->twitter->post('statuses/destroy/' . $status->id_str);
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ }
+}
diff --git a/tests/TwitterOAuthTest.php b/tests/TwitterOAuthTest.php
index de97111c..fbf35fcb 100644
--- a/tests/TwitterOAuthTest.php
+++ b/tests/TwitterOAuthTest.php
@@ -24,146 +24,10 @@ protected function setUp(): void
ACCESS_TOKEN,
ACCESS_TOKEN_SECRET,
);
+ $this->twitter->setApiVersion('1.1');
$this->userId = explode('-', ACCESS_TOKEN)[0];
}
- public function testBuildClient()
- {
- $this->assertObjectHasAttribute('consumer', $this->twitter);
- $this->assertObjectHasAttribute('token', $this->twitter);
- }
-
- /**
- * @vcr testSetOauthToken.json
- */
- public function testSetOauthToken()
- {
- $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
- $twitter->setOauthToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
- $this->assertObjectHasAttribute('consumer', $twitter);
- $this->assertObjectHasAttribute('token', $twitter);
- $twitter->get('friendships/show', [
- 'target_screen_name' => 'twitterapi',
- ]);
- $this->assertEquals(200, $twitter->getLastHttpCode());
- }
-
- /**
- * @vcr testOauth2Token.json
- */
- public function testOauth2Token()
- {
- $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
- $result = $twitter->oauth2('oauth2/token', [
- 'grant_type' => 'client_credentials',
- ]);
- $this->assertEquals(200, $twitter->getLastHttpCode());
- $this->assertObjectHasAttribute('token_type', $result);
- $this->assertObjectHasAttribute('access_token', $result);
- $this->assertEquals('bearer', $result->token_type);
- return $result;
- }
-
- /**
- * @depends testOauth2Token
- * @vcr testOauth2BearerToken.json
- */
- public function testOauth2BearerToken($accessToken)
- {
- $twitter = new TwitterOAuth(
- CONSUMER_KEY,
- CONSUMER_SECRET,
- null,
- $accessToken->access_token,
- );
- $result = $twitter->get('statuses/user_timeline', [
- 'screen_name' => 'twitterapi',
- ]);
- $this->assertEquals(200, $twitter->getLastHttpCode());
- return $accessToken;
- }
-
- /**
- * @depends testOauth2BearerToken
- * @vcr testOauth2TokenInvalidate.json
- */
- public function testOauth2TokenInvalidate($accessToken)
- {
- $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
- // HACK: access_token is already urlencoded but gets urlencoded again breaking the invalidate request.
- $result = $twitter->oauth2('oauth2/invalidate_token', [
- 'access_token' => urldecode($accessToken->access_token),
- ]);
- $this->assertEquals(200, $twitter->getLastHttpCode());
- $this->assertObjectHasAttribute('access_token', $result);
- }
-
- /**
- * @vcr testOauthRequestToken.json
- */
- public function testOauthRequestToken()
- {
- $twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
- $result = $twitter->oauth('oauth/request_token', [
- 'oauth_callback' => OAUTH_CALLBACK,
- ]);
- $this->assertEquals(200, $twitter->getLastHttpCode());
- $this->assertArrayHasKey('oauth_token', $result);
- $this->assertArrayHasKey('oauth_token_secret', $result);
- $this->assertArrayHasKey('oauth_callback_confirmed', $result);
- $this->assertEquals('true', $result['oauth_callback_confirmed']);
- return $result;
- }
-
- /**
- * @vcr testOauthRequestTokenException.json
- */
- public function testOauthRequestTokenException()
- {
- $this->expectException(
- \Abraham\TwitterOAuth\TwitterOAuthException::class,
- );
- $this->expectErrorMessage('Could not authenticate you');
- $twitter = new TwitterOAuth('CONSUMER_KEY', 'CONSUMER_SECRET');
- $result = $twitter->oauth('oauth/request_token', [
- 'oauth_callback' => OAUTH_CALLBACK,
- ]);
- }
-
- /**
- * @depends testOauthRequestToken
- * @vcr testOauthAccessTokenTokenException.json
- */
- public function testOauthAccessTokenTokenException(array $requestToken)
- {
- // Can't test this without a browser logging into Twitter so check for the correct error instead.
- $this->expectException(
- \Abraham\TwitterOAuth\TwitterOAuthException::class,
- );
- $this->expectErrorMessage('Invalid oauth_verifier parameter');
- $twitter = new TwitterOAuth(
- CONSUMER_KEY,
- CONSUMER_SECRET,
- $requestToken['oauth_token'],
- $requestToken['oauth_token_secret'],
- );
- $twitter->oauth('oauth/access_token', [
- 'oauth_verifier' => 'fake_oauth_verifier',
- ]);
- }
-
- public function testUrl()
- {
- $url = $this->twitter->url('oauth/authorize', [
- 'foo' => 'bar',
- 'baz' => 'qux',
- ]);
- $this->assertEquals(
- 'https://api.twitter.com/oauth/authorize?foo=bar&baz=qux',
- $url,
- );
- }
-
/**
* @vcr testGetAccountVerifyCredentials.json
*/
@@ -176,222 +40,4 @@ public function testGetAccountVerifyCredentials()
$this->assertEquals(200, $this->twitter->getLastHttpCode());
$this->assertObjectHasAttribute('email', $user);
}
-
- /**
- * @vcr testSetProxy.json
- */
- public function testSetProxy()
- {
- $this->twitter->setProxy([
- 'CURLOPT_PROXY' => PROXY,
- 'CURLOPT_PROXYUSERPWD' => PROXYUSERPWD,
- 'CURLOPT_PROXYPORT' => PROXYPORT,
- ]);
- $this->twitter->setTimeouts(60, 60);
- $result = $this->twitter->get('account/verify_credentials');
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- $this->assertObjectHasAttribute('id', $result);
- }
-
- /**
- * @vcr testGetStatusesMentionsTimeline.json
- */
- public function testGetStatusesMentionsTimeline()
- {
- $this->twitter->get('statuses/mentions_timeline');
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- }
-
- /**
- * @vcr testGetSearchTweets.json
- */
- public function testGetSearchTweets()
- {
- $result = $this->twitter->get('search/tweets', ['q' => 'twitter']);
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- return $result->statuses;
- }
-
- /**
- * @depends testGetSearchTweets
- * @vcr testGetSearchTweetsWithMaxId.json
- */
- public function testGetSearchTweetsWithMaxId($statuses)
- {
- $maxId = array_pop($statuses)->id_str;
- $this->twitter->get('search/tweets', [
- 'q' => 'twitter',
- 'max_id' => $maxId,
- ]);
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- }
-
- /**
- * @vcr testPostFavoritesCreate.json
- */
- public function testPostFavoritesCreate()
- {
- $result = $this->twitter->post('favorites/create', [
- 'id' => '6242973112',
- ]);
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- }
-
- /**
- * @depends testPostFavoritesCreate
- * @vcr testPostFavoritesDestroy.json
- */
- public function testPostFavoritesDestroy()
- {
- $this->twitter->post('favorites/destroy', ['id' => '6242973112']);
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- }
-
- /**
- * @vcr testPostDirectMessagesEventsNew.json
- */
- public function testPostDirectMessagesEventsNew()
- {
- $data = [
- 'event' => [
- 'type' => 'message_create',
- 'message_create' => [
- 'target' => [
- 'recipient_id' => $this->userId,
- ],
- 'message_data' => [
- 'text' => 'Hello World!',
- ],
- ],
- ],
- ];
- $result = $this->twitter->post(
- 'direct_messages/events/new',
- $data,
- true,
- );
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- return $result;
- }
-
- /**
- * @depends testPostDirectMessagesEventsNew
- * @vcr testDeleteDirectMessagesEventsDestroy.json
- */
- public function testDeleteDirectMessagesEventsDestroy($message)
- {
- $this->twitter->delete('direct_messages/events/destroy', [
- 'id' => $message->event->id,
- ]);
- $this->assertEquals(204, $this->twitter->getLastHttpCode());
- }
-
- /**
- * @vcr testPostStatusesUpdateWithMedia.json
- */
- public function testPostStatusesUpdateWithMedia()
- {
- $this->twitter->setTimeouts(60, 60);
- // Image source https://www.flickr.com/photos/titrans/8548825587/
- $file_path = __DIR__ . '/kitten.jpg';
- $result = $this->twitter->upload('media/upload', [
- 'media' => $file_path,
- ]);
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- $this->assertObjectHasAttribute('media_id_string', $result);
- $parameters = [
- 'status' => 'Hello World ' . MOCK_TIME,
- 'media_ids' => $result->media_id_string,
- ];
- $result = $this->twitter->post('statuses/update', $parameters);
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- $result = $this->twitter->post('statuses/destroy/' . $result->id_str);
- return $result;
- }
-
- /**
- * @vcr testPostStatusUpdateWithInvalidMediaThrowsException.json
- */
- public function testPostStatusUpdateWithInvalidMediaThrowsException()
- {
- $this->expectException(\InvalidArgumentException::class);
- $file_path = __DIR__ . '/12345678900987654321.jpg';
- $this->assertFalse(\is_readable($file_path));
- $result = $this->twitter->upload('media/upload', [
- 'media' => $file_path,
- ]);
- }
-
- /**
- * @vcr testPostStatusesUpdateWithMediaChunked.json
- */
- public function testPostStatusesUpdateWithMediaChunked()
- {
- $this->twitter->setTimeouts(60, 30);
- // Video source http://www.sample-videos.com/
- $file_path = __DIR__ . '/video.mp4';
- $result = $this->twitter->upload(
- 'media/upload',
- ['media' => $file_path, 'media_type' => 'video/mp4'],
- true,
- );
- $this->assertEquals(201, $this->twitter->getLastHttpCode());
- $this->assertObjectHasAttribute('media_id_string', $result);
- $parameters = [
- 'status' => 'Hello World ' . MOCK_TIME,
- 'media_ids' => $result->media_id_string,
- ];
- $result = $this->twitter->post('statuses/update', $parameters);
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- $result = $this->twitter->post('statuses/destroy/' . $result->id_str);
- return $result;
- }
-
- /**
- * @vcr testPostStatusesUpdateUtf8.json
- */
- public function testPostStatusesUpdateUtf8()
- {
- $result = $this->twitter->post('statuses/update', [
- 'status' => 'xこんにちは世界 ' . MOCK_TIME,
- ]);
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- return $result;
- }
-
- /**
- * @depends testPostStatusesUpdateUtf8
- * @vcr testPostStatusesDestroy.json
- */
- public function testPostStatusesDestroy($status)
- {
- $this->twitter->post('statuses/destroy/' . $status->id_str);
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- }
-
- /**
- * @vcr testLastResult.json
- */
- public function testLastResult()
- {
- $this->twitter->get('search/tweets', ['q' => 'twitter']);
- $this->assertEquals('search/tweets', $this->twitter->getLastApiPath());
- $this->assertEquals(200, $this->twitter->getLastHttpCode());
- $this->assertObjectHasAttribute(
- 'statuses',
- $this->twitter->getLastBody(),
- );
- }
-
- /**
- * @depends testLastResult
- * @vcr testResetLastResponse.json
- */
- public function testResetLastResponse()
- {
- $this->twitter->resetLastResponse();
- $this->assertEquals('', $this->twitter->getLastApiPath());
- $this->assertEquals(0, $this->twitter->getLastHttpCode());
- $this->assertEquals([], $this->twitter->getLastBody());
- }
}
diff --git a/tests/TwitterOAuthV2Test.php b/tests/TwitterOAuthV2Test.php
new file mode 100644
index 00000000..8714cc7d
--- /dev/null
+++ b/tests/TwitterOAuthV2Test.php
@@ -0,0 +1,39 @@
+markTestSkipped('Fixtures need to be updated');
+ $this->twitter = new TwitterOAuth(
+ CONSUMER_KEY,
+ CONSUMER_SECRET,
+ ACCESS_TOKEN,
+ ACCESS_TOKEN_SECRET,
+ );
+ $this->userId = explode('-', ACCESS_TOKEN)[0];
+ }
+
+ /**
+ * @vcr testV2GetUsers.json
+ */
+ public function testV2GetUsers()
+ {
+ $this->twitter->get('users', ['ids' => 12]);
+ $this->assertEquals(200, $this->twitter->getLastHttpCode());
+ }
+}
diff --git a/tests/Util/JsonDecoderTest.php b/tests/Util/JsonDecoderTest.php
index dc6fa970..202e4144 100644
--- a/tests/Util/JsonDecoderTest.php
+++ b/tests/Util/JsonDecoderTest.php
@@ -23,7 +23,7 @@ public function jsonProvider()
[
'[{"id": 556179961825226750}]',
true,
- [['id' => 556179961825226750]],
+ [['id' => 556_179_961_825_226_750]],
],
['[]', false, []],
['[1,2,3]', false, [1, 2, 3]],
@@ -32,7 +32,7 @@ public function jsonProvider()
false,
[
$this->getClass(function ($object) {
- $object->id = 556179961825226750;
+ $object->id = 556_179_961_825_226_750;
return $object;
}),
],
diff --git a/tests/fixtures/testPostStatusesUpdateWithMediaChunkedException.json b/tests/fixtures/testPostStatusesUpdateWithMediaChunkedException.json
new file mode 100644
index 00000000..1b772ad2
--- /dev/null
+++ b/tests/fixtures/testPostStatusesUpdateWithMediaChunkedException.json
@@ -0,0 +1,49 @@
+[{
+ "request": {
+ "method": "POST",
+ "url": "https:\/\/upload.twitter.com\/1.1\/media\/upload.json",
+ "headers": {
+ "Host": "upload.twitter.com",
+ "Accept": "application\/json",
+ "Authorization": "OAuth oauth_version=\"1.0\", oauth_nonce=\"2b67ebbeace76543f356ba8bbd59abde\", oauth_timestamp=\"1587861062\", oauth_consumer_key=\"awJfND4zFGapGOFKfdjg\", oauth_token=\"93915746-KjE3c27dCt8awONxuUAaJ00yishXXwcH5CdLBnO1x\", oauth_signature_method=\"HMAC-SHA1\", oauth_signature=\"cOKZmxZ5f3bxiwWU%2B1cJ9hWpUL4%3D\"",
+ "Expect": null
+ },
+ "body": "command=INIT&media_type=video%2Fmp4&total_bytes=383631"
+ },
+ "response": {
+ "status": {
+ "http_version": "2",
+ "code": "400",
+ "message": ""
+ },
+ "headers": {
+ "cache-control": "no-cache, no-store, must-revalidate, pre-check=0, post-check=0",
+ "content-disposition": "attachment; filename=json.json",
+ "content-encoding": "gzip",
+ "content-length": "101",
+ "content-type": "application\/json;charset=utf-8",
+ "date": "Sun, 26 Apr 2020 00:31:54 GMT",
+ "expires": "Tue, 31 Mar 1981 05:00:00 GMT",
+ "last-modified": "Sun, 26 Apr 2020 00:31:54 GMT",
+ "pragma": "no-cache",
+ "server": "tsa_b",
+ "set-cookie": "personalization_id=\"v1_0CYjFmw6Rjdl\/xKmqvzf4g==\"; Max-Age=63072000; Expires=Tue, 26 Apr 2022 00:31:54 GMT; Path=\/; Domain=.twitter.com; Secure; SameSite=None, lang=en; Path=\/, guest_id=v1%3A158786111466374311; Max-Age=63072000; Expires=Tue, 26 Apr 2022 00:31:54 GMT; Path=\/; Domain=.twitter.com; Secure; SameSite=None",
+ "status": "202 Accepted",
+ "strict-transport-security": "max-age=631138519",
+ "vary": "Origin",
+ "x-access-level": "read-write-directmessages",
+ "x-connection-hash": "448b96791c0d13223e24f9c1edc4a7fa",
+ "x-frame-options": "SAMEORIGIN",
+ "x-mediaid": "1254206535166763008",
+ "x-rate-limit-limit": "200",
+ "x-rate-limit-remaining": "198",
+ "x-rate-limit-reset": "1587864355",
+ "x-response-time": "28",
+ "x-transaction": "009da55c002c6fca",
+ "x-tsa-request-body-time": "1",
+ "x-twitter-response-tags": "BouncerCompliant",
+ "x-xss-protection": "1; mode=block"
+ },
+ "body": "{\"errors\":[{\"code\":324,\"message\":\"Failed to process media.\"}]}"
+ }
+}]
diff --git a/tests/fixtures/testV2GetUsers.json b/tests/fixtures/testV2GetUsers.json
new file mode 100644
index 00000000..0637a088
--- /dev/null
+++ b/tests/fixtures/testV2GetUsers.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/tests/mocks.php b/tests/mocks.php
index b3127313..26d79352 100644
--- a/tests/mocks.php
+++ b/tests/mocks.php
@@ -15,7 +15,7 @@ function microtime()
return 'FAKE_MICROTIME';
}
-function mt_rand()
+function random_int($_min, $_max)
{
- return 123456789;
+ return 123_456_789;
}
diff --git a/tests/vars.php b/tests/vars.php
index 06ae8d6d..eeca5443 100644
--- a/tests/vars.php
+++ b/tests/vars.php
@@ -24,7 +24,7 @@
define('ACCESS_TOKEN_SECRET', 'vurSbgJw6nHvv7xBfqKnBLWEQekOi59KFkXDLiY3Vqn3u');
// Timestamp the VCR cassettes were last updated
-define('MOCK_TIME', 1587861062);
+define('MOCK_TIME', 1_587_861_062);
// https://free-proxy-list.net/
define('PROXY', '12.218.209.130');