diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..7bc7c96
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,15 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+indent_style = space
+indent_size = 4
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.nix]
+indent_size = 2
+
+[*.md]
+indent_size = 2
diff --git a/.gitattributes b/.gitattributes
index 04a63cb..e391c30 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,15 @@
-nix/composer-env.nix linguist-vendored=true linguist-generated=true
-nix/php-packages.nix linguist-vendored=true linguist-generated=true
+* text=auto
+
+composer.lock linguist-generated
+composer-project.nix linguist-generated
+
+.editorconfig export-ignore
+.envrc export-ignore
+.gitattributes export-ignore
+
+/tests export-ignore
+.github export-ignore
+.phpcs.xml.dist export-ignore
+psalm.xml export-ignore
+phpstan.neon.dist export-ignore
+phpunit.xml.dist export-ignore
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..b4e0fb8
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,11 @@
+# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
+version: 2
+updates:
+ - package-ecosystem: "composer"
+ directory: "/"
+ schedule:
+ interval: "weekly"
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 70361b9..762385e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,37 +1,92 @@
name: ci
on:
- push:
- branches:
- - master
- - github-actions
- - ci
- pull_request:
- branches:
- - master
+ push:
+ branches:
+ - master
+ - develop
+ - ci
+ pull_request:
+ branches:
+ - master
+
+permissions:
+ contents: read
jobs:
- run:
- runs-on: ${{ matrix.operating-system }}
- strategy:
- matrix:
- operating-system: [ubuntu-latest, windows-latest, macos-latest]
- php-versions: ["7.3", "7.4", "8.0"]
- name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Setup PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php-versions }}
- extensions: bcmath
- coverage: xdebug
- tools: phpunit
-
- - name: Install Composer dependencies
- run: composer install --no-progress --prefer-dist --optimize-autoloader --no-dev
-
- - name: PHP test
- run: phpunit
+ lint:
+ runs-on: ubuntu-latest
+ name: "Lint | PHP ${{ matrix.php-version }}"
+ strategy:
+ matrix:
+ php-version:
+ - "8.1"
+ - "8.2"
+ - "8.3"
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Install PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ coverage: "none"
+ php-version: "${{ matrix.php-version }}"
+ tools: composer:v2
+
+ - name: Validate composer.json and composer.lock
+ run: composer validate --strict
+
+ - name: Cache Composer packages
+ id: composer-cache
+ uses: actions/cache@v4
+ with:
+ path: vendor
+ key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-php-
+
+ - name: Install dependencies
+ run: composer install --prefer-dist --no-progress
+
+ - name: phpcs
+ run: php vendor/bin/phpcs
+
+ - name: phpstan
+ run: php vendor/bin/phpstan analyze
+
+ - name: psalm
+ run: php vendor/bin/psalm
+
+ test:
+ runs-on: ubuntu-latest
+ name: "Test | PHP ${{ matrix.php-version }}"
+ strategy:
+ matrix:
+ php-version:
+ - "8.1"
+ - "8.2"
+ - "8.3"
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Install PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ coverage: pcov
+ php-version: "${{ matrix.php-version }}"
+ tools: composer:v2
+
+ - name: Cache Composer packages
+ id: composer-cache
+ uses: actions/cache@v4
+ with:
+ path: vendor
+ key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-php-
+
+ - name: Install dependencies
+ run: composer install --prefer-dist --no-progress
+
+ - name: Run test suite
+ run: php vendor/bin/phpunit --coverage-text
diff --git a/.gitignore b/.gitignore
index aab7eee..00017e1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,11 @@
-nbproject
-vendor
+.direnv
+.envrc
+.idea
+.phpunit.result.cache
+.phpunit.cache
+*.log
+clover.xml
+result*
+/.pre-commit-config.yaml
+/coverage/
+/vendor/
diff --git a/.phpcs.xml.dist b/.phpcs.xml.dist
new file mode 100644
index 0000000..4510d15
--- /dev/null
+++ b/.phpcs.xml.dist
@@ -0,0 +1,27 @@
+
+
+ src
+ tests
+
+ */.direnv/*
+ */vendor/*
+ */tests/fixtures/*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/composer.json b/composer.json
index f810f77..4912529 100644
--- a/composer.json
+++ b/composer.json
@@ -1,27 +1,38 @@
{
- "authors" : [
- {
- "email" : "jbboehr@gmail.com",
- "name" : "John Boehr"
+ "authors": [
+ {
+ "email": "jbboehr@gmail.com",
+ "name": "John Boehr"
+ }
+ ],
+ "autoload": {
+ "psr-4": {
+ "DNSBL\\": "src/"
+ }
+ },
+ "description": "DNSBL lookup",
+ "homepage": "http://github.com/jbboehr/dnsbl",
+ "name": "jbboehr/dnsbl",
+ "keywords": [
+ "dnsbl"
+ ],
+ "license": "PHP-3.01",
+ "require": {
+ "php": ">=7.1",
+ "ext-filter": "*"
+ },
+ "type": "library",
+ "require-dev": {
+ "phpunit/phpunit": "^10",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpstan/phpstan-strict-rules": "^1.5",
+ "psalm/plugin-phpunit": "^0.18.4",
+ "squizlabs/php_codesniffer": "^3.8",
+ "vimeo/psalm": "^5.21"
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "DNSBL\\Tests\\": "tests"
+ }
}
- ],
- "autoload" : {
- "psr-4" : {
- "DNSBL\\": "src/"
- }
- },
- "description" : "DNSBL lookup",
- "homepage": "http://github.com/jbboehr/dnsbl",
- "name" : "jbboehr/dnsbl",
- "keywords" : [
- "dnsbl"
- ],
- "license": "PHP-3.01",
- "require" : {
- "php" : ">=5.3.0"
- },
- "type" : "library",
- "require-dev": {
- "phpunit/phpunit": "^9.4.2"
- }
}
diff --git a/composer.lock b/composer.lock
index e6e0b06..a1a92b3 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,168 +4,1749 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "cd66f4dbe58b29a1f0a5640d9fda8e32",
+ "content-hash": "b01922d9227bb810a50a49cb87b701d1",
"packages": [],
"packages-dev": [
{
- "name": "doctrine/instantiator",
- "version": "1.3.1",
+ "name": "amphp/amp",
+ "version": "v2.6.2",
"source": {
"type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
+ "url": "https://github.com/amphp/amp.git",
+ "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
- "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
+ "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1",
+ "ext-json": "*",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^7 | ^8 | ^9",
+ "psalm/phar": "^3.11@dev",
+ "react/promise": "^2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/functions.php",
+ "lib/Internal/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\": "lib"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
+ },
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A non-blocking concurrency framework for PHP applications.",
+ "homepage": "https://amphp.org/amp",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "awaitable",
+ "concurrency",
+ "event",
+ "event-loop",
+ "future",
+ "non-blocking",
+ "promise"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/amphp",
+ "issues": "https://github.com/amphp/amp/issues",
+ "source": "https://github.com/amphp/amp/tree/v2.6.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-20T17:52:18+00:00"
+ },
+ {
+ "name": "amphp/byte-stream",
+ "version": "v1.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/byte-stream.git",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1.4",
+ "friendsofphp/php-cs-fixer": "^2.3",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^6 || ^7 || ^8",
+ "psalm/phar": "^3.11.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\ByteStream\\": "lib"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A stream abstraction to make working with non-blocking I/O simple.",
+ "homepage": "http://amphp.org/byte-stream",
+ "keywords": [
+ "amp",
+ "amphp",
+ "async",
+ "io",
+ "non-blocking",
+ "stream"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/amphp",
+ "issues": "https://github.com/amphp/byte-stream/issues",
+ "source": "https://github.com/amphp/byte-stream/tree/v1.8.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2021-03-30T17:13:30+00:00"
+ },
+ {
+ "name": "composer/package-versions-deprecated",
+ "version": "1.11.99.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/package-versions-deprecated.git",
+ "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d",
+ "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.1.0 || ^2.0",
+ "php": "^7 || ^8"
+ },
+ "replace": {
+ "ocramius/package-versions": "1.11.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)",
+ "support": {
+ "issues": "https://github.com/composer/package-versions-deprecated/issues",
+ "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-17T14:14:24+00:00"
+ },
+ {
+ "name": "composer/pcre",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/pcre.git",
+ "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+ "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Pcre\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+ "keywords": [
+ "PCRE",
+ "preg",
+ "regex",
+ "regular expression"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/pcre/issues",
+ "source": "https://github.com/composer/pcre/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-10-11T07:11:09+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
+ "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.4",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "support": {
+ "irc": "ircs://irc.libera.chat:6697/composer",
+ "issues": "https://github.com/composer/semver/issues",
+ "source": "https://github.com/composer/semver/tree/3.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-08-31T09:50:34+00:00"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "ced299686f41dce890debac69273b47ffe98a40c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
+ "reference": "ced299686f41dce890debac69273b47ffe98a40c",
+ "shasum": ""
+ },
+ "require": {
+ "composer/pcre": "^1 || ^2 || ^3",
+ "php": "^7.2.5 || ^8.0",
+ "psr/log": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without Xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues",
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-25T21:32:43+00:00"
+ },
+ {
+ "name": "dnoegel/php-xdg-base-dir",
+ "version": "v0.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "XdgBaseDir\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "implementation of xdg base directory specification for php",
+ "support": {
+ "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues",
+ "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1"
+ },
+ "time": "2019-12-04T15:06:13+00:00"
+ },
+ {
+ "name": "doctrine/deprecations",
+ "version": "1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/deprecations.git",
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9",
+ "phpstan/phpstan": "1.4.10 || 1.10.15",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "psalm/plugin-phpunit": "0.18.4",
+ "psr/log": "^1 || ^2 || ^3",
+ "vimeo/psalm": "4.30.0 || 5.12.0"
+ },
+ "suggest": {
+ "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
+ "homepage": "https://www.doctrine-project.org/",
+ "support": {
+ "issues": "https://github.com/doctrine/deprecations/issues",
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
+ },
+ "time": "2024-01-30T19:34:25+00:00"
+ },
+ {
+ "name": "felixfbecker/advanced-json-rpc",
+ "version": "v3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "shasum": ""
+ },
+ "require": {
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "php": "^7.1 || ^8.0",
+ "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "AdvancedJsonRpc\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "A more advanced JSONRPC implementation",
+ "support": {
+ "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
+ "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
+ },
+ "time": "2021-06-11T22:34:44+00:00"
+ },
+ {
+ "name": "felixfbecker/language-server-protocol",
+ "version": "v1.5.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-language-server-protocol.git",
+ "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842",
+ "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "*",
+ "squizlabs/php_codesniffer": "^3.1",
+ "vimeo/psalm": "^4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "LanguageServerProtocol\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "PHP classes for the Language Server Protocol",
+ "keywords": [
+ "language",
+ "microsoft",
+ "php",
+ "server"
+ ],
+ "support": {
+ "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
+ "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2"
+ },
+ "time": "2022-03-02T22:36:06+00:00"
+ },
+ {
+ "name": "fidry/cpu-core-counter",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theofidry/cpu-core-counter.git",
+ "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077",
+ "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "fidry/makefile": "^0.2.0",
+ "fidry/php-cs-fixer-config": "^1.1.2",
+ "phpstan/extension-installer": "^1.2.0",
+ "phpstan/phpstan": "^1.9.2",
+ "phpstan/phpstan-deprecation-rules": "^1.0.0",
+ "phpstan/phpstan-phpunit": "^1.2.2",
+ "phpstan/phpstan-strict-rules": "^1.4.4",
+ "phpunit/phpunit": "^8.5.31 || ^9.5.26",
+ "webmozarts/strict-phpunit": "^7.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Fidry\\CpuCoreCounter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Théo FIDRY",
+ "email": "theo.fidry@gmail.com"
+ }
+ ],
+ "description": "Tiny utility to get the number of CPU cores.",
+ "keywords": [
+ "CPU",
+ "core"
+ ],
+ "support": {
+ "issues": "https://github.com/theofidry/cpu-core-counter/issues",
+ "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theofidry",
+ "type": "github"
+ }
+ ],
+ "time": "2023-09-17T21:38:23+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.11.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+ "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ],
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-03-08T13:26:56+00:00"
+ },
+ {
+ "name": "netresearch/jsonmapper",
+ "version": "v4.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cweiske/jsonmapper.git",
+ "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0",
+ "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0",
+ "squizlabs/php_codesniffer": "~3.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "JsonMapper": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "OSL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Christian Weiske",
+ "email": "cweiske@cweiske.de",
+ "homepage": "http://github.com/cweiske/jsonmapper/",
+ "role": "Developer"
+ }
+ ],
+ "description": "Map nested JSON structures onto PHP classes",
+ "support": {
+ "email": "cweiske@cweiske.de",
+ "issues": "https://github.com/cweiske/jsonmapper/issues",
+ "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1"
+ },
+ "time": "2024-01-31T06:18:54+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.18.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999",
+ "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0"
+ },
+ "time": "2023-12-10T21:03:43+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+ },
+ "time": "2021-07-20T11:28:43+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.2.1"
+ },
+ "time": "2022-02-21T01:04:05+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ },
+ "time": "2021-10-19T17:43:47+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc",
+ "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/deprecations": "^1.0",
+ "php": "^7.4 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0",
+ "phpstan/phpdoc-parser": "^1.13"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "phpbench/phpbench": "^1.2",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpunit/phpunit": "^9.5",
+ "rector/rector": "^0.13.9",
+ "vimeo/psalm": "^4.25"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0"
+ },
+ "time": "2024-01-11T11:49:22+00:00"
+ },
+ {
+ "name": "phpstan/phpdoc-parser",
+ "version": "1.25.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240",
+ "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^2.0",
+ "nikic/php-parser": "^4.15",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.5",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.0",
+ "phpunit/phpunit": "^9.5",
+ "symfony/process": "^5.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\PhpDocParser\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPDoc parser with support for nullable, intersection and generic types",
+ "support": {
+ "issues": "https://github.com/phpstan/phpdoc-parser/issues",
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0"
+ },
+ "time": "2024-01-04T17:06:16+00:00"
+ },
+ {
+ "name": "phpstan/phpstan",
+ "version": "1.10.57",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan.git",
+ "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e",
+ "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2|^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
+ },
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
+ "type": "library",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "keywords": [
+ "dev",
+ "static analysis"
+ ],
+ "support": {
+ "docs": "https://phpstan.org/user-guide/getting-started",
+ "forum": "https://github.com/phpstan/phpstan/discussions",
+ "issues": "https://github.com/phpstan/phpstan/issues",
+ "security": "https://github.com/phpstan/phpstan/security/policy",
+ "source": "https://github.com/phpstan/phpstan-src"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ondrejmirtes",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/phpstan",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-01-24T11:51:34+00:00"
+ },
+ {
+ "name": "phpstan/phpstan-phpunit",
+ "version": "1.3.15",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan-phpunit.git",
+ "reference": "70ecacc64fe8090d8d2a33db5a51fe8e88acd93a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/70ecacc64fe8090d8d2a33db5a51fe8e88acd93a",
+ "reference": "70ecacc64fe8090d8d2a33db5a51fe8e88acd93a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpstan/phpstan": "^1.10"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<7.0"
+ },
+ "require-dev": {
+ "nikic/php-parser": "^4.13.0",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/phpstan-strict-rules": "^1.5.1",
+ "phpunit/phpunit": "^9.5"
+ },
+ "type": "phpstan-extension",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "extension.neon",
+ "rules.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPUnit extensions and rules for PHPStan",
+ "support": {
+ "issues": "https://github.com/phpstan/phpstan-phpunit/issues",
+ "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.3.15"
+ },
+ "time": "2023-10-09T18:58:39+00:00"
+ },
+ {
+ "name": "phpstan/phpstan-strict-rules",
+ "version": "1.5.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan-strict-rules.git",
+ "reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/7a50e9662ee9f3942e4aaaf3d603653f60282542",
+ "reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpstan/phpstan": "^1.10.34"
+ },
+ "require-dev": {
+ "nikic/php-parser": "^4.13.0",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/phpstan-deprecation-rules": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpunit/phpunit": "^9.5"
+ },
+ "type": "phpstan-extension",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "rules.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Extra strict and opinionated rules for PHPStan",
+ "support": {
+ "issues": "https://github.com/phpstan/phpstan-strict-rules/issues",
+ "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.2"
+ },
+ "time": "2023-10-30T14:35:06+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "10.1.11",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "78c3b7625965c2513ee96569a4dbb62601784145"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145",
+ "reference": "78c3b7625965c2513ee96569a4dbb62601784145",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.18 || ^5.0",
+ "php": ">=8.1",
+ "phpunit/php-file-iterator": "^4.0",
+ "phpunit/php-text-template": "^3.0",
+ "sebastian/code-unit-reverse-lookup": "^3.0",
+ "sebastian/complexity": "^3.0",
+ "sebastian/environment": "^6.0",
+ "sebastian/lines-of-code": "^2.0",
+ "sebastian/version": "^4.0",
+ "theseer/tokenizer": "^1.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^10.1"
+ },
+ "suggest": {
+ "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-main": "10.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-12-21T15:38:30+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c",
+ "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^10.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-08-31T06:24:48+00:00"
+ },
+ {
+ "name": "phpunit/php-invoker",
+ "version": "4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
+ "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^10.0"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "4.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": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "keywords": [
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-02-03T06:56:09+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748",
+ "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpbench/phpbench": "^0.13",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpstan/phpstan-shim": "^0.11",
- "phpunit/phpunit": "^7.0"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.2.x-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
+ "classmap": [
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
"keywords": [
- "constructor",
- "instantiate"
+ "template"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "security": "https://github.com/sebastianbergmann/php-text-template/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1"
+ },
"funding": [
{
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
- "type": "tidelift"
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
}
],
- "time": "2020-05-29T17:27:14+00:00"
+ "time": "2023-08-31T14:07:24+00:00"
},
{
- "name": "myclabs/deep-copy",
- "version": "1.10.1",
+ "name": "phpunit/php-timer",
+ "version": "6.0.0",
"source": {
"type": "git",
- "url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
- "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d",
+ "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
- },
- "replace": {
- "myclabs/deep-copy": "self.version"
+ "php": ">=8.1"
},
"require-dev": {
- "doctrine/collections": "^1.0",
- "doctrine/common": "^2.6",
- "phpunit/phpunit": "^7.1"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "6.0-dev"
+ }
+ },
"autoload": {
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- },
- "files": [
- "src/DeepCopy/deep_copy.php"
+ "classmap": [
+ "src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
- "description": "Create deep copies (clones) of your objects",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
"keywords": [
- "clone",
- "copy",
- "duplicate",
- "object",
- "object graph"
+ "timer"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0"
+ },
"funding": [
{
- "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
- "type": "tidelift"
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
}
],
- "time": "2020-06-29T13:22:24+00:00"
+ "time": "2023-02-03T06:57:52+00:00"
},
{
- "name": "nikic/php-parser",
- "version": "v4.10.2",
+ "name": "phpunit/phpunit",
+ "version": "10.5.10",
"source": {
"type": "git",
- "url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "658f1be311a230e0907f5dfe0213742aff0596de"
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de",
- "reference": "658f1be311a230e0907f5dfe0213742aff0596de",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/50b8e314b6d0dd06521dc31d1abffa73f25f850c",
+ "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c",
"shasum": ""
},
"require": {
- "ext-tokenizer": "*",
- "php": ">=7.0"
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.3",
+ "phar-io/version": "^3.0.2",
+ "php": ">=8.1",
+ "phpunit/php-code-coverage": "^10.1.5",
+ "phpunit/php-file-iterator": "^4.0",
+ "phpunit/php-invoker": "^4.0",
+ "phpunit/php-text-template": "^3.0",
+ "phpunit/php-timer": "^6.0",
+ "sebastian/cli-parser": "^2.0",
+ "sebastian/code-unit": "^2.0",
+ "sebastian/comparator": "^5.0",
+ "sebastian/diff": "^5.0",
+ "sebastian/environment": "^6.0",
+ "sebastian/exporter": "^5.1",
+ "sebastian/global-state": "^6.0.1",
+ "sebastian/object-enumerator": "^5.0",
+ "sebastian/recursion-context": "^5.0",
+ "sebastian/type": "^4.0",
+ "sebastian/version": "^4.0"
},
- "require-dev": {
- "ircmaxell/php-yacc": "^0.0.7",
- "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ "suggest": {
+ "ext-soap": "To be able to generate mocks based on WSDL files"
},
"bin": [
- "bin/php-parse"
+ "phpunit"
],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.9-dev"
+ "dev-main": "10.5-dev"
}
},
"autoload": {
- "psr-4": {
- "PhpParser\\": "lib/PhpParser"
- }
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ],
+ "classmap": [
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -173,145 +1754,178 @@
],
"authors": [
{
- "name": "Nikita Popov"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "A PHP parser written in PHP",
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
"keywords": [
- "parser",
- "php"
+ "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/10.5.10"
+ },
+ "funding": [
+ {
+ "url": "https://phpunit.de/sponsors.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+ "type": "tidelift"
+ }
],
- "time": "2020-09-26T10:30:38+00:00"
+ "time": "2024-02-04T09:07:51+00:00"
},
{
- "name": "phar-io/manifest",
- "version": "2.0.1",
+ "name": "psalm/plugin-phpunit",
+ "version": "0.18.4",
"source": {
"type": "git",
- "url": "https://github.com/phar-io/manifest.git",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
+ "url": "https://github.com/psalm/psalm-plugin-phpunit.git",
+ "reference": "e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
+ "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc",
+ "reference": "e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc",
"shasum": ""
},
"require": {
- "ext-dom": "*",
- "ext-phar": "*",
- "ext-xmlwriter": "*",
- "phar-io/version": "^3.0.1",
- "php": "^7.2 || ^8.0"
+ "composer/package-versions-deprecated": "^1.10",
+ "composer/semver": "^1.4 || ^2.0 || ^3.0",
+ "ext-simplexml": "*",
+ "php": "^7.1 || ^8.0",
+ "vimeo/psalm": "dev-master || dev-4.x || ^4.7.1 || ^5@beta || ^5.0"
},
- "type": "library",
+ "conflict": {
+ "phpunit/phpunit": "<7.5"
+ },
+ "require-dev": {
+ "codeception/codeception": "^4.0.3",
+ "php": "^7.3 || ^8.0",
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0",
+ "squizlabs/php_codesniffer": "^3.3.1",
+ "weirdan/codeception-psalm-module": "^0.11.0",
+ "weirdan/prophecy-shim": "^1.0 || ^2.0"
+ },
+ "type": "psalm-plugin",
"extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
+ "psalm": {
+ "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin"
}
},
"autoload": {
- "classmap": [
- "src/"
- ]
+ "psr-4": {
+ "Psalm\\PhpUnitPlugin\\": "src"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
+ "name": "Matt Brown",
+ "email": "github@muglug.com"
}
],
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
- "time": "2020-06-27T14:33:11+00:00"
+ "description": "Psalm plugin for PHPUnit",
+ "support": {
+ "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues",
+ "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.18.4"
+ },
+ "time": "2022-12-03T07:47:07+00:00"
},
{
- "name": "phar-io/version",
- "version": "3.0.2",
+ "name": "psr/container",
+ "version": "2.0.2",
"source": {
"type": "git",
- "url": "https://github.com/phar-io/version.git",
- "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0"
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/c6bb6825def89e0a32220f88337f8ceaf1975fa0",
- "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": ">=7.4.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
"autoload": {
- "classmap": [
- "src/"
- ]
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "Library for handling version information and constraints",
- "time": "2020-06-27T14:39:04+00:00"
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "time": "2021-11-05T16:47:00+00:00"
},
{
- "name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
+ "name": "psr/log",
+ "version": "3.0.0",
"source": {
"type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-2.x": "2.x-dev"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
+ "Psr\\Log\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -320,221 +1934,217 @@
],
"authors": [
{
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
"keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
- "static analysis"
+ "log",
+ "psr",
+ "psr-3"
],
- "time": "2020-06-27T09:03:43+00:00"
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
+ },
+ "time": "2021-07-14T16:46:02+00:00"
},
{
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.2.2",
+ "name": "sebastian/cli-parser",
+ "version": "2.0.0",
"source": {
"type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
- "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae",
+ "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae",
"shasum": ""
},
"require": {
- "ext-filter": "*",
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
- "webmozart/assert": "^1.9.1"
+ "php": ">=8.1"
},
"require-dev": {
- "mockery/mockery": "~1.3.2"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.x-dev"
+ "dev-main": "2.0-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": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for parsing CLI options",
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0"
+ },
+ "funding": [
{
- "name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
}
],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2020-09-03T19:13:55+00:00"
+ "time": "2023-02-03T06:58:15+00:00"
},
{
- "name": "phpdocumentor/type-resolver",
- "version": "1.4.0",
+ "name": "sebastian/code-unit",
+ "version": "2.0.0",
"source": {
"type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "a81fee9eef0b7a76af11d121767abc44c104e503"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
- "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503",
+ "reference": "a81fee9eef0b7a76af11d121767abc44c104e503",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0"
+ "php": ">=8.1"
},
"require-dev": {
- "ext-tokenizer": "*"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-1.x": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
+ "dev-main": "2.0-dev"
}
},
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "time": "2020-09-17T18:55:26+00:00"
+ "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/2.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2023-02-03T06:58:43+00:00"
},
{
- "name": "phpspec/prophecy",
- "version": "1.12.1",
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "3.0.0",
"source": {
"type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d"
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d",
- "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
+ "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.2",
- "php": "^7.2 || ~8.0, <8.1",
- "phpdocumentor/reflection-docblock": "^5.2",
- "sebastian/comparator": "^3.0 || ^4.0",
- "sebastian/recursion-context": "^3.0 || ^4.0"
+ "php": ">=8.1"
},
"require-dev": {
- "phpspec/phpspec": "^6.0",
- "phpunit/phpunit": "^8.0 || ^9.0 <9.3"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.11.x-dev"
+ "dev-main": "3.0-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": "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/3.0.0"
+ },
+ "funding": [
{
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
}
],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2020-09-29T09:10:42+00:00"
+ "time": "2023-02-03T06:59:15+00:00"
},
{
- "name": "phpunit/php-code-coverage",
- "version": "9.2.3",
+ "name": "sebastian/comparator",
+ "version": "5.0.1",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "6b20e2055f7c29b56cb3870b3de7cc463d7add41"
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "2db5010a484d53ebf536087a70b4a5423c102372"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6b20e2055f7c29b56cb3870b3de7cc463d7add41",
- "reference": "6b20e2055f7c29b56cb3870b3de7cc463d7add41",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372",
+ "reference": "2db5010a484d53ebf536087a70b4a5423c102372",
"shasum": ""
},
"require": {
"ext-dom": "*",
- "ext-libxml": "*",
- "ext-xmlwriter": "*",
- "nikic/php-parser": "^4.10.2",
- "php": ">=7.3",
- "phpunit/php-file-iterator": "^3.0.3",
- "phpunit/php-text-template": "^2.0.2",
- "sebastian/code-unit-reverse-lookup": "^2.0.2",
- "sebastian/complexity": "^2.0",
- "sebastian/environment": "^5.1.2",
- "sebastian/lines-of-code": "^1.0",
- "sebastian/version": "^3.0.1",
- "theseer/tokenizer": "^1.2.0"
+ "ext-mbstring": "*",
+ "php": ">=8.1",
+ "sebastian/diff": "^5.0",
+ "sebastian/exporter": "^5.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "suggest": {
- "ext-pcov": "*",
- "ext-xdebug": "*"
+ "phpunit/phpunit": "^10.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.2-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -549,49 +2159,66 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
+ "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": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
"keywords": [
- "coverage",
- "testing",
- "xunit"
+ "comparator",
+ "compare",
+ "equality"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "security": "https://github.com/sebastianbergmann/comparator/security/policy",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-10-30T10:46:41+00:00"
+ "time": "2023-08-14T13:18:12+00:00"
},
{
- "name": "phpunit/php-file-iterator",
- "version": "3.0.5",
+ "name": "sebastian/complexity",
+ "version": "3.2.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "68ff824baeae169ec9f2137158ee529584553799"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
- "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799",
+ "reference": "68ff824baeae169ec9f2137158ee529584553799",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "nikic/php-parser": "^4.18 || ^5.0",
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-main": "3.2-dev"
}
},
"autoload": {
@@ -610,48 +2237,46 @@
"role": "lead"
}
],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "security": "https://github.com/sebastianbergmann/complexity/security/policy",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-09-28T05:57:25+00:00"
+ "time": "2023-12-21T08:37:17+00:00"
},
{
- "name": "phpunit/php-invoker",
- "version": "3.1.1",
+ "name": "sebastian/diff",
+ "version": "5.1.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
- "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f",
+ "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "ext-pcntl": "*",
- "phpunit/phpunit": "^9.3"
- },
- "suggest": {
- "ext-pcntl": "*"
+ "phpunit/phpunit": "^10.0",
+ "symfony/process": "^4.2 || ^5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.1-dev"
+ "dev-main": "5.1-dev"
}
},
"autoload": {
@@ -666,47 +2291,61 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
}
],
- "description": "Invoke callables with a timeout",
- "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
"keywords": [
- "process"
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "security": "https://github.com/sebastianbergmann/diff/security/policy",
+ "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-09-28T05:58:55+00:00"
+ "time": "2023-12-22T10:55:06+00:00"
},
{
- "name": "phpunit/php-text-template",
- "version": "2.0.4",
+ "name": "sebastian/environment",
+ "version": "6.0.1",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
- "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951",
+ "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.0"
+ },
+ "suggest": {
+ "ext-posix": "*"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -721,47 +2360,55 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
+ "email": "sebastian@phpunit.de"
}
],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "https://github.com/sebastianbergmann/environment",
"keywords": [
- "template"
+ "Xdebug",
+ "environment",
+ "hhvm"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "security": "https://github.com/sebastianbergmann/environment/security/policy",
+ "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-10-26T05:33:50+00:00"
+ "time": "2023-04-11T05:39:26+00:00"
},
{
- "name": "phpunit/php-timer",
- "version": "5.0.3",
+ "name": "sebastian/exporter",
+ "version": "5.1.1",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
- "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc",
+ "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "ext-mbstring": "*",
+ "php": ">=8.1",
+ "sebastian/recursion-context": "^5.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "5.1-dev"
}
},
"autoload": {
@@ -776,90 +2423,76 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
}
],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "https://www.github.com/sebastianbergmann/exporter",
"keywords": [
- "timer"
+ "export",
+ "exporter"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "security": "https://github.com/sebastianbergmann/exporter/security/policy",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-10-26T13:16:10+00:00"
+ "time": "2023-09-24T13:22:09+00:00"
},
{
- "name": "phpunit/phpunit",
- "version": "9.4.2",
+ "name": "sebastian/global-state",
+ "version": "6.0.1",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "3866b2eeeed21b1b099c4bc0b7a1690ac6fd5baa"
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3866b2eeeed21b1b099c4bc0b7a1690ac6fd5baa",
- "reference": "3866b2eeeed21b1b099c4bc0b7a1690ac6fd5baa",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4",
+ "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.3.1",
- "ext-dom": "*",
- "ext-json": "*",
- "ext-libxml": "*",
- "ext-mbstring": "*",
- "ext-xml": "*",
- "ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.1",
- "phar-io/version": "^3.0.2",
- "php": ">=7.3",
- "phpspec/prophecy": "^1.12.1",
- "phpunit/php-code-coverage": "^9.2",
- "phpunit/php-file-iterator": "^3.0.5",
- "phpunit/php-invoker": "^3.1.1",
- "phpunit/php-text-template": "^2.0.3",
- "phpunit/php-timer": "^5.0.2",
- "sebastian/cli-parser": "^1.0.1",
- "sebastian/code-unit": "^1.0.6",
- "sebastian/comparator": "^4.0.5",
- "sebastian/diff": "^4.0.3",
- "sebastian/environment": "^5.1.3",
- "sebastian/exporter": "^4.0.3",
- "sebastian/global-state": "^5.0.1",
- "sebastian/object-enumerator": "^4.0.3",
- "sebastian/resource-operations": "^3.0.3",
- "sebastian/type": "^2.3",
- "sebastian/version": "^3.0.2"
+ "php": ">=8.1",
+ "sebastian/object-reflector": "^3.0",
+ "sebastian/recursion-context": "^5.0"
},
"require-dev": {
- "ext-pdo": "*",
- "phpspec/prophecy-phpunit": "^2.0.1"
- },
- "suggest": {
- "ext-soap": "*",
- "ext-xdebug": "*"
+ "ext-dom": "*",
+ "phpunit/phpunit": "^10.0"
},
- "bin": [
- "phpunit"
- ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.4-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
"classmap": [
"src/"
- ],
- "files": [
- "src/Framework/Assert/Functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -869,53 +2502,52 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
+ "email": "sebastian@phpunit.de"
}
],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
"keywords": [
- "phpunit",
- "testing",
- "xunit"
+ "global state"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "security": "https://github.com/sebastianbergmann/global-state/security/policy",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1"
+ },
"funding": [
- {
- "url": "https://phpunit.de/donate.html",
- "type": "custom"
- },
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-10-19T09:23:29+00:00"
+ "time": "2023-07-19T07:19:23+00:00"
},
{
- "name": "sebastian/cli-parser",
- "version": "1.0.1",
+ "name": "sebastian/lines-of-code",
+ "version": "2.0.2",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0",
+ "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "nikic/php-parser": "^4.18 || ^5.0",
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-main": "2.0-dev"
}
},
"autoload": {
@@ -934,40 +2566,47 @@
"role": "lead"
}
],
- "description": "Library for parsing CLI options",
- "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "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",
+ "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-09-28T06:08:49+00:00"
+ "time": "2023-12-21T08:38:20+00:00"
},
{
- "name": "sebastian/code-unit",
- "version": "1.0.8",
+ "name": "sebastian/object-enumerator",
+ "version": "5.0.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit.git",
- "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
- "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906",
+ "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1",
+ "sebastian/object-reflector": "^3.0",
+ "sebastian/recursion-context": "^5.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -982,44 +2621,47 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
+ "email": "sebastian@phpunit.de"
}
],
- "description": "Collection of value objects that represent the PHP code units",
- "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-10-26T13:08:54+00:00"
+ "time": "2023-02-03T07:08:32+00:00"
},
{
- "name": "sebastian/code-unit-reverse-lookup",
- "version": "2.0.3",
+ "name": "sebastian/object-reflector",
+ "version": "3.0.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "24ed13d98130f0e7122df55d06c5c4942a577957"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
- "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957",
+ "reference": "24ed13d98130f0e7122df55d06c5c4942a577957",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -1037,42 +2679,44 @@
"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/",
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-09-28T05:30:19+00:00"
+ "time": "2023-02-03T07:06:18+00:00"
},
{
- "name": "sebastian/comparator",
- "version": "4.0.6",
+ "name": "sebastian/recursion-context",
+ "version": "5.0.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "05909fb5bc7df4c52992396d0116aed689f93712"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
- "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712",
+ "reference": "05909fb5bc7df4c52992396d0116aed689f93712",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/diff": "^4.0",
- "sebastian/exporter": "^4.0"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -1092,56 +2736,50 @@
{
"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"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "https://github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-10-26T15:49:45+00:00"
+ "time": "2023-02-03T07:05:40+00:00"
},
{
- "name": "sebastian/complexity",
- "version": "2.0.2",
+ "name": "sebastian/type",
+ "version": "4.0.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "462699a16464c3944eefc02ebdd77882bd3925bf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
- "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf",
+ "reference": "462699a16464c3944eefc02ebdd77882bd3925bf",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^4.7",
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -1160,41 +2798,41 @@
"role": "lead"
}
],
- "description": "Library for calculating the complexity of PHP code units",
- "homepage": "https://github.com/sebastianbergmann/complexity",
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/4.0.0"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-10-26T15:52:27+00:00"
+ "time": "2023-02-03T07:10:45+00:00"
},
{
- "name": "sebastian/diff",
- "version": "4.0.4",
+ "name": "sebastian/version",
+ "version": "4.0.1",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
- "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17",
+ "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17",
"shasum": ""
},
"require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3",
- "symfony/process": "^4.2 || ^5"
+ "php": ">=8.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -1209,625 +2847,844 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Diff implementation",
- "homepage": "https://github.com/sebastianbergmann/diff",
- "keywords": [
- "diff",
- "udiff",
- "unidiff",
- "unified diff"
- ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/4.0.1"
+ },
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-10-26T13:10:38+00:00"
+ "time": "2023-02-07T11:34:05+00:00"
},
{
- "name": "sebastian/environment",
- "version": "5.1.3",
+ "name": "spatie/array-to-xml",
+ "version": "3.2.2",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ "url": "https://github.com/spatie/array-to-xml.git",
+ "reference": "96be97e664c87613121d073ea39af4c74e57a7f8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
- "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/96be97e664c87613121d073ea39af4c74e57a7f8",
+ "reference": "96be97e664c87613121d073ea39af4c74e57a7f8",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "ext-dom": "*",
+ "php": "^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
- },
- "suggest": {
- "ext-posix": "*"
+ "mockery/mockery": "^1.2",
+ "pestphp/pest": "^1.21",
+ "spatie/pest-plugin-snapshots": "^1.1"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
- "classmap": [
- "src/"
- ]
+ "psr-4": {
+ "Spatie\\ArrayToXml\\": "src"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "homepage": "https://freek.dev",
+ "role": "Developer"
}
],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "description": "Convert an array to xml",
+ "homepage": "https://github.com/spatie/array-to-xml",
"keywords": [
- "Xdebug",
- "environment",
- "hhvm"
+ "array",
+ "convert",
+ "xml"
],
+ "support": {
+ "source": "https://github.com/spatie/array-to-xml/tree/3.2.2"
+ },
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
"type": "github"
}
],
- "time": "2020-09-28T05:52:38+00:00"
+ "time": "2023-11-14T14:08:51+00:00"
},
{
- "name": "sebastian/exporter",
- "version": "4.0.3",
+ "name": "squizlabs/php_codesniffer",
+ "version": "3.8.1",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
+ "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
+ "reference": "14f5fff1e64118595db5408e946f3a22c75807f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
- "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7",
+ "reference": "14f5fff1e64118595db5408e946f3a22c75807f7",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/recursion-context": "^4.0"
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": ">=5.4.0"
},
"require-dev": {
- "ext-mbstring": "*",
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
},
+ "bin": [
+ "bin/phpcbf",
+ "bin/phpcs"
+ ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-master": "3.x-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": "Greg Sherwood",
+ "role": "Former lead"
},
{
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
+ "name": "Juliette Reinders Folmer",
+ "role": "Current lead"
},
{
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
+ "name": "Contributors",
+ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
}
],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"keywords": [
- "export",
- "exporter"
+ "phpcs",
+ "standards",
+ "static analysis"
],
+ "support": {
+ "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
+ "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
+ "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+ "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
+ },
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
+ "url": "https://github.com/PHPCSStandards",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/jrfnl",
"type": "github"
+ },
+ {
+ "url": "https://opencollective.com/php_codesniffer",
+ "type": "open_collective"
}
],
- "time": "2020-09-28T05:24:23+00:00"
+ "time": "2024-01-11T20:47:48+00:00"
},
{
- "name": "sebastian/global-state",
- "version": "5.0.2",
+ "name": "symfony/console",
+ "version": "v6.4.3",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "a90ccbddffa067b51f574dea6eb25d5680839455"
+ "url": "https://github.com/symfony/console.git",
+ "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455",
- "reference": "a90ccbddffa067b51f574dea6eb25d5680839455",
+ "url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e",
+ "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/object-reflector": "^2.0",
- "sebastian/recursion-context": "^4.0"
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/string": "^5.4|^6.0|^7.0"
},
- "require-dev": {
- "ext-dom": "*",
- "phpunit/phpunit": "^9.3"
+ "conflict": {
+ "symfony/dependency-injection": "<5.4",
+ "symfony/dotenv": "<5.4",
+ "symfony/event-dispatcher": "<5.4",
+ "symfony/lock": "<5.4",
+ "symfony/process": "<5.4"
},
- "suggest": {
- "ext-uopz": "*"
+ "provide": {
+ "psr/log-implementation": "1.0|2.0|3.0"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/lock": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
},
+ "type": "library",
"autoload": {
- "classmap": [
- "src/"
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
"keywords": [
- "global state"
+ "cli",
+ "command-line",
+ "console",
+ "terminal"
],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v6.4.3"
+ },
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "time": "2020-10-26T15:55:19+00:00"
+ "time": "2024-01-23T14:51:35+00:00"
},
{
- "name": "sebastian/lines-of-code",
- "version": "1.0.2",
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.4.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "acf76492a65401babcf5283296fa510782783a7a"
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/acf76492a65401babcf5283296fa510782783a7a",
- "reference": "acf76492a65401babcf5283296fa510782783a7a",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
+ "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^4.6",
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
+ "php": ">=8.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-main": "3.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
}
},
"autoload": {
- "classmap": [
- "src/"
+ "files": [
+ "function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "Library for counting the lines of code in PHP source code",
- "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
+ },
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "time": "2020-10-26T17:03:56+00:00"
+ "time": "2023-05-23T14:45:45+00:00"
},
{
- "name": "sebastian/object-enumerator",
- "version": "4.0.4",
+ "name": "symfony/filesystem",
+ "version": "v6.4.3",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
- "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb",
+ "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/object-reflector": "^2.0",
- "sebastian/recursion-context": "^4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.3"
+ "php": ">=8.1",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.8"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0-dev"
- }
- },
"autoload": {
- "classmap": [
- "src/"
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "Traverses array structures and object graphs to enumerate all referenced objects",
- "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "description": "Provides basic utilities for the filesystem",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/v6.4.3"
+ },
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "time": "2020-10-26T13:12:34+00:00"
+ "time": "2024-01-23T14:51:35+00:00"
},
{
- "name": "sebastian/object-reflector",
- "version": "2.0.4",
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.28.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
- "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
+ "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=7.1"
},
- "require-dev": {
- "phpunit/phpunit": "^9.3"
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "1.28-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
- "classmap": [
- "src/"
- ]
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "Allows reflection of object attributes, including inherited and non-public ones",
- "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0"
+ },
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "time": "2020-10-26T13:14:26+00:00"
+ "time": "2023-01-26T09:26:14+00:00"
},
{
- "name": "sebastian/recursion-context",
- "version": "4.0.4",
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.28.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "875e90aeea2777b6f135677f618529449334a612"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
- "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612",
+ "reference": "875e90aeea2777b6f135677f618529449334a612",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=7.1"
},
- "require-dev": {
- "phpunit/phpunit": "^9.3"
+ "suggest": {
+ "ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "1.28-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
- "classmap": [
- "src/"
- ]
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0"
+ },
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "time": "2020-10-26T13:17:30+00:00"
+ "time": "2023-01-26T09:26:14+00:00"
},
{
- "name": "sebastian/resource-operations",
- "version": "3.0.3",
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.28.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
+ "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=7.1"
},
- "require-dev": {
- "phpunit/phpunit": "^9.0"
+ "suggest": {
+ "ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-main": "1.28-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
"classmap": [
- "src/"
+ "Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides a list of PHP built-in functions that operate on resources",
- "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0"
+ },
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "time": "2020-09-28T06:45:17+00:00"
+ "time": "2023-01-26T09:26:14+00:00"
},
{
- "name": "sebastian/type",
- "version": "2.3.1",
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.28.0",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/type.git",
- "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2"
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "42292d99c55abe617799667f454222c54c60e229"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
- "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
+ "reference": "42292d99c55abe617799667f454222c54c60e229",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=7.1"
},
- "require-dev": {
- "phpunit/phpunit": "^9.3"
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.3-dev"
+ "dev-main": "1.28-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
- "classmap": [
- "src/"
- ]
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "Collection of value objects that represent the types of the PHP type system",
- "homepage": "https://github.com/sebastianbergmann/type",
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
+ },
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "time": "2020-10-26T13:18:59+00:00"
+ "time": "2023-07-28T09:04:16+00:00"
},
{
- "name": "sebastian/version",
- "version": "3.0.2",
+ "name": "symfony/service-contracts",
+ "version": "v3.4.1",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
- "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
+ "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1",
+ "psr/container": "^1.1|^2.0"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-main": "3.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
}
},
"autoload": {
- "classmap": [
- "src/"
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
+ },
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "time": "2020-09-28T06:39:44+00:00"
+ "time": "2023-12-26T14:02:43+00:00"
},
{
- "name": "symfony/polyfill-ctype",
- "version": "v1.20.0",
+ "name": "symfony/string",
+ "version": "v6.4.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
+ "url": "https://github.com/symfony/string.git",
+ "reference": "7a14736fb179876575464e4658fce0c304e8c15b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
- "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+ "url": "https://api.github.com/repos/symfony/string/zipball/7a14736fb179876575464e4658fce0c304e8c15b",
+ "reference": "7a14736fb179876575464e4658fce0c304e8c15b",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=8.1",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0"
},
- "suggest": {
- "ext-ctype": "For best performance"
+ "conflict": {
+ "symfony/translation-contracts": "<2.5"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.20-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
+ "require-dev": {
+ "symfony/error-handler": "^5.4|^6.0|^7.0",
+ "symfony/http-client": "^5.4|^6.0|^7.0",
+ "symfony/intl": "^6.2|^7.0",
+ "symfony/translation-contracts": "^2.5|^3.0",
+ "symfony/var-exporter": "^5.4|^6.0|^7.0"
},
+ "type": "library",
"autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
"psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
+ "Symfony\\Component\\String\\": ""
},
- "files": [
- "bootstrap.php"
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -1836,22 +3693,27 @@
],
"authors": [
{
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill for ctype functions",
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
"homepage": "https://symfony.com",
"keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v6.4.3"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -1866,20 +3728,20 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T14:02:19+00:00"
+ "time": "2024-01-25T09:26:29+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.0",
+ "version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+ "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
"shasum": ""
},
"require": {
@@ -1906,40 +3768,159 @@
}
],
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.2"
+ },
"funding": [
{
"url": "https://github.com/theseer",
"type": "github"
}
],
- "time": "2020-07-12T23:59:07+00:00"
+ "time": "2023-11-20T00:12:19+00:00"
+ },
+ {
+ "name": "vimeo/psalm",
+ "version": "5.21.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vimeo/psalm.git",
+ "reference": "8c473e2437be8b6a8fd8f630f0f11a16b114c494"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/8c473e2437be8b6a8fd8f630f0f11a16b114c494",
+ "reference": "8c473e2437be8b6a8fd8f630f0f11a16b114c494",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2.4.2",
+ "amphp/byte-stream": "^1.5",
+ "composer-runtime-api": "^2",
+ "composer/semver": "^1.4 || ^2.0 || ^3.0",
+ "composer/xdebug-handler": "^2.0 || ^3.0",
+ "dnoegel/php-xdg-base-dir": "^0.1.1",
+ "ext-ctype": "*",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "felixfbecker/advanced-json-rpc": "^3.1",
+ "felixfbecker/language-server-protocol": "^1.5.2",
+ "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0",
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "nikic/php-parser": "^4.16",
+ "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
+ "sebastian/diff": "^4.0 || ^5.0",
+ "spatie/array-to-xml": "^2.17.0 || ^3.0",
+ "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/filesystem": "^5.4 || ^6.0 || ^7.0"
+ },
+ "conflict": {
+ "nikic/php-parser": "4.17.0"
+ },
+ "provide": {
+ "psalm/psalm": "self.version"
+ },
+ "require-dev": {
+ "amphp/phpunit-util": "^2.0",
+ "bamarni/composer-bin-plugin": "^1.4",
+ "brianium/paratest": "^6.9",
+ "ext-curl": "*",
+ "mockery/mockery": "^1.5",
+ "nunomaduro/mock-final-classes": "^1.1",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/phpdoc-parser": "^1.6",
+ "phpunit/phpunit": "^9.6",
+ "psalm/plugin-mockery": "^1.1",
+ "psalm/plugin-phpunit": "^0.18",
+ "slevomat/coding-standard": "^8.4",
+ "squizlabs/php_codesniffer": "^3.6",
+ "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "suggest": {
+ "ext-curl": "In order to send data to shepherd",
+ "ext-igbinary": "^2.0.5 is required, used to serialize caching data"
+ },
+ "bin": [
+ "psalm",
+ "psalm-language-server",
+ "psalm-plugin",
+ "psalm-refactor",
+ "psalter"
+ ],
+ "type": "project",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev",
+ "dev-4.x": "4.x-dev",
+ "dev-3.x": "3.x-dev",
+ "dev-2.x": "2.x-dev",
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psalm\\": "src/Psalm/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthew Brown"
+ }
+ ],
+ "description": "A static analysis tool for finding errors in PHP applications",
+ "keywords": [
+ "code",
+ "inspection",
+ "php",
+ "static analysis"
+ ],
+ "support": {
+ "docs": "https://psalm.dev/docs",
+ "issues": "https://github.com/vimeo/psalm/issues",
+ "source": "https://github.com/vimeo/psalm"
+ },
+ "time": "2024-02-01T01:04:32+00:00"
},
{
"name": "webmozart/assert",
- "version": "1.9.1",
+ "version": "1.11.0",
"source": {
"type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
"shasum": ""
},
"require": {
- "php": "^5.3.3 || ^7.0 || ^8.0",
- "symfony/polyfill-ctype": "^1.8"
+ "ext-ctype": "*",
+ "php": "^7.2 || ^8.0"
},
"conflict": {
"phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<3.9.1"
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ "phpunit/phpunit": "^8.5.13"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Webmozart\\Assert\\": "src/"
@@ -1961,7 +3942,11 @@
"check",
"validate"
],
- "time": "2020-07-08T17:02:28+00:00"
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.11.0"
+ },
+ "time": "2022-06-03T18:03:27+00:00"
}
],
"aliases": [],
@@ -1970,8 +3955,9 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": ">=5.3.0"
+ "php": ">=7.1",
+ "ext-filter": "*"
},
"platform-dev": [],
- "plugin-api-version": "1.1.0"
+ "plugin-api-version": "2.6.0"
}
diff --git a/default.nix b/default.nix
deleted file mode 100644
index 5274d1c..0000000
--- a/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-# composer2nix --composition=/dev/null --composer-env=nix/composer-env.nix --output=nix/php-packages.nix
-{
- pkgs ? import { inherit system; },
- system ? builtins.currentSystem,
- noDev ? false,
- src ? ./.,
- php ? pkgs.php,
- phpPackages ? pkgs.phpPackages
-}:
-
-let
- composerEnv = import ./nix/composer-env.nix {
- inherit php phpPackages;
- inherit (pkgs) stdenv writeTextFile fetchurl unzip;
- };
- phpPackage = import ./nix/php-packages.nix {
- inherit composerEnv noDev;
- inherit (pkgs) fetchurl fetchgit fetchhg fetchsvn;
- };
-in
-phpPackage.override {
- inherit src;
- doCheck = true;
- postInstall = ''
- if [ -n "$doCheck" ]; then
- ./vendor/bin/phpunit || exit 1
- fi
- '';
-}
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..5284900
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,193 @@
+{
+ "nodes": {
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1696426674,
+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+ "type": "github"
+ },
+ "original": {
+ "owner": "edolstra",
+ "repo": "flake-compat",
+ "type": "github"
+ }
+ },
+ "flake-utils": {
+ "inputs": {
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1705309234,
+ "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_2": {
+ "inputs": {
+ "systems": "systems_2"
+ },
+ "locked": {
+ "lastModified": 1701680307,
+ "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "gitignore": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1703887061,
+ "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=",
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "type": "github"
+ }
+ },
+ "gitignore_2": {
+ "inputs": {
+ "nixpkgs": [
+ "pre-commit-hooks",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1703887061,
+ "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=",
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "gitignore.nix",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1706826059,
+ "narHash": "sha256-N69Oab+cbt3flLvYv8fYnEHlBsWwdKciNZHUbynVEOA=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "25e3d4c0d3591c99929b1ec07883177f6ea70c9d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-23.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs-stable": {
+ "locked": {
+ "lastModified": 1704874635,
+ "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-23.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "pre-commit-hooks": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-utils": "flake-utils_2",
+ "gitignore": "gitignore_2",
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "nixpkgs-stable": "nixpkgs-stable"
+ },
+ "locked": {
+ "lastModified": 1706424699,
+ "narHash": "sha256-Q3RBuOpZNH2eFA1e+IHgZLAOqDD9SKhJ/sszrL8bQD4=",
+ "owner": "cachix",
+ "repo": "pre-commit-hooks.nix",
+ "rev": "7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf",
+ "type": "github"
+ },
+ "original": {
+ "owner": "cachix",
+ "repo": "pre-commit-hooks.nix",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "flake-utils": "flake-utils",
+ "gitignore": "gitignore",
+ "nixpkgs": "nixpkgs",
+ "pre-commit-hooks": "pre-commit-hooks"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "systems_2": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..0f8afea
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,71 @@
+{
+ description = "jbboehr/dnsbl.php";
+
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
+ flake-utils = {
+ url = "github:numtide/flake-utils";
+ };
+ pre-commit-hooks = {
+ url = "github:cachix/pre-commit-hooks.nix";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ gitignore = {
+ url = "github:hercules-ci/gitignore.nix";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ outputs = {
+ self,
+ nixpkgs,
+ flake-utils,
+ pre-commit-hooks,
+ gitignore,
+ }:
+ flake-utils.lib.eachDefaultSystem (system: let
+ buildEnv = php:
+ php.buildEnv {
+ extraConfig = "memory_limit = 2G";
+ extensions = {
+ enabled,
+ all,
+ }:
+ enabled ++ [all.pcov];
+ };
+ pkgs = nixpkgs.legacyPackages.${system};
+ php = buildEnv pkgs.php81;
+ src = gitignore.lib.gitignoreSource ./.;
+
+ pre-commit-check = pre-commit-hooks.lib.${system}.run {
+ inherit src;
+ hooks = {
+ actionlint.enable = true;
+ alejandra.enable = true;
+ alejandra.excludes = ["\/vendor\/"];
+ shellcheck.enable = true;
+ };
+ };
+ in rec {
+ checks = {
+ inherit pre-commit-check;
+ };
+
+ devShells.default = pkgs.mkShell {
+ buildInputs = with pkgs; [
+ actionlint
+ alejandra
+ mdl
+ php
+ php.packages.composer
+ pre-commit
+ ];
+ shellHook = ''
+ ${pre-commit-check.shellHook}
+ export PATH="$PWD/vendor/bin:$PATH"
+ '';
+ };
+
+ formatter = pkgs.alejandra;
+ });
+}
diff --git a/nix/ci.nix b/nix/ci.nix
deleted file mode 100644
index 7dffccf..0000000
--- a/nix/ci.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-let
- generateTestsForPlatform = { pkgs, path, phpAttr, src }:
- pkgs.recurseIntoAttrs {
- pkg = let
- php = pkgs.${phpAttr};
- in pkgs.callPackage ../default.nix {
- inherit php src;
- };
- };
-in
-builtins.mapAttrs (k: _v:
- let
- path = builtins.fetchTarball {
- url = https://github.com/NixOS/nixpkgs/archive/release-20.03.tar.gz;
- name = "nixpkgs-20.03";
- };
- pkgs = import (path) { system = k; };
-
- gitignoreSrc = pkgs.fetchFromGitHub {
- owner = "hercules-ci";
- repo = "gitignore";
- rev = "00b237fb1813c48e20ee2021deb6f3f03843e9e4";
- sha256 = "sha256:186pvp1y5fid8mm8c7ycjzwzhv7i6s3hh33rbi05ggrs7r3as3yy";
- };
- inherit (import gitignoreSrc { inherit (pkgs) lib; }) gitignoreSource;
-
- src = pkgs.lib.cleanSourceWith {
- filter = (path: type: (builtins.all (x: x != baseNameOf path) [".git" "nix" ".travis.yml"]));
- src = gitignoreSource ../.;
- };
- in
- pkgs.recurseIntoAttrs {
- php73 = let
- php = pkgs.php73;
- in generateTestsForPlatform {
- inherit pkgs path src;
- phpAttr = "php73";
- };
-
- php74 = let
- php = pkgs.php74;
- in generateTestsForPlatform {
- inherit pkgs path src;
- phpAttr = "php74";
- };
- }
-) {
- x86_64-linux = {};
- # Uncomment to test build on macOS too
- # x86_64-darwin = {};
-}
diff --git a/nix/composer-env.nix b/nix/composer-env.nix
deleted file mode 100644
index 279b307..0000000
--- a/nix/composer-env.nix
+++ /dev/null
@@ -1,238 +0,0 @@
-# This file originates from composer2nix
-
-{ stdenv, writeTextFile, fetchurl, php, unzip, phpPackages }:
-
-let
- inherit (phpPackages) composer;
- buildZipPackage = { name, src }:
- stdenv.mkDerivation {
- inherit name src;
- buildInputs = [ unzip ];
- buildCommand = ''
- unzip $src
- baseDir=$(find . -type d -mindepth 1 -maxdepth 1)
- cd $baseDir
- mkdir -p $out
- mv * $out
- '';
- };
-
- buildPackage =
- { name
- , src
- , packages ? {}
- , devPackages ? {}
- , buildInputs ? []
- , symlinkDependencies ? false
- , executable ? false
- , removeComposerArtifacts ? false
- , postInstall ? ""
- , noDev ? false
- , unpackPhase ? "true"
- , buildPhase ? "true"
- , ...}@args:
-
- let
- reconstructInstalled = writeTextFile {
- name = "reconstructinstalled.php";
- executable = true;
- text = ''
- #! ${php}/bin/php
-
- '';
- };
-
- constructBin = writeTextFile {
- name = "constructbin.php";
- executable = true;
- text = ''
- #! ${php}/bin/php
-
- '';
- };
-
- bundleDependencies = dependencies:
- stdenv.lib.concatMapStrings (dependencyName:
- let
- dependency = dependencies.${dependencyName};
- in
- ''
- ${if dependency.targetDir == "" then ''
- vendorDir="$(dirname ${dependencyName})"
- mkdir -p "$vendorDir"
- ${if symlinkDependencies then
- ''ln -s "${dependency.src}" "$vendorDir/$(basename "${dependencyName}")"''
- else
- ''cp -av "${dependency.src}" "$vendorDir/$(basename "${dependencyName}")"''
- }
- '' else ''
- namespaceDir="${dependencyName}/$(dirname "${dependency.targetDir}")"
- mkdir -p "$namespaceDir"
- ${if symlinkDependencies then
- ''ln -s "${dependency.src}" "$namespaceDir/$(basename "${dependency.targetDir}")"''
- else
- ''cp -av "${dependency.src}" "$namespaceDir/$(basename "${dependency.targetDir}")"''
- }
- ''}
- '') (builtins.attrNames dependencies);
-
- extraArgs = removeAttrs args [ "name" "packages" "devPackages" "buildInputs" ];
- in
- stdenv.mkDerivation ({
- name = "composer-${name}";
- buildInputs = [ php composer ] ++ buildInputs;
-
- inherit unpackPhase buildPhase;
-
- installPhase = ''
- ${if executable then ''
- mkdir -p $out/share/php
- cp -av $src $out/share/php/$name
- chmod -R u+w $out/share/php/$name
- cd $out/share/php/$name
- '' else ''
- cp -av $src $out
- chmod -R u+w $out
- cd $out
- ''}
-
- # Remove unwanted files
- rm -f *.nix
-
- export HOME=$TMPDIR
-
- # Remove the provided vendor folder if it exists
- rm -Rf vendor
-
- # If there is no composer.lock file, compose a dummy file.
- # Otherwise, composer attempts to download the package.json file from
- # the registry which we do not want.
- if [ ! -f composer.lock ]
- then
- cat > composer.lock < vendor/composer/installed.json
-
- # Copy or symlink the provided dependencies
- cd vendor
- ${bundleDependencies packages}
- ${stdenv.lib.optionalString (!noDev) (bundleDependencies devPackages)}
- cd ..
-
- # Reconstruct autoload scripts
- # We use the optimize feature because Nix packages cannot change after they have been built
- # Using the dynamic loader for a Nix package is useless since there is nothing to dynamically reload.
- composer dump-autoload --optimize ${stdenv.lib.optionalString noDev "--no-dev"}
-
- # Run the install step as a validation to confirm that everything works out as expected
- composer install --optimize-autoloader ${stdenv.lib.optionalString noDev "--no-dev"}
-
- ${stdenv.lib.optionalString executable ''
- # Reconstruct the bin/ folder if we deploy an executable project
- ${constructBin} composer.json
- ln -s $(pwd)/vendor/bin $out/bin
- ''}
-
- ${stdenv.lib.optionalString (!symlinkDependencies) ''
- # Patch the shebangs if possible
- if [ -d $(pwd)/vendor/bin ]
- then
- # Look for all executables in bin/
- for i in $(pwd)/vendor/bin/*
- do
- # Look for their location
- realFile=$(readlink -f "$i")
-
- # Restore write permissions
- chmod u+wx "$(dirname "$realFile")"
- chmod u+w "$realFile"
-
- # Patch shebang
- sed -e "s|#!/usr/bin/php|#!${php}/bin/php|" \
- -e "s|#!/usr/bin/env php|#!${php}/bin/php|" \
- "$realFile" > tmp
- mv tmp "$realFile"
- chmod u+x "$realFile"
- done
- fi
- ''}
-
- if [ "$removeComposerArtifacts" = "1" ]
- then
- # Remove composer stuff
- rm -f composer.json composer.lock
- fi
-
- # Execute post install hook
- runHook postInstall
- '';
- } // extraArgs);
-in
-{
- composer = stdenv.lib.makeOverridable composer;
- buildZipPackage = stdenv.lib.makeOverridable buildZipPackage;
- buildPackage = stdenv.lib.makeOverridable buildPackage;
-}
diff --git a/nix/php-packages.nix b/nix/php-packages.nix
deleted file mode 100644
index 64220df..0000000
--- a/nix/php-packages.nix
+++ /dev/null
@@ -1,358 +0,0 @@
-{composerEnv, fetchurl, fetchgit ? null, fetchhg ? null, fetchsvn ? null, noDev ? false}:
-
-let
- packages = {};
- devPackages = {
- "doctrine/instantiator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "doctrine-instantiator-f350df0268e904597e3bd9c4685c53e0e333feea";
- src = fetchurl {
- url = https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea;
- sha256 = "01a3px69q7ddlskaq9dc1w3cy6kyx07jxmagnnlhqkxjy2jl247q";
- };
- };
- };
- "myclabs/deep-copy" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "myclabs-deep-copy-969b211f9a51aa1f6c01d1d2aef56d3bd91598e5";
- src = fetchurl {
- url = https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5;
- sha256 = "0i5aswlbn7pxhgwswpqxf5wdr1v40kic4a2z06xv77wnfkhb6myh";
- };
- };
- };
- "nikic/php-parser" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "nikic-php-parser-658f1be311a230e0907f5dfe0213742aff0596de";
- src = fetchurl {
- url = https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de;
- sha256 = "1y204j1h8y4wkk97lprcwgs1ynn09grscnghcc20c3f0mwckj6lr";
- };
- };
- };
- "phar-io/manifest" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phar-io-manifest-85265efd3af7ba3ca4b2a2c34dbfc5788dd29133";
- src = fetchurl {
- url = https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133;
- sha256 = "13cqrx7iikx2aixszhxl55ql6hikblvbalix0kr05pbiccipg6fv";
- };
- };
- };
- "phar-io/version" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phar-io-version-c6bb6825def89e0a32220f88337f8ceaf1975fa0";
- src = fetchurl {
- url = https://api.github.com/repos/phar-io/version/zipball/c6bb6825def89e0a32220f88337f8ceaf1975fa0;
- sha256 = "06lqjx2007jbxh2kas563i3np437i91szi12rks8mwa0hcwm9var";
- };
- };
- };
- "phpdocumentor/reflection-common" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpdocumentor-reflection-common-1d01c49d4ed62f25aa84a747ad35d5a16924662b";
- src = fetchurl {
- url = https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b;
- sha256 = "1wx720a17i24471jf8z499dnkijzb4b8xra11kvw9g9hhzfadz1r";
- };
- };
- };
- "phpdocumentor/reflection-docblock" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpdocumentor-reflection-docblock-069a785b2141f5bcf49f3e353548dc1cce6df556";
- src = fetchurl {
- url = https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556;
- sha256 = "0qid63bsfjmc3ka54f1ijl4a5zqwf7jmackjyjmbw3gxdnbi69il";
- };
- };
- };
- "phpdocumentor/type-resolver" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpdocumentor-type-resolver-6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0";
- src = fetchurl {
- url = https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0;
- sha256 = "01g6mihq5wd1396njjb7ibcdfgk26ix1kmbjb6dlshzav0k3983h";
- };
- };
- };
- "phpspec/prophecy" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpspec-prophecy-8ce87516be71aae9b956f81906aaf0338e0d8a2d";
- src = fetchurl {
- url = https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d;
- sha256 = "10cfgk3bm05ikav74809l7548w892118y7ai467ncp2ijmy1gr3v";
- };
- };
- };
- "phpunit/php-code-coverage" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-php-code-coverage-6b20e2055f7c29b56cb3870b3de7cc463d7add41";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6b20e2055f7c29b56cb3870b3de7cc463d7add41;
- sha256 = "08qaqap3f53bsabxljks8jghixypvgpkmpahlxx410wrp00in9jl";
- };
- };
- };
- "phpunit/php-file-iterator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-php-file-iterator-aa4be8575f26070b100fccb67faabb28f21f66f8";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8;
- sha256 = "0vxnrzwb573ddmiw1sd77bdym6jiimwjhcz7yvmsr9wswkxh18l6";
- };
- };
- };
- "phpunit/php-invoker" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-php-invoker-5a10147d0aaf65b58940a0b72f71c9ac0423cc67";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67;
- sha256 = "1vqnnjnw94mzm30n9n5p2bfgd3wd5jah92q6cj3gz1nf0qigr4fh";
- };
- };
- };
- "phpunit/php-text-template" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-php-text-template-5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28;
- sha256 = "0ff87yzywizi6j2ps3w0nalpx16mfyw3imzn6gj9jjsfwc2bb8lq";
- };
- };
- };
- "phpunit/php-timer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-php-timer-5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2;
- sha256 = "0g1g7yy4zk1bidyh165fsbqx5y8f1c8pxikvcahzlfsr9p2qxk6a";
- };
- };
- };
- "phpunit/phpunit" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "phpunit-phpunit-3866b2eeeed21b1b099c4bc0b7a1690ac6fd5baa";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3866b2eeeed21b1b099c4bc0b7a1690ac6fd5baa;
- sha256 = "09pb4skhiqyhb1zvnc41gqjr33j19llyyd20yp35d3hhayk1yc6r";
- };
- };
- };
- "sebastian/cli-parser" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-cli-parser-442e7c7e687e42adc03470c7b668bc4b2402c0b2";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2;
- sha256 = "074qzdq19k9x4svhq3nak5h348xska56v1sqnhk1aj0jnrx02h37";
- };
- };
- };
- "sebastian/code-unit" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-code-unit-1fc9f64c0927627ef78ba436c9b17d967e68e120";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120;
- sha256 = "04vlx050rrd54mxal7d93pz4119pas17w3gg5h532anfxjw8j7pm";
- };
- };
- };
- "sebastian/code-unit-reverse-lookup" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-code-unit-reverse-lookup-ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5;
- sha256 = "1h1jbzz3zak19qi4mab2yd0ddblpz7p000jfyxfwd2ds0gmrnsja";
- };
- };
- };
- "sebastian/comparator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-comparator-55f4261989e546dc112258c7a75935a81a7ce382";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382;
- sha256 = "1d4bgf4m2x0kn3nw9hbb45asbx22lsp9vxl74rp1yl3sj2vk9sch";
- };
- };
- };
- "sebastian/complexity" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-complexity-739b35e53379900cc9ac327b2147867b8b6efd88";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88;
- sha256 = "1y4yz8n8hszbhinf9ipx3pqyvgm7gz0krgyn19z0097yq3bbq8yf";
- };
- };
- };
- "sebastian/diff" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-diff-3461e3fccc7cfdfc2720be910d3bd73c69be590d";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d;
- sha256 = "0967nl6cdnr0v0z83w4xy59agn60kfv8gb41aw3fpy1n2wpp62dj";
- };
- };
- };
- "sebastian/environment" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-environment-388b6ced16caa751030f6a69e588299fa09200ac";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac;
- sha256 = "022vn8zss3sm7hg83kg3y0lmjw2ak6cy64b584nbsgxfhlmf6msd";
- };
- };
- };
- "sebastian/exporter" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-exporter-d89cc98761b8cb5a1a235a6b703ae50d34080e65";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65;
- sha256 = "1s8v0cbcjdb0wvwyh869y5f8d55mpjkr0f3gg2kvvxk3wh8nvvc7";
- };
- };
- };
- "sebastian/global-state" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-global-state-a90ccbddffa067b51f574dea6eb25d5680839455";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455;
- sha256 = "0pad9gz2y38rziywdliylhhgz6762053pm57254xf7hywfpqsa3a";
- };
- };
- };
- "sebastian/lines-of-code" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-lines-of-code-acf76492a65401babcf5283296fa510782783a7a";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/acf76492a65401babcf5283296fa510782783a7a;
- sha256 = "18x7ka1fyvxaqwx730kymw1l9jcpvyy52n5d3xy0crr08jnp5z70";
- };
- };
- };
- "sebastian/object-enumerator" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-object-enumerator-5c9eeac41b290a3712d88851518825ad78f45c71";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71;
- sha256 = "11853z07w8h1a67wsjy3a6ir5x7khgx6iw5bmrkhjkiyvandqcn1";
- };
- };
- };
- "sebastian/object-reflector" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-object-reflector-b4f479ebdbf63ac605d183ece17d8d7fe49c15c7";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7;
- sha256 = "0g5m1fswy6wlf300x1vcipjdljmd3vh05hjqhqfc91byrjbk4rsg";
- };
- };
- };
- "sebastian/recursion-context" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-recursion-context-cd9d8cf3c5804de4341c283ed787f099f5506172";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172;
- sha256 = "1k0ki1krwq6329vsbw3515wsyg8a7n2l83lk19pdc12i2lg9nhpy";
- };
- };
- };
- "sebastian/resource-operations" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-resource-operations-0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8;
- sha256 = "0p5s8rp7mrhw20yz5wx1i4k8ywf0h0ximcqan39n9qnma1dlnbyr";
- };
- };
- };
- "sebastian/type" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-type-81cd61ab7bbf2de744aba0ea61fae32f721df3d2";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2;
- sha256 = "0mar746dr79v1phlfhv5k6kk10615yc0vz6afnmr6r36irqdazya";
- };
- };
- };
- "sebastian/version" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "sebastian-version-c6c1022351a901512170118436c764e473f6de8c";
- src = fetchurl {
- url = https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c;
- sha256 = "1bs7bwa9m0fin1zdk7vqy5lxzlfa9la90lkl27sn0wr00m745ig1";
- };
- };
- };
- "symfony/polyfill-ctype" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "symfony-polyfill-ctype-f4ba089a5b6366e453971d3aad5fe8e897b37f41";
- src = fetchurl {
- url = https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41;
- sha256 = "0gx3vypz6hipnma7ymqlarr66yxddjmqwkgspiriy8mqcz2y61mn";
- };
- };
- };
- "theseer/tokenizer" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "theseer-tokenizer-75a63c33a8577608444246075ea0af0d052e452a";
- src = fetchurl {
- url = https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a;
- sha256 = "1cj1lb99hccsnwkq0i01mlcldmy1kxwcksfvgq6vfx8mgz3iicij";
- };
- };
- };
- "webmozart/assert" = {
- targetDir = "";
- src = composerEnv.buildZipPackage {
- name = "webmozart-assert-bafc69caeb4d49c39fd0779086c03a3738cbb389";
- src = fetchurl {
- url = https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389;
- sha256 = "18jplwg4dsl86rqf1fvizbx84klmbvaq207a6i8gl97qxp20arlj";
- };
- };
- };
- };
-in
-composerEnv.buildPackage {
- inherit packages devPackages noDev;
- name = "jbboehr-dnsbl";
- src = ./.;
- executable = false;
- symlinkDependencies = false;
- meta = {
- homepage = http://github.com/jbboehr/dnsbl;
- license = "PHP-3.01";
- };
-}
\ No newline at end of file
diff --git a/phpstan.neon.dist b/phpstan.neon.dist
new file mode 100644
index 0000000..825d2b7
--- /dev/null
+++ b/phpstan.neon.dist
@@ -0,0 +1,16 @@
+includes:
+ - vendor/phpstan/phpstan/conf/bleedingEdge.neon
+ - vendor/phpstan/phpstan-phpunit/extension.neon
+ - vendor/phpstan/phpstan-phpunit/rules.neon
+ - vendor/phpstan/phpstan-strict-rules/rules.neon
+parameters:
+ level: max
+ paths:
+ - src
+ - tests
+ excludePaths:
+ - tests/fixtures/**
+ strictRules:
+ disallowedLooseComparison: false
+ disallowedConstructs: false
+ strictCalls: false
\ No newline at end of file
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 76d3ed3..6b081c5 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -1,20 +1,26 @@
-
-
-
-
-
- ./tests/
-
-
+
+
+
+
+
+
+
+
+
+
+ ./tests/
+
+
diff --git a/psalm.xml b/psalm.xml
new file mode 100644
index 0000000..9409a85
--- /dev/null
+++ b/psalm.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/DNSBL.php b/src/DNSBL.php
index a67ac24..09a214b 100644
--- a/src/DNSBL.php
+++ b/src/DNSBL.php
@@ -2,221 +2,215 @@
namespace DNSBL;
+/**
+ * @phpstan-type DnsRecordsArray list>
+ * @psalm-type DnsRecordsArray = list>
+ */
class DNSBL
{
- /**
+ /**
* Array of blacklists.
*
* Must have one or more elements.
*
- * @var array
- * @access protected
+ * @var list
*/
- protected $blacklists = array();
-
- protected $dumpFile;
-
+ protected $blacklists = [];
+
+ /** @var ?string */
+ protected $dumpFile = null;
+
/**
* Preloaded records
- *
+ *
+ * @psalm-suppress UndefinedDocblockClass
* @var array
+ * @phpstan-var array>
+ * @psalm-var array>
*/
- protected $preloads = array();
-
+ protected $preloads = [];
+
/**
* Constructor
- *
+ *
+ * @psalm-suppress MixedAssignment
* @param array $spec
+ * @phpstan-param array{
+ * blacklists?: list,
+ * dumpFile?: string,
+ * preloads?: array>,
+ * preloadFile?: string,
+ * } $spec
*/
- public function __construct($spec)
+ public function __construct(array $spec)
{
- if( !empty($spec['blacklists']) ) {
+ if (isset($spec['blacklists'])) {
$this->blacklists = $spec['blacklists'];
}
- if( !empty($spec['dumpFile']) ) {
+ if (isset($spec['dumpFile'])) {
$this->dumpFile = $spec['dumpFile'];
}
- if( !empty($spec['preloads']) ) {
+ if (isset($spec['preloads'])) {
$this->preloads = $spec['preloads'];
- } else if( !empty($spec['preloadFile']) &&
- file_exists($spec['preloadFile']) ) {
- if( substr($spec['preloadFile'], -5) === '.json' ) {
- $this->preloads = json_decode(file_get_contents($spec['preloadFile']), true) ?: array();
+ } else {
+ $preloadFile = $spec['preloadFile'] ?? null;
+ if (null !== $preloadFile && file_exists($preloadFile)) {
+ /**
+ * @psalm-suppress RiskyTruthyFalsyComparison
+ **/
+ $tmp = json_decode(file_get_contents($preloadFile) ?: '[]', true) ?: [];
+ $this->preloads = $tmp; // @phpstan-ignore-line
}
}
}
-
- /**
- * Magic call override
- *
- * @param string $m
- * @param mixed $a
- * @throws \DNSBL\Exception
- */
- public function __call($m, $a)
- {
- throw new Exception('Call to undefined method: ' . __CLASS__ . ':' . $m);
- }
-
+
/**
* Set the blacklist to a desired blacklist.
*
- * @param array $blacklists Array of blacklists to use.
- *
- * @access public
- * @return bool true if the operation was successful
+ * @param list $blacklists Array of blacklists to use.
*/
- public function setBlacklists($blacklists)
+ public function setBlacklists(array $blacklists): bool
{
- if (is_array($blacklists)) {
- $this->blacklists = $blacklists;
- return true;
- } else {
- return false;
- } // if
- } // function
+ $this->blacklists = $blacklists;
+ return true;
+ }
/**
* Get the blacklists.
*
- * @access public
- * @return array Currently set blacklists.
+ * @return list
*/
- public function getBlacklists()
+ public function getBlacklists(): array
{
return $this->blacklists;
}
-
+
/**
* Get details
- *
+ *
* @param string $host
- * @param boolean $checkall
- * @return \DNSBL\Result
+ * @param boolean $check_all
+ * @return array
+ * @phpstan-return array
*/
- public function getDetails($host, $checkall = false)
+ public function getDetails(string $host, bool $check_all = false): array
{
- if( !is_string($host) ) {
- return null;
- }
-
- $results = array();
+ $results = [];
foreach ($this->blacklists as $blacklist) {
$records = $this->getDnsRecord($blacklist, $host);
$results[$blacklist] = $records;
- if( !empty($records) && !$checkall ) {
+ if (null !== $records && count($records) > 0 && !$check_all) {
break;
}
}
-
+
return $results;
}
-
+
/**
* Get list of blacklists listing the host
- *
- * @param string $host
- * @return array
+ *
+ * @return list
*/
- public function getListingBlacklists($host)
+ public function getListingBlacklists(string $host): array
{
$blacklists = array();
$result = $this->getDetails($host, true);
- foreach( $result as $blacklist => $records ) {
- if( !empty($records) ) {
+ foreach ($result as $blacklist => $records) {
+ if (null !== $records && count($records) > 0) {
$blacklists[] = $blacklist;
}
}
return $blacklists;
}
-
- /**
+
+ /**
* Checks if the supplied Host is listed in one or more of the
* RBLs.
*
* @param string $host Host to check for being listed.
- * @param boolean $checkall Iterate through all blacklists and
- * return all A records or stop after
+ * @param boolean $check_all Iterate through all blacklists and
+ * return all A records or stop after
* the first hit?
- *
- * @access public
* @return boolean true if the checked host is listed in a blacklist.
*/
- public function isListed($host, $checkall = false)
+ public function isListed(string $host, bool $check_all = false): bool
{
- $result = $this->getDetails($host, $checkall);
- if( !is_array($result) ) {
- return false;
- }
- foreach( $result as $records ) {
- if( !empty($records) ) {
+ $result = $this->getDetails($host, $check_all);
+ foreach ($result as $records) {
+ if ($records !== null && count($records) > 0) {
return true;
}
}
return false;
- } // function
-
+ }
+
/**
* Get a DNS record
- *
- * @param string $blacklist
- * @param string $host
+ *
+ * @return ?DnsRecordsArray
*/
- protected function getDnsRecord($blacklist, $host)
+ protected function getDnsRecord(string $blacklist, string $host): ?array
{
- if( array_key_exists($host, $this->preloads) &&
- array_key_exists($blacklist, $this->preloads[$host]) ) {
+ if (
+ array_key_exists($host, $this->preloads) &&
+ array_key_exists($blacklist, $this->preloads[$host])
+ ) {
return $this->preloads[$host][$blacklist];
}
-
+
$hostForLookup = $this->getHostForLookup($host, $blacklist);
+ if (null === $hostForLookup) {
+ return null;
+ }
+
$records = dns_get_record($hostForLookup, DNS_A | DNS_TXT);
-
- if( $this->dumpFile ) {
+ if ($records === false) {
+ $records = null;
+ }
+ /** @var ?DnsRecordsArray $records */
+
+ if ($this->dumpFile !== null) {
$this->updateDumpFile($host, $blacklist, $records);
}
-
+
return $records;
}
- /**
+ /**
* Get host to lookup. Lookup a host if neccessary and get the
* complete FQDN to lookup.
*
* @param string $host Host OR IP to use for building the lookup.
* @param string $blacklist Blacklist to use for building the lookup.
- *
- * @access protected
* @return string Ready to use host to lookup
- */
- protected function getHostForLookup($host, $blacklist)
+ */
+ protected function getHostForLookup(string $host, string $blacklist): ?string
{
// Currently only works for v4 addresses.
- if (filter_var($host, FILTER_VALIDATE_IP)) {
+ if (filter_var($host, FILTER_VALIDATE_IP) !== false) {
$ip = $host;
} else {
$ip = gethostbyname($host);
}
- if (!$ip || !filter_var($ip, FILTER_VALIDATE_IP)) {
- return;
+ if (/*!$ip ||*/ filter_var($ip, FILTER_VALIDATE_IP) === false) {
+ return null;
}
return $this->buildLookUpHost($ip, $blacklist);
- } // function
+ }
/**
* Build the host to lookup from an IP.
*
* @param string $ip IP to use for building the lookup.
* @param string $blacklist Blacklist to use for building the lookup.
- *
- * @access protected
* @return string Ready to use host to lookup
- */
- protected function buildLookUpHost($ip, $blacklist)
+ */
+ protected function buildLookUpHost(string $ip, string $blacklist): string
{
- return $this->reverseIp($ip).'.'.$blacklist;
- } // function
+ return $this->reverseIp($ip) . '.' . $blacklist;
+ }
/**
* Reverse the order of an IP. 127.0.0.1 -> 1.0.0.127. Currently
@@ -226,39 +220,50 @@ protected function buildLookUpHost($ip, $blacklist)
*
* @access protected
* @return string Reversed IP
- */
- protected function reverseIp($ip)
- {
- return implode('.', array_reverse(explode('.', $ip)));
- } // function
-
+ */
+ protected function reverseIp(string $ip): string
+ {
+ return implode('.', array_reverse(explode('.', $ip)));
+ }
+
/**
* Update the dump file with the specified records
- *
- * @param string $host
- * @param string $blacklist
- * @param array $records
- * @return void
+ *
+ * @phpstan-param ?DnsRecordsArray $records
*/
- protected function updateDumpFile($host, $blacklist, $records)
+ protected function updateDumpFile(string $host, string $blacklist, ?array $records): void
{
+ assert($this->dumpFile !== null);
+
$fh = fopen($this->dumpFile, 'c+');
- if( !flock($fh, LOCK_EX) ) {
+ if ($fh === false) {
+ return;
+ }
+
+ if (!flock($fh, LOCK_EX)) {
fclose($fh);
return;
}
-
+
$buf = stream_get_contents($fh);
-
- $data = (json_decode($buf, true) ?: array());
+ if ($buf === false) {
+ fclose($fh);
+ return;
+ }
+
+ /** @var array> $data */
+ $data = (json_decode($buf, true) ?: []);
$data[$host][$blacklist] = $records;
$newbuf = json_encode($data, defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 0);
-
+ if ($newbuf === false) {
+ fclose($fh);
+ return;
+ }
+
ftruncate($fh, 0);
fseek($fh, 0);
fwrite($fh, $newbuf);
flock($fh, LOCK_UN);
fclose($fh);
-
- } // function
-} // class
+ }
+}
diff --git a/src/Exception.php b/src/Exception.php
index c64d634..609f0b9 100644
--- a/src/Exception.php
+++ b/src/Exception.php
@@ -2,4 +2,6 @@
namespace DNSBL;
-class Exception extends \Exception {}
+class Exception extends \Exception
+{
+}
diff --git a/src/SURBL.php b/src/SURBL.php
index 1a84f2f..cb46916 100644
--- a/src/SURBL.php
+++ b/src/SURBL.php
@@ -2,18 +2,20 @@
namespace DNSBL;
+/**
+ * @phpstan-import-type DnsRecordsArray from DNSBL
+ * @psalm-import-type DnsRecordsArray from DNSBL
+ */
class SURBL extends DNSBL
{
-
- /**
+ /**
* Array of blacklists.
*
* Must have one or more elements.
*
- * @var string[]
- * @access protected
+ * @var list
*/
- protected $blacklists = array();
+ protected $blacklists = [];
/**
* File containing whitelisted hosts.
@@ -21,58 +23,81 @@ class SURBL extends DNSBL
* There are some whitelisted hosts (co.uk for example). This
* requires the package to not ask the domain name but the host
* name (spammer.co.uk instead of co.uk).
- *
- * @var string
+ *
+ * @var ?string
* @see $twoLevelCcTld
- * @access protected
*/
- protected $doubleCcTldFile;
-
- private $doubleCcTlds;
-
+ protected $doubleCcTldFile = null;
+
+ /** @var ?array */
+ private $doubleCcTlds = null;
+
/**
* Constructor
- *
+ *
* @param array $spec
+ * @phpstan-param array{
+ * blacklists?: list,
+ * dumpFile?: string,
+ * preloads?: array>,
+ * preloadFile?: string,
+ * doubleCcTldFile?: string,
+ * } $spec
+ * @psalm-suppress RiskyTruthyFalsyComparison
*/
- public function __construct($spec)
+ public function __construct(array $spec)
{
- parent::__construct($spec);
-
- if( !empty($spec['doubleCcTldFile']) ) {
+ if (isset($spec['doubleCcTldFile'])) {
$this->doubleCcTldFile = $spec['doubleCcTldFile'];
} else {
- $this->doubleCcTldFile = realpath(__DIR__ . '/../res/two-level-tlds.php');
+ $this->doubleCcTldFile = realpath(__DIR__ . '/../res/two-level-tlds.php') ?: null;
}
+
+ unset($spec['doubleCcTldFile']);
+ parent::__construct($spec);
}
/**
* Check if the last two parts of the FQDN are whitelisted.
*
* @param string $fqdn Host to check if it is whitelisted.
- *
- * @access protected
* @return boolean True if the host is whitelisted
*/
- protected function isDoubleCcTld($fqdn)
+ protected function isDoubleCcTld(string $fqdn): bool
{
// Load database
- if( !$this->doubleCcTlds ) {
- if( 0 === stripos($this->doubleCcTldFile, 'http') ) {
+ if (null === $this->doubleCcTlds) {
+ if (null === $this->doubleCcTldFile) {
+ $this->doubleCcTlds = [];
+ return false;
+ } elseif (0 === stripos($this->doubleCcTldFile, 'http')) {
// It's a url
$raw = file_get_contents($this->doubleCcTldFile);
- $this->doubleCcTlds = array_flip(preg_split('/[r\n]+/', $raw));
- } else if( substr($this->doubleCcTldFile, -4) === '.php' ) {
+ if ($raw === false) {
+ $this->doubleCcTlds = [];
+ return false;
+ }
+ $this->doubleCcTlds = array_flip(preg_split('/[r\n]+/', $raw) ?: []);
+ } elseif (substr($this->doubleCcTldFile, -4) === '.php') {
// It's a php file, include it. Should already be flipped
+ /**
+ * @psalm-suppress MixedAssignment
+ * @psalm-suppress UnresolvableInclude
+ * */
$this->doubleCcTlds = include $this->doubleCcTldFile;
} else {
$raw = file_get_contents($this->doubleCcTldFile);
- $this->doubleCcTlds = array_flip(preg_split('/[r\n]+/', $raw));
+ if ($raw === false) {
+ $this->doubleCcTlds = [];
+ return false;
+ }
+ $this->doubleCcTlds = array_flip(preg_split('/[r\n]+/', $raw) ?: []);
}
}
-
+
+ /** @psalm-suppress MixedArgument */
return array_key_exists($fqdn, $this->doubleCcTlds);
- } // function
+ }
/**
* Get Hostname to ask for.
@@ -87,25 +112,24 @@ protected function isDoubleCcTld($fqdn)
* (3b2) IS_NOT_2LEVEL: we want the last two names
* (4) return the FQDN to query.
*
- * @param string $uri URL to check.
- * @param string $blacklist Blacklist to check against.
- *
- * @access protected
- * @return string Host to lookup
+ * @param string $uri URL to check.
+ * @param string $blacklist Blacklist to check against.
+ * @return ?string Host to lookup
+ * @psalm-suppress ParamNameMismatch
*/
- protected function getHostForLookup($uri, $blacklist)
+ protected function getHostForLookup(string $uri, string $blacklist): ?string
{
// (1) Extract the hostname from the given URI
- $host = '';
$parsed_uri = parse_url($uri);
+ /** @psalm-suppress RiskyTruthyFalsyComparison */
if (empty($parsed_uri['host'])) {
- return false;
+ return null;
}
$host = urldecode($parsed_uri['host']);
// (2) Check if the "hostname" is an ip
- if (filter_var($host, FILTER_VALIDATE_IP)) {
+ if (filter_var($host, FILTER_VALIDATE_IP) === false) {
// (3a) IS_IP Reverse the IP (1.2.3.4 -> 4.3.2.1)
$host = $this->reverseIp($host);
} else {
@@ -114,13 +138,13 @@ protected function getHostForLookup($uri, $blacklist)
array_shift($host_elements);
} // while
$host_3_elements = implode('.', $host_elements);
-
+
$host_elements = explode('.', $host);
while (count($host_elements) > 2) {
array_shift($host_elements);
} // while
$host_2_elements = implode('.', $host_elements);
-
+
// (3b) IS_FQDN Check if is in "CC-2-level-TLD"
if ($this->isDoubleCcTld($host_2_elements)) {
// (3b1) IS_IN_2LEVEL: we want the last three names
@@ -131,8 +155,7 @@ protected function getHostForLookup($uri, $blacklist)
} // if
} // if
// (4) return the FQDN to query
- $host .= '.'.$blacklist;
+ $host .= '.' . $blacklist;
return $host;
- } // function
-
-} // class
+ }
+}
diff --git a/tests/DNSBLTest.php b/tests/DNSBLTest.php
index 6a73b6d..50328ae 100644
--- a/tests/DNSBLTest.php
+++ b/tests/DNSBLTest.php
@@ -1,18 +1,25 @@
_rbl = new \DNSBL\DNSBL(array(
+ $this->rbl = new DNSBL(array(
'blacklists' => array(
'sbl-xbl.spamhaus.org',
'bl.spamcop.net'
@@ -21,67 +28,57 @@ protected function setUp(): void
'preloadFile' => $dpf,
));
}
-
+
/**
* Test if known spam hosts are always identified correctly as such.
- *
- * @return boolean true on success, false on failure
*/
- public function testHostsAlwaysAreListed()
+ public function testHostsAlwaysAreListed(): void
{
- $this->assertTrue($this->_rbl->isListed("127.0.0.2"));
+ $this->assertTrue($this->rbl->isListed("127.0.0.2"));
}
/**
- * Test if hosts that should not be know as spam hostsare always
+ * Test if hosts that should not be known as spam hostsare always
* identified correctly as such.
- *
- * @return boolean true on success, false on failure
*/
- public function testTrustworthyHostsArentListed()
+ public function testTrustworthyHostsArentListed(): void
{
- $this->_rbl->setBlacklists(array('sbl.spamhaus.org'));
- $this->assertFalse($this->_rbl->isListed("mail.nohn.net"));
- $this->assertFalse($this->_rbl->isListed("212.112.226.205"));
- $this->assertFalse($this->_rbl->isListed("smtp1.google.com"));
+ $this->rbl->setBlacklists(array('sbl.spamhaus.org'));
+ $this->assertFalse($this->rbl->isListed("mail.nohn.net"));
+ $this->assertFalse($this->rbl->isListed("212.112.226.205"));
+ $this->assertFalse($this->rbl->isListed("smtp1.google.com"));
}
/**
* Test public setters
- *
- * @return boolean true on success, false on failure
*/
- public function testSetters()
+ public function testSetters(): void
{
- $this->assertTrue($this->_rbl->setBlacklists(array('sbl.spamhaus.org')));
- $this->assertEquals(array('sbl.spamhaus.org'), $this->_rbl->getBlacklists());
- $this->assertFalse($this->_rbl->setBlacklists('dnsbl.sorbs.net'));
+ $this->assertTrue($this->rbl->setBlacklists(array('sbl.spamhaus.org')));
+ $this->assertEquals(array('sbl.spamhaus.org'), $this->rbl->getBlacklists());
+ //$this->assertTrue($this->_rbl->setBlacklists('dnsbl.sorbs.net'));
}
/**
* Test public setters and include some lookups.
- *
- * @return boolean true on success, false on failure
*/
- public function testSettersAndLookups()
+ public function testSettersAndLookups(): void
{
- $this->_rbl->setBlacklists(array('dnsbl.sorbs.net'));
- $this->assertEquals(array('dnsbl.sorbs.net'), $this->_rbl->getBlacklists());
- $this->assertFalse($this->_rbl->isListed("mail.nohn.net"));
- $this->assertTrue($this->_rbl->isListed("88.77.163.166"));
+ $this->rbl->setBlacklists(array('dnsbl.sorbs.net'));
+ $this->assertEquals(array('dnsbl.sorbs.net'), $this->rbl->getBlacklists());
+ $this->assertFalse($this->rbl->isListed("mail.nohn.net"));
+ $this->assertTrue($this->rbl->isListed("88.77.163.166"));
}
/**
* Test getDetails()
- *
- * @return boolean true on success, false on failure
*/
- public function testGetDetails()
+ public function testGetDetails(): void
{
- $this->_rbl->setBlacklists(array('dnsbl.sorbs.net'));
- $this->assertTrue($this->_rbl->isListed("88.77.163.166"));
-
- $r = $this->_rbl->getDetails("88.77.163.166");
+ $this->rbl->setBlacklists(array('dnsbl.sorbs.net'));
+ $this->assertTrue($this->rbl->isListed("88.77.163.166"));
+
+ $r = $this->rbl->getDetails("88.77.163.166");
$this->assertEquals(array(
"dnsbl.sorbs.net" => array(
array(
@@ -106,98 +103,74 @@ public function testGetDetails()
/**
* Test getListingBlacklists()
- *
- * @return boolean true on success, false on failure
*/
- public function testGetListingBlacklists()
+ public function testGetListingBlacklists(): void
{
- $this->_rbl->setBlacklists(array('dnsbl.sorbs.net'));
- $this->assertTrue($this->_rbl->isListed("88.77.163.166"));
-
- $r = $this->_rbl->getListingBlacklists("88.77.163.166");
+ $this->rbl->setBlacklists(array('dnsbl.sorbs.net'));
+ $this->assertTrue($this->rbl->isListed("88.77.163.166"));
+
+ $r = $this->rbl->getListingBlacklists("88.77.163.166");
$this->assertEquals(array("dnsbl.sorbs.net"), $r);
-
- $r2 = $this->_rbl->getListingBlacklists("www.google.de");
+
+ $r2 = $this->rbl->getListingBlacklists("www.google.de");
$this->assertEquals(array(), $r2);
}
-
+
/**
* Test results with multiple blacklists (host not listed)
- *
- * @return boolean true on success, false on failure
*/
- public function testMultipleBlacklists()
+ public function testMultipleBlacklists(): void
{
- $this->_rbl->setBlackLists(array(
+ $this->rbl->setBlacklists(array(
'sbl-xbl.spamhaus.org',
'bl.spamcop.net'
));
-
- $this->assertFalse($this->_rbl->isListed('212.112.226.205'));
-
- $r = $this->_rbl->getListingBlacklists('212.112.226.205');
+
+ $this->assertFalse($this->rbl->isListed('212.112.226.205'));
+
+ $r = $this->rbl->getListingBlacklists('212.112.226.205');
$this->assertEquals(array(), $r);
}
/**
* Test results with multiple blacklists (listed test host)
- *
- * @return boolean true on success, false on failure
*/
- public function testIsListedMulti()
+ public function testIsListedMulti(): void
{
- $this->_rbl->setBlackLists(array(
+ $this->rbl->setBlacklists(array(
'sbl-xbl.spamhaus.org',
'bl.spamcop.net'
));
- $this->assertTrue($this->_rbl->isListed('127.0.0.2', true));
+ $this->assertTrue($this->rbl->isListed('127.0.0.2', true));
}
/**
* Test getBlacklists() with multiple blacklists (listed test host)
- *
- * @return boolean true on success, false on failure
*/
- public function testGetListingBlacklistsMulti()
+ public function testGetListingBlacklistsMulti(): void
{
- $this->_rbl->setBlackLists(array(
+ $this->rbl->setBlacklists(array(
'xbl.spamhaus.org',
'sbl.spamhaus.org',
'bl.spamcop.net'
));
-
- $this->assertTrue($this->_rbl->isListed('127.0.0.2', true));
+
+ $this->assertTrue($this->rbl->isListed('127.0.0.2', true));
$this->assertEquals(
array(
'sbl.spamhaus.org',
'bl.spamcop.net'
),
- $this->_rbl->getListingBlacklists('127.0.0.2')
+ $this->rbl->getListingBlacklists('127.0.0.2')
);
-
- $this->assertFalse($this->_rbl->isListed('smtp1.google.com', true));
- $this->assertEquals(array(), $this->_rbl->getListingBlacklists('smtp1.google.com'));
+
+ $this->assertFalse($this->rbl->isListed('smtp1.google.com', true));
+ $this->assertEquals(array(), $this->rbl->getListingBlacklists('smtp1.google.com'));
$this->assertEquals(array(
'xbl.spamhaus.org' => array(),
'sbl.spamhaus.org' => array(),
'bl.spamcop.net' => array()
- ), $this->_rbl->getDetails('smtp1.google.com'));
- }
-
- /**
- * Test Bokus
- *
- * @return boolean true on success, false on failure
- */
- public function testBogusInput()
- {
- $this->_rbl->setBlacklists(array('rbl.efnet.org'));
- $this->assertFalse($this->_rbl->isListed(null));
- $this->assertNull($this->_rbl->getDetails(null));
- $this->assertFalse($this->_rbl->isListed(false));
- $this->assertNull($this->_rbl->getDetails(false));
- $this->assertFalse($this->_rbl->isListed(true));
- $this->assertNull($this->_rbl->getDetails(true));
+ ), $this->rbl->getDetails('smtp1.google.com'));
}
/**
@@ -205,17 +178,15 @@ public function testBogusInput()
* called with 2nd paramter
*
* @see http://pear.php.net/bugs/bug.php?id=16382
- *
- * @return boolean true on success, false on failure
*/
- public function testGetListingBlacklistsDoesNotBreakSilentlyIfHostIsListed()
+ public function testGetListingBlacklistsDoesNotBreakSilentlyIfHostIsListed(): void
{
- $this->_rbl->setBlacklists(array('bl.spamcop.net','b.barracudacentral.org'));
+ $this->rbl->setBlacklists(array('bl.spamcop.net','b.barracudacentral.org'));
$ip = '127.0.0.2';
- $this->assertTrue($this->_rbl->isListed($ip, true));
+ $this->assertTrue($this->rbl->isListed($ip, true));
$this->assertEquals(
- array('bl.spamcop.net', 'b.barracudacentral.org'),
- $this->_rbl->getListingBlacklists($ip)
+ array('bl.spamcop.net', 'b.barracudacentral.org'),
+ $this->rbl->getListingBlacklists($ip)
);
}
@@ -224,16 +195,14 @@ public function testGetListingBlacklistsDoesNotBreakSilentlyIfHostIsListed()
* called with 2nd paramter
*
* @see http://pear.php.net/bugs/bug.php?id=16382
- *
- * @return boolean true on success, false on failure
*/
- public function testGetListingBlDoesNotBreakSilentlyIfHostIsNotListed()
+ public function testGetListingBlDoesNotBreakSilentlyIfHostIsNotListed(): void
{
- $this->_rbl->setBlacklists(array('bl.spamcop.net','b.barracudacentral.org'));
+ $this->rbl->setBlacklists(array('bl.spamcop.net','b.barracudacentral.org'));
$ip = '127.0.0.1';
- $this->assertFalse($this->_rbl->isListed($ip, true));
- $this->assertEquals(array(), $this->_rbl->getListingBlacklists($ip));
- $this->assertFalse($this->_rbl->isListed($ip));
- $this->assertEquals(array(), $this->_rbl->getListingBlacklists($ip));
+ $this->assertFalse($this->rbl->isListed($ip, true));
+ $this->assertEquals(array(), $this->rbl->getListingBlacklists($ip));
+ $this->assertFalse($this->rbl->isListed($ip));
+ $this->assertEquals(array(), $this->rbl->getListingBlacklists($ip));
}
}
diff --git a/tests/SURBLTest.php b/tests/SURBLTest.php
index 1ad4eda..8da70bf 100644
--- a/tests/SURBLTest.php
+++ b/tests/SURBLTest.php
@@ -1,86 +1,84 @@
_surbl = new \DNSBL\SURBL(array(
- 'blacklists' => array(
+ $this->surbl = new SURBL([
+ 'blacklists' => [
'multi.surbl.org'
- ),
+ ],
'dumpFile' => $dpf,
'preloadFile' => $dpf,
- ));
+ ]);
}
-
+
/**
- * Tests if a test spam URL is always correctly identified as such.
- *
- * @return boolean true on success, false on failure
+ * Tests if a test spam URL is always correctly identified as such.
*/
- public function testSpamUrlsAlwaysGetReportedAsSpam()
+ public function testSpamUrlsAlwaysGetReportedAsSpam(): void
{
$this->assertTrue(
- $this->_surbl->isListed(
+ $this->surbl->isListed(
'http://surbl-org-permanent-test-point.com/justatest'
)
);
$this->assertTrue(
- $this->_surbl->isListed(
+ $this->surbl->isListed(
'http://wasdavor.surbl-org-permanent-test-point.com/justatest'
)
);
- $this->assertTrue($this->_surbl->isListed('http://127.0.0.2/'));
- $this->assertTrue($this->_surbl->isListed('http://127.0.0.2/justatest'));
+ $this->assertTrue($this->surbl->isListed('http://127.0.0.2/'));
+ $this->assertTrue($this->surbl->isListed('http://127.0.0.2/justatest'));
}
/**
- * Tests if an URL that should not be spam is always correctly identified as
- * such.
- *
- * @return boolean true on success, false on failure
+ * Tests if a URL that should not be spam is always correctly identified as
+ * such.
*/
- public function testNoSpamUrlsNeverGetReportedAsSpam()
+ public function testNoSpamUrlsNeverGetReportedAsSpam(): void
{
- $this->assertFalse($this->_surbl->isListed('http://www.nohn.net'));
- $this->assertFalse($this->_surbl->isListed('http://www.php.net/'));
- $this->assertFalse($this->_surbl->isListed('http://www.heise.de/24234234?url=lala'));
- $this->assertFalse($this->_surbl->isListed('http://www.nohn.net/blog/'));
- $this->assertFalse($this->_surbl->isListed('http://213.147.6.150/atest'));
+ $this->assertFalse($this->surbl->isListed('http://www.nohn.net'));
+ $this->assertFalse($this->surbl->isListed('http://www.php.net/'));
+ $this->assertFalse($this->surbl->isListed('http://www.heise.de/24234234?url=lala'));
+ $this->assertFalse($this->surbl->isListed('http://www.nohn.net/blog/'));
+ $this->assertFalse($this->surbl->isListed('http://213.147.6.150/atest'));
$this->assertFalse(
- $this->_surbl->isListed(
- 'http://www.google.co.uk/search'.
+ $this->surbl->isListed(
+ 'http://www.google.co.uk/search' .
'?hl=en&q=test&btnG=Google+Search&meta='
)
);
}
/**
- * Tests if a set of spam and no-spam URLs is always correctly identified as
- * such.
- *
- * @return boolean true on success, false on failure
+ * Tests if a set of spam and no-spam URLs is always correctly identified as
+ * such.
*/
- public function testMixedSpamAndNospamUrlsWorkAsExpected()
+ public function testMixedSpamAndNospamUrlsWorkAsExpected(): void
{
- $this->assertFalse($this->_surbl->isListed('http://www.nohn.net'));
+ $this->assertFalse($this->surbl->isListed('http://www.nohn.net'));
$this->assertTrue(
- $this->_surbl->isListed('http://surbl-org-permanent-test-point.com')
+ $this->surbl->isListed('http://surbl-org-permanent-test-point.com')
);
- $this->assertTrue($this->_surbl->isListed('http://127.0.0.2/justatest'));
- $this->assertFalse($this->_surbl->isListed('http://213.147.6.150/atest'));
- $this->assertFalse($this->_surbl->isListed('http://www.php.net'));
- $this->assertFalse($this->_surbl->isListed('http://www.google.com'));
+ $this->assertTrue($this->surbl->isListed('http://127.0.0.2/justatest'));
+ $this->assertFalse($this->surbl->isListed('http://213.147.6.150/atest'));
+ $this->assertFalse($this->surbl->isListed('http://www.php.net'));
+ $this->assertFalse($this->surbl->isListed('http://www.google.com'));
$this->assertFalse(
- $this->_surbl->isListed(
+ $this->surbl->isListed(
'http://www.google.co.uk/search?hl=en&q=test&btnG=Google+Search&meta='
)
);
@@ -88,14 +86,9 @@ public function testMixedSpamAndNospamUrlsWorkAsExpected()
/**
* Tests if invalid arguments always return false.
- *
- * @return boolean true on success, false on failure
*/
- public function testInvalidArguments()
+ public function testInvalidArguments(): void
{
- $this->assertFalse($this->_surbl->isListed('hurgahurga'));
- $this->assertFalse($this->_surbl->isListed(null));
- $this->assertFalse($this->_surbl->isListed(false));
- $this->assertFalse($this->_surbl->isListed(true));
+ $this->assertFalse($this->surbl->isListed('hurgahurga'));
}
}
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
deleted file mode 100644
index 525886d..0000000
--- a/tests/bootstrap.php
+++ /dev/null
@@ -1,5 +0,0 @@
-