diff --git a/.gitattributes b/.gitattributes
index 5b3dcc6..a4f680d 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,24 +1,7 @@
# Auto detect text files and perform LF normalization
* text=auto
-*.bash text eol=lf
-*.css text diff=css
-*.gif binary
-*.html text diff=html
-*.ico binary
-*.jpeg binary
-*.jpg binary
-*.lock text -diff
*.md text diff=markdown
*.php text eol=lf diff=php
-*.phpt text eol=lf diff=php
-*.phtml text eol=lf diff=html
-*.png binary
-*.py text diff=python
-*.sh text eol=lf
-*.svg text
-*.txt text
-*.webp binary
-*.zip binary
/.editorconfig export-ignore
/.gitattributes export-ignore
/.github export-ignore
@@ -26,6 +9,4 @@
/composer.lock export-ignore
/infection.json5.dist export-ignore
/phpunit.xml.dist export-ignore
-/psalm-baseline.xml export-ignore
-/psalm.xml.dist export-ignore
/tests export-ignore
diff --git a/.github/workflows/automation.yml b/.github/workflows/automation.yml
index 29218d4..bda6c97 100644
--- a/.github/workflows/automation.yml
+++ b/.github/workflows/automation.yml
@@ -1,28 +1,22 @@
name: Automation
on:
- pull_request:
- push:
+ pull_request: # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request
+ push: # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#push
branches:
- # Default branch
- - "main"
- # Release branches
- ## 1.2.x - e.g. Semantic Versioning
- - "[0-9]+.[0-9]+.x"
- ## v1 - e.g. GitHub Actions Versioning
- - "v[0-9]+"
- # Scheduled workflow
- schedule:
- # Runs hourly
- - cron: "0 * * * *"
- # Manually Trigger workflow
- workflow_dispatch:
+ - "main" # Default branch
+ - "[0-9]+.[0-9]+.x" # Release branches (1.2.x - e.g. Semantic Versioning)
+ - "v[0-9]+" # v1 - e.g. GitHub Actions Versioning
+ schedule: # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onschedule
+ - cron: "0 * * * *" # Runs hourly
+ workflow_dispatch: # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatch
-# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
# values: read, write, none
-permissions:
+permissions: # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions
# actions: Work with GitHub Actions. For example, actions: write permits an action to cancel a workflow run.
actions: write
+ # attestations: Work with artifact attestations. For example, attestations: write permits an action to generate an artifact attestation for a build.
+ attestations: write
# checks: Work with check runs and check suites. For example, checks: write permits an action to create a check run.
checks: write
# contents: Work with the contents of the repository. For example, contents: read permits an action to list the commits, and contents:write allows the action to create a release.
@@ -52,6 +46,5 @@ jobs:
automation:
uses: ghostwriter/compliance/.github/workflows/automation.yml@v1
secrets:
- CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
INFECTION_DASHBOARD_API_KEY: ${{ secrets.INFECTION_DASHBOARD_API_KEY }}
diff --git a/README.md b/README.md
index 2964aea..564734e 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,8 @@
# CaseConverter
-[![Compliance](https://github.com/ghostwriter/case-converter/actions/workflows/automation.yml/badge.svg)](https://github.com/ghostwriter/case-converter/actions/workflows/automation.yml)
-[![Supported PHP Version](https://badgen.net/packagist/php/ghostwriter/case-converter?color=8892bf)](https://www.php.net/supported-versions)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/ghostwriter?label=Sponsor+@ghostwriter/case-converter&logo=GitHub+Sponsors)](https://github.com/sponsors/ghostwriter)
-[![Code Coverage](https://codecov.io/gh/ghostwriter/case-converter/branch/main/graph/badge.svg)](https://codecov.io/gh/ghostwriter/case-converter)
-[![Type Coverage](https://shepherd.dev/github/ghostwriter/case-converter/coverage.svg)](https://shepherd.dev/github/ghostwriter/case-converter)
-[![Psalm Level](https://shepherd.dev/github/ghostwriter/case-converter/level.svg)](https://psalm.dev/docs/running_psalm/error_levels)
-[![Latest Version on Packagist](https://badgen.net/packagist/v/ghostwriter/case-converter)](https://packagist.org/packages/ghostwriter/case-converter)
+[![Automation](https://github.com/ghostwriter/case-converter/actions/workflows/automation.yml/badge.svg)](https://github.com/ghostwriter/case-converter/actions/workflows/automation.yml)
+[![Supported PHP Version](https://badgen.net/packagist/php/ghostwriter/case-converter?color=8892bf)](https://www.php.net/supported-versions)
[![Downloads](https://badgen.net/packagist/dt/ghostwriter/case-converter?color=blue)](https://packagist.org/packages/ghostwriter/case-converter)
Convert strings from and to `AdaCase`, `CamelCase`, `CobolCase`, `KebabCase`, `Lowercase`, `MacroCase`, `PascalCase`, `SentenceCase`, `SnakeCase`, `TitleCase`, `TrainCase`, and `Uppercase`.
diff --git a/composer.json b/composer.json
index f3e88a0..fd1fc96 100644
--- a/composer.json
+++ b/composer.json
@@ -31,9 +31,7 @@
"homepage": "https://github.com/ghostwriter/case-converter",
"support": {
"issues": "https://github.com/ghostwriter/case-converter/issues",
- "forum": "https://github.com/ghostwriter/case-converter/discussions",
"source": "https://github.com/ghostwriter/case-converter",
- "docs": "https://github.com/ghostwriter/case-converter",
"rss": "https://github.com/ghostwriter/case-converter/releases.atom",
"security": "https://github.com/ghostwriter/case-converter/security/advisories/new"
},
@@ -43,13 +41,19 @@
"url": "https://github.com/sponsors/ghostwriter"
}
],
- "_comment": "#BlackLivesMatter",
+ "_comment": [
+ "#BlackLivesMatter",
+ "#FreePalestine",
+ "#StandWithUkraine"
+ ],
"require": {
"php": ">=8.3",
"ext-mbstring": "*"
},
"require-dev": {
- "ghostwriter/coding-standard": "dev-main"
+ "ghostwriter/coding-standard": "@dev",
+ "ghostwriter/psalm-plugin": "@dev",
+ "ghostwriter/testify": "@dev"
},
"replace": {},
"minimum-stability": "stable",
@@ -61,19 +65,27 @@
},
"autoload-dev": {
"psr-4": {
- "Tests\\": "tests"
- }
+ "Tests\\Unit\\": "tests/unit/"
+ },
+ "files": [
+ "tests/bootstrap.php"
+ ],
+ "exclude-from-classmap": [
+ "tests/fixture/"
+ ]
},
"config": {
"allow-plugins": {
"ghostwriter/coding-standard": true
},
+ "bump-after-update": true,
"classmap-authoritative": false,
"discard-changes": true,
"optimize-autoloader": true,
"platform": {
"php": "8.3.999"
},
+ "platform-check": true,
"preferred-install": "dist",
"prepend-autoloader": true,
"process-timeout": 5000,
@@ -81,43 +93,43 @@
"use-parent-dir": false
},
"scripts": {
+ "bin_composer": "vendor/ghostwriter/coding-standard/tools/composer",
"bin_ecs": "ecs check --clear-cache --no-interaction",
- "bin_infection": "infection --ansi --show-mutations --threads=max --min-msi=0 --min-covered-msi=0",
- "bin_phive": "phive",
- "bin_phpunit": "phpunit --do-not-cache-result --colors=always",
+ "bin_infection": "vendor/ghostwriter/coding-standard/tools/infection --ansi --min-covered-msi=0 --min-msi=0 --show-mutations --threads=max",
+ "bin_normalize": "vendor/ghostwriter/coding-standard/tools/composer-normalize",
+ "bin_phive": "vendor/ghostwriter/coding-standard/tools/phive",
+ "bin_phpunit": "vendor/ghostwriter/coding-standard/tools/phpunit --do-not-cache-result --colors=always",
"bin_psalm": "psalm --no-cache",
- "bin_rector": "rector process --no-ansi --clear-cache",
+ "bin_rector": "rector process --clear-cache --no-ansi",
"cache:clear": "rm -rf ./.cache/*",
"check": [
- "@composer validate",
+ "@cache:clear",
+ "@bin_composer validate",
+ "@composer-normalize",
"@ecs",
"@test"
],
- "dev": [
- "@cache:clear",
- "@check",
- "@psalm:update",
- "@psalm:security",
- "@psalm:dry-run"
- ],
+ "composer-normalize": "@bin_normalize --no-cache --diff --no-check-lock --no-scripts --no-plugins",
"ecs": "@bin_ecs --fix",
"git:submodule:update": "git submodule update --depth=1 --init --recursive --recommend-shallow --remote",
- "infection": "@bin_infection",
- "phpunit": "@bin_phpunit",
- "phpunit:migrate": "@bin_phpunit --migrate-configuration",
- "psalm": "@bin_psalm --show-info=true",
- "psalm:alter": "@bin_psalm --alter --allow-backwards-incompatible-changes=false --safe-types",
- "psalm:baseline": "@psalm --no-diff --set-baseline=psalm-baseline.xml",
- "psalm:dry-run": "@psalm:alter --issues=all --dry-run",
- "psalm:fix": "@psalm:alter --issues=UnnecessaryVarAnnotation,MissingPureAnnotation,MissingImmutableAnnotation",
- "psalm:security": "@psalm --no-diff --taint-analysis",
- "psalm:shepherd": "@psalm --no-diff --shepherd --stats",
- "psalm:update": "@psalm --no-diff --update-baseline=psalm-baseline.xml",
+ "infection": [
+ "@xdebug",
+ "@bin_infection"
+ ],
+ "phpunit": [
+ "@xdebug",
+ "@bin_phpunit"
+ ],
+ "phpunit:migrate": [
+ "@xdebug",
+ "@bin_phpunit --migrate-configuration"
+ ],
"rector": "@bin_rector",
+ "rector:dry-run": "@rector --dry-run",
"test": [
"@phpunit",
- "@psalm:shepherd",
"@infection"
- ]
+ ],
+ "xdebug": "@putenv XDEBUG_MODE=coverage"
}
}
diff --git a/composer.lock b/composer.lock
index 2728f4b..a6697b0 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,43 +4,41 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "99ab91d99801f7ccc6fe216b68c37c77",
+ "content-hash": "8b17e88be37909341db58d8f0d246667",
"packages": [],
"packages-dev": [
{
- "name": "composer/ca-bundle",
- "version": "1.5.4",
+ "name": "amphp/amp",
+ "version": "v3.1.0",
"source": {
"type": "git",
- "url": "https://github.com/composer/ca-bundle.git",
- "reference": "bc0593537a463e55cadf45fd938d23b75095b7e1"
+ "url": "https://github.com/amphp/amp.git",
+ "reference": "7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/bc0593537a463e55cadf45fd938d23b75095b7e1",
- "reference": "bc0593537a463e55cadf45fd938d23b75095b7e1",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9",
+ "reference": "7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9",
"shasum": ""
},
"require": {
- "ext-openssl": "*",
- "ext-pcre": "*",
- "php": "^7.2 || ^8.0"
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2"
},
"require-dev": {
- "phpstan/phpstan": "^1.10",
- "phpunit/phpunit": "^8 || ^9",
- "psr/log": "^1.0 || ^2.0 || ^3.0",
- "symfony/process": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ "amphp/php-cs-fixer-config": "^2",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "5.23.1"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.x-dev"
- }
- },
"autoload": {
+ "files": [
+ "src/functions.php",
+ "src/Future/functions.php",
+ "src/Internal/functions.php"
+ ],
"psr-4": {
- "Composer\\CaBundle\\": "src"
+ "Amp\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -49,76 +47,84 @@
],
"authors": [
{
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ },
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
}
],
- "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
+ "description": "A non-blocking concurrency framework for PHP applications.",
+ "homepage": "https://amphp.org/amp",
"keywords": [
- "cabundle",
- "cacert",
- "certificate",
- "ssl",
- "tls"
+ "async",
+ "asynchronous",
+ "awaitable",
+ "concurrency",
+ "event",
+ "event-loop",
+ "future",
+ "non-blocking",
+ "promise"
],
"support": {
- "irc": "irc://irc.freenode.org/composer",
- "issues": "https://github.com/composer/ca-bundle/issues",
- "source": "https://github.com/composer/ca-bundle/tree/1.5.4"
+ "issues": "https://github.com/amphp/amp/issues",
+ "source": "https://github.com/amphp/amp/tree/v3.1.0"
},
"funding": [
{
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
+ "url": "https://github.com/amphp",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-11-27T15:35:25+00:00"
+ "time": "2025-01-26T16:07:39+00:00"
},
{
- "name": "composer/class-map-generator",
- "version": "1.5.0",
+ "name": "amphp/byte-stream",
+ "version": "v2.1.1",
"source": {
"type": "git",
- "url": "https://github.com/composer/class-map-generator.git",
- "reference": "4b0a223cf5be7c9ee7e0ef1bc7db42b4a97c9915"
+ "url": "https://github.com/amphp/byte-stream.git",
+ "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/class-map-generator/zipball/4b0a223cf5be7c9ee7e0ef1bc7db42b4a97c9915",
- "reference": "4b0a223cf5be7c9ee7e0ef1bc7db42b4a97c9915",
+ "url": "https://api.github.com/repos/amphp/byte-stream/zipball/daa00f2efdbd71565bf64ffefa89e37542addf93",
+ "reference": "daa00f2efdbd71565bf64ffefa89e37542addf93",
"shasum": ""
},
"require": {
- "composer/pcre": "^2.1 || ^3.1",
- "php": "^7.2 || ^8.0",
- "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7"
+ "amphp/amp": "^3",
+ "amphp/parser": "^1.1",
+ "amphp/pipeline": "^1",
+ "amphp/serialization": "^1",
+ "amphp/sync": "^2",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2.3"
},
"require-dev": {
- "phpstan/phpstan": "^1.12 || ^2",
- "phpstan/phpstan-deprecation-rules": "^1 || ^2",
- "phpstan/phpstan-phpunit": "^1 || ^2",
- "phpstan/phpstan-strict-rules": "^1.1 || ^2",
- "phpunit/phpunit": "^8",
- "symfony/filesystem": "^5.4 || ^6"
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "5.22.1"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.x-dev"
- }
- },
"autoload": {
+ "files": [
+ "src/functions.php",
+ "src/Internal/functions.php"
+ ],
"psr-4": {
- "Composer\\ClassMapGenerator\\": "src"
+ "Amp\\ByteStream\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -127,102 +133,67 @@
],
"authors": [
{
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "https://seld.be"
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
}
],
- "description": "Utilities to scan PHP code and generate class maps.",
+ "description": "A stream abstraction to make working with non-blocking I/O simple.",
+ "homepage": "https://amphp.org/byte-stream",
"keywords": [
- "classmap"
+ "amp",
+ "amphp",
+ "async",
+ "io",
+ "non-blocking",
+ "stream"
],
"support": {
- "issues": "https://github.com/composer/class-map-generator/issues",
- "source": "https://github.com/composer/class-map-generator/tree/1.5.0"
+ "issues": "https://github.com/amphp/byte-stream/issues",
+ "source": "https://github.com/amphp/byte-stream/tree/v2.1.1"
},
"funding": [
{
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
+ "url": "https://github.com/amphp",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-11-25T16:11:06+00:00"
+ "time": "2024-02-17T04:49:38+00:00"
},
{
- "name": "composer/composer",
- "version": "2.8.4",
+ "name": "amphp/cache",
+ "version": "v2.0.1",
"source": {
"type": "git",
- "url": "https://github.com/composer/composer.git",
- "reference": "112e37d1dca22b3fdb81cf3524ab4994f47fdb8c"
+ "url": "https://github.com/amphp/cache.git",
+ "reference": "46912e387e6aa94933b61ea1ead9cf7540b7797c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/composer/zipball/112e37d1dca22b3fdb81cf3524ab4994f47fdb8c",
- "reference": "112e37d1dca22b3fdb81cf3524ab4994f47fdb8c",
+ "url": "https://api.github.com/repos/amphp/cache/zipball/46912e387e6aa94933b61ea1ead9cf7540b7797c",
+ "reference": "46912e387e6aa94933b61ea1ead9cf7540b7797c",
"shasum": ""
},
"require": {
- "composer/ca-bundle": "^1.5",
- "composer/class-map-generator": "^1.4.0",
- "composer/metadata-minifier": "^1.0",
- "composer/pcre": "^2.2 || ^3.2",
- "composer/semver": "^3.3",
- "composer/spdx-licenses": "^1.5.7",
- "composer/xdebug-handler": "^2.0.2 || ^3.0.3",
- "justinrainbow/json-schema": "^5.3",
- "php": "^7.2.5 || ^8.0",
- "psr/log": "^1.0 || ^2.0 || ^3.0",
- "react/promise": "^2.11 || ^3.2",
- "seld/jsonlint": "^1.4",
- "seld/phar-utils": "^1.2",
- "seld/signal-handler": "^2.0",
- "symfony/console": "^5.4.35 || ^6.3.12 || ^7.0.3",
- "symfony/filesystem": "^5.4.35 || ^6.3.12 || ^7.0.3",
- "symfony/finder": "^5.4.35 || ^6.3.12 || ^7.0.3",
- "symfony/polyfill-php73": "^1.24",
- "symfony/polyfill-php80": "^1.24",
- "symfony/polyfill-php81": "^1.24",
- "symfony/process": "^5.4.35 || ^6.3.12 || ^7.0.3"
+ "amphp/amp": "^3",
+ "amphp/serialization": "^1",
+ "amphp/sync": "^2",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2"
},
"require-dev": {
- "phpstan/phpstan": "^1.11.8",
- "phpstan/phpstan-deprecation-rules": "^1.2.0",
- "phpstan/phpstan-phpunit": "^1.4.0",
- "phpstan/phpstan-strict-rules": "^1.6.0",
- "phpstan/phpstan-symfony": "^1.4.0",
- "symfony/phpunit-bridge": "^6.4.3 || ^7.0.1"
- },
- "suggest": {
- "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
- "ext-zip": "Enabling the zip extension allows you to unzip archives",
- "ext-zlib": "Allow gzip compression of HTTP requests"
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "^5.4"
},
- "bin": [
- "bin/composer"
- ],
"type": "library",
- "extra": {
- "phpstan": {
- "includes": [
- "phpstan/rules.neon"
- ]
- },
- "branch-alias": {
- "dev-main": "2.8-dev"
- }
- },
"autoload": {
"psr-4": {
- "Composer\\": "src/Composer/"
+ "Amp\\Cache\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -231,76 +202,71 @@
],
"authors": [
{
- "name": "Nils Adermann",
- "email": "naderman@naderman.de",
- "homepage": "https://www.naderman.de"
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
},
{
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "https://seld.be"
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
}
],
- "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.",
- "homepage": "https://getcomposer.org/",
- "keywords": [
- "autoload",
- "dependency",
- "package"
- ],
+ "description": "A fiber-aware cache API based on Amp and Revolt.",
+ "homepage": "https://amphp.org/cache",
"support": {
- "irc": "ircs://irc.libera.chat:6697/composer",
- "issues": "https://github.com/composer/composer/issues",
- "security": "https://github.com/composer/composer/security/policy",
- "source": "https://github.com/composer/composer/tree/2.8.4"
+ "issues": "https://github.com/amphp/cache/issues",
+ "source": "https://github.com/amphp/cache/tree/v2.0.1"
},
"funding": [
{
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
+ "url": "https://github.com/amphp",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-12-11T10:57:47+00:00"
+ "time": "2024-04-19T03:38:06+00:00"
},
{
- "name": "composer/metadata-minifier",
- "version": "1.0.0",
+ "name": "amphp/dns",
+ "version": "v2.4.0",
"source": {
"type": "git",
- "url": "https://github.com/composer/metadata-minifier.git",
- "reference": "c549d23829536f0d0e984aaabbf02af91f443207"
+ "url": "https://github.com/amphp/dns.git",
+ "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207",
- "reference": "c549d23829536f0d0e984aaabbf02af91f443207",
+ "url": "https://api.github.com/repos/amphp/dns/zipball/78eb3db5fc69bf2fc0cb503c4fcba667bc223c71",
+ "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71",
"shasum": ""
},
"require": {
- "php": "^5.3.2 || ^7.0 || ^8.0"
+ "amphp/amp": "^3",
+ "amphp/byte-stream": "^2",
+ "amphp/cache": "^2",
+ "amphp/parser": "^1",
+ "amphp/process": "^2",
+ "daverandom/libdns": "^2.0.2",
+ "ext-filter": "*",
+ "ext-json": "*",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2"
},
"require-dev": {
- "composer/composer": "^2",
- "phpstan/phpstan": "^0.12.55",
- "symfony/phpunit-bridge": "^4.2 || ^5"
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "5.20"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.x-dev"
- }
- },
"autoload": {
+ "files": [
+ "src/functions.php"
+ ],
"psr-4": {
- "Composer\\MetadataMinifier\\": "src"
+ "Amp\\Dns\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -309,75 +275,91 @@
],
"authors": [
{
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
+ "name": "Chris Wright",
+ "email": "addr@daverandom.com"
+ },
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
+ },
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ },
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
}
],
- "description": "Small utility library that handles metadata minification and expansion.",
+ "description": "Async DNS resolution for Amp.",
+ "homepage": "https://github.com/amphp/dns",
"keywords": [
- "composer",
- "compression"
+ "amp",
+ "amphp",
+ "async",
+ "client",
+ "dns",
+ "resolve"
],
"support": {
- "issues": "https://github.com/composer/metadata-minifier/issues",
- "source": "https://github.com/composer/metadata-minifier/tree/1.0.0"
+ "issues": "https://github.com/amphp/dns/issues",
+ "source": "https://github.com/amphp/dns/tree/v2.4.0"
},
"funding": [
{
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
+ "url": "https://github.com/amphp",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2021-04-07T13:37:33+00:00"
+ "time": "2025-01-19T15:43:40+00:00"
},
{
- "name": "composer/pcre",
- "version": "3.3.2",
+ "name": "amphp/parallel",
+ "version": "v2.3.1",
"source": {
"type": "git",
- "url": "https://github.com/composer/pcre.git",
- "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e"
+ "url": "https://github.com/amphp/parallel.git",
+ "reference": "5113111de02796a782f5d90767455e7391cca190"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
- "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
+ "url": "https://api.github.com/repos/amphp/parallel/zipball/5113111de02796a782f5d90767455e7391cca190",
+ "reference": "5113111de02796a782f5d90767455e7391cca190",
"shasum": ""
},
"require": {
- "php": "^7.4 || ^8.0"
- },
- "conflict": {
- "phpstan/phpstan": "<1.11.10"
+ "amphp/amp": "^3",
+ "amphp/byte-stream": "^2",
+ "amphp/cache": "^2",
+ "amphp/parser": "^1",
+ "amphp/pipeline": "^1",
+ "amphp/process": "^2",
+ "amphp/serialization": "^1",
+ "amphp/socket": "^2",
+ "amphp/sync": "^2",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1"
},
"require-dev": {
- "phpstan/phpstan": "^1.12 || ^2",
- "phpstan/phpstan-strict-rules": "^1 || ^2",
- "phpunit/phpunit": "^8 || ^9"
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "^5.18"
},
"type": "library",
- "extra": {
- "phpstan": {
- "includes": [
- "extension.neon"
- ]
- },
- "branch-alias": {
- "dev-main": "3.x-dev"
- }
- },
"autoload": {
+ "files": [
+ "src/Context/functions.php",
+ "src/Context/Internal/functions.php",
+ "src/Ipc/functions.php",
+ "src/Worker/functions.php"
+ ],
"psr-4": {
- "Composer\\Pcre\\": "src"
+ "Amp\\Parallel\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -386,68 +368,65 @@
],
"authors": [
{
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ },
+ {
+ "name": "Stephen Coakley",
+ "email": "me@stephencoakley.com"
}
],
- "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+ "description": "Parallel processing component for Amp.",
+ "homepage": "https://github.com/amphp/parallel",
"keywords": [
- "PCRE",
- "preg",
- "regex",
- "regular expression"
+ "async",
+ "asynchronous",
+ "concurrent",
+ "multi-processing",
+ "multi-threading"
],
"support": {
- "issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.3.2"
+ "issues": "https://github.com/amphp/parallel/issues",
+ "source": "https://github.com/amphp/parallel/tree/v2.3.1"
},
"funding": [
{
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
+ "url": "https://github.com/amphp",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-11-12T16:29:46+00:00"
+ "time": "2024-12-21T01:56:09+00:00"
},
{
- "name": "composer/semver",
- "version": "3.4.3",
+ "name": "amphp/parser",
+ "version": "v1.1.1",
"source": {
"type": "git",
- "url": "https://github.com/composer/semver.git",
- "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
+ "url": "https://github.com/amphp/parser.git",
+ "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
- "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
+ "url": "https://api.github.com/repos/amphp/parser/zipball/3cf1f8b32a0171d4b1bed93d25617637a77cded7",
+ "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7",
"shasum": ""
},
"require": {
- "php": "^5.3.2 || ^7.0 || ^8.0"
+ "php": ">=7.4"
},
"require-dev": {
- "phpstan/phpstan": "^1.11",
- "symfony/phpunit-bridge": "^3 || ^7"
+ "amphp/php-cs-fixer-config": "^2",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "^5.4"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.x-dev"
- }
- },
"autoload": {
"psr-4": {
- "Composer\\Semver\\": "src"
+ "Amp\\Parser\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -456,79 +435,63 @@
],
"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": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
},
{
- "name": "Rob Bast",
- "email": "rob.bast@gmail.com",
- "homepage": "http://robbast.nl"
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
}
],
- "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "description": "A generator parser to make streaming parsers simple.",
+ "homepage": "https://github.com/amphp/parser",
"keywords": [
- "semantic",
- "semver",
- "validation",
- "versioning"
+ "async",
+ "non-blocking",
+ "parser",
+ "stream"
],
"support": {
- "irc": "ircs://irc.libera.chat:6697/composer",
- "issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.4.3"
+ "issues": "https://github.com/amphp/parser/issues",
+ "source": "https://github.com/amphp/parser/tree/v1.1.1"
},
"funding": [
{
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
+ "url": "https://github.com/amphp",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-09-19T14:15:21+00:00"
+ "time": "2024-03-21T19:16:53+00:00"
},
{
- "name": "composer/spdx-licenses",
- "version": "1.5.8",
+ "name": "amphp/pipeline",
+ "version": "v1.2.2",
"source": {
"type": "git",
- "url": "https://github.com/composer/spdx-licenses.git",
- "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a"
+ "url": "https://github.com/amphp/pipeline.git",
+ "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a",
- "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a",
+ "url": "https://api.github.com/repos/amphp/pipeline/zipball/97cbf289f4d8877acfe58dd90ed5a4370a43caa4",
+ "reference": "97cbf289f4d8877acfe58dd90ed5a4370a43caa4",
"shasum": ""
},
"require": {
- "php": "^5.3.2 || ^7.0 || ^8.0"
+ "amphp/amp": "^3",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1"
},
"require-dev": {
- "phpstan/phpstan": "^0.12.55",
- "symfony/phpunit-bridge": "^4.2 || ^5"
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "^5.18"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.x-dev"
- }
- },
"autoload": {
"psr-4": {
- "Composer\\Spdx\\": "src"
+ "Amp\\Pipeline\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -537,76 +500,132 @@
],
"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": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
},
{
- "name": "Rob Bast",
- "email": "rob.bast@gmail.com",
- "homepage": "http://robbast.nl"
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
}
],
- "description": "SPDX licenses list and validation library.",
+ "description": "Asynchronous iterators and operators.",
+ "homepage": "https://amphp.org/pipeline",
"keywords": [
- "license",
- "spdx",
- "validator"
+ "amp",
+ "amphp",
+ "async",
+ "io",
+ "iterator",
+ "non-blocking"
],
"support": {
- "irc": "ircs://irc.libera.chat:6697/composer",
- "issues": "https://github.com/composer/spdx-licenses/issues",
- "source": "https://github.com/composer/spdx-licenses/tree/1.5.8"
+ "issues": "https://github.com/amphp/pipeline/issues",
+ "source": "https://github.com/amphp/pipeline/tree/v1.2.2"
},
"funding": [
{
- "url": "https://packagist.com",
- "type": "custom"
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2025-01-19T15:42:46+00:00"
+ },
+ {
+ "name": "amphp/process",
+ "version": "v2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/process.git",
+ "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/process/zipball/52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d",
+ "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^3",
+ "amphp/byte-stream": "^2",
+ "amphp/sync": "^2",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "^5.4"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\Process\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
},
{
- "url": "https://github.com/composer",
- "type": "github"
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
},
{
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
}
],
- "time": "2023-11-20T07:44:33+00:00"
+ "description": "A fiber-aware process manager based on Amp and Revolt.",
+ "homepage": "https://amphp.org/process",
+ "support": {
+ "issues": "https://github.com/amphp/process/issues",
+ "source": "https://github.com/amphp/process/tree/v2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2024-04-19T03:13:44+00:00"
},
{
- "name": "composer/xdebug-handler",
- "version": "3.0.5",
+ "name": "amphp/serialization",
+ "version": "v1.0.0",
"source": {
"type": "git",
- "url": "https://github.com/composer/xdebug-handler.git",
- "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef"
+ "url": "https://github.com/amphp/serialization.git",
+ "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef",
- "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef",
+ "url": "https://api.github.com/repos/amphp/serialization/zipball/693e77b2fb0b266c3c7d622317f881de44ae94a1",
+ "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1",
"shasum": ""
},
"require": {
- "composer/pcre": "^1 || ^2 || ^3",
- "php": "^7.2.5 || ^8.0",
- "psr/log": "^1 || ^2 || ^3"
+ "php": ">=7.1"
},
"require-dev": {
- "phpstan/phpstan": "^1.0",
- "phpstan/phpstan-strict-rules": "^1.1",
- "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5"
+ "amphp/php-cs-fixer-config": "dev-master",
+ "phpunit/phpunit": "^9 || ^8 || ^7"
},
"type": "library",
"autoload": {
+ "files": [
+ "src/functions.php"
+ ],
"psr-4": {
- "Composer\\XdebugHandler\\": "src"
+ "Amp\\Serialization\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -615,200 +634,1881 @@
],
"authors": [
{
- "name": "John Stevenson",
- "email": "john-stevenson@blueyonder.co.uk"
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
}
],
- "description": "Restarts a process without Xdebug.",
+ "description": "Serialization tools for IPC and data storage in PHP.",
+ "homepage": "https://github.com/amphp/serialization",
"keywords": [
- "Xdebug",
- "performance"
+ "async",
+ "asynchronous",
+ "serialization",
+ "serialize"
],
"support": {
- "irc": "ircs://irc.libera.chat:6697/composer",
- "issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/3.0.5"
+ "issues": "https://github.com/amphp/serialization/issues",
+ "source": "https://github.com/amphp/serialization/tree/master"
},
- "funding": [
+ "time": "2020-03-25T21:39:07+00:00"
+ },
+ {
+ "name": "amphp/socket",
+ "version": "v2.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/socket.git",
+ "reference": "58e0422221825b79681b72c50c47a930be7bf1e1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/socket/zipball/58e0422221825b79681b72c50c47a930be7bf1e1",
+ "reference": "58e0422221825b79681b72c50c47a930be7bf1e1",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^3",
+ "amphp/byte-stream": "^2",
+ "amphp/dns": "^2",
+ "ext-openssl": "*",
+ "kelunik/certificate": "^1.1",
+ "league/uri": "^6.5 | ^7",
+ "league/uri-interfaces": "^2.3 | ^7",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "amphp/process": "^2",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "5.20"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions.php",
+ "src/Internal/functions.php",
+ "src/SocketAddress/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\Socket\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
{
- "url": "https://packagist.com",
- "type": "custom"
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@gmail.com"
},
{
- "url": "https://github.com/composer",
- "type": "github"
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
},
{
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
}
],
- "time": "2024-05-06T16:37:16+00:00"
+ "description": "Non-blocking socket connection / server implementations based on Amp and Revolt.",
+ "homepage": "https://github.com/amphp/socket",
+ "keywords": [
+ "amp",
+ "async",
+ "encryption",
+ "non-blocking",
+ "sockets",
+ "tcp",
+ "tls"
+ ],
+ "support": {
+ "issues": "https://github.com/amphp/socket/issues",
+ "source": "https://github.com/amphp/socket/tree/v2.3.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2024-04-21T14:33:03+00:00"
},
{
- "name": "ghostwriter/coding-standard",
- "version": "dev-main",
+ "name": "amphp/sync",
+ "version": "v2.3.0",
"source": {
"type": "git",
- "url": "https://github.com/ghostwriter/coding-standard.git",
- "reference": "fc43a91f6d8a3191588c66267dafb2386de9893b"
+ "url": "https://github.com/amphp/sync.git",
+ "reference": "217097b785130d77cfcc58ff583cf26cd1770bf1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ghostwriter/coding-standard/zipball/fc43a91f6d8a3191588c66267dafb2386de9893b",
- "reference": "fc43a91f6d8a3191588c66267dafb2386de9893b",
+ "url": "https://api.github.com/repos/amphp/sync/zipball/217097b785130d77cfcc58ff583cf26cd1770bf1",
+ "reference": "217097b785130d77cfcc58ff583cf26cd1770bf1",
"shasum": ""
},
"require": {
- "composer-plugin-api": "^2.6.0",
- "composer-runtime-api": "^2.2.2",
- "composer/composer": "^2.8.4",
- "mockery/mockery": "^1.6.12",
- "php": "^8.2",
- "phpunit/phpunit": "11.5.2",
- "symfony/var-dumper": "^7.2.0"
- },
- "conflict": {
- "vimeo/psalm": "<5.26"
+ "amphp/amp": "^3",
+ "amphp/pipeline": "^1",
+ "amphp/serialization": "^1",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2"
},
"require-dev": {
- "ghostwriter/container": "^4.0.3",
- "ghostwriter/filesystem": "^0.1.1",
- "ghostwriter/shell": "^0.1.0"
- },
- "default-branch": true,
- "bin": [
- "tools/infection",
- "tools/phive",
- "tools/phpactor"
- ],
- "type": "composer-plugin",
- "extra": {
- "class": "Ghostwriter\\CodingStandard\\Plugin\\ComposerPlugin",
- "plugin-optional": false,
- "plugin-modifies-downloads": false,
- "plugin-modifies-install-path": false
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "5.23"
},
+ "type": "library",
"autoload": {
+ "files": [
+ "src/functions.php"
+ ],
"psr-4": {
- "Ghostwriter\\CodingStandard\\": "src"
+ "Amp\\Sync\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Nathanael Esayeas",
- "email": "nathanael.esayeas@protonmail.com",
- "homepage": "https://github.com/ghostwriter",
- "role": "Developer"
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ },
+ {
+ "name": "Stephen Coakley",
+ "email": "me@stephencoakley.com"
}
],
- "description": "PHP Coding Standard",
- "homepage": "https://github.com/ghostwriter/coding-standard",
+ "description": "Non-blocking synchronization primitives for PHP based on Amp and Revolt.",
+ "homepage": "https://github.com/amphp/sync",
"keywords": [
- "coding-standard",
- "dev",
- "ghostwriter"
+ "async",
+ "asynchronous",
+ "mutex",
+ "semaphore",
+ "synchronization"
],
"support": {
- "docs": "https://github.com/ghostwriter/coding-standard",
- "forum": "https://github.com/ghostwriter/coding-standard/discussions",
- "issues": "https://github.com/ghostwriter/coding-standard/issues",
- "rss": "https://github.com/ghostwriter/coding-standard/releases.atom",
- "security": "https://github.com/ghostwriter/coding-standard/security/advisories/new",
- "source": "https://github.com/ghostwriter/coding-standard"
+ "issues": "https://github.com/amphp/sync/issues",
+ "source": "https://github.com/amphp/sync/tree/v2.3.0"
},
"funding": [
{
- "url": "https://github.com/sponsors/ghostwriter",
- "type": "github"
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2024-08-03T19:31:26+00:00"
+ },
+ {
+ "name": "composer/ca-bundle",
+ "version": "1.5.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/ca-bundle.git",
+ "reference": "08c50d5ec4c6ced7d0271d2862dec8c1033283e6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/08c50d5ec4c6ced7d0271d2862dec8c1033283e6",
+ "reference": "08c50d5ec4c6ced7d0271d2862dec8c1033283e6",
+ "shasum": ""
+ },
+ "require": {
+ "ext-openssl": "*",
+ "ext-pcre": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^8 || ^9",
+ "psr/log": "^1.0 || ^2.0 || ^3.0",
+ "symfony/process": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\CaBundle\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
+ "keywords": [
+ "cabundle",
+ "cacert",
+ "certificate",
+ "ssl",
+ "tls"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/ca-bundle/issues",
+ "source": "https://github.com/composer/ca-bundle/tree/1.5.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": "2025-01-08T16:17:16+00:00"
+ },
+ {
+ "name": "composer/class-map-generator",
+ "version": "1.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/class-map-generator.git",
+ "reference": "4b0a223cf5be7c9ee7e0ef1bc7db42b4a97c9915"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/class-map-generator/zipball/4b0a223cf5be7c9ee7e0ef1bc7db42b4a97c9915",
+ "reference": "4b0a223cf5be7c9ee7e0ef1bc7db42b4a97c9915",
+ "shasum": ""
+ },
+ "require": {
+ "composer/pcre": "^2.1 || ^3.1",
+ "php": "^7.2 || ^8.0",
+ "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.12 || ^2",
+ "phpstan/phpstan-deprecation-rules": "^1 || ^2",
+ "phpstan/phpstan-phpunit": "^1 || ^2",
+ "phpstan/phpstan-strict-rules": "^1.1 || ^2",
+ "phpunit/phpunit": "^8",
+ "symfony/filesystem": "^5.4 || ^6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\ClassMapGenerator\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "https://seld.be"
+ }
+ ],
+ "description": "Utilities to scan PHP code and generate class maps.",
+ "keywords": [
+ "classmap"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/class-map-generator/issues",
+ "source": "https://github.com/composer/class-map-generator/tree/1.5.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": "2024-11-25T16:11:06+00:00"
+ },
+ {
+ "name": "composer/composer",
+ "version": "2.8.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/composer.git",
+ "reference": "ae208dc1e182bd45d99fcecb956501da212454a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/composer/zipball/ae208dc1e182bd45d99fcecb956501da212454a1",
+ "reference": "ae208dc1e182bd45d99fcecb956501da212454a1",
+ "shasum": ""
+ },
+ "require": {
+ "composer/ca-bundle": "^1.5",
+ "composer/class-map-generator": "^1.4.0",
+ "composer/metadata-minifier": "^1.0",
+ "composer/pcre": "^2.2 || ^3.2",
+ "composer/semver": "^3.3",
+ "composer/spdx-licenses": "^1.5.7",
+ "composer/xdebug-handler": "^2.0.2 || ^3.0.3",
+ "justinrainbow/json-schema": "^5.3",
+ "php": "^7.2.5 || ^8.0",
+ "psr/log": "^1.0 || ^2.0 || ^3.0",
+ "react/promise": "^2.11 || ^3.2",
+ "seld/jsonlint": "^1.4",
+ "seld/phar-utils": "^1.2",
+ "seld/signal-handler": "^2.0",
+ "symfony/console": "^5.4.35 || ^6.3.12 || ^7.0.3",
+ "symfony/filesystem": "^5.4.35 || ^6.3.12 || ^7.0.3",
+ "symfony/finder": "^5.4.35 || ^6.3.12 || ^7.0.3",
+ "symfony/polyfill-php73": "^1.24",
+ "symfony/polyfill-php80": "^1.24",
+ "symfony/polyfill-php81": "^1.24",
+ "symfony/process": "^5.4.35 || ^6.3.12 || ^7.0.3"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.11.8",
+ "phpstan/phpstan-deprecation-rules": "^1.2.0",
+ "phpstan/phpstan-phpunit": "^1.4.0",
+ "phpstan/phpstan-strict-rules": "^1.6.0",
+ "phpstan/phpstan-symfony": "^1.4.0",
+ "symfony/phpunit-bridge": "^6.4.3 || ^7.0.1"
+ },
+ "suggest": {
+ "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
+ "ext-zip": "Enabling the zip extension allows you to unzip archives",
+ "ext-zlib": "Allow gzip compression of HTTP requests"
+ },
+ "bin": [
+ "bin/composer"
+ ],
+ "type": "library",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "phpstan/rules.neon"
+ ]
+ },
+ "branch-alias": {
+ "dev-main": "2.8-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\": "src/Composer/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "https://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "https://seld.be"
+ }
+ ],
+ "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.",
+ "homepage": "https://getcomposer.org/",
+ "keywords": [
+ "autoload",
+ "dependency",
+ "package"
+ ],
+ "support": {
+ "irc": "ircs://irc.libera.chat:6697/composer",
+ "issues": "https://github.com/composer/composer/issues",
+ "security": "https://github.com/composer/composer/security/policy",
+ "source": "https://github.com/composer/composer/tree/2.8.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": "2025-01-21T14:23:40+00:00"
+ },
+ {
+ "name": "composer/metadata-minifier",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/metadata-minifier.git",
+ "reference": "c549d23829536f0d0e984aaabbf02af91f443207"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207",
+ "reference": "c549d23829536f0d0e984aaabbf02af91f443207",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "composer/composer": "^2",
+ "phpstan/phpstan": "^0.12.55",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\MetadataMinifier\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Small utility library that handles metadata minification and expansion.",
+ "keywords": [
+ "composer",
+ "compression"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/metadata-minifier/issues",
+ "source": "https://github.com/composer/metadata-minifier/tree/1.0.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": "2021-04-07T13:37:33+00:00"
+ },
+ {
+ "name": "composer/pcre",
+ "version": "3.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/pcre.git",
+ "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
+ "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<1.11.10"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.12 || ^2",
+ "phpstan/phpstan-strict-rules": "^1 || ^2",
+ "phpunit/phpunit": "^8 || ^9"
+ },
+ "type": "library",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ },
+ "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.3.2"
+ },
+ "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": "2024-11-12T16:29:46+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "3.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
+ "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.11",
+ "symfony/phpunit-bridge": "^3 || ^7"
+ },
+ "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.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": "2024-09-19T14:15:21+00:00"
+ },
+ {
+ "name": "composer/spdx-licenses",
+ "version": "1.5.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/spdx-licenses.git",
+ "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a",
+ "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.55",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Spdx\\": "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": "SPDX licenses list and validation library.",
+ "keywords": [
+ "license",
+ "spdx",
+ "validator"
+ ],
+ "support": {
+ "irc": "ircs://irc.libera.chat:6697/composer",
+ "issues": "https://github.com/composer/spdx-licenses/issues",
+ "source": "https://github.com/composer/spdx-licenses/tree/1.5.8"
+ },
+ "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-11-20T07:44:33+00:00"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "3.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef",
+ "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef",
+ "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",
+ "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5"
+ },
+ "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": "ircs://irc.libera.chat:6697/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues",
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.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": "2024-05-06T16:37:16+00:00"
+ },
+ {
+ "name": "daverandom/libdns",
+ "version": "v2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/DaveRandom/LibDNS.git",
+ "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/DaveRandom/LibDNS/zipball/b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a",
+ "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "Required for IDN support"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "LibDNS\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "DNS protocol implementation written in pure PHP",
+ "keywords": [
+ "dns"
+ ],
+ "support": {
+ "issues": "https://github.com/DaveRandom/LibDNS/issues",
+ "source": "https://github.com/DaveRandom/LibDNS/tree/v2.1.0"
+ },
+ "time": "2024-04-12T12:12:48+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.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/deprecations.git",
+ "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9",
+ "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9 || ^12",
+ "phpstan/phpstan": "1.4.10 || 2.0.3",
+ "phpstan/phpstan-phpunit": "^1.0 || ^2",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "psr/log": "^1 || ^2 || ^3"
+ },
+ "suggest": {
+ "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Deprecations\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
+ "homepage": "https://www.doctrine-project.org/",
+ "support": {
+ "issues": "https://github.com/doctrine/deprecations/issues",
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.4"
+ },
+ "time": "2024-12-07T21:18:45+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.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-language-server-protocol.git",
+ "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/a9e113dbc7d849e35b8776da39edaf4313b7b6c9",
+ "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9",
+ "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.3"
+ },
+ "time": "2024-04-30T00:40:11+00:00"
+ },
+ {
+ "name": "fidry/cpu-core-counter",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theofidry/cpu-core-counter.git",
+ "reference": "8520451a140d3f46ac33042715115e290cf5785f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f",
+ "reference": "8520451a140d3f46ac33042715115e290cf5785f",
+ "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.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theofidry",
+ "type": "github"
+ }
+ ],
+ "time": "2024-08-06T10:04:20+00:00"
+ },
+ {
+ "name": "ghostwriter/coding-standard",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ghostwriter/coding-standard.git",
+ "reference": "a395065e178551271c93c7099fede9a66773f7d5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ghostwriter/coding-standard/zipball/a395065e178551271c93c7099fede9a66773f7d5",
+ "reference": "a395065e178551271c93c7099fede9a66773f7d5",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^2.6.0",
+ "composer-runtime-api": "^2.2.2",
+ "composer/composer": "^2.8.5",
+ "mockery/mockery": "^1.6.12",
+ "php": "^8.2",
+ "phpunit/phpunit": "^11.5.6",
+ "symfony/var-dumper": "^7.2.3",
+ "vimeo/psalm": "^6.1.0"
+ },
+ "conflict": {
+ "vimeo/psalm": "<6.0"
+ },
+ "require-dev": {
+ "ghostwriter/container": "^4.0.3",
+ "ghostwriter/filesystem": "^0.1.1",
+ "ghostwriter/shell": "^0.1.0"
+ },
+ "default-branch": true,
+ "bin": [
+ "tools/infection",
+ "tools/phive",
+ "tools/phpactor"
+ ],
+ "type": "composer-plugin",
+ "extra": {
+ "class": "Ghostwriter\\CodingStandard\\Plugin\\ComposerPlugin",
+ "plugin-optional": false,
+ "plugin-modifies-downloads": false,
+ "plugin-modifies-install-path": false
+ },
+ "autoload": {
+ "psr-4": {
+ "Ghostwriter\\CodingStandard\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nathanael Esayeas",
+ "email": "nathanael.esayeas@protonmail.com",
+ "homepage": "https://github.com/ghostwriter",
+ "role": "Developer"
+ }
+ ],
+ "description": "PHP Coding Standard",
+ "homepage": "https://github.com/ghostwriter/coding-standard",
+ "keywords": [
+ "coding-standard",
+ "dev",
+ "ghostwriter"
+ ],
+ "support": {
+ "docs": "https://github.com/ghostwriter/coding-standard",
+ "forum": "https://github.com/ghostwriter/coding-standard/discussions",
+ "issues": "https://github.com/ghostwriter/coding-standard/issues",
+ "rss": "https://github.com/ghostwriter/coding-standard/releases.atom",
+ "security": "https://github.com/ghostwriter/coding-standard/security/advisories/new",
+ "source": "https://github.com/ghostwriter/coding-standard"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/ghostwriter",
+ "type": "github"
+ }
+ ],
+ "time": "2025-01-31T09:19:20+00:00"
+ },
+ {
+ "name": "ghostwriter/config",
+ "version": "0.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ghostwriter/config.git",
+ "reference": "bcbe21a32abd8e2788c58e74a9bb82b676b4be5f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ghostwriter/config/zipball/bcbe21a32abd8e2788c58e74a9bb82b676b4be5f",
+ "reference": "bcbe21a32abd8e2788c58e74a9bb82b676b4be5f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1 <8.4"
+ },
+ "require-dev": {
+ "ghostwriter/coding-standard": "dev-main"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Ghostwriter\\Config\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nathanael Esayeas",
+ "email": "nathanael.esayeas@protonmail.com",
+ "homepage": "https://github.com/ghostwriter",
+ "role": "Developer"
+ }
+ ],
+ "description": "Provides an object that maps configuration keys to values.",
+ "homepage": "https://github.com/ghostwriter/config",
+ "keywords": [
+ "config",
+ "ghostwriter"
+ ],
+ "support": {
+ "docs": "https://github.com/ghostwriter/config",
+ "forum": "https://github.com/ghostwriter/config/discussions",
+ "issues": "https://github.com/ghostwriter/config/issues",
+ "rss": "https://github.com/ghostwriter/config/releases.atom",
+ "source": "https://github.com/ghostwriter/config"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/ghostwriter",
+ "type": "github"
+ }
+ ],
+ "time": "2023-07-11T10:18:30+00:00"
+ },
+ {
+ "name": "ghostwriter/container",
+ "version": "4.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ghostwriter/container.git",
+ "reference": "a36501ae47e77441504b04500e303d118509f162"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ghostwriter/container/zipball/a36501ae47e77441504b04500e303d118509f162",
+ "reference": "a36501ae47e77441504b04500e303d118509f162",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.3"
+ },
+ "require-dev": {
+ "ghostwriter/coding-standard": "dev-main"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Ghostwriter\\Container\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nathanael Esayeas",
+ "email": "nathanael.esayeas@protonmail.com",
+ "homepage": "https://github.com/ghostwriter",
+ "role": "Developer"
+ }
+ ],
+ "description": "Provides an extensible Dependency Injection Service Container for Automated Object Composition, Interception, and Lifetime Management.",
+ "homepage": "https://github.com/ghostwriter/container",
+ "keywords": [
+ "container",
+ "ghostwriter"
+ ],
+ "support": {
+ "docs": "https://github.com/ghostwriter/container",
+ "forum": "https://github.com/ghostwriter/container/discussions",
+ "issues": "https://github.com/ghostwriter/container/issues",
+ "rss": "https://github.com/ghostwriter/container/releases.atom",
+ "security": "https://github.com/ghostwriter/container/security/advisories/new",
+ "source": "https://github.com/ghostwriter/container"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/ghostwriter",
+ "type": "github"
+ }
+ ],
+ "time": "2024-10-09T18:15:29+00:00"
+ },
+ {
+ "name": "ghostwriter/event-dispatcher",
+ "version": "5.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ghostwriter/event-dispatcher.git",
+ "reference": "3fd8e9b0714298930b2a250a4c369c05c614a33a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ghostwriter/event-dispatcher/zipball/3fd8e9b0714298930b2a250a4c369c05c614a33a",
+ "reference": "3fd8e9b0714298930b2a250a4c369c05c614a33a",
+ "shasum": ""
+ },
+ "require": {
+ "ghostwriter/container": "^4.0.2",
+ "php": ">=8.3"
+ },
+ "require-dev": {
+ "ghostwriter/coding-standard": "dev-main"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Ghostwriter\\EventDispatcher\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nathanael Esayeas",
+ "email": "nathanael.esayeas@protonmail.com",
+ "homepage": "https://github.com/ghostwriter",
+ "role": "Developer"
+ }
+ ],
+ "description": "Event Dispatcher implementation.",
+ "keywords": [
+ "event-dispatcher",
+ "ghostwriter"
+ ],
+ "support": {
+ "docs": "https://github.com/ghostwriter/event-dispatcher",
+ "forum": "https://github.com/ghostwriter/event-dispatcher/discussions",
+ "issues": "https://github.com/ghostwriter/event-dispatcher/issues",
+ "rss": "https://github.com/ghostwriter/event-dispatcher/releases.atom",
+ "security": "https://github.com/ghostwriter/event-dispatcher/security/advisories/new",
+ "source": "https://github.com/ghostwriter/event-dispatcher"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/ghostwriter",
+ "type": "github"
+ }
+ ],
+ "time": "2024-07-15T22:32:15+00:00"
+ },
+ {
+ "name": "ghostwriter/filesystem",
+ "version": "0.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ghostwriter/filesystem.git",
+ "reference": "48779b1db050cdeb3c1d9ff9752f75acd1318398"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ghostwriter/filesystem/zipball/48779b1db050cdeb3c1d9ff9752f75acd1318398",
+ "reference": "48779b1db050cdeb3c1d9ff9752f75acd1318398",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.3"
+ },
+ "require-dev": {
+ "ghostwriter/coding-standard": "dev-main"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Ghostwriter\\Filesystem\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nathanael Esayeas",
+ "email": "nathanael.esayeas@protonmail.com",
+ "homepage": "https://github.com/ghostwriter",
+ "role": "Developer"
+ }
+ ],
+ "description": "Filesystem implementation for PHP",
+ "homepage": "https://github.com/ghostwriter/filesystem",
+ "keywords": [
+ "filesystem",
+ "ghostwriter"
+ ],
+ "support": {
+ "docs": "https://github.com/ghostwriter/filesystem",
+ "forum": "https://github.com/ghostwriter/filesystem/discussions",
+ "issues": "https://github.com/ghostwriter/filesystem/issues",
+ "rss": "https://github.com/ghostwriter/filesystem/releases.atom",
+ "security": "https://github.com/ghostwriter/filesystem/security/advisories/new",
+ "source": "https://github.com/ghostwriter/filesystem"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/ghostwriter",
+ "type": "github"
+ }
+ ],
+ "time": "2024-10-10T16:28:42+00:00"
+ },
+ {
+ "name": "ghostwriter/psalm-plugin",
+ "version": "0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ghostwriter/psalm-plugin.git",
+ "reference": "c1e0e0110f2e8ad5dd3f4f8decd698dcd4803f60"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ghostwriter/psalm-plugin/zipball/c1e0e0110f2e8ad5dd3f4f8decd698dcd4803f60",
+ "reference": "c1e0e0110f2e8ad5dd3f4f8decd698dcd4803f60",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "replace": {
+ "ghostwriter/example-psalm-plugin": "*",
+ "ghostwriter/phpunit-psalm-plugin": "*"
+ },
+ "require-dev": {
+ "ghostwriter/coding-standard": "dev-main",
+ "ghostwriter/psalm-plugin-tester": "^0.2 || ^0.3 || ^1.0",
+ "psr/container": "^1.1 || ^2.0",
+ "vimeo/psalm": "^5.0 || ^6.0"
+ },
+ "type": "psalm-plugin",
+ "extra": {
+ "psalm": {
+ "pluginClass": "Ghostwriter\\PsalmPlugin\\Plugin"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Ghostwriter\\PsalmPlugin\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nathanael Esayeas",
+ "email": "nathanael.esayeas@protonmail.com",
+ "homepage": "https://github.com/ghostwriter",
+ "role": "Developer"
+ }
+ ],
+ "description": "Provides a plugin for Psalm",
+ "homepage": "https://github.com/ghostwriter/psalm-plugin",
+ "keywords": [
+ "dev",
+ "ghostwriter",
+ "psalm",
+ "psalm-plugin",
+ "static analysis"
+ ],
+ "support": {
+ "docs": "https://github.com/ghostwriter/psalm-plugin",
+ "forum": "https://github.com/ghostwriter/psalm-plugin/discussions",
+ "issues": "https://github.com/ghostwriter/psalm-plugin/issues",
+ "rss": "https://github.com/ghostwriter/psalm-plugin/releases.atom",
+ "source": "https://github.com/ghostwriter/psalm-plugin"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/ghostwriter",
+ "type": "github"
+ }
+ ],
+ "time": "2023-08-27T13:19:25+00:00"
+ },
+ {
+ "name": "ghostwriter/testify",
+ "version": "0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ghostwriter/testify.git",
+ "reference": "521ce8427315003b8a6834064dfac3408f51224d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ghostwriter/testify/zipball/521ce8427315003b8a6834064dfac3408f51224d",
+ "reference": "521ce8427315003b8a6834064dfac3408f51224d",
+ "shasum": ""
+ },
+ "require": {
+ "ghostwriter/case-converter": "^1.0.0",
+ "ghostwriter/config": "^0.4.1",
+ "ghostwriter/container": "^4.0.3",
+ "ghostwriter/event-dispatcher": "^5.0.2",
+ "ghostwriter/filesystem": "^0.1.1",
+ "php": ">=8.3"
+ },
+ "require-dev": {
+ "ghostwriter/coding-standard": "dev-main"
+ },
+ "bin": [
+ "bin/testify"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Ghostwriter\\Testify\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nathanael Esayeas",
+ "email": "nathanael.esayeas@protonmail.com",
+ "homepage": "https://github.com/ghostwriter",
+ "role": "Developer"
+ }
+ ],
+ "description": "Automated test Generation for PHP code.",
+ "homepage": "https://github.com/ghostwriter/testify",
+ "keywords": [
+ "dev",
+ "ghostwriter",
+ "testify",
+ "testing"
+ ],
+ "support": {
+ "docs": "https://github.com/ghostwriter/testify",
+ "forum": "https://github.com/ghostwriter/testify/discussions",
+ "issues": "https://github.com/ghostwriter/testify/issues",
+ "rss": "https://github.com/ghostwriter/testify/releases.atom",
+ "security": "https://github.com/ghostwriter/testify/security/advisories/new",
+ "source": "https://github.com/ghostwriter/testify"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/ghostwriter",
+ "type": "github"
+ }
+ ],
+ "time": "2024-10-10T16:46:54+00:00"
+ },
+ {
+ "name": "hamcrest/hamcrest-php",
+ "version": "v2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hamcrest/hamcrest-php.git",
+ "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
+ "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3|^7.0|^8.0"
+ },
+ "replace": {
+ "cordoval/hamcrest-php": "*",
+ "davedevelopment/hamcrest-php": "*",
+ "kodova/hamcrest-php": "*"
+ },
+ "require-dev": {
+ "phpunit/php-file-iterator": "^1.4 || ^2.0",
+ "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "hamcrest"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "This is the PHP port of Hamcrest Matchers",
+ "keywords": [
+ "test"
+ ],
+ "support": {
+ "issues": "https://github.com/hamcrest/hamcrest-php/issues",
+ "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
+ },
+ "time": "2020-07-09T08:09:16+00:00"
+ },
+ {
+ "name": "justinrainbow/json-schema",
+ "version": "5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jsonrainbow/json-schema.git",
+ "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8",
+ "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
+ "json-schema/json-schema-test-suite": "1.2.0",
+ "phpunit/phpunit": "^4.8.35"
+ },
+ "bin": [
+ "bin/validate-json"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "JsonSchema\\": "src/JsonSchema/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bruno Prieto Reis",
+ "email": "bruno.p.reis@gmail.com"
+ },
+ {
+ "name": "Justin Rainbow",
+ "email": "justin.rainbow@gmail.com"
+ },
+ {
+ "name": "Igor Wiedler",
+ "email": "igor@wiedler.ch"
+ },
+ {
+ "name": "Robert Schönthal",
+ "email": "seroscho@googlemail.com"
+ }
+ ],
+ "description": "A library to validate a json schema.",
+ "homepage": "https://github.com/justinrainbow/json-schema",
+ "keywords": [
+ "json",
+ "schema"
+ ],
+ "support": {
+ "issues": "https://github.com/jsonrainbow/json-schema/issues",
+ "source": "https://github.com/jsonrainbow/json-schema/tree/5.3.0"
+ },
+ "time": "2024-07-06T21:00:26+00:00"
+ },
+ {
+ "name": "kelunik/certificate",
+ "version": "v1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/kelunik/certificate.git",
+ "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/kelunik/certificate/zipball/7e00d498c264d5eb4f78c69f41c8bd6719c0199e",
+ "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-openssl": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "phpunit/phpunit": "^6 | 7 | ^8 | ^9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Kelunik\\Certificate\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
}
],
- "time": "2025-01-08T00:02:28+00:00"
+ "description": "Access certificate details and transform between different formats.",
+ "keywords": [
+ "DER",
+ "certificate",
+ "certificates",
+ "openssl",
+ "pem",
+ "x509"
+ ],
+ "support": {
+ "issues": "https://github.com/kelunik/certificate/issues",
+ "source": "https://github.com/kelunik/certificate/tree/v1.1.3"
+ },
+ "time": "2023-02-03T21:26:53+00:00"
},
{
- "name": "hamcrest/hamcrest-php",
- "version": "v2.0.1",
+ "name": "league/uri",
+ "version": "7.5.1",
"source": {
"type": "git",
- "url": "https://github.com/hamcrest/hamcrest-php.git",
- "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
+ "url": "https://github.com/thephpleague/uri.git",
+ "reference": "81fb5145d2644324614cc532b28efd0215bda430"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
- "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
+ "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430",
+ "reference": "81fb5145d2644324614cc532b28efd0215bda430",
"shasum": ""
},
"require": {
- "php": "^5.3|^7.0|^8.0"
+ "league/uri-interfaces": "^7.5",
+ "php": "^8.1"
},
- "replace": {
- "cordoval/hamcrest-php": "*",
- "davedevelopment/hamcrest-php": "*",
- "kodova/hamcrest-php": "*"
+ "conflict": {
+ "league/uri-schemes": "^1.0"
},
- "require-dev": {
- "phpunit/php-file-iterator": "^1.4 || ^2.0",
- "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
+ "suggest": {
+ "ext-bcmath": "to improve IPV4 host parsing",
+ "ext-fileinfo": "to create Data URI from file contennts",
+ "ext-gmp": "to improve IPV4 host parsing",
+ "ext-intl": "to handle IDN host with the best performance",
+ "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain",
+ "league/uri-components": "Needed to easily manipulate URI objects components",
+ "php-64bit": "to improve IPV4 host parsing",
+ "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1-dev"
+ "dev-master": "7.x-dev"
}
},
"autoload": {
- "classmap": [
- "hamcrest"
- ]
+ "psr-4": {
+ "League\\Uri\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
- "description": "This is the PHP port of Hamcrest Matchers",
+ "authors": [
+ {
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://nyamsprod.com"
+ }
+ ],
+ "description": "URI manipulation library",
+ "homepage": "https://uri.thephpleague.com",
"keywords": [
- "test"
+ "data-uri",
+ "file-uri",
+ "ftp",
+ "hostname",
+ "http",
+ "https",
+ "middleware",
+ "parse_str",
+ "parse_url",
+ "psr-7",
+ "query-string",
+ "querystring",
+ "rfc3986",
+ "rfc3987",
+ "rfc6570",
+ "uri",
+ "uri-template",
+ "url",
+ "ws"
],
"support": {
- "issues": "https://github.com/hamcrest/hamcrest-php/issues",
- "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
+ "docs": "https://uri.thephpleague.com",
+ "forum": "https://thephpleague.slack.com",
+ "issues": "https://github.com/thephpleague/uri-src/issues",
+ "source": "https://github.com/thephpleague/uri/tree/7.5.1"
},
- "time": "2020-07-09T08:09:16+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "time": "2024-12-08T08:40:02+00:00"
},
{
- "name": "justinrainbow/json-schema",
- "version": "5.3.0",
+ "name": "league/uri-interfaces",
+ "version": "7.5.0",
"source": {
"type": "git",
- "url": "https://github.com/jsonrainbow/json-schema.git",
- "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8"
+ "url": "https://github.com/thephpleague/uri-interfaces.git",
+ "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8",
- "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8",
+ "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742",
+ "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "ext-filter": "*",
+ "php": "^8.1",
+ "psr/http-factory": "^1",
+ "psr/http-message": "^1.1 || ^2.0"
},
- "require-dev": {
- "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
- "json-schema/json-schema-test-suite": "1.2.0",
- "phpunit/phpunit": "^4.8.35"
+ "suggest": {
+ "ext-bcmath": "to improve IPV4 host parsing",
+ "ext-gmp": "to improve IPV4 host parsing",
+ "ext-intl": "to handle IDN host with the best performance",
+ "php-64bit": "to improve IPV4 host parsing",
+ "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
},
- "bin": [
- "bin/validate-json"
- ],
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
- "JsonSchema\\": "src/JsonSchema/"
+ "League\\Uri\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -817,33 +2517,45 @@
],
"authors": [
{
- "name": "Bruno Prieto Reis",
- "email": "bruno.p.reis@gmail.com"
- },
- {
- "name": "Justin Rainbow",
- "email": "justin.rainbow@gmail.com"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
- },
- {
- "name": "Robert Schönthal",
- "email": "seroscho@googlemail.com"
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://nyamsprod.com"
}
],
- "description": "A library to validate a json schema.",
- "homepage": "https://github.com/justinrainbow/json-schema",
+ "description": "Common interfaces and classes for URI representation and interaction",
+ "homepage": "https://uri.thephpleague.com",
"keywords": [
- "json",
- "schema"
+ "data-uri",
+ "file-uri",
+ "ftp",
+ "hostname",
+ "http",
+ "https",
+ "parse_str",
+ "parse_url",
+ "psr-7",
+ "query-string",
+ "querystring",
+ "rfc3986",
+ "rfc3987",
+ "rfc6570",
+ "uri",
+ "url",
+ "ws"
],
"support": {
- "issues": "https://github.com/jsonrainbow/json-schema/issues",
- "source": "https://github.com/jsonrainbow/json-schema/tree/5.3.0"
+ "docs": "https://uri.thephpleague.com",
+ "forum": "https://thephpleague.slack.com",
+ "issues": "https://github.com/thephpleague/uri-src/issues",
+ "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0"
},
- "time": "2024-07-06T21:00:26+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "time": "2024-12-08T08:18:47+00:00"
},
{
"name": "mockery/mockery",
@@ -988,6 +2700,57 @@
],
"time": "2024-11-08T17:47:46+00:00"
},
+ {
+ "name": "netresearch/jsonmapper",
+ "version": "v4.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cweiske/jsonmapper.git",
+ "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8e76efb98ee8b6afc54687045e1b8dba55ac76e5",
+ "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5",
+ "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.5.0"
+ },
+ "time": "2024-09-08T10:13:13+00:00"
+ },
{
"name": "nikic/php-parser",
"version": "v5.4.0",
@@ -1157,12 +2920,234 @@
"role": "Developer"
}
],
- "description": "Library for handling version information and constraints",
+ "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.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8",
+ "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/deprecations": "^1.1",
+ "ext-filter": "*",
+ "php": "^7.4 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.7",
+ "phpstan/phpdoc-parser": "^1.7|^2.0",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.5 || ~1.6.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-webmozart-assert": "^1.2",
+ "phpunit/phpunit": "^9.5",
+ "psalm/phar": "^5.26"
+ },
+ "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": "opensource@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.6.1"
+ },
+ "time": "2024-12-07T09:39:29+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a",
+ "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/deprecations": "^1.0",
+ "php": "^7.3 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0",
+ "phpstan/phpdoc-parser": "^1.18|^2.0"
+ },
+ "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.10.0"
+ },
+ "time": "2024-11-09T15:12:26+00:00"
+ },
+ {
+ "name": "phpstan/phpdoc-parser",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299",
+ "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^2.0",
+ "nikic/php-parser": "^5.3.0",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^2.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpstan/phpstan-strict-rules": "^2.0",
+ "phpunit/phpunit": "^9.6",
+ "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/phar-io/version/issues",
- "source": "https://github.com/phar-io/version/tree/3.2.1"
+ "issues": "https://github.com/phpstan/phpdoc-parser/issues",
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0"
},
- "time": "2022-02-21T01:04:05+00:00"
+ "time": "2024-10-13T11:29:49+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -1489,16 +3474,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "11.5.2",
+ "version": "11.5.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3"
+ "reference": "3c3ae14c90f244cdda95028c3e469028e8d1c02c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/153d0531b9f7e883c5053160cad6dd5ac28140b3",
- "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3c3ae14c90f244cdda95028c3e469028e8d1c02c",
+ "reference": "3c3ae14c90f244cdda95028c3e469028e8d1c02c",
"shasum": ""
},
"require": {
@@ -1519,7 +3504,7 @@
"phpunit/php-timer": "^7.0.1",
"sebastian/cli-parser": "^3.0.2",
"sebastian/code-unit": "^3.0.2",
- "sebastian/comparator": "^6.2.1",
+ "sebastian/comparator": "^6.3.0",
"sebastian/diff": "^6.0.2",
"sebastian/environment": "^7.2.0",
"sebastian/exporter": "^6.3.0",
@@ -1570,7 +3555,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.2"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.6"
},
"funding": [
{
@@ -1586,7 +3571,7 @@
"type": "tidelift"
}
],
- "time": "2024-12-21T05:51:08+00:00"
+ "time": "2025-01-31T07:03:30+00:00"
},
{
"name": "psr/container",
@@ -1641,6 +3626,114 @@
},
"time": "2021-11-05T16:47:00+00:00"
},
+ {
+ "name": "psr/http-factory",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory"
+ },
+ "time": "2024-04-15T12:06:14+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
+ },
+ "time": "2023-04-04T09:54:51+00:00"
+ },
{
"name": "psr/log",
"version": "3.0.2",
@@ -1764,6 +3857,78 @@
],
"time": "2024-05-24T10:39:05+00:00"
},
+ {
+ "name": "revolt/event-loop",
+ "version": "v1.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/revoltphp/event-loop.git",
+ "reference": "25de49af7223ba039f64da4ae9a28ec2d10d0254"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/25de49af7223ba039f64da4ae9a28ec2d10d0254",
+ "reference": "25de49af7223ba039f64da4ae9a28ec2d10d0254",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "ext-json": "*",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "^5.15"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Revolt\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "ceesjank@gmail.com"
+ },
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "Rock-solid event loop for concurrent PHP applications.",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "concurrency",
+ "event",
+ "event-loop",
+ "non-blocking",
+ "scheduler"
+ ],
+ "support": {
+ "issues": "https://github.com/revoltphp/event-loop/issues",
+ "source": "https://github.com/revoltphp/event-loop/tree/v1.0.6"
+ },
+ "time": "2023-11-30T05:34:44+00:00"
+ },
{
"name": "sebastian/cli-parser",
"version": "3.0.2",
@@ -2863,6 +5028,74 @@
},
"time": "2023-09-03T09:24:00+00:00"
},
+ {
+ "name": "spatie/array-to-xml",
+ "version": "3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/array-to-xml.git",
+ "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67",
+ "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.2",
+ "pestphp/pest": "^1.21",
+ "spatie/pest-plugin-snapshots": "^1.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Spatie\\ArrayToXml\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "homepage": "https://freek.dev",
+ "role": "Developer"
+ }
+ ],
+ "description": "Convert an array to xml",
+ "homepage": "https://github.com/spatie/array-to-xml",
+ "keywords": [
+ "array",
+ "convert",
+ "xml"
+ ],
+ "support": {
+ "source": "https://github.com/spatie/array-to-xml/tree/3.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2024-12-16T12:45:15+00:00"
+ },
{
"name": "staabm/side-effects-detector",
"version": "1.0.5",
@@ -3988,16 +6221,16 @@
},
{
"name": "symfony/var-dumper",
- "version": "v7.2.0",
+ "version": "v7.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c"
+ "reference": "82b478c69745d8878eb60f9a049a4d584996f73a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6a22929407dec8765d6e2b6ff85b800b245879c",
- "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82b478c69745d8878eb60f9a049a4d584996f73a",
+ "reference": "82b478c69745d8878eb60f9a049a4d584996f73a",
"shasum": ""
},
"require": {
@@ -4051,7 +6284,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.2.0"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.2.3"
},
"funding": [
{
@@ -4067,7 +6300,7 @@
"type": "tidelift"
}
],
- "time": "2024-11-08T15:48:14+00:00"
+ "time": "2025-01-17T11:39:41+00:00"
},
{
"name": "theseer/tokenizer",
@@ -4118,12 +6351,187 @@
}
],
"time": "2024-03-03T12:36:25+00:00"
+ },
+ {
+ "name": "vimeo/psalm",
+ "version": "6.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vimeo/psalm.git",
+ "reference": "827971f8bc7a28bb4f842f34bf8901521de1cea3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/827971f8bc7a28bb4f842f34bf8901521de1cea3",
+ "reference": "827971f8bc7a28bb4f842f34bf8901521de1cea3",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^3",
+ "amphp/byte-stream": "^2",
+ "amphp/parallel": "^2.3",
+ "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.3",
+ "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": "^5.0.0",
+ "php": "~8.1.17 || ~8.2.4 || ~8.3.0 || ~8.4.0",
+ "sebastian/diff": "^4.0 || ^5.0 || ^6.0",
+ "spatie/array-to-xml": "^2.17.0 || ^3.0",
+ "symfony/console": "^6.0 || ^7.0",
+ "symfony/filesystem": "^6.0 || ^7.0"
+ },
+ "provide": {
+ "psalm/psalm": "self.version"
+ },
+ "require-dev": {
+ "amphp/phpunit-util": "^3",
+ "bamarni/composer-bin-plugin": "^1.4",
+ "brianium/paratest": "^6.9",
+ "dg/bypass-finals": "^1.5",
+ "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.19",
+ "slevomat/coding-standard": "^8.4",
+ "squizlabs/php_codesniffer": "^3.6",
+ "symfony/process": "^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-1.x": "1.x-dev",
+ "dev-2.x": "2.x-dev",
+ "dev-3.x": "3.x-dev",
+ "dev-4.x": "4.x-dev",
+ "dev-5.x": "5.x-dev",
+ "dev-6.x": "6.x-dev",
+ "dev-master": "7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psalm\\": "src/Psalm/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthew Brown"
+ },
+ {
+ "name": "Daniil Gentili",
+ "email": "daniil@daniil.it"
+ }
+ ],
+ "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": "2025-01-30T19:33:41+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.11.0"
+ },
+ "time": "2022-06-03T18:03:27+00:00"
}
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
- "ghostwriter/coding-standard": 20
+ "ghostwriter/coding-standard": 20,
+ "ghostwriter/psalm-plugin": 20,
+ "ghostwriter/testify": 20
},
"prefer-stable": true,
"prefer-lowest": false,
@@ -4131,7 +6539,7 @@
"php": ">=8.3",
"ext-mbstring": "*"
},
- "platform-dev": {},
+ "platform-dev": [],
"platform-overrides": {
"php": "8.3.999"
},
diff --git a/infection.json5.dist b/infection.json5.dist
index 246c04e..515d7ef 100644
--- a/infection.json5.dist
+++ b/infection.json5.dist
@@ -1,12 +1,11 @@
{
- "$schema": "https://raw.githubusercontent.com/infection/infection/0.29.6/resources/schema.json",
+ "$schema": "https://raw.githubusercontent.com/infection/infection/0.29.10/resources/schema.json",
"source": {
"directories": [
- "src",
- "tests"
+ "src"
],
"excludes": [
- "tests/Fixture",
+ "tests",
"vendor"
]
},
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index f8f1480..24b8f67 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -1,6 +1,7 @@
-
-
-
-
+
+
+
+
+
+
- tests
- tests/Fixture
+ tests/unit
+ tests/fixture
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
deleted file mode 100644
index 7bf39a8..0000000
--- a/psalm-baseline.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/psalm.xml.dist b/psalm.xml.dist
deleted file mode 100644
index b61b40e..0000000
--- a/psalm.xml.dist
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/CaseConverter.php b/src/CaseConverter.php
index ad20fd8..b3da071 100644
--- a/src/CaseConverter.php
+++ b/src/CaseConverter.php
@@ -24,25 +24,20 @@
use function str_contains;
use function ucfirst;
-/**
- * @psalm-immutable
- *
- * @psalm-pure
- */
final readonly class CaseConverter implements CaseConverterInterface
{
/**
- * @var pure-Closure(string):string
+ * @var Closure(string):string
*/
private Closure $lower;
/**
- * @var pure-Closure(string):string
+ * @var Closure(string):string
*/
private Closure $title;
/**
- * @var pure-Closure(string):string
+ * @var Closure(string):string
*/
private Closure $upper;
@@ -53,7 +48,14 @@ public function __construct()
$this->title = static fn (string $word): string => mb_convert_case($word, MB_CASE_TITLE, 'UTF-8');
}
+ public static function new(): self
+ {
+ return new self();
+ }
+
/**
+ * eg. The_Quick_Brown_Fox_Jumps_Over_The_Lazy_Dog.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -63,6 +65,8 @@ public function adaCase(string $string): string
}
/**
+ * eg. theQuickBrownFoxJumpsOverTheLazyDog.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -72,6 +76,8 @@ public function camelCase(string $string): string
}
/**
+ * eg. THE-QUICK-BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -81,6 +87,8 @@ public function cobolCase(string $string): string
}
/**
+ * eg. the.quick.brown.fox.jumps.over.the.lazy.dog.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -90,6 +98,8 @@ public function dotCase(string $string): string
}
/**
+ * eg. the-quick-brown-fox-jumps-over-the-lazy-dog.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -99,6 +109,8 @@ public function kebabCase(string $string): string
}
/**
+ * eg. the quick brown fox jumps over the lazy dog.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -108,6 +120,8 @@ public function lowerCase(string $string): string
}
/**
+ * eg. THE_QUICK_BROWN_FOX_JUMPS_OVER_THE_LAZY_DOG.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -117,6 +131,8 @@ public function macroCase(string $string): string
}
/**
+ * eg. TheQuickBrownFoxJumpsOverTheLazyDog.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -126,6 +142,8 @@ public function pascalCase(string $string): string
}
/**
+ * eg. The quick brown fox jumps over the lazy dog.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -135,6 +153,8 @@ public function sentenceCase(string $string): string
}
/**
+ * eg. the_quick_brown_fox_jumps_over_the_lazy_dog.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -144,6 +164,8 @@ public function snakeCase(string $string): string
}
/**
+ * eg. The Quick Brown Fox Jumps Over The Lazy Dog.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -153,6 +175,8 @@ public function titleCase(string $string): string
}
/**
+ * eg. The-Quick-Brown-Fox-Jumps-Over-The-Lazy-Dog.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -162,6 +186,8 @@ public function trainCase(string $string): string
}
/**
+ * eg. THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.
+ *
* @throws FailedToSplitStringException
*/
#[Override]
@@ -171,8 +197,8 @@ public function upperCase(string $string): string
}
/**
- * @param list $words
- * @param pure-Closure(string):string $converter
+ * @param list $words
+ * @param Closure(string):string $converter
*/
private function glueDash(array $words, Closure $converter): string
{
@@ -180,8 +206,8 @@ private function glueDash(array $words, Closure $converter): string
}
/**
- * @param list $words
- * @param pure-Closure(string):string $converter
+ * @param list $words
+ * @param Closure(string):string $converter
*/
private function glueDot(array $words, Closure $converter): string
{
@@ -189,8 +215,8 @@ private function glueDot(array $words, Closure $converter): string
}
/**
- * @param list $words
- * @param pure-Closure(string):string $converter
+ * @param list $words
+ * @param Closure(string):string $converter
*/
private function glueSpace(array $words, Closure $converter): string
{
@@ -198,8 +224,8 @@ private function glueSpace(array $words, Closure $converter): string
}
/**
- * @param list $words
- * @param pure-Closure(string):string $converter
+ * @param list $words
+ * @param Closure(string):string $converter
*/
private function glueUnderscore(array $words, Closure $converter): string
{
@@ -207,33 +233,30 @@ private function glueUnderscore(array $words, Closure $converter): string
}
/**
- * @param list $words
- * @param pure-Closure(string):string $converter
+ * @param list $words
+ * @param Closure(string):string $converter
*/
private function glueUppercase(array $words, Closure $converter): string
{
return implode('', $this->map($converter, $words));
}
- /**
- * @psalm-pure
- */
private function isUppercaseWord(string $string): bool
{
return preg_match('#^\p{Lu}+$#u', $string) === 1;
}
/**
- * @param pure-Closure(string):string $converter
- * @param list $words
+ * @param Closure(string):string $converter
+ * @param list $words
*
* @return list
*/
private function map(Closure $converter, array $words): array
{
/**
- * @var pure-Closure(string):string $converter
- * @var list $words
+ * @var Closure(string):string $converter
+ * @var list $words
*
* @return list
*/
@@ -247,27 +270,14 @@ private function map(Closure $converter, array $words): array
*/
private function split(string $string): array
{
- if (str_contains($string, '_')) {
- return $this->splitUnderscore($string);
- }
-
- if (str_contains($string, '-')) {
- return $this->splitDash($string);
- }
-
- if (str_contains($string, ' ')) {
- return $this->splitSpace($string);
- }
-
- if (str_contains($string, '.')) {
- return $this->splitDot($string);
- }
-
- if ($this->isUppercaseWord($string)) {
- return $this->splitUnderscore($string);
- }
-
- return $this->splitUppercase($string);
+ return match (true) {
+ str_contains($string, '_') => $this->splitUnderscore($string),
+ str_contains($string, '-') => $this->splitDash($string),
+ str_contains($string, ' ') => $this->splitSpace($string),
+ str_contains($string, '.') => $this->splitDot($string),
+ $this->isUppercaseWord($string) => $this->splitUnderscore($string),
+ default => $this->splitUppercase($string),
+ };
}
/**
@@ -317,7 +327,7 @@ private function splitUnderscore(string $string): array
*/
private function splitUppercase(string $string): array
{
- return $this->words($string, '#(?=\p{Lu}{1})#u');
+ return $this->words($string, '#(?=\p{Lu})#u');
}
/**
@@ -333,16 +343,11 @@ private function words(string $string, string $pattern): array
*/
$words = preg_split($pattern, $string, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
- if ($words === false) {
+ if (false === $words) {
throw new FailedToSplitStringException($string . ' | ' . $pattern);
}
/** @return list */
return $words;
}
-
- public static function new(): self
- {
- return new self();
- }
}
diff --git a/src/Exception/FailedToSplitStringException.php b/src/Exception/FailedToSplitStringException.php
index 1eb25a6..31f3cd1 100644
--- a/src/Exception/FailedToSplitStringException.php
+++ b/src/Exception/FailedToSplitStringException.php
@@ -7,6 +7,4 @@
use Ghostwriter\CaseConverter\Interface\Exception\CaseConverterExceptionInterface;
use RuntimeException;
-final class FailedToSplitStringException extends RuntimeException implements CaseConverterExceptionInterface
-{
-}
+final class FailedToSplitStringException extends RuntimeException implements CaseConverterExceptionInterface {}
diff --git a/src/Interface/Exception/CaseConverterExceptionInterface.php b/src/Interface/Exception/CaseConverterExceptionInterface.php
index c800802..d345d9e 100644
--- a/src/Interface/Exception/CaseConverterExceptionInterface.php
+++ b/src/Interface/Exception/CaseConverterExceptionInterface.php
@@ -6,6 +6,4 @@
use Throwable;
-interface CaseConverterExceptionInterface extends Throwable
-{
-}
+interface CaseConverterExceptionInterface extends Throwable {}
diff --git a/tests/Unit/CaseConverterTest.php b/tests/Unit/CaseConverterTest.php
deleted file mode 100644
index 01bb323..0000000
--- a/tests/Unit/CaseConverterTest.php
+++ /dev/null
@@ -1,144 +0,0 @@
-adaCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToCamelCase(string $string): void
- {
- self::assertSame(self::CAMELCASE, CaseConverter::new()->camelCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToCobolCase(string $string): void
- {
- self::assertSame(self::COBOLCASE, CaseConverter::new()->cobolCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToDotCase(string $string): void
- {
- self::assertSame(self::DOTCASE, CaseConverter::new()->dotCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToKebabCase(string $string): void
- {
- self::assertSame(self::KEBABCASE, CaseConverter::new()->kebabCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToLowerCase(string $string): void
- {
- self::assertSame(self::LOWERCASE, CaseConverter::new()->lowerCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToMacroCase(string $string): void
- {
- self::assertSame(self::MACROCASE, CaseConverter::new()->macroCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToPascalCase(string $string): void
- {
- self::assertSame(self::PASCALCASE, CaseConverter::new()->pascalCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToSentenceCase(string $string): void
- {
- self::assertSame(self::SENTENCECASE, CaseConverter::new()->sentenceCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToSnakeCase(string $string): void
- {
- self::assertSame(self::SNAKECASE, CaseConverter::new()->snakeCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToTitleCase(string $string): void
- {
- self::assertSame(self::TITLECASE, CaseConverter::new()->titleCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToTrainCase(string $string): void
- {
- self::assertSame(self::TRAINCASE, CaseConverter::new()->trainCase($string));
- }
-
- #[DataProvider('dataProviderFrom')]
- public function testToUpperCase(string $string): void
- {
- self::assertSame(self::UPPERCASE, CaseConverter::new()->upperCase($string));
- }
-
- public static function dataProviderFrom(): Generator
- {
- foreach (self::CASES as $case) {
- yield 'From ' . $case => [$case];
- }
- }
-}
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
new file mode 100644
index 0000000..00b1c05
--- /dev/null
+++ b/tests/bootstrap.php
@@ -0,0 +1,31 @@
+addPsr4('Tests\\Fixture\\', $fixturePath);
+
+/**
+ * when test fixtures have multiple namespaces.
+ *
+ * @psalm-suppress UncaughtThrowInGlobalScope
+ */
+$classLoader->addPsr4('', $fixturePath);
+
+return $classLoader;
diff --git a/tests/Fixture/.gitkeep b/tests/fixture/.gitkeep
similarity index 100%
rename from tests/Fixture/.gitkeep
rename to tests/fixture/.gitkeep
diff --git a/tests/unit/CaseConverterTest.php b/tests/unit/CaseConverterTest.php
new file mode 100644
index 0000000..9ae77e5
--- /dev/null
+++ b/tests/unit/CaseConverterTest.php
@@ -0,0 +1,153 @@
+caseConverter = CaseConverter::new();
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToAdaCase(string $string): void
+ {
+ self::assertSame(self::ADA_CASE, $this->caseConverter->toAdaCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToCamelCase(string $string): void
+ {
+ self::assertSame(self::CAMEL_CASE, $this->caseConverter->toCamelCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToCobolCase(string $string): void
+ {
+ self::assertSame(self::COBOL_CASE, $this->caseConverter->toCobolCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToDotCase(string $string): void
+ {
+ self::assertSame(self::DOT_CASE, $this->caseConverter->toDotCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToKebabCase(string $string): void
+ {
+ self::assertSame(self::KEBAB_CASE, $this->caseConverter->toKebabCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToLowerCase(string $string): void
+ {
+ self::assertSame(self::LOWER_CASE, $this->caseConverter->toLowerCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToMacroCase(string $string): void
+ {
+ self::assertSame(self::MACRO_CASE, $this->caseConverter->toMacroCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToPascalCase(string $string): void
+ {
+ self::assertSame(self::PASCAL_CASE, $this->caseConverter->toPascalCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToSentenceCase(string $string): void
+ {
+ self::assertSame(self::SENTENCE_CASE, $this->caseConverter->toSentenceCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToSnakeCase(string $string): void
+ {
+ self::assertSame(self::SNAKE_CASE, $this->caseConverter->toSnakeCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToTitleCase(string $string): void
+ {
+ self::assertSame(self::TITLE_CASE, $this->caseConverter->toTitleCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToTrainCase(string $string): void
+ {
+ self::assertSame(self::TRAIN_CASE, $this->caseConverter->toTrainCase($string));
+ }
+
+ #[DataProvider('dataProviderFrom')]
+ public function testToUpperCase(string $string): void
+ {
+ self::assertSame(self::UPPER_CASE, $this->caseConverter->toUpperCase($string));
+ }
+
+ public static function dataProviderFrom(): Generator
+ {
+ foreach (self::CASES as $case) {
+ yield 'From ' . $case => [$case];
+ }
+ }
+}
diff --git a/tests/Unit/Exception/FailedToSplitStringExceptionTest.php b/tests/unit/Exception/FailedToSplitStringExceptionTest.php
similarity index 100%
rename from tests/Unit/Exception/FailedToSplitStringExceptionTest.php
rename to tests/unit/Exception/FailedToSplitStringExceptionTest.php