diff --git a/.htaccess b/.htaccess
index 2464153..189c24c 100644
--- a/.htaccess
+++ b/.htaccess
@@ -26,24 +26,24 @@ RewriteRule "^search(/1\.0)?" "/script/search/1.0/search.php" [END]
#### Rewrites for /script folder: /keyboard
-RewriteRule "^keyboard/(.*)$" "/script/keyboard/keyboard.php?id=$1" [END]
+RewriteRule "^keyboard/(.*)$" "/script/keyboard/keyboard.php?id=$1" [BCTLS,END]
#### Rewrites for /script folder: /increment-download
-RewriteRule "^increment-download/(.*)$" "/script/increment-download/increment-download.php?id=$1" [END]
+RewriteRule "^increment-download/(.*)$" "/script/increment-download/increment-download.php?id=$1" [BCTLS,END]
#### Rewrites for /script folder: /app-downloads-increment
-RewriteRule "^app-downloads-increment/([^/]+)/([^/]+)/(.*)$" "/script/app-downloads-increment/app-downloads-increment.php?product=$1&version=$2&tier=$3" [END]
+RewriteRule "^app-downloads-increment/([^/]+)/([^/]+)/(.*)$" "/script/app-downloads-increment/app-downloads-increment.php?product=$1&version=$2&tier=$3" [BCTLS,END]
#### Rewrites for /script folder: /model
RewriteRule "^model(/)?$" "/script/model-search/model-search.php" [END]
-RewriteRule "^model/(.*)$" "/script/model/model.php?id=$1" [END]
+RewriteRule "^model/(.*)$" "/script/model/model.php?id=$1" [BCTLS,END]
#### Rewrites for /script folder: /version
-RewriteRule "^version(\/([^/]+)(\/([^/]+))?)?$" "/script/version/version.php?platform=$2&level=$4" [END]
+RewriteRule "^version(\/([^/]+)(\/([^/]+))?)?$" "/script/version/version.php?platform=$2&level=$4" [BCTLS,END]
RewriteRule "^version(\/)?$" "/script/version/version.php" [END]
#### Rewrites for /script folder: /package-version
diff --git a/Dockerfile b/Dockerfile
index f7ace90..ee1a1ba 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:1
-FROM php:7.4-apache@sha256:c9d7e608f73832673479770d66aacc8100011ec751d1905ff63fae3fe2e0ca6d AS composer-builder
+FROM php:8.4-apache@sha256:51da594c844a97f31b1cd6b1ac6660982f40788f4fe13e75f7fd39e2f9b58651 AS composer-builder
# Install Zip to use composer
RUN apt-get update && apt-get install -y \
@@ -18,7 +18,7 @@ COPY composer.* /composer/
RUN composer install
# Site
-FROM php:7.4-apache@sha256:c9d7e608f73832673479770d66aacc8100011ec751d1905ff63fae3fe2e0ca6d
+FROM php:8.4-apache@sha256:51da594c844a97f31b1cd6b1ac6660982f40788f4fe13e75f7fd39e2f9b58651
COPY resources/keyman-site.conf /etc/apache2/conf-available/
RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
RUN echo memory_limit = 1024M >> /usr/local/etc/php/php.ini
@@ -29,16 +29,27 @@ RUN chown -R www-data:www-data /var/www/html/
# https://stackoverflow.com/a/72176870
RUN apt-get update && apt-get install -y gnupg2
-# Adding custom MS repo
-RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
-RUN curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
+# Adding custom MS repo for Debian Trixie (13)
+# https://learn.microsoft.com/en-us/linux/packages
+# 'debian', '13' values from /etc/os-release
+RUN curl -sSL -O https://packages.microsoft.com/config/debian/13/packages-microsoft-prod.deb
+RUN apt install ./packages-microsoft-prod.deb
+RUN rm packages-microsoft-prod.deb
+RUN apt-get update
## Install SQL Server drivers and Zip
-RUN apt-get update && ACCEPT_EULA=Y apt-get -y --no-install-recommends install msodbcsql18 unixodbc-dev zip libzip-dev
+RUN ACCEPT_EULA=Y apt-get -y --no-install-recommends install msodbcsql18 unixodbc-dev zip libzip-dev
RUN pecl install sqlsrv-5.10.1
RUN pecl install pdo_sqlsrv-5.10.1
RUN docker-php-ext-install pdo pdo_mysql zip
RUN docker-php-ext-enable sqlsrv pdo_sqlsrv pdo pdo_mysql
+
+# Install intl extension
+RUN apt-get -y install libicu-dev
+RUN docker-php-ext-install intl
+RUN docker-php-ext-enable intl
+
+# Copy all composer libraries in
COPY --from=composer-builder /composer/vendor /var/www/vendor
RUN a2enmod rewrite; a2enconf keyman-site
diff --git a/build.sh b/build.sh
index 1297e72..5b5abd2 100755
--- a/build.sh
+++ b/build.sh
@@ -34,6 +34,8 @@ builder_describe \
"stop" \
"test" \
"info" \
+ "composer-start Start a temporary container to maintain composer" \
+ "composer-stop Stop and cleanup temporary container for maintaining composer" \
"--rebuild-test-fixtures Rebuild the test fixtures from live data" \
"--no-unit-test" \
"--no-lint" \
@@ -186,3 +188,5 @@ do_info() {
builder_run_action info do_info
+builder_run_action composer-start docker_build_and_start_composer_container
+builder_run_action composer-stop docker_stop_and_cleanup_composer_container
diff --git a/composer.json b/composer.json
index 094f14f..54d2bc0 100644
--- a/composer.json
+++ b/composer.json
@@ -1,11 +1,9 @@
{
"require": {
- "sentry/sdk": "2.1.0",
"php-http/curl-client": "^2.1",
"swaggest/json-schema": "^0.12.29",
- "guzzlehttp/guzzle": "^6.5",
- "erusev/parsedown": "^1.7",
- "erusev/parsedown-extra": "^0.8.1"
+ "sentry/sentry": "^4.31",
+ "guzzlehttp/guzzle": "^7.15"
},
"require-dev": {
"phpunit/phpunit": "^9"
diff --git a/composer.lock b/composer.lock
index 1d4026a..3151ed3 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,27 +4,27 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "9a3ff3d730852fc23e582567c335c2fd",
+ "content-hash": "e01ae820053c6a69b9ad60d66bb7ea36",
"packages": [
{
"name": "clue/stream-filter",
- "version": "v1.4.1",
+ "version": "v1.7.0",
"source": {
"type": "git",
"url": "https://github.com/clue/stream-filter.git",
- "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71"
+ "reference": "049509fef80032cb3f051595029ab75b49a3c2f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/clue/stream-filter/zipball/5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71",
- "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71",
+ "url": "https://api.github.com/repos/clue/stream-filter/zipball/049509fef80032cb3f051595029ab75b49a3c2f7",
+ "reference": "049509fef80032cb3f051595029ab75b49a3c2f7",
"shasum": ""
},
"require": {
"php": ">=5.3"
},
"require-dev": {
- "phpunit/phpunit": "^5.0 || ^4.8"
+ "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36"
},
"type": "library",
"autoload": {
@@ -42,11 +42,11 @@
"authors": [
{
"name": "Christian Lück",
- "email": "christian@lueck.tv"
+ "email": "christian@clue.engineering"
}
],
"description": "A simple and modern approach to stream filtering in PHP",
- "homepage": "https://github.com/clue/php-stream-filter",
+ "homepage": "https://github.com/clue/stream-filter",
"keywords": [
"bucket brigade",
"callback",
@@ -56,6 +56,10 @@
"stream_filter_append",
"stream_filter_register"
],
+ "support": {
+ "issues": "https://github.com/clue/stream-filter/issues",
+ "source": "https://github.com/clue/stream-filter/tree/v1.7.0"
+ },
"funding": [
{
"url": "https://clue.engineering/support",
@@ -66,199 +70,53 @@
"type": "github"
}
],
- "time": "2019-04-09T12:31:48+00:00"
- },
- {
- "name": "composer/package-versions-deprecated",
- "version": "1.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/package-versions-deprecated.git",
- "reference": "98df7f1b293c0550bd5b1ce6b60b59bdda23aa47"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/98df7f1b293c0550bd5b1ce6b60b59bdda23aa47",
- "reference": "98df7f1b293c0550bd5b1ce6b60b59bdda23aa47",
- "shasum": ""
- },
- "require": {
- "composer-plugin-api": "^1.1.0 || ^2.0",
- "php": "^7"
- },
- "replace": {
- "ocramius/package-versions": "1.2 - 1.8.99"
- },
- "require-dev": {
- "composer/composer": "^1.9.3 || ^2.0@dev",
- "ext-zip": "^1.13",
- "phpunit/phpunit": "^6.5 || ^7"
- },
- "type": "composer-plugin",
- "extra": {
- "class": "PackageVersions\\Installer",
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PackageVersions\\": "src/PackageVersions"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com"
- },
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be"
- }
- ],
- "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "time": "2020-04-23T11:49:37+00:00"
- },
- {
- "name": "erusev/parsedown",
- "version": "1.7.4",
- "source": {
- "type": "git",
- "url": "https://github.com/erusev/parsedown.git",
- "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3",
- "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Parsedown": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Emanuil Rusev",
- "email": "hello@erusev.com",
- "homepage": "http://erusev.com"
- }
- ],
- "description": "Parser for Markdown.",
- "homepage": "http://parsedown.org",
- "keywords": [
- "markdown",
- "parser"
- ],
- "time": "2019-12-30T22:54:17+00:00"
- },
- {
- "name": "erusev/parsedown-extra",
- "version": "0.8.1",
- "source": {
- "type": "git",
- "url": "https://github.com/erusev/parsedown-extra.git",
- "reference": "91ac3ff98f0cea243bdccc688df43810f044dcef"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/erusev/parsedown-extra/zipball/91ac3ff98f0cea243bdccc688df43810f044dcef",
- "reference": "91ac3ff98f0cea243bdccc688df43810f044dcef",
- "shasum": ""
- },
- "require": {
- "erusev/parsedown": "^1.7.4"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "ParsedownExtra": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Emanuil Rusev",
- "email": "hello@erusev.com",
- "homepage": "http://erusev.com"
- }
- ],
- "description": "An extension of Parsedown that adds support for Markdown Extra.",
- "homepage": "https://github.com/erusev/parsedown-extra",
- "keywords": [
- "markdown",
- "markdown extra",
- "parsedown",
- "parser"
- ],
- "time": "2019-12-30T23:20:37+00:00"
+ "time": "2023-12-20T15:40:13+00:00"
},
{
"name": "guzzlehttp/guzzle",
- "version": "6.5.8",
+ "version": "7.15.5",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
+ "reference": "ee80339fd9177ba44c49cdb653ff02a4d1106b9a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
- "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee80339fd9177ba44c49cdb653ff02a4d1106b9a",
+ "reference": "ee80339fd9177ba44c49cdb653ff02a4d1106b9a",
"shasum": ""
},
"require": {
"ext-json": "*",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.9",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "^1.17"
+ "guzzlehttp/promises": "^2.5.3",
+ "guzzlehttp/psr7": "^2.13.1",
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-client": "^1.0",
+ "symfony/deprecation-contracts": "^2.5 || ^3.0",
+ "symfony/polyfill-php80": "^1.25"
+ },
+ "provide": {
+ "psr/http-client-implementation": "1.0"
},
"require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
"ext-curl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
- "psr/log": "^1.1"
+ "guzzle/client-integration-tests": "3.0.3",
+ "guzzlehttp/test-server": "^0.7",
+ "php-http/message-factory": "^1.1",
+ "phpunit/phpunit": "^8.5.52 || ^9.6.34",
+ "psr/log": "^1.1 || ^2.0 || ^3.0"
},
"suggest": {
+ "ext-curl": "Required for CURL handler support",
+ "ext-intl": "Required for Internationalized Domain Name (IDN) support",
"psr/log": "Required for using the Log middleware"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "6.5-dev"
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
}
},
"autoload": {
@@ -311,16 +169,21 @@
}
],
"description": "Guzzle is a PHP HTTP client library",
- "homepage": "http://guzzlephp.org/",
"keywords": [
"client",
"curl",
"framework",
"http",
"http client",
+ "psr-18",
+ "psr-7",
"rest",
"web service"
],
+ "support": {
+ "issues": "https://github.com/guzzle/guzzle/issues",
+ "source": "https://github.com/guzzle/guzzle/tree/7.15.5"
+ },
"funding": [
{
"url": "https://github.com/GrahamCampbell",
@@ -335,38 +198,38 @@
"type": "tidelift"
}
],
- "time": "2022-06-20T22:16:07+00:00"
+ "time": "2026-08-24T09:21:06+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "1.5.1",
+ "version": "2.5.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
+ "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/cde49999552d185d64715fe9c1f77a2aadd2f9f1",
+ "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1",
"shasum": ""
},
"require": {
- "php": ">=5.5"
+ "php": "^7.2.5 || ^8.0",
+ "symfony/deprecation-contracts": "^2.5 || ^3.0"
},
"require-dev": {
- "symfony/phpunit-bridge": "^4.4 || ^5.1"
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.52 || ^9.6.34"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.5-dev"
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
}
},
"autoload": {
- "files": [
- "src/functions_include.php"
- ],
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
}
@@ -401,6 +264,10 @@
"keywords": [
"promise"
],
+ "support": {
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/2.5.3"
+ },
"funding": [
{
"url": "https://github.com/GrahamCampbell",
@@ -415,42 +282,51 @@
"type": "tidelift"
}
],
- "time": "2021-10-22T20:56:57+00:00"
+ "time": "2026-08-24T09:11:28+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "1.9.1",
+ "version": "2.13.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b"
+ "reference": "95e7828100de18b4e269fb1703be530082d5166d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/e4490cabc77465aaee90b20cfc9a770f8c04be6b",
- "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/95e7828100de18b4e269fb1703be530082d5166d",
+ "reference": "95e7828100de18b4e269fb1703be530082d5166d",
"shasum": ""
},
"require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0",
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.1 || ^2.0",
+ "ralouphie/getallheaders": "^3.0",
+ "symfony/deprecation-contracts": "^2.5 || ^3.0",
+ "symfony/polyfill-php80": "^1.25"
},
"provide": {
+ "psr/http-factory-implementation": "1.0",
"psr/http-message-implementation": "1.0"
},
"require-dev": {
- "ext-zlib": "*",
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "http-interop/http-factory-tests": "1.1.0",
+ "jshttp/mime-db": "1.54.0.1",
+ "phpunit/phpunit": "^8.5.52 || ^9.6.34"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
"autoload": {
- "files": [
- "src/functions_include.php"
- ],
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
}
@@ -489,6 +365,11 @@
"name": "Tobias Schultze",
"email": "webmaster@tubo-world.de",
"homepage": "https://github.com/Tobion"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
}
],
"description": "PSR-7 message implementation that also provides common utility methods",
@@ -502,6 +383,10 @@
"uri",
"url"
],
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/2.13.1"
+ },
"funding": [
{
"url": "https://github.com/GrahamCampbell",
@@ -516,78 +401,33 @@
"type": "tidelift"
}
],
- "time": "2023-04-17T16:00:37+00:00"
- },
- {
- "name": "http-interop/http-factory-guzzle",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/http-interop/http-factory-guzzle.git",
- "reference": "34861658efb9899a6618cef03de46e2a52c80fc0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/34861658efb9899a6618cef03de46e2a52c80fc0",
- "reference": "34861658efb9899a6618cef03de46e2a52c80fc0",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/psr7": "^1.4.2",
- "psr/http-factory": "^1.0"
- },
- "provide": {
- "psr/http-factory-implementation": "^1.0"
- },
- "require-dev": {
- "http-interop/http-factory-tests": "^0.5",
- "phpunit/phpunit": "^6.5"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Http\\Factory\\Guzzle\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "An HTTP Factory using Guzzle PSR7",
- "keywords": [
- "factory",
- "http",
- "psr-17",
- "psr-7"
- ],
- "time": "2018-07-31T19:32:56+00:00"
+ "time": "2026-08-24T09:13:11+00:00"
},
{
"name": "jean85/pretty-package-versions",
- "version": "1.3.0",
+ "version": "2.1.1",
"source": {
"type": "git",
"url": "https://github.com/Jean85/pretty-package-versions.git",
- "reference": "e3517fb11b67e798239354fe8213927d012ad8f9"
+ "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/e3517fb11b67e798239354fe8213927d012ad8f9",
- "reference": "e3517fb11b67e798239354fe8213927d012ad8f9",
+ "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a",
+ "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a",
"shasum": ""
},
"require": {
- "composer/package-versions-deprecated": "^1.8.0",
- "php": "^7.0"
+ "composer-runtime-api": "^2.1.0",
+ "php": "^7.4|^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^6.0"
+ "friendsofphp/php-cs-fixer": "^3.2",
+ "jean85/composer-provided-replaced-stub-package": "^1.0",
+ "phpstan/phpstan": "^2.0",
+ "phpunit/phpunit": "^7.5|^8.5|^9.6",
+ "rector/rector": "^2.0",
+ "vimeo/psalm": "^4.3 || ^5.0"
},
"type": "library",
"extra": {
@@ -610,149 +450,42 @@
"email": "alessandro.lai85@gmail.com"
}
],
- "description": "A wrapper for ocramius/package-versions to get pretty versions strings",
+ "description": "A library to get pretty versions strings of installed dependencies",
"keywords": [
"composer",
"package",
"release",
"versions"
],
- "time": "2020-04-24T14:19:45+00:00"
- },
- {
- "name": "paragonie/random_compat",
- "version": "v9.99.99",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "shasum": ""
- },
- "require": {
- "php": "^7"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*|5.*",
- "vimeo/psalm": "^1"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ "support": {
+ "issues": "https://github.com/Jean85/pretty-package-versions/issues",
+ "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1"
},
- "type": "library",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ],
- "time": "2018-07-02T15:55:56+00:00"
- },
- {
- "name": "php-http/client-common",
- "version": "2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-http/client-common.git",
- "reference": "a8b29678d61556f45d6236b1667db16d998ceec5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-http/client-common/zipball/a8b29678d61556f45d6236b1667db16d998ceec5",
- "reference": "a8b29678d61556f45d6236b1667db16d998ceec5",
- "shasum": ""
- },
- "require": {
- "php": "^7.1",
- "php-http/httplug": "^2.0",
- "php-http/message": "^1.6",
- "php-http/message-factory": "^1.0",
- "symfony/options-resolver": " ^3.4.20 || ~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0"
- },
- "require-dev": {
- "doctrine/instantiator": "^1.1",
- "guzzlehttp/psr7": "^1.4",
- "phpspec/phpspec": "^5.1",
- "phpspec/prophecy": "^1.8",
- "sebastian/comparator": "^3.0"
- },
- "suggest": {
- "ext-json": "To detect JSON responses with the ContentTypePlugin",
- "ext-libxml": "To detect XML responses with the ContentTypePlugin",
- "php-http/cache-plugin": "PSR-6 Cache plugin",
- "php-http/logger-plugin": "PSR-3 Logger plugin",
- "php-http/stopwatch-plugin": "Symfony Stopwatch plugin"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Http\\Client\\Common\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
- }
- ],
- "description": "Common HTTP Client implementations and tools for HTTPlug",
- "homepage": "http://httplug.io",
- "keywords": [
- "client",
- "common",
- "http",
- "httplug"
- ],
- "time": "2019-11-18T08:58:18+00:00"
+ "time": "2025-03-19T14:43:43+00:00"
},
{
"name": "php-http/curl-client",
- "version": "2.1.0",
+ "version": "2.4.0",
"source": {
"type": "git",
"url": "https://github.com/php-http/curl-client.git",
- "reference": "9e79355af46d72e10da50be20b66f74b26143441"
+ "reference": "f59d6992065f44be8b8fb484dd678a919c27dbf2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/curl-client/zipball/9e79355af46d72e10da50be20b66f74b26143441",
- "reference": "9e79355af46d72e10da50be20b66f74b26143441",
+ "url": "https://api.github.com/repos/php-http/curl-client/zipball/f59d6992065f44be8b8fb484dd678a919c27dbf2",
+ "reference": "f59d6992065f44be8b8fb484dd678a919c27dbf2",
"shasum": ""
},
"require": {
"ext-curl": "*",
- "php": "^7.1",
+ "php": "^8.1",
"php-http/discovery": "^1.6",
"php-http/httplug": "^2.0",
"php-http/message": "^1.2",
"psr/http-client": "^1.0",
- "psr/http-factory": "^1.0",
- "symfony/options-resolver": "^3.4 || ^4.0 || ^5.0"
+ "psr/http-factory-implementation": "^1.0",
+ "symfony/options-resolver": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0"
},
"provide": {
"php-http/async-client-implementation": "1.0",
@@ -760,17 +493,13 @@
"psr/http-client-implementation": "1.0"
},
"require-dev": {
- "guzzlehttp/psr7": "^1.0",
- "php-http/client-integration-tests": "^2.0",
- "phpunit/phpunit": "^7.5",
- "zendframework/zend-diactoros": "^2.0"
+ "guzzlehttp/psr7": "^2.0",
+ "laminas/laminas-diactoros": "^2.0 || ^3.0",
+ "php-http/client-integration-tests": "^4.0",
+ "php-http/message-factory": "^1.1",
+ "phpunit/phpunit": "^9.6.17 || ^10.0 || ^11.0 || ^12.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Http\\Client\\Curl\\": "src/"
@@ -793,49 +522,62 @@
"http",
"psr-18"
],
- "time": "2019-12-27T11:02:07+00:00"
+ "support": {
+ "issues": "https://github.com/php-http/curl-client/issues",
+ "source": "https://github.com/php-http/curl-client/tree/2.4.0"
+ },
+ "time": "2025-12-09T12:02:56+00:00"
},
{
"name": "php-http/discovery",
- "version": "1.7.4",
+ "version": "1.20.0",
"source": {
"type": "git",
"url": "https://github.com/php-http/discovery.git",
- "reference": "82dbef649ccffd8e4f22e1953c3a5265992b83c0"
+ "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/discovery/zipball/82dbef649ccffd8e4f22e1953c3a5265992b83c0",
- "reference": "82dbef649ccffd8e4f22e1953c3a5265992b83c0",
+ "url": "https://api.github.com/repos/php-http/discovery/zipball/82fe4c73ef3363caed49ff8dd1539ba06044910d",
+ "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "composer-plugin-api": "^1.0|^2.0",
+ "php": "^7.1 || ^8.0"
},
"conflict": {
- "nyholm/psr7": "<1.0"
+ "nyholm/psr7": "<1.0",
+ "zendframework/zend-diactoros": "*"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "*",
+ "php-http/client-implementation": "*",
+ "psr/http-client-implementation": "*",
+ "psr/http-factory-implementation": "*",
+ "psr/http-message-implementation": "*"
},
"require-dev": {
- "akeneo/phpspec-skip-example-extension": "^4.0",
+ "composer/composer": "^1.0.2|^2.0",
+ "graham-campbell/phpspec-skip-example-extension": "^5.0",
"php-http/httplug": "^1.0 || ^2.0",
"php-http/message-factory": "^1.0",
- "phpspec/phpspec": "^5.1",
- "puli/composer-plugin": "1.0.0-beta10"
- },
- "suggest": {
- "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories",
- "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details."
+ "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3",
+ "sebastian/comparator": "^3.0.5 || ^4.0.8",
+ "symfony/phpunit-bridge": "^6.4.4 || ^7.0.1"
},
- "type": "library",
+ "type": "composer-plugin",
"extra": {
- "branch-alias": {
- "dev-master": "1.7-dev"
- }
+ "class": "Http\\Discovery\\Composer\\Plugin",
+ "plugin-optional": true
},
"autoload": {
"psr-4": {
"Http\\Discovery\\": "src/"
- }
+ },
+ "exclude-from-classmap": [
+ "src/Composer/Plugin.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -847,7 +589,7 @@
"email": "mark.sagikazar@gmail.com"
}
],
- "description": "Finds installed HTTPlug implementations and PSR-7 message factories",
+ "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations",
"homepage": "http://php-http.org",
"keywords": [
"adapter",
@@ -856,103 +598,40 @@
"factory",
"http",
"message",
+ "psr17",
"psr7"
],
- "time": "2020-01-03T11:25:47+00:00"
- },
- {
- "name": "php-http/guzzle6-adapter",
- "version": "v2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-http/guzzle6-adapter.git",
- "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/6074a4b1f4d5c21061b70bab3b8ad484282fe31f",
- "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/guzzle": "^6.0",
- "php": "^7.1",
- "php-http/httplug": "^2.0",
- "psr/http-client": "^1.0"
- },
- "provide": {
- "php-http/async-client-implementation": "1.0",
- "php-http/client-implementation": "1.0",
- "psr/http-client-implementation": "1.0"
- },
- "require-dev": {
- "ext-curl": "*",
- "php-http/client-integration-tests": "^2.0",
- "phpunit/phpunit": "^7.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Http\\Adapter\\Guzzle6\\": "src/"
- }
+ "support": {
+ "issues": "https://github.com/php-http/discovery/issues",
+ "source": "https://github.com/php-http/discovery/tree/1.20.0"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
- },
- {
- "name": "David de Boer",
- "email": "david@ddeboer.nl"
- }
- ],
- "description": "Guzzle 6 HTTP Adapter",
- "homepage": "http://httplug.io",
- "keywords": [
- "Guzzle",
- "http"
- ],
- "time": "2018-12-16T14:44:03+00:00"
+ "time": "2024-10-02T11:20:13+00:00"
},
{
"name": "php-http/httplug",
- "version": "2.1.0",
+ "version": "2.4.1",
"source": {
"type": "git",
"url": "https://github.com/php-http/httplug.git",
- "reference": "72d2b129a48f0490d55b7f89be0d6aa0597ffb06"
+ "reference": "5cad731844891a4c282f3f3e1b582c46839d22f4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/httplug/zipball/72d2b129a48f0490d55b7f89be0d6aa0597ffb06",
- "reference": "72d2b129a48f0490d55b7f89be0d6aa0597ffb06",
+ "url": "https://api.github.com/repos/php-http/httplug/zipball/5cad731844891a4c282f3f3e1b582c46839d22f4",
+ "reference": "5cad731844891a4c282f3f3e1b582c46839d22f4",
"shasum": ""
},
"require": {
- "php": "^7.0",
- "php-http/promise": "^1.0",
+ "php": "^7.1 || ^8.0",
+ "php-http/promise": "^1.1",
"psr/http-client": "^1.0",
- "psr/http-message": "^1.0"
+ "psr/http-message": "^1.0 || ^2.0"
},
"require-dev": {
- "friends-of-phpspec/phpspec-code-coverage": "^4.1",
- "phpspec/phpspec": "^4.3.4|^5.0|^6.0"
+ "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0",
+ "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Http\\Client\\": "src/"
@@ -969,7 +648,8 @@
},
{
"name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
}
],
"description": "HTTPlug, the HTTP client abstraction for PHP",
@@ -978,53 +658,50 @@
"client",
"http"
],
- "time": "2019-12-27T10:07:11+00:00"
+ "support": {
+ "issues": "https://github.com/php-http/httplug/issues",
+ "source": "https://github.com/php-http/httplug/tree/2.4.1"
+ },
+ "time": "2024-09-23T11:39:58+00:00"
},
{
"name": "php-http/message",
- "version": "1.8.0",
+ "version": "1.16.2",
"source": {
"type": "git",
"url": "https://github.com/php-http/message.git",
- "reference": "ce8f43ac1e294b54aabf5808515c3554a19c1e1c"
+ "reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/message/zipball/ce8f43ac1e294b54aabf5808515c3554a19c1e1c",
- "reference": "ce8f43ac1e294b54aabf5808515c3554a19c1e1c",
+ "url": "https://api.github.com/repos/php-http/message/zipball/06dd5e8562f84e641bf929bfe699ee0f5ce8080a",
+ "reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a",
"shasum": ""
},
"require": {
- "clue/stream-filter": "^1.4",
- "php": "^7.1",
- "php-http/message-factory": "^1.0.2",
- "psr/http-message": "^1.0"
+ "clue/stream-filter": "^1.5",
+ "php": "^7.2 || ^8.0",
+ "psr/http-message": "^1.1 || ^2.0"
},
"provide": {
"php-http/message-factory-implementation": "1.0"
},
"require-dev": {
- "akeneo/phpspec-skip-example-extension": "^1.0",
- "coduo/phpspec-data-provider-extension": "^1.0",
+ "ergebnis/composer-normalize": "^2.6",
"ext-zlib": "*",
- "guzzlehttp/psr7": "^1.0",
- "henrikbjorn/phpspec-code-coverage": "^1.0",
- "phpspec/phpspec": "^2.4",
- "slim/slim": "^3.0",
- "zendframework/zend-diactoros": "^1.0"
+ "guzzlehttp/psr7": "^1.0 || ^2.0",
+ "laminas/laminas-diactoros": "^2.0 || ^3.0",
+ "php-http/message-factory": "^1.0.2",
+ "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1",
+ "slim/slim": "^3.0"
},
"suggest": {
"ext-zlib": "Used with compressor/decompressor streams",
"guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories",
- "slim/slim": "Used with Slim Framework PSR-7 implementation",
- "zendframework/zend-diactoros": "Used with Diactoros Factories"
+ "laminas/laminas-diactoros": "Used with Diactoros Factories",
+ "slim/slim": "Used with Slim Framework PSR-7 implementation"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.8-dev"
- }
- },
"autoload": {
"files": [
"src/filters.php"
@@ -1050,82 +727,34 @@
"message",
"psr-7"
],
- "time": "2019-08-05T06:55:08+00:00"
- },
- {
- "name": "php-http/message-factory",
- "version": "v1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/php-http/message-factory.git",
- "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1",
- "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4",
- "psr/http-message": "^1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Http\\Message\\": "src/"
- }
+ "support": {
+ "issues": "https://github.com/php-http/message/issues",
+ "source": "https://github.com/php-http/message/tree/1.16.2"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
- }
- ],
- "description": "Factory interfaces for PSR-7 HTTP Message",
- "homepage": "http://php-http.org",
- "keywords": [
- "factory",
- "http",
- "message",
- "stream",
- "uri"
- ],
- "time": "2015-12-19T14:08:53+00:00"
+ "time": "2024-10-02T11:34:13+00:00"
},
{
"name": "php-http/promise",
- "version": "v1.0.0",
+ "version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/php-http/promise.git",
- "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980"
+ "reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980",
- "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980",
+ "url": "https://api.github.com/repos/php-http/promise/zipball/fc85b1fba37c169a69a07ef0d5a8075770cc1f83",
+ "reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83",
"shasum": ""
},
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
"require-dev": {
- "henrikbjorn/phpspec-code-coverage": "^1.0",
- "phpspec/phpspec": "^2.4"
+ "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3",
+ "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
"autoload": {
"psr-4": {
"Http\\Promise\\": "src/"
@@ -1136,13 +765,13 @@
"MIT"
],
"authors": [
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
- },
{
"name": "Joel Wurtz",
"email": "joel.wurtz@gmail.com"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
}
],
"description": "Promise used for asynchronous HTTP requests",
@@ -1150,7 +779,11 @@
"keywords": [
"promise"
],
- "time": "2016-01-26T13:27:02+00:00"
+ "support": {
+ "issues": "https://github.com/php-http/promise/issues",
+ "source": "https://github.com/php-http/promise/tree/1.3.1"
+ },
+ "time": "2024-03-15T13:55:21+00:00"
},
{
"name": "phplang/scope-exit",
@@ -1194,25 +827,29 @@
"exit",
"scope"
],
+ "support": {
+ "issues": "https://github.com/phplang/scope-exit/issues",
+ "source": "https://github.com/phplang/scope-exit/tree/master"
+ },
"time": "2016-09-17T00:15:18+00:00"
},
{
"name": "psr/http-client",
- "version": "1.0.0",
+ "version": "1.0.3",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-client.git",
- "reference": "496a823ef742b632934724bf769560c2a5c7c44e"
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-client/zipball/496a823ef742b632934724bf769560c2a5c7c44e",
- "reference": "496a823ef742b632934724bf769560c2a5c7c44e",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
"shasum": ""
},
"require": {
- "php": "^7.0",
- "psr/http-message": "^1.0"
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0 || ^2.0"
},
"type": "library",
"extra": {
@@ -1232,7 +869,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for HTTP clients",
@@ -1243,25 +880,28 @@
"psr",
"psr-18"
],
- "time": "2018-10-30T23:29:13+00:00"
+ "support": {
+ "source": "https://github.com/php-fig/http-client"
+ },
+ "time": "2023-09-23T14:17:50+00:00"
},
{
"name": "psr/http-factory",
- "version": "1.0.1",
+ "version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-factory.git",
- "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
- "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
"shasum": ""
},
"require": {
- "php": ">=7.0.0",
- "psr/http-message": "^1.0"
+ "php": ">=7.1",
+ "psr/http-message": "^1.0 || ^2.0"
},
"type": "library",
"extra": {
@@ -1281,10 +921,10 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "Common interfaces for PSR-7 HTTP message factories",
+ "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
"keywords": [
"factory",
"http",
@@ -1295,7 +935,10 @@
"request",
"response"
],
- "time": "2019-04-30T12:38:16+00:00"
+ "support": {
+ "source": "https://github.com/php-fig/http-factory"
+ },
+ "time": "2024-04-15T12:06:14+00:00"
},
{
"name": "psr/http-message",
@@ -1345,34 +988,37 @@
"request",
"response"
],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/1.1"
+ },
"time": "2023-04-04T09:50:52+00:00"
},
{
"name": "psr/log",
- "version": "1.1.4",
+ "version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Log\\": "Psr/Log/"
+ "Psr\\Log\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1392,7 +1038,10 @@
"psr",
"psr-3"
],
- "time": "2021-05-03T11:20:27+00:00"
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.2"
+ },
+ "time": "2024-09-11T13:17:53+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -1432,97 +1081,61 @@
}
],
"description": "A polyfill for getallheaders.",
- "time": "2019-03-08T08:55:37+00:00"
- },
- {
- "name": "sentry/sdk",
- "version": "2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/getsentry/sentry-php-sdk.git",
- "reference": "18921af9c2777517ef9fb480845c22a98554d6af"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/18921af9c2777517ef9fb480845c22a98554d6af",
- "reference": "18921af9c2777517ef9fb480845c22a98554d6af",
- "shasum": ""
- },
- "require": {
- "http-interop/http-factory-guzzle": "^1.0",
- "php-http/guzzle6-adapter": "^1.1|^2.0",
- "sentry/sentry": "^2.3"
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
},
- "type": "metapackage",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Sentry",
- "email": "accounts@sentry.io"
- }
- ],
- "description": "This is a metapackage shipping sentry/sentry with a recommended http client.",
- "time": "2020-01-08T19:16:29+00:00"
+ "time": "2019-03-08T08:55:37+00:00"
},
{
"name": "sentry/sentry",
- "version": "2.4.0",
+ "version": "4.31.0",
"source": {
"type": "git",
"url": "https://github.com/getsentry/sentry-php.git",
- "reference": "e44561875e0d724bac3d9cdb705bf58847acd425"
+ "reference": "39d9f86bd56c6cc6ae7b64c2b849f7f046d38394"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/e44561875e0d724bac3d9cdb705bf58847acd425",
- "reference": "e44561875e0d724bac3d9cdb705bf58847acd425",
+ "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/39d9f86bd56c6cc6ae7b64c2b849f7f046d38394",
+ "reference": "39d9f86bd56c6cc6ae7b64c2b849f7f046d38394",
"shasum": ""
},
"require": {
+ "ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
- "guzzlehttp/promises": "^1.3",
- "guzzlehttp/psr7": "^1.6",
- "jean85/pretty-package-versions": "^1.2",
- "php": "^7.1",
- "php-http/async-client-implementation": "^1.0",
- "php-http/client-common": "^1.5|^2.0",
- "php-http/discovery": "^1.6.1",
- "php-http/httplug": "^1.1|^2.0",
- "php-http/message": "^1.5",
- "psr/http-factory": "^1.0",
- "psr/http-message-implementation": "^1.0",
- "psr/log": "^1.0",
- "symfony/options-resolver": "^2.7|^3.0|^4.0|^5.0",
- "symfony/polyfill-uuid": "^1.13.1"
+ "guzzlehttp/psr7": "^1.8.4|^2.1.1|^3.0.0",
+ "jean85/pretty-package-versions": "^1.5|^2.0.4",
+ "php": "^7.2|^8.0",
+ "psr/log": "^1.0|^2.0|^3.0",
+ "symfony/options-resolver": "^4.4.30|^5.0.11|^6.0|^7.0|^8.0"
},
"conflict": {
- "php-http/client-common": "1.8.0",
"raven/raven": "*"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^2.16",
- "monolog/monolog": "^1.3|^2.0",
- "php-http/mock-client": "^1.3",
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpunit/phpunit": "^7.5.18",
- "symfony/phpunit-bridge": "^4.3|^5.0",
- "vimeo/psalm": "^3.4"
+ "carthage-software/mago": "1.30.0",
+ "friendsofphp/php-cs-fixer": "^3.4",
+ "guzzlehttp/guzzle": "^7.0|^8.0",
+ "guzzlehttp/promises": "^2.0.3|^3.0.0",
+ "monolog/monolog": "^1.6|^2.0|^3.0",
+ "nyholm/psr7": "^1.8",
+ "open-telemetry/api": "^1.1",
+ "open-telemetry/context": "^1.1",
+ "open-telemetry/exporter-otlp": "^1.1",
+ "open-telemetry/sdk": "^1.1",
+ "open-telemetry/sem-conv": "^1.27",
+ "phpstan/phpstan": "^1.3",
+ "phpunit/phpunit": "^8.5.52|^9.6.34",
+ "spiral/roadrunner-http": "^3.6",
+ "spiral/roadrunner-worker": "^3.6"
},
"suggest": {
+ "ext-excimer": "Enable Sentry profiling with the Excimer PHP extension.",
"monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler."
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.4-dev"
- }
- },
"autoload": {
"files": [
"src/functions.php"
@@ -1533,7 +1146,7 @@
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
@@ -1541,7 +1154,7 @@
"email": "accounts@sentry.io"
}
],
- "description": "A PHP SDK for Sentry (http://sentry.io)",
+ "description": "PHP SDK for Sentry (http://sentry.io)",
"homepage": "http://sentry.io",
"keywords": [
"crash-reporting",
@@ -1550,8 +1163,14 @@
"error-monitoring",
"log",
"logging",
- "sentry"
+ "profiling",
+ "sentry",
+ "tracing"
],
+ "support": {
+ "issues": "https://github.com/getsentry/sentry-php/issues",
+ "source": "https://github.com/getsentry/sentry-php/tree/4.31.0"
+ },
"funding": [
{
"url": "https://sentry.io/",
@@ -1562,27 +1181,28 @@
"type": "custom"
}
],
- "time": "2020-05-20T20:49:38+00:00"
+ "time": "2026-08-27T12:59:01+00:00"
},
{
"name": "swaggest/json-diff",
- "version": "v3.7.5",
+ "version": "v3.12.1",
"source": {
"type": "git",
"url": "https://github.com/swaggest/json-diff.git",
- "reference": "e452a9c6444905a486280c7d56503a6468303f69"
+ "reference": "7ebc4eab95bcc73916433964c266588d09b35052"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/swaggest/json-diff/zipball/e452a9c6444905a486280c7d56503a6468303f69",
- "reference": "e452a9c6444905a486280c7d56503a6468303f69",
+ "url": "https://api.github.com/repos/swaggest/json-diff/zipball/7ebc4eab95bcc73916433964c266588d09b35052",
+ "reference": "7ebc4eab95bcc73916433964c266588d09b35052",
"shasum": ""
},
"require": {
- "ext-json": "*"
+ "ext-json": "*",
+ "php": ">=7.1"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.23"
+ "phperf/phpunit": "4.8.37"
},
"type": "library",
"autoload": {
@@ -1601,32 +1221,38 @@
}
],
"description": "JSON diff/rearrange/patch/pointer library for PHP",
- "time": "2020-05-26T21:53:21+00:00"
+ "support": {
+ "issues": "https://github.com/swaggest/json-diff/issues",
+ "source": "https://github.com/swaggest/json-diff/tree/v3.12.1"
+ },
+ "time": "2025-03-10T08:22:10+00:00"
},
{
"name": "swaggest/json-schema",
- "version": "v0.12.29",
+ "version": "v0.12.43",
"source": {
"type": "git",
"url": "https://github.com/swaggest/php-json-schema.git",
- "reference": "7564d4a5fc8c068479698a30e5a7c589ea32a9c6"
+ "reference": "1f3a77a382c5d273a0f1fe34be3b8af4060a88cd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/swaggest/php-json-schema/zipball/7564d4a5fc8c068479698a30e5a7c589ea32a9c6",
- "reference": "7564d4a5fc8c068479698a30e5a7c589ea32a9c6",
+ "url": "https://api.github.com/repos/swaggest/php-json-schema/zipball/1f3a77a382c5d273a0f1fe34be3b8af4060a88cd",
+ "reference": "1f3a77a382c5d273a0f1fe34be3b8af4060a88cd",
"shasum": ""
},
"require": {
"ext-json": "*",
- "ext-mbstring": "*",
- "php": ">=5.4",
+ "php": ">=7.1",
"phplang/scope-exit": "^1.0",
- "swaggest/json-diff": "^3.5.1"
+ "swaggest/json-diff": "^3.8.2",
+ "symfony/polyfill-mbstring": "^1.19"
},
"require-dev": {
- "phpunit/php-code-coverage": "2.2.4",
- "phpunit/phpunit": "4.8.35"
+ "phperf/phpunit": "4.8.37"
+ },
+ "suggest": {
+ "ext-mbstring": "For better performance"
},
"type": "library",
"autoload": {
@@ -1645,37 +1271,43 @@
}
],
"description": "High definition PHP structures with JSON-schema based validation",
- "time": "2020-03-19T08:41:40+00:00"
+ "support": {
+ "email": "vearutop@gmail.com",
+ "issues": "https://github.com/swaggest/php-json-schema/issues",
+ "source": "https://github.com/swaggest/php-json-schema/tree/v0.12.43"
+ },
+ "time": "2024-12-22T21:18:27+00:00"
},
{
- "name": "symfony/options-resolver",
- "version": "v5.0.8",
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.7.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/options-resolver.git",
- "reference": "3707e3caeff2b797c0bfaadd5eba723dd44e6bf1"
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/3707e3caeff2b797c0bfaadd5eba723dd44e6bf1",
- "reference": "3707e3caeff2b797c0bfaadd5eba723dd44e6bf1",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/f3202fa1b5097b0af062dc978b32ecf63404e31d",
+ "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d",
"shasum": ""
},
"require": {
- "php": "^7.2.5"
+ "php": ">=8.1"
},
"type": "library",
"extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "3.7-dev"
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Component\\OptionsResolver\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
+ "files": [
+ "function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -1684,21 +1316,19 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony OptionsResolver Component",
+ "description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
- "keywords": [
- "config",
- "configuration",
- "options"
- ],
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.1"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -1708,52 +1338,45 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2020-04-06T10:40:56+00:00"
+ "time": "2026-06-05T06:23:12+00:00"
},
{
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.26.0",
+ "name": "symfony/options-resolver",
+ "version": "v5.4.45",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
- "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6",
+ "reference": "74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6",
"shasum": ""
},
"require": {
- "php": ">=7.1",
- "symfony/polyfill-intl-normalizer": "^1.10",
- "symfony/polyfill-php72": "^1.10"
- },
- "suggest": {
- "ext-intl": "For best performance"
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php73": "~1.0",
+ "symfony/polyfill-php80": "^1.16"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
"autoload": {
- "files": [
- "bootstrap.php"
- ],
"psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- }
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1761,28 +1384,24 @@
],
"authors": [
{
- "name": "Laurent Bassin",
- "email": "laurent@bassin.info"
- },
- {
- "name": "Trevor Rowbotham",
- "email": "trevor.rowbotham@pm.me"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "description": "Provides an improved replacement for the array_replace PHP function",
"homepage": "https://symfony.com",
"keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
+ "config",
+ "configuration",
+ "options"
],
+ "support": {
+ "source": "https://github.com/symfony/options-resolver/tree/v5.4.45"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -1797,36 +1416,37 @@
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2024-09-25T14:11:13+00:00"
},
{
- "name": "symfony/polyfill-intl-normalizer",
- "version": "v1.26.0",
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.38.2",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "219aa369ceff116e673852dce47c3a41794c14bd"
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
- "reference": "219aa369ceff116e673852dce47c3a41794c14bd",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6",
+ "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "ext-iconv": "*",
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-mbstring": "*"
},
"suggest": {
- "ext-intl": "For best performance"
+ "ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -1834,11 +1454,8 @@
"bootstrap.php"
],
"psr-4": {
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1854,16 +1471,18 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
- "intl",
- "normalizer",
+ "mbstring",
"polyfill",
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -1873,38 +1492,39 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2026-05-27T06:59:30+00:00"
},
{
- "name": "symfony/polyfill-php72",
- "version": "v1.26.0",
+ "name": "symfony/polyfill-php73",
+ "version": "v1.37.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2"
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2",
- "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
+ "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -1912,8 +1532,11 @@
"bootstrap.php"
],
"psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- }
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1929,7 +1552,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
@@ -1937,6 +1560,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.37.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -1946,38 +1572,39 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2022-05-24T11:49:31+00:00"
+ "time": "2024-09-09T11:45:10+00:00"
},
{
- "name": "symfony/polyfill-uuid",
- "version": "v1.17.0",
+ "name": "symfony/polyfill-php80",
+ "version": "v1.37.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-uuid.git",
- "reference": "6dbf0269e8aeab8253a5059c51c1760fb4034e87"
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/6dbf0269e8aeab8253a5059c51c1760fb4034e87",
- "reference": "6dbf0269e8aeab8253a5059c51c1760fb4034e87",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
+ "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
"shasum": ""
},
"require": {
- "paragonie/random_compat": "~1.0|~2.0|~9.99",
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-uuid": "For best performance"
+ "php": ">=7.2"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -1985,8 +1612,11 @@
"bootstrap.php"
],
"psr-4": {
- "Symfony\\Polyfill\\Uuid\\": ""
- }
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1994,22 +1624,29 @@
],
"authors": [
{
- "name": "Grégoire Pineau",
- "email": "lyrixx@lyrixx.info"
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill for uuid functions",
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
- "uuid"
+ "shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -2019,47 +1656,46 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2020-05-12T16:47:27+00:00"
+ "time": "2026-04-10T16:19:22+00:00"
}
],
"packages-dev": [
{
"name": "doctrine/instantiator",
- "version": "1.3.0",
+ "version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
+ "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
- "reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/23da848e1a2308728fe5fdddabf4be17ff9720c7",
+ "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": "^8.4"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
+ "doctrine/coding-standard": "^14",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.13",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpstan/phpstan-shim": "^0.11",
- "phpunit/phpunit": "^7.0"
+ "phpbench/phpbench": "^1.2",
+ "phpstan/phpstan": "^2.1",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpunit/phpunit": "^10.5.58"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
@@ -2073,7 +1709,7 @@
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
+ "homepage": "https://ocramius.github.io/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
@@ -2082,32 +1718,52 @@
"constructor",
"instantiate"
],
- "time": "2019-10-21T16:45:58+00:00"
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/2.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-01-05T06:47:08+00:00"
},
{
"name": "myclabs/deep-copy",
- "version": "1.9.5",
+ "version": "1.14.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef"
+ "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef",
- "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae",
+ "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": "^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",
+ "phpspec/prophecy": "^1.10",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
"autoload": {
@@ -2123,191 +1779,51 @@
"MIT"
],
"description": "Create deep copies (clones) of your objects",
- "keywords": [
- "clone",
- "copy",
- "duplicate",
- "object",
- "object graph"
- ],
- "time": "2020-01-17T21:11:47+00:00"
- },
- {
- "name": "phar-io/manifest",
- "version": "1.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/manifest.git",
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-phar": "*",
- "phar-io/version": "^2.0",
- "php": "^5.6 || ^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
- "time": "2018-07-08T19:23:20+00:00"
- },
- {
- "name": "phar-io/version",
- "version": "2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/version.git",
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Library for handling version information and constraints",
- "time": "2018-07-08T19:19:57+00:00"
- },
- {
- "name": "phpdocumentor/reflection-common",
- "version": "2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
- "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
],
- "authors": [
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.14.0"
+ },
+ "funding": [
{
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
+ "url": "https://github.com/mnapoli",
+ "type": "github"
}
],
- "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-04-27T09:25:28+00:00"
+ "time": "2026-08-11T10:17:44+00:00"
},
{
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.1.0",
+ "name": "nikic/php-parser",
+ "version": "v5.8.0",
"source": {
"type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e"
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
- "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/044a6a392ff8ad0d61f14370a5fbbd0a0107152f",
+ "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f",
"shasum": ""
},
"require": {
- "ext-filter": "^7.1",
- "php": "^7.2",
- "phpdocumentor/reflection-common": "^2.0",
- "phpdocumentor/type-resolver": "^1.0",
- "webmozart/assert": "^1"
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "php": ">=7.4"
},
"require-dev": {
- "doctrine/instantiator": "^1",
- "mockery/mockery": "^1"
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^9.0"
},
+ "bin": [
+ "bin/php-parse"
+ ],
"type": "library",
"extra": {
"branch-alias": {
@@ -2316,172 +1832,187 @@
},
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": "src"
+ "PhpParser\\": "lib/PhpParser"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- },
- {
- "name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
+ "name": "Nikita Popov"
}
],
- "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-02-22T12:28:44+00:00"
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.8.0"
+ },
+ "time": "2026-07-04T14:30:18+00:00"
},
{
- "name": "phpdocumentor/type-resolver",
- "version": "1.1.0",
+ "name": "phar-io/manifest",
+ "version": "2.0.4",
"source": {
"type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "7462d5f123dfc080dfdf26897032a6513644fc95"
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "54750ef60c58e43759730615a392c31c80e23176"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95",
- "reference": "7462d5f123dfc080dfdf26897032a6513644fc95",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176",
+ "reference": "54750ef60c58e43759730615a392c31c80e23176",
"shasum": ""
},
"require": {
- "php": "^7.2",
- "phpdocumentor/reflection-common": "^2.0"
- },
- "require-dev": {
- "ext-tokenizer": "^7.2",
- "mockery/mockery": "~1"
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
+ "classmap": [
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
}
],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "time": "2020-02-18T18:59:58+00:00"
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-03T12:33:53+00:00"
},
{
- "name": "phpspec/prophecy",
- "version": "v1.10.3",
+ "name": "phar-io/version",
+ "version": "3.2.1",
"source": {
"type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "451c3cd1418cf640de218914901e51b064abb093"
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
- "reference": "451c3cd1418cf640de218914901e51b064abb093",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.0.2",
- "php": "^5.3|^7.0",
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
- "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
- "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
- },
- "require-dev": {
- "phpspec/phpspec": "^2.5 || ^3.2",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+ "php": "^7.2 || ^8.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.10.x-dev"
- }
- },
"autoload": {
- "psr-4": {
- "Prophecy\\": "src/Prophecy"
- }
+ "classmap": [
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
},
{
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
}
],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2020-03-05T15:02:03+00:00"
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.2.1"
+ },
+ "time": "2022-02-21T01:04:05+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "8.0.2",
+ "version": "9.2.32",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "ca6647ffddd2add025ab3f21644a441d7c146cdc"
+ "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca6647ffddd2add025ab3f21644a441d7c146cdc",
- "reference": "ca6647ffddd2add025ab3f21644a441d7c146cdc",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5",
+ "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5",
"shasum": ""
},
"require": {
"ext-dom": "*",
+ "ext-libxml": "*",
"ext-xmlwriter": "*",
- "php": "^7.3",
- "phpunit/php-file-iterator": "^3.0",
- "phpunit/php-text-template": "^2.0",
- "phpunit/php-token-stream": "^4.0",
- "sebastian/code-unit-reverse-lookup": "^2.0",
- "sebastian/environment": "^5.0",
- "sebastian/version": "^3.0",
- "theseer/tokenizer": "^1.1.3"
+ "nikic/php-parser": "^4.19.1 || ^5.1.0",
+ "php": ">=7.3",
+ "phpunit/php-file-iterator": "^3.0.6",
+ "phpunit/php-text-template": "^2.0.4",
+ "sebastian/code-unit-reverse-lookup": "^2.0.3",
+ "sebastian/complexity": "^2.0.3",
+ "sebastian/environment": "^5.1.5",
+ "sebastian/lines-of-code": "^1.0.4",
+ "sebastian/version": "^3.0.2",
+ "theseer/tokenizer": "^1.2.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.6"
},
"suggest": {
- "ext-pcov": "*",
- "ext-xdebug": "*"
+ "ext-pcov": "PHP extension that provides line coverage",
+ "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "8.0-dev"
+ "dev-main": "9.2.x-dev"
}
},
"autoload": {
@@ -2507,33 +2038,38 @@
"testing",
"xunit"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-05-23T08:02:54+00:00"
+ "time": "2024-08-22T04:23:01+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "3.0.1",
+ "version": "3.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4"
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4",
- "reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
@@ -2563,34 +2099,38 @@
"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-04-18T05:02:12+00:00"
+ "time": "2021-12-02T12:48:52+00:00"
},
{
"name": "phpunit/php-invoker",
- "version": "3.0.0",
+ "version": "3.1.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a"
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/7579d5a1ba7f3ac11c80004d205877911315ae7a",
- "reference": "7579d5a1ba7f3ac11c80004d205877911315ae7a",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"require-dev": {
"ext-pcntl": "*",
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"suggest": {
"ext-pcntl": "*"
@@ -2598,7 +2138,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
@@ -2622,24 +2162,37 @@
"keywords": [
"process"
],
- "time": "2020-02-07T06:06:11+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:58:55+00:00"
},
{
"name": "phpunit/php-text-template",
- "version": "2.0.0",
+ "version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346"
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/526dc996cc0ebdfa428cd2dfccd79b7b53fee346",
- "reference": "526dc996cc0ebdfa428cd2dfccd79b7b53fee346",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
@@ -2668,32 +2221,42 @@
"keywords": [
"template"
],
- "time": "2020-02-01T07:43:44+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T05:33:50+00:00"
},
{
"name": "phpunit/php-timer",
- "version": "3.1.4",
+ "version": "5.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258"
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/dc9368fae6ef2ffa57eba80a7410bcef81df6258",
- "reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.1-dev"
+ "dev-master": "5.0-dev"
}
},
"autoload": {
@@ -2717,42 +2280,78 @@
"keywords": [
"timer"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-04-20T06:00:37+00:00"
+ "time": "2020-10-26T13:16:10+00:00"
},
{
- "name": "phpunit/php-token-stream",
- "version": "4.0.1",
+ "name": "phpunit/phpunit",
+ "version": "9.6.36",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c"
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "abab27ed286d3e1246fbbfe6b56bfd732d945ec9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c",
- "reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/abab27ed286d3e1246fbbfe6b56bfd732d945ec9",
+ "reference": "abab27ed286d3e1246fbbfe6b56bfd732d945ec9",
"shasum": ""
},
"require": {
- "ext-tokenizer": "*",
- "php": "^7.3"
+ "doctrine/instantiator": "^1.5.0 || ^2",
+ "ext-dom": "*",
+ "ext-filter": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.13.4",
+ "phar-io/manifest": "^2.0.4",
+ "phar-io/version": "^3.2.1",
+ "php": ">=7.3",
+ "phpunit/php-code-coverage": "^9.2.32",
+ "phpunit/php-file-iterator": "^3.0.6",
+ "phpunit/php-invoker": "^3.1.1",
+ "phpunit/php-text-template": "^2.0.4",
+ "phpunit/php-timer": "^5.0.3",
+ "sebastian/cli-parser": "^1.0.2",
+ "sebastian/code-unit": "^1.0.8",
+ "sebastian/comparator": "^4.0.10",
+ "sebastian/diff": "^4.0.6",
+ "sebastian/environment": "^5.1.5",
+ "sebastian/exporter": "^4.0.9",
+ "sebastian/global-state": "^5.0.8",
+ "sebastian/object-enumerator": "^4.0.4",
+ "sebastian/resource-operations": "^3.0.4",
+ "sebastian/type": "^3.2.1",
+ "sebastian/version": "^3.0.2"
},
- "require-dev": {
- "phpunit/phpunit": "^9.0"
+ "suggest": {
+ "ext-soap": "To be able to generate mocks based on WSDL files",
+ "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
},
+ "bin": [
+ "phpunit"
+ ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-master": "9.6-dev"
}
},
"autoload": {
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ],
"classmap": [
"src/"
]
@@ -2764,87 +2363,57 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
"keywords": [
- "tokenizer"
+ "phpunit",
+ "testing",
+ "xunit"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.36"
+ },
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
+ "url": "https://phpunit.de/sponsoring.html",
+ "type": "other"
}
],
- "abandoned": true,
- "time": "2020-05-06T09:56:31+00:00"
+ "time": "2026-08-11T06:25:15+00:00"
},
{
- "name": "phpunit/phpunit",
- "version": "9.1.5",
+ "name": "sebastian/cli-parser",
+ "version": "1.0.2",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "1b570cd7edbe136055bf5f651857dc8af6b829d2"
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1b570cd7edbe136055bf5f651857dc8af6b829d2",
- "reference": "1b570cd7edbe136055bf5f651857dc8af6b829d2",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
+ "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.2.0",
- "ext-dom": "*",
- "ext-json": "*",
- "ext-libxml": "*",
- "ext-mbstring": "*",
- "ext-xml": "*",
- "ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.9.1",
- "phar-io/manifest": "^1.0.3",
- "phar-io/version": "^2.0.1",
- "php": "^7.3",
- "phpspec/prophecy": "^1.8.1",
- "phpunit/php-code-coverage": "^8.0.1",
- "phpunit/php-file-iterator": "^3.0",
- "phpunit/php-invoker": "^3.0",
- "phpunit/php-text-template": "^2.0",
- "phpunit/php-timer": "^3.1.4",
- "sebastian/code-unit": "^1.0.2",
- "sebastian/comparator": "^4.0",
- "sebastian/diff": "^4.0",
- "sebastian/environment": "^5.0.1",
- "sebastian/exporter": "^4.0",
- "sebastian/global-state": "^4.0",
- "sebastian/object-enumerator": "^4.0",
- "sebastian/resource-operations": "^3.0",
- "sebastian/type": "^2.0",
- "sebastian/version": "^3.0"
+ "php": ">=7.3"
},
"require-dev": {
- "ext-pdo": "*",
- "phpspec/prophecy-phpunit": "^2.0"
+ "phpunit/phpunit": "^9.3"
},
- "suggest": {
- "ext-soap": "*",
- "ext-xdebug": "*"
- },
- "bin": [
- "phpunit"
- ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.1-dev"
+ "dev-master": "1.0-dev"
}
},
"autoload": {
- "files": [
- "src/Framework/Assert/Functions.php"
- ],
"classmap": [
"src/"
]
@@ -2860,44 +2429,39 @@
"role": "lead"
}
],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
+ "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.2"
+ },
"funding": [
- {
- "url": "https://phpunit.de/donate.html",
- "type": "custom"
- },
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-05-22T13:54:05+00:00"
+ "time": "2024-03-02T06:27:43+00:00"
},
{
"name": "sebastian/code-unit",
- "version": "1.0.2",
+ "version": "1.0.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit.git",
- "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5"
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ac958085bc19fcd1d36425c781ef4cbb5b06e2a5",
- "reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
@@ -2923,33 +2487,37 @@
],
"description": "Collection of value objects that represent the PHP code units",
"homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-04-30T05:58:10+00:00"
+ "time": "2020-10-26T13:08:54+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
- "version": "2.0.0",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e"
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5b5dbe0044085ac41df47e79d34911a15b96d82e",
- "reference": "5b5dbe0044085ac41df47e79d34911a15b96d82e",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
@@ -2968,40 +2536,135 @@
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:30:19+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e4df00b9b3571187db2831ae9aada2c6efbd715d",
+ "reference": "e4df00b9b3571187db2831ae9aada2c6efbd715d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.10"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator",
+ "type": "tidelift"
}
],
- "description": "Looks up which function or method a line of code belongs to",
- "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
- "time": "2020-02-07T06:20:13+00:00"
+ "time": "2026-01-24T09:22:56+00:00"
},
{
- "name": "sebastian/comparator",
- "version": "4.0.0",
+ "name": "sebastian/complexity",
+ "version": "2.0.3",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8"
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/85b3435da967696ed618ff745f32be3ff4a2b8e8",
- "reference": "85b3435da967696ed618ff745f32be3ff4a2b8e8",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a",
+ "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a",
"shasum": ""
},
"require": {
- "php": "^7.3",
- "sebastian/diff": "^4.0",
- "sebastian/exporter": "^4.0"
+ "nikic/php-parser": "^4.18 || ^5.0",
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -3016,49 +2679,43 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "https://github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
+ "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.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
],
- "time": "2020-02-07T06:08:51+00:00"
+ "time": "2023-12-22T06:19:30+00:00"
},
{
"name": "sebastian/diff",
- "version": "4.0.1",
+ "version": "4.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a"
+ "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3e523c576f29dacecff309f35e4cc5a5c168e78a",
- "reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc",
+ "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.0",
+ "phpunit/phpunit": "^9.3",
"symfony/process": "^4.2 || ^5"
},
"type": "library",
@@ -3094,33 +2751,37 @@
"unidiff",
"unified diff"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-05-08T05:01:12+00:00"
+ "time": "2024-03-02T06:30:58+00:00"
},
{
"name": "sebastian/environment",
- "version": "5.1.0",
+ "version": "5.1.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c"
+ "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/c753f04d68cd489b6973cf9b4e505e191af3b05c",
- "reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
+ "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"suggest": {
"ext-posix": "*"
@@ -3128,7 +2789,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-master": "5.1-dev"
}
},
"autoload": {
@@ -3153,35 +2814,39 @@
"environment",
"hhvm"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-04-14T13:36:52+00:00"
+ "time": "2023-02-03T06:03:51+00:00"
},
{
"name": "sebastian/exporter",
- "version": "4.0.0",
+ "version": "4.0.9",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "80c26562e964016538f832f305b2286e1ec29566"
+ "reference": "4352c1a3df741a7ba9e61af6fed51d1fee41cbf7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/80c26562e964016538f832f305b2286e1ec29566",
- "reference": "80c26562e964016538f832f305b2286e1ec29566",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/4352c1a3df741a7ba9e61af6fed51d1fee41cbf7",
+ "reference": "4352c1a3df741a7ba9e61af6fed51d1fee41cbf7",
"shasum": ""
},
"require": {
- "php": "^7.3",
+ "php": ">=7.3",
"sebastian/recursion-context": "^4.0"
},
"require-dev": {
"ext-mbstring": "*",
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
@@ -3221,35 +2886,57 @@
}
],
"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"
],
- "time": "2020-02-07T06:10:52+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.9"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-08-11T04:55:59+00:00"
},
{
"name": "sebastian/global-state",
- "version": "4.0.0",
+ "version": "5.0.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72"
+ "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bdb1e7c79e592b8c82cb1699be3c8743119b8a72",
- "reference": "bdb1e7c79e592b8c82cb1699be3c8743119b8a72",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6",
+ "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6",
"shasum": ""
},
"require": {
- "php": "^7.3",
+ "php": ">=7.3",
"sebastian/object-reflector": "^2.0",
"sebastian/recursion-context": "^4.0"
},
"require-dev": {
"ext-dom": "*",
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"suggest": {
"ext-uopz": "*"
@@ -3257,7 +2944,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-master": "5.0-dev"
}
},
"autoload": {
@@ -3280,29 +2967,108 @@
"keywords": [
"global state"
],
- "time": "2020-02-07T06:11:37+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-08-10T07:10:35+00:00"
+ },
+ {
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5",
+ "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.18 || ^5.0",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for 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.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-12-22T06:20:34+00:00"
},
{
"name": "sebastian/object-enumerator",
- "version": "4.0.0",
+ "version": "4.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "e67516b175550abad905dc952f43285957ef4363"
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67516b175550abad905dc952f43285957ef4363",
- "reference": "e67516b175550abad905dc952f43285957ef4363",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
"shasum": ""
},
"require": {
- "php": "^7.3",
+ "php": ">=7.3",
"sebastian/object-reflector": "^2.0",
"sebastian/recursion-context": "^4.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
@@ -3327,27 +3093,37 @@
],
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
- "time": "2020-02-07T06:12:23+00:00"
+ "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",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:12:34+00:00"
},
{
"name": "sebastian/object-reflector",
- "version": "2.0.0",
+ "version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7"
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/f4fd0835cabb0d4a6546d9fe291e5740037aa1e7",
- "reference": "f4fd0835cabb0d4a6546d9fe291e5740037aa1e7",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
@@ -3372,27 +3148,37 @@
],
"description": "Allows reflection of object attributes, including inherited and non-public ones",
"homepage": "https://github.com/sebastianbergmann/object-reflector/",
- "time": "2020-02-07T06:19:40+00:00"
+ "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",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:14:26+00:00"
},
{
"name": "sebastian/recursion-context",
- "version": "4.0.0",
+ "version": "4.0.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "cdd86616411fc3062368b720b0425de10bd3d579"
+ "reference": "c85be6922b7fd365942b986b9a50397d65407611"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cdd86616411fc3062368b720b0425de10bd3d579",
- "reference": "cdd86616411fc3062368b720b0425de10bd3d579",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/c85be6922b7fd365942b986b9a50397d65407611",
+ "reference": "c85be6922b7fd365942b986b9a50397d65407611",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
@@ -3424,25 +3210,47 @@
}
],
"description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2020-02-07T06:18:20+00:00"
+ "homepage": "https://github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.7"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2026-08-11T05:25:24+00:00"
},
{
"name": "sebastian/resource-operations",
- "version": "3.0.0",
+ "version": "3.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98"
+ "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98",
- "reference": "8c98bf0dfa1f9256d0468b9803a1e1df31b6fa98",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
+ "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"require-dev": {
"phpunit/phpunit": "^9.0"
@@ -3450,7 +3258,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -3470,32 +3278,41 @@
],
"description": "Provides a list of PHP built-in functions that operate on resources",
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
- "time": "2020-02-07T06:13:02+00:00"
+ "support": {
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-14T16:00:52+00:00"
},
{
"name": "sebastian/type",
- "version": "2.0.0",
+ "version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1"
+ "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/9e8f42f740afdea51f5f4e8cec2035580e797ee1",
- "reference": "9e8f42f740afdea51f5f4e8cec2035580e797ee1",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
+ "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.0"
+ "phpunit/phpunit": "^9.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-master": "3.2-dev"
}
},
"autoload": {
@@ -3516,24 +3333,34 @@
],
"description": "Collection of value objects that represent the types of the PHP type system",
"homepage": "https://github.com/sebastianbergmann/type",
- "time": "2020-02-07T06:13:43+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/3.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-02-03T06:13:03+00:00"
},
{
"name": "sebastian/version",
- "version": "3.0.0",
+ "version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
- "reference": "0411bde656dce64202b39c2f4473993a9081d39e"
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/0411bde656dce64202b39c2f4473993a9081d39e",
- "reference": "0411bde656dce64202b39c2f4473993a9081d39e",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
"shasum": ""
},
"require": {
- "php": "^7.3"
+ "php": ">=7.3"
},
"type": "library",
"extra": {
@@ -3559,99 +3386,37 @@
],
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
"homepage": "https://github.com/sebastianbergmann/version",
- "time": "2020-01-21T06:36:37+00:00"
- },
- {
- "name": "symfony/polyfill-ctype",
- "version": "v1.17.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
- "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.17-dev"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- }
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for ctype functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
"funding": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/sebastianbergmann",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
}
],
- "time": "2020-05-12T16:14:59+00:00"
+ "time": "2020-09-28T06:39:44+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.1.3",
+ "version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c",
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
- "php": "^7.0"
+ "php": "^7.2 || ^8.0"
},
"type": "library",
"autoload": {
@@ -3671,55 +3436,17 @@
}
],
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
- "time": "2019-06-13T22:48:21+00:00"
- },
- {
- "name": "webmozart/assert",
- "version": "1.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozarts/assert.git",
- "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
- "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.3 || ^7.0",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "vimeo/psalm": "<3.9.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/1.3.1"
},
- "type": "library",
- "autoload": {
- "psr-4": {
- "Webmozart\\Assert\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
+ "funding": [
{
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
+ "url": "https://github.com/theseer",
+ "type": "github"
}
],
- "description": "Assertions to validate method input/output with nice error messages.",
- "keywords": [
- "assert",
- "check",
- "validate"
- ],
- "time": "2020-04-18T12:12:48+00:00"
+ "time": "2025-11-17T20:03:58+00:00"
}
],
"aliases": [],
diff --git a/phpunit.xml b/phpunit.xml
index d8d16b0..a3abdbb 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -5,7 +5,7 @@
tests
- tests\rest
+ tests/rest
\ No newline at end of file
diff --git a/script/app-downloads-increment/app-downloads-increment.php b/script/app-downloads-increment/app-downloads-increment.php
index 3e5ff27..52a4d60 100644
--- a/script/app-downloads-increment/app-downloads-increment.php
+++ b/script/app-downloads-increment/app-downloads-increment.php
@@ -26,7 +26,7 @@
}
// Note: we don't currently unit-test this one
- if(KeymanHosts::Instance()->Tier() === KeymanHosts::TIER_DEVELOPMENT)
+ if(KeymanHosts::Instance()->Tier() === KeymanHosts::TIER_DEVELOPMENT || KeymanHosts::Instance()->Tier() === KeymanHosts::TIER_TEST)
$key = 'local';
else
$key = $env['API_KEYMAN_COM_INCREMENT_DOWNLOAD_KEY'];
diff --git a/script/increment-download/increment-download.php b/script/increment-download/increment-download.php
index c0492ba..dbac8ed 100644
--- a/script/increment-download/increment-download.php
+++ b/script/increment-download/increment-download.php
@@ -26,7 +26,7 @@
}
// Note: we don't currently unit-test this one
- if(KeymanHosts::Instance()->Tier() === KeymanHosts::TIER_DEVELOPMENT)
+ if(KeymanHosts::Instance()->Tier() === KeymanHosts::TIER_DEVELOPMENT || KeymanHosts::Instance()->Tier() === KeymanHosts::TIER_TEST)
$key = 'local';
else
$key = $env['API_KEYMAN_COM_INCREMENT_DOWNLOAD_KEY'];
diff --git a/tests/ApiTestCase.php b/tests/ApiTestCase.php
index d685460..87c764d 100644
--- a/tests/ApiTestCase.php
+++ b/tests/ApiTestCase.php
@@ -9,7 +9,7 @@
use Keyman\Site\Common\KeymanHosts;
use PHPUnit\Framework\TestCase;
-class ApiTestCase extends TestCase
+abstract class ApiTestCase extends TestCase
{
private const TIER_TXT = __DIR__ . '/../tier.txt';
private static bool $wroteTierTxt = false;
diff --git a/tests/rest/RestAppDownloadsIncrementTest.php b/tests/rest/RestAppDownloadsIncrementTest.php
new file mode 100644
index 0000000..f919fbf
--- /dev/null
+++ b/tests/rest/RestAppDownloadsIncrementTest.php
@@ -0,0 +1,57 @@
+//
+ */
+
+namespace Keyman\Site\com\keyman\api\tests\rest;
+
+require_once(__DIR__ . '/../../tools/base.inc.php');
+require_once(__DIR__ . '/RestTestCase.php');
+
+final class RestAppDownloadsIncrementTest extends RestTestCase
+{
+ private const SchemaFilename = "/app-downloads-increment/1.0/app-downloads-increment.json";
+
+ public function testIncrementRequest(): void
+ {
+ //
+ // Check format of response and cache the current increment
+ //
+
+ $response = $this->http->request('POST', 'app-downloads-increment/windows/19.0.123/stable', [
+ 'form_params' => ['key' => 'local']
+ ]);
+ $this->assertStandardJsonRestResponses($response);
+ $this->assertJsonSchemaLinkedAndValidated($response, RestAppDownloadsIncrementTest::SchemaFilename, true);
+
+ $json = json_decode($response->getBody()->getContents());
+ $this->assertEquals("windows", $json->product);
+ $this->assertEquals("19.0.123", $json->version);
+ $this->assertEquals("stable", $json->tier);
+
+ // cache current count
+ $currentCount = $json->count;
+
+ //
+ // Call a second time to check the increment is actually working
+ //
+
+ $response = $this->http->request('POST', 'app-downloads-increment/windows/19.0.123/stable', [
+ 'form_params' => ['key' => 'local']
+ ]);
+ $this->assertStandardJsonRestResponses($response);
+ $this->assertJsonSchemaLinkedAndValidated($response, RestAppDownloadsIncrementTest::SchemaFilename, true);
+
+ $json = json_decode($response->getBody()->getContents());
+ $this->assertEquals("windows", $json->product);
+ $this->assertEquals("19.0.123", $json->version);
+ $this->assertEquals("stable", $json->tier);
+
+ // Verify that the counter is incrementing
+ $this->assertEquals($currentCount + 1, $json->count);
+ }
+}
\ No newline at end of file
diff --git a/tests/rest/RestIncrementDownloadTest.php b/tests/rest/RestIncrementDownloadTest.php
new file mode 100644
index 0000000..9515630
--- /dev/null
+++ b/tests/rest/RestIncrementDownloadTest.php
@@ -0,0 +1,88 @@
+
+ */
+
+namespace Keyman\Site\com\keyman\api\tests\rest;
+
+require_once(__DIR__ . '/../../tools/base.inc.php');
+require_once(__DIR__ . '/RestTestCase.php');
+
+final class RestIncrementDownloadTest extends RestTestCase
+{
+ private const SchemaFilename = "/increment-download/1.0/increment-download.json";
+
+ public function testIncrementRequest(): void
+ {
+ //
+ // Check format of response and cache the current increment
+ //
+
+ $response = $this->http->request('POST', 'increment-download/newa_traditional', [
+ 'form_params' => ['key' => 'local']
+ ]);
+ $this->assertStandardJsonRestResponses($response);
+ $this->assertJsonSchemaLinkedAndValidated($response, RestIncrementDownloadTest::SchemaFilename, true);
+
+ $json = json_decode($response->getBody()->getContents());
+ $this->assertEquals("newa_traditional", $json->keyboard_id);
+
+ // cache current count
+ $currentCount = $json->count;
+
+ //
+ // Call a second time to check the increment is actually working
+ //
+
+ $response = $this->http->request('POST', 'increment-download/newa_traditional', [
+ 'form_params' => ['key' => 'local']
+ ]);
+ $this->assertStandardJsonRestResponses($response);
+ $this->assertJsonSchemaLinkedAndValidated($response, RestIncrementDownloadTest::SchemaFilename, true);
+
+ $json = json_decode($response->getBody()->getContents());
+ $this->assertEquals("newa_traditional", $json->keyboard_id);
+
+ // Verify that the counter is incrementing
+ $this->assertEquals($currentCount + 1, $json->count);
+ }
+
+ public function testLegacyIncrementRequest(): void
+ {
+ //
+ // Check format of response and cache the current increment
+ //
+
+ $response = $this->http->request('POST', 'increment-download/armenian%20unicode', [
+ 'form_params' => ['key' => 'local']
+ ]);
+ $this->assertStandardJsonRestResponses($response);
+ $this->assertJsonSchemaLinkedAndValidated($response, RestIncrementDownloadTest::SchemaFilename, true);
+
+ $json = json_decode($response->getBody()->getContents());
+ $this->assertEquals("armenian unicode", $json->keyboard_id);
+
+ // cache current count
+ $currentCount = $json->count;
+
+ //
+ // Call a second time to check the increment is actually working
+ //
+
+ $response = $this->http->request('POST', 'increment-download/armenian%20unicode', [
+ 'form_params' => ['key' => 'local']
+ ]);
+ $this->assertStandardJsonRestResponses($response);
+ $this->assertJsonSchemaLinkedAndValidated($response, RestIncrementDownloadTest::SchemaFilename, true);
+
+ $json = json_decode($response->getBody()->getContents());
+ $this->assertEquals("armenian unicode", $json->keyboard_id);
+
+ // Verify that the counter is incrementing
+ $this->assertEquals($currentCount + 1, $json->count);
+ }
+}
\ No newline at end of file
diff --git a/tests/rest/RestKeyboardTest.php b/tests/rest/RestKeyboardTest.php
new file mode 100644
index 0000000..8ae8aef
--- /dev/null
+++ b/tests/rest/RestKeyboardTest.php
@@ -0,0 +1,44 @@
+
+ */
+
+namespace Keyman\Site\com\keyman\api\tests\rest;
+
+require_once(__DIR__ . '/../../tools/base.inc.php');
+require_once(__DIR__ . '/RestTestCase.php');
+
+final class RestKeyboardTest extends RestTestCase
+{
+ private const SchemaFilename = "/keyboard_info.distribution/1.0.6/keyboard_info.distribution.json";
+
+ public function testBasicRequest(): void
+ {
+ $response = $this->http->request('GET', 'keyboard/newa_traditional');
+ $this->assertStandardJsonRestResponses($response);
+ $this->assertJsonSchemaLinkedAndValidated($response, RestKeyboardTest::SchemaFilename);
+
+ $json = json_decode($response->getBody()->getContents());
+
+ // Check just a couple of fields for sanity
+ $this->assertEquals("newa_traditional", $json->id);
+ $this->assertEquals("1.1", $json->version);
+ }
+
+ public function testLegacyRequest(): void
+ {
+ $response = $this->http->request('GET', 'keyboard/armenian%20unicode');
+ $this->assertStandardJsonRestResponses($response);
+ $this->assertJsonSchemaLinkedAndValidated($response, RestKeyboardTest::SchemaFilename);
+
+ $json = json_decode($response->getBody()->getContents());
+
+ // Check just a couple of fields for sanity
+ $this->assertEquals("armenian unicode", $json->id);
+ $this->assertEquals("1.0", $json->version);
+ }
+}
\ No newline at end of file
diff --git a/tests/rest/RestModelTest.php b/tests/rest/RestModelTest.php
new file mode 100644
index 0000000..ac35f84
--- /dev/null
+++ b/tests/rest/RestModelTest.php
@@ -0,0 +1,31 @@
+
+ */
+
+namespace Keyman\Site\com\keyman\api\tests\rest;
+
+require_once(__DIR__ . '/../../tools/base.inc.php');
+require_once(__DIR__ . '/RestTestCase.php');
+
+final class RestModelTest extends RestTestCase
+{
+ private const SchemaFilename = "/model_info.distribution/1.0.1/model_info.distribution.json";
+
+ public function testBasicRequest(): void
+ {
+ $response = $this->http->request('GET', 'model/gff.am.gff_amharic');
+ $this->assertStandardJsonRestResponses($response);
+ $this->assertJsonSchemaLinkedAndValidated($response, RestModelTest::SchemaFilename);
+
+ $json = json_decode($response->getBody()->getContents());
+
+ // Check just a couple of fields for sanity
+ $this->assertEquals("gff.am.gff_amharic", $json->id);
+ $this->assertEquals("1.0", $json->version);
+ }
+}
\ No newline at end of file
diff --git a/tests/rest/RestTestCase.php b/tests/rest/RestTestCase.php
index 3fd73dd..9fee5b8 100644
--- a/tests/rest/RestTestCase.php
+++ b/tests/rest/RestTestCase.php
@@ -11,7 +11,7 @@
use Keyman\Site\Common\KeymanHosts;
use GuzzleHttp;
-class RestTestCase extends ApiTestCase
+abstract class RestTestCase extends ApiTestCase
{
protected $http;
@@ -70,15 +70,17 @@ protected function assertStandardJsonRestResponses($response): void
$this->assertEquals("*", $cors[0]);
}
- protected function assertJsonSchemaLinkedAndValidated($response, $schema): void
+ protected function assertJsonSchemaLinkedAndValidated($response, $schema, $useFullVersionedPath = false): void
{
$headers = $response->getHeaders();
- // The caller will pass in a versioned schema filename; we want the unversioned equivalent to check the Link header
- $base_schema = basename($schema);
+ // For legacy APIs, the caller will pass in a versioned schema filename; we
+ // want the unversioned equivalent to check the Link header. For newer APIs,
+ // we always use a fully versioned schema in the Link
+ $base_schema = $useFullVersionedPath ? $schema : ('/' . basename($schema));
$links = $headers["Link"];
$this->assertCount(1, $links); // we should only have one Link header, the JSON schema
- $this->assertEquals("<" . KeymanHosts::Instance()->api_keyman_com . "/schemas/$base_schema#>; rel=\"describedby\"" , $links[0]);
+ $this->assertEquals("<" . KeymanHosts::Instance()->api_keyman_com . "/schemas$base_schema#>; rel=\"describedby\"" , $links[0]);
// Now validate against the versioned schema file
$schema = TestUtils::LoadJSONSchema($schema);
diff --git a/tools/db/build/common.inc.php b/tools/db/build/common.inc.php
index 1f4dc4a..7436300 100644
--- a/tools/db/build/common.inc.php
+++ b/tools/db/build/common.inc.php
@@ -201,7 +201,9 @@ function create_tab_delimited_data_script($cache_file, $sqlfilename, $table, $co
foreach($data as $line) {
$sql .= "INSERT $table $coldef VALUES(";
- $row = str_getcsv($line,"\t",'',"");
+ # note that \x7f should be an unused character in the source file as
+ # we don't have enclosures for tab delimited files
+ $row = str_getcsv($line,"\t","\x7f","");
$comma = '';
// #143 - ignore extra columns at end of data (if we have column data)
for($i = 0; $i < sizeof($row) && (!$cols || $i < sizeof($cols)); $i++) {