diff --git a/.docs/stdio-terminal.png b/.docs/stdio-terminal.png
new file mode 100644
index 0000000..188a001
Binary files /dev/null and b/.docs/stdio-terminal.png differ
diff --git a/.docs/stdio.png b/.docs/stdio.png
new file mode 100644
index 0000000..020a789
Binary files /dev/null and b/.docs/stdio.png differ
diff --git a/.docs/streamable-terminal.png b/.docs/streamable-terminal.png
new file mode 100644
index 0000000..cb0b615
Binary files /dev/null and b/.docs/streamable-terminal.png differ
diff --git a/.docs/streamable.png b/.docs/streamable.png
new file mode 100644
index 0000000..a045f25
Binary files /dev/null and b/.docs/streamable.png differ
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..9ddafdc
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,16 @@
+# EditorConfig is awesome: http://EditorConfig.org
+
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+indent_style = tab
+indent_size = tab
+tab_width = 4
+
+[*.{json,yaml,yml,md}]
+indent_style = space
+indent_size = 2
\ No newline at end of file
diff --git a/.github/.kodiak.toml b/.github/.kodiak.toml
new file mode 100644
index 0000000..60c34b6
--- /dev/null
+++ b/.github/.kodiak.toml
@@ -0,0 +1,10 @@
+version = 1
+
+[merge]
+automerge_label = "automerge"
+blacklist_title_regex = "^WIP.*"
+blacklist_labels = ["WIP"]
+method = "rebase"
+delete_branch_on_merge = true
+notify_on_conflict = true
+optimistic_updates = false
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..0f0dadb
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,9 @@
+version: 2
+updates:
+ - package-ecosystem: composer
+ directory: "/"
+ schedule:
+ interval: daily
+ labels:
+ - "dependencies"
+ - "automerge"
diff --git a/.github/workflows/codesniffer.yml b/.github/workflows/codesniffer.yml
new file mode 100644
index 0000000..590394f
--- /dev/null
+++ b/.github/workflows/codesniffer.yml
@@ -0,0 +1,18 @@
+name: "Codesniffer"
+
+on:
+ pull_request:
+ workflow_dispatch:
+
+ push:
+ branches: ["*"]
+
+ schedule:
+ - cron: "0 8 * * 1"
+
+jobs:
+ codesniffer:
+ name: "Codesniffer"
+ uses: contributte/.github/.github/workflows/codesniffer.yml@master
+ with:
+ php: "8.4"
diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml
new file mode 100644
index 0000000..189d28e
--- /dev/null
+++ b/.github/workflows/coverage.yml
@@ -0,0 +1,19 @@
+name: "Coverage"
+
+on:
+ pull_request:
+ workflow_dispatch:
+
+ push:
+ branches: ["*"]
+
+ schedule:
+ - cron: "0 8 * * 1"
+
+jobs:
+ coverage:
+ name: "Nette Tester"
+ uses: contributte/.github/.github/workflows/nette-tester-coverage-v2.yml@master
+ with:
+ php: "8.4"
+ make: "init coverage"
diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml
new file mode 100644
index 0000000..3c3eda4
--- /dev/null
+++ b/.github/workflows/phpstan.yml
@@ -0,0 +1,19 @@
+name: "Phpstan"
+
+on:
+ pull_request:
+ workflow_dispatch:
+
+ push:
+ branches: ["*"]
+
+ schedule:
+ - cron: "0 8 * * 1"
+
+jobs:
+ phpstan:
+ name: "Phpstan"
+ uses: contributte/.github/.github/workflows/phpstan.yml@master
+ with:
+ php: "8.4"
+ make: "init phpstan"
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644
index 0000000..d14f0c7
--- /dev/null
+++ b/.github/workflows/tests.yml
@@ -0,0 +1,26 @@
+name: "Nette Tester"
+
+on:
+ pull_request:
+ workflow_dispatch:
+
+ push:
+ branches: [ "*" ]
+
+ schedule:
+ - cron: "0 8 * * 1"
+
+jobs:
+ test85:
+ name: "Nette Tester"
+ uses: contributte/.github/.github/workflows/nette-tester.yml@master
+ with:
+ php: "8.5"
+ make: "init tests"
+
+ test84:
+ name: "Nette Tester"
+ uses: contributte/.github/.github/workflows/nette-tester.yml@master
+ with:
+ php: "8.4"
+ make: "init tests"
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b57db54
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+# IDE
+.idea
+
+# Composer
+/vendor
+
+# Nette
+/var/
+/config/local.neon
+
+# Docker
+/.data
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..9a5001e
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Contributte
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..bc614cf
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,88 @@
+############################################################
+# PROJECT ##################################################
+############################################################
+.PHONY: project
+project: install setup
+
+.PHONY: init
+init:
+ cp config/local.neon.example config/local.neon
+
+.PHONY: install
+install:
+ composer install
+
+.PHONY: setup
+setup:
+ mkdir -p var/tmp var/log
+ chmod 0777 var/tmp var/log
+
+.PHONY: clean
+clean:
+ find var/tmp -mindepth 1 ! -name '.gitignore' -type f,d -exec rm -rf {} +
+ find var/log -mindepth 1 ! -name '.gitignore' -type f,d -exec rm -rf {} +
+
+############################################################
+# DEVELOPMENT ##############################################
+############################################################
+.PHONY: qa
+qa: cs phpstan
+
+.PHONY: cs
+cs:
+ vendor/bin/codesniffer app tests
+
+.PHONY: csf
+csf:
+ vendor/bin/codefixer app tests
+
+.PHONY: phpstan
+phpstan:
+ vendor/bin/phpstan analyse -c phpstan.neon --memory-limit=512M
+
+.PHONY: tests
+tests:
+ vendor/bin/tester -s -p php --colors 1 -C tests
+
+.PHONY: coverage
+coverage:
+ vendor/bin/tester -s -p phpdbg --colors 1 -C --coverage ./coverage.xml --coverage-src ./app tests
+
+.PHONY: dev
+dev:
+ NETTE_DEBUG=1 NETTE_ENV=dev php -S 0.0.0.0:8080 -t www
+
+.PHONY: build
+build:
+ echo "OK"
+
+############################################################
+# MCP ######################################################
+############################################################
+.PHONY: inspector
+inspector: mcp-inspect ## Alias for mcp-inspect
+
+.PHONY: mcp-inspect
+mcp-inspect: ## Run MCP inspector
+ npx @modelcontextprotocol/inspector
+
+.PHONY: mcp-stdio
+mcp-stdio: ## Run MCP inspector for stdio server
+ npx @modelcontextprotocol/inspector php bin/console mcp:server
+
+############################################################
+# DOCKER ###################################################
+############################################################
+.PHONY: docker-up
+docker-up:
+ docker compose up
+
+############################################################
+# DEPLOYMENT ###############################################
+############################################################
+.PHONY: deploy
+deploy:
+ $(MAKE) clean
+ $(MAKE) project
+ $(MAKE) build
+ $(MAKE) clean
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0dab114
--- /dev/null
+++ b/README.md
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Website 🚀 contributte.org | Contact 👨🏻💻 f3l1x.io | Twitter 🐦 @contributte
+
+
+-----
+
+# MCP Skeleton
+
+Example project demonstrating integration of **Model Context Protocol (MCP)** for **Nette Framework** using `contributte/mcp`.
+
+The MCP integration is based on the upstream documentation: [contributte/mcp docs](https://github.com/contributte/mcp/tree/master/.docs).
+
+
+
+## Requirements
+
+- PHP 8.4+
+- Composer
+- Node.js (only for MCP inspector via `npx`)
+
+## Installation
+
+```bash
+composer install
+```
+
+## Usage
+
+This skeleton registers a single MCP server named `default` and uses **attribute auto-discovery** from `app/Domain/Mcp`.
+
+**Capabilities:**
+
+- Tools:
+ - `calculator_add`
+ - `calculator_multiply`
+- Resources:
+ - `app://config`
+ - `file://readme`
+- Resource templates:
+ - `app://users/{id}`
+- Prompts:
+ - `code_review`
+ - `explain_code`
+
+### Streamable HTTP server
+
+1. Start inspector: `make inspector`
+2. Open the inspector in your browser and connect to `http://localhost:8080/mcp`.
+
+#### Manual
+
+1. Start inspector: `make inspector` (or `make mcp-stdio` to auto-run the STDIO server)
+2. Open the inspector in your browser and do work.
+
+## Screenshots
+
+### STDIO
+
+
+
+
+
+### Streamable HTTP
+
+
+
+
+
+
+## Development
+
+See [how to contribute](https://contributte.org/contributing.html) to this package.
+
+This package is currently maintaining by these authors.
+
+
+
+
+
+-----
+
+Consider to [support](https://contributte.org/partners.html) **contributte** development team. Also thank you for using this project.
diff --git a/app/Bootstrap.php b/app/Bootstrap.php
new file mode 100644
index 0000000..341631f
--- /dev/null
+++ b/app/Bootstrap.php
@@ -0,0 +1,28 @@
+use(NellaPreset::create(__DIR__))
+ ->boot();
+ }
+
+ public static function run(): void
+ {
+ self::boot()
+ ->createContainer()
+ ->getByType(Application::class)
+ ->run();
+ }
+
+}
diff --git a/app/Domain/Mcp/CalculatorTool.php b/app/Domain/Mcp/CalculatorTool.php
new file mode 100644
index 0000000..cae47ea
--- /dev/null
+++ b/app/Domain/Mcp/CalculatorTool.php
@@ -0,0 +1,22 @@
+ 'default',
+ 'version' => '1.0.0',
+ ], JSON_THROW_ON_ERROR);
+ }
+
+ #[McpResource(
+ uri: 'file://readme',
+ name: 'Readme',
+ description: 'Project readme file',
+ mimeType: 'text/markdown',
+ )]
+ public function getReadme(): string
+ {
+ $readme = __DIR__ . '/../../../README.md';
+
+ if (!is_file($readme)) {
+ return '# README not found';
+ }
+
+ $content = file_get_contents($readme);
+
+ return $content !== false ? $content : '# README not readable';
+ }
+}
+
+
diff --git a/app/Domain/Mcp/UserResourceTemplate.php b/app/Domain/Mcp/UserResourceTemplate.php
new file mode 100644
index 0000000..240f221
--- /dev/null
+++ b/app/Domain/Mcp/UserResourceTemplate.php
@@ -0,0 +1,45 @@
+ [
+ 'id' => 1,
+ 'name' => 'Alice',
+ 'email' => 'alice@example.com',
+ ],
+ 2 => [
+ 'id' => 2,
+ 'name' => 'Bob',
+ 'email' => 'bob@example.com',
+ ],
+ ];
+
+ $user = $users[$userId] ?? null;
+ if ($user === null) {
+ throw new ResourceReadException(sprintf('User "%d" not found.', $userId));
+ }
+
+ return $user;
+ }
+}
+
diff --git a/app/Model/Exception/LogicalException.php b/app/Model/Exception/LogicalException.php
new file mode 100644
index 0000000..28a286a
--- /dev/null
+++ b/app/Model/Exception/LogicalException.php
@@ -0,0 +1,10 @@
+/', 'Home:default');
+
+ return $router;
+ }
+}
\ No newline at end of file
diff --git a/app/UI/@Templates/@layout.latte b/app/UI/@Templates/@layout.latte
new file mode 100644
index 0000000..4d87c69
--- /dev/null
+++ b/app/UI/@Templates/@layout.latte
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ {block #title|striptags}MCP Skeleton{/}
+
+
+
+
+
+
+
+
+
+ Contributte / MCP Skeleton
+
+
+
+
+
+ {$flash->message}
+
+
+
+
+ {include #content}
+
+
+
+
+
+
+
+
+
+
diff --git a/app/UI/BasePresenter.php b/app/UI/BasePresenter.php
new file mode 100644
index 0000000..ae2bbf7
--- /dev/null
+++ b/app/UI/BasePresenter.php
@@ -0,0 +1,10 @@
+template->serverName = 'default';
+ $this->template->tools = [
+ 'calculator_add',
+ 'calculator_multiply',
+ ];
+ $this->template->resources = [
+ 'app://config',
+ 'file://readme',
+ ];
+ $this->template->prompts = [
+ 'code_review',
+ 'explain_code',
+ ];
+ }
+
+}
diff --git a/app/UI/Home/Templates/default.latte b/app/UI/Home/Templates/default.latte
new file mode 100644
index 0000000..59c42f6
--- /dev/null
+++ b/app/UI/Home/Templates/default.latte
@@ -0,0 +1,49 @@
+{block #content}
+
+
+ This project demonstrates Model Context Protocol (MCP) integration for Nette using contributte/mcp.
+
+
+
+
+
Run MCP server (stdio)
+
php bin/console mcp:server --server={$serverName}
+
+
+
+
Inspect with MCP Inspector
+
make mcp-stdio
+
+
+
+
HTTP Endpoints
+
+ /mcp — MCP server endpoint (SSE transport)
+ /mcp?debug=1 — MCP server endpoint with debug mode enabled
+
+
+
+
+
+
diff --git a/bin/console b/bin/console
new file mode 100755
index 0000000..5276841
--- /dev/null
+++ b/bin/console
@@ -0,0 +1,11 @@
+#!/usr/bin/env php
+createContainer()
+ ->getByType(Symfony\Component\Console\Application::class)
+ ->run();
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..306ca7b
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,48 @@
+{
+ "name": "contributte/mcp-skeleton",
+ "description": "Example integration of Model Context Protocol (MCP) for Nette Framework",
+ "keywords": [
+ "nette",
+ "skeleton",
+ "project",
+ "mcp",
+ "model-context-protocol"
+ ],
+ "license": "MIT",
+ "type": "project",
+ "require": {
+ "php": ">=8.4",
+ "contributte/nella": "^0.3.0",
+
+ "contributte/console": "^0.11.0",
+ "contributte/event-dispatcher": "^0.10.0",
+ "contributte/mcp": "^0.1.0"
+ },
+ "require-dev": {
+ "contributte/qa": "^0.4",
+ "contributte/dev": "^0.5",
+ "contributte/tester": "^0.4",
+ "contributte/phpstan": "^0.2",
+ "mockery/mockery": "^1.6.12",
+ "phpstan/phpstan": "^2.1.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "App\\": "app"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Tests\\": "tests"
+ }
+ },
+ "prefer-stable": true,
+ "minimum-stability": "dev",
+ "config": {
+ "sort-packages": true,
+ "allow-plugins": {
+ "dealerdirect/phpcodesniffer-composer-installer": true,
+ "php-http/discovery": true
+ }
+ }
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..c9f35d0
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,5450 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "0f1a910e337633806dbc004e49f7cb76",
+ "packages": [
+ {
+ "name": "contributte/application",
+ "version": "v0.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/application.git",
+ "reference": "691f106e56d6dbb0c88b8b073196ac8cdb3d97a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/application/zipball/691f106e56d6dbb0c88b8b073196ac8cdb3d97a1",
+ "reference": "691f106e56d6dbb0c88b8b073196ac8cdb3d97a1",
+ "shasum": ""
+ },
+ "require": {
+ "nette/application": "^3.2.6 || ^4.0.0",
+ "php": ">=8.2"
+ },
+ "require-dev": {
+ "contributte/phpstan": "^0.2.0",
+ "contributte/qa": "^0.4.0",
+ "contributte/tester": "^0.4.0",
+ "nette/http": "^3.3.2 || ^4.0.0",
+ "psr/http-message": "^1.0.1 || ^2.0.0",
+ "tracy/tracy": "^2.9.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\Application\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Extra contrib to nette/application",
+ "homepage": "https://github.com/contributte/application",
+ "keywords": [
+ "application",
+ "component",
+ "control",
+ "nette",
+ "presenter"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/application/issues",
+ "source": "https://github.com/contributte/application/tree/v0.6.1"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2025-04-30T05:51:01+00:00"
+ },
+ {
+ "name": "contributte/bootstrap",
+ "version": "v0.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/bootstrap.git",
+ "reference": "6f6d0e7aaf63c62b2f38a1fdd29ee316ccadd2d1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/bootstrap/zipball/6f6d0e7aaf63c62b2f38a1fdd29ee316ccadd2d1",
+ "reference": "6f6d0e7aaf63c62b2f38a1fdd29ee316ccadd2d1",
+ "shasum": ""
+ },
+ "require": {
+ "nette/bootstrap": "^3.2.0",
+ "nette/utils": "^3.2.9 || ^4.0.0",
+ "php": ">=7.4"
+ },
+ "require-dev": {
+ "ninjify/nunjuck": "^0.4",
+ "ninjify/qa": "^0.12",
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-nette": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\Bootstrap\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Extra contrib to nette/boostrap",
+ "homepage": "https://github.com/contributte/bootstrap",
+ "keywords": [
+ "application",
+ "bootstrap",
+ "docker",
+ "nette"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/bootstrap/issues",
+ "source": "https://github.com/contributte/bootstrap/tree/v0.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2023-04-24T20:25:44+00:00"
+ },
+ {
+ "name": "contributte/console",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/console.git",
+ "reference": "11d9015b9698e83748882e071912d145c9ff3057"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/console/zipball/11d9015b9698e83748882e071912d145c9ff3057",
+ "reference": "11d9015b9698e83748882e071912d145c9ff3057",
+ "shasum": ""
+ },
+ "require": {
+ "nette/di": "^3.1.8",
+ "php": ">=8.2",
+ "symfony/console": "^6.4.2 || ^7.0.2 || ^8.0.0"
+ },
+ "require-dev": {
+ "contributte/phpstan": "^0.2",
+ "contributte/qa": "^0.4",
+ "contributte/tester": "^0.4",
+ "mockery/mockery": "^1.6.12",
+ "nette/http": "^3.2.3",
+ "symfony/event-dispatcher": "^6.4.2 || ^7.0.2 || ^8.0.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\Console\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Best Symfony Console for Nette Framework",
+ "homepage": "https://github.com/contributte/console",
+ "keywords": [
+ "console",
+ "nette",
+ "symfony"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/console/issues",
+ "source": "https://github.com/contributte/console/tree/master"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2025-12-09T10:23:31+00:00"
+ },
+ {
+ "name": "contributte/di",
+ "version": "v0.5.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/di.git",
+ "reference": "49d6b93d46f57be319b1e811cd983bfed0c90979"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/di/zipball/49d6b93d46f57be319b1e811cd983bfed0c90979",
+ "reference": "49d6b93d46f57be319b1e811cd983bfed0c90979",
+ "shasum": ""
+ },
+ "require": {
+ "nette/di": "^3.1.0",
+ "nette/utils": "^3.2.8 || ^4.0",
+ "php": ">=7.2"
+ },
+ "conflict": {
+ "nette/schema": "<1.1.0"
+ },
+ "require-dev": {
+ "nette/bootstrap": "^3.1.4",
+ "nette/robot-loader": "^3.4.2 || ^4.0",
+ "ninjify/nunjuck": "^0.4",
+ "ninjify/qa": "^0.13",
+ "phpstan/phpstan": "^1.9.11",
+ "phpstan/phpstan-deprecation-rules": "^1.1.1",
+ "phpstan/phpstan-nette": "^1.2.0",
+ "phpstan/phpstan-strict-rules": "^1.4.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\DI\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Extra contrib to nette/di",
+ "homepage": "https://github.com/contributte/di",
+ "keywords": [
+ "dependency",
+ "inject",
+ "nette"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/di/issues",
+ "source": "https://github.com/contributte/di/tree/v0.5.6"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2023-09-05T08:23:55+00:00"
+ },
+ {
+ "name": "contributte/event-dispatcher",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/event-dispatcher.git",
+ "reference": "00c44782f8e4c16c8c97859d83d42e7e6bdf063e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/event-dispatcher/zipball/00c44782f8e4c16c8c97859d83d42e7e6bdf063e",
+ "reference": "00c44782f8e4c16c8c97859d83d42e7e6bdf063e",
+ "shasum": ""
+ },
+ "require": {
+ "nette/di": "^3.1.8",
+ "php": ">=8.1",
+ "symfony/event-dispatcher": "^6.4.3 || ^7.0.3"
+ },
+ "require-dev": {
+ "contributte/phpstan": "^0.1",
+ "contributte/qa": "^0.4",
+ "contributte/tester": "^0.3",
+ "mockery/mockery": "^1.5.0",
+ "psr/log": "^2.0.0 || ^3.0.0",
+ "tracy/tracy": "^2.10.5"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.10.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\EventDispatcher\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Best event dispatcher / event manager / event emitter for Nette Framework",
+ "homepage": "https://github.com/contributte/event-dispatcher",
+ "keywords": [
+ "dispatcher",
+ "emitter",
+ "event",
+ "nette",
+ "symfony"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/event-dispatcher/issues",
+ "source": "https://github.com/contributte/event-dispatcher/tree/v0.9.1"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2024-02-05T16:00:14+00:00"
+ },
+ {
+ "name": "contributte/forms",
+ "version": "v0.5.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/forms.git",
+ "reference": "aad9937f8c6633b4a2325f474c55d6906ec99cc7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/forms/zipball/aad9937f8c6633b4a2325f474c55d6906ec99cc7",
+ "reference": "aad9937f8c6633b4a2325f474c55d6906ec99cc7",
+ "shasum": ""
+ },
+ "require": {
+ "nette/forms": "^3.0.0",
+ "php": ">=7.2"
+ },
+ "conflict": {
+ "nette/di": "<3.0.0"
+ },
+ "require-dev": {
+ "nette/application": "^3.0.0",
+ "nette/di": "^3.1.0",
+ "ninjify/nunjuck": "^0.4",
+ "ninjify/qa": "^0.12",
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-nette": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.1"
+ },
+ "suggest": {
+ "nette/di": "to use FormFactoryExtension[CompilerExtension]"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\Forms\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Extra contrib to nette/forms",
+ "homepage": "https://github.com/contributte/forms",
+ "keywords": [
+ "Forms",
+ "checkbox",
+ "inputs",
+ "nette",
+ "renderers",
+ "rules",
+ "validation"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/forms/issues",
+ "source": "https://github.com/contributte/forms/tree/v0.5.2"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2025-06-11T07:46:35+00:00"
+ },
+ {
+ "name": "contributte/latte",
+ "version": "v0.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/latte.git",
+ "reference": "e89045e3c2b7aea08ef48a25136f0d64cc92c290"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/latte/zipball/e89045e3c2b7aea08ef48a25136f0d64cc92c290",
+ "reference": "e89045e3c2b7aea08ef48a25136f0d64cc92c290",
+ "shasum": ""
+ },
+ "require": {
+ "latte/latte": "^3.0.12",
+ "php": ">=8.2"
+ },
+ "require-dev": {
+ "contributte/phpstan": "^0.1",
+ "contributte/qa": "^0.4",
+ "contributte/tester": "^0.4",
+ "nette/application": "^3.1.14",
+ "nette/di": "^3.0.17"
+ },
+ "suggest": {
+ "nette/di": "to use VersionExtension[CompilerExtension]"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\Latte\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Extra contrib to nette/latte",
+ "homepage": "https://github.com/contributte/latte",
+ "keywords": [
+ "extra",
+ "latte",
+ "nette"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/latte/issues",
+ "source": "https://github.com/contributte/latte/tree/v0.6.1"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2025-11-09T12:34:06+00:00"
+ },
+ {
+ "name": "contributte/mcp",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/mcp.git",
+ "reference": "a81f768211bb01b5fa21c635e723da7840a5bbaa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/mcp/zipball/a81f768211bb01b5fa21c635e723da7840a5bbaa",
+ "reference": "a81f768211bb01b5fa21c635e723da7840a5bbaa",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/guzzle": "^7.10.0",
+ "mcp/sdk": "dev-main#369932378f7bcfa29a00efc1530b70c4d501a24b",
+ "php": ">=8.4",
+ "psr/cache": "^3.0.0",
+ "psr/container": "^2.0.2",
+ "psr/simple-cache": "^3.0.0"
+ },
+ "require-dev": {
+ "contributte/phpstan": "^0.2.0",
+ "contributte/qa": "^0.4.0",
+ "contributte/tester": "^0.3.0",
+ "ext-pdo": "*",
+ "mockery/mockery": "^1.6.12",
+ "nette/application": "^3.2.8",
+ "nette/di": "^3.2.5",
+ "nette/http": "^3.3.3",
+ "symfony/console": "^7.4.1 || ^8.0.1",
+ "tracy/tracy": "^2.10.10"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\Mcp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Doctrine DBAL for Nette Framework",
+ "homepage": "https://github.com/contributte/doctrine-dbal",
+ "keywords": [
+ "database",
+ "dbal",
+ "doctrine",
+ "mysql",
+ "nette",
+ "postgres",
+ "sqlite"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/mcp/issues",
+ "source": "https://github.com/contributte/mcp/tree/master"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2025-12-13T13:53:34+00:00"
+ },
+ {
+ "name": "contributte/nella",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/nella.git",
+ "reference": "25013bc3b76e5a645367dc21af536b850cce649a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/nella/zipball/25013bc3b76e5a645367dc21af536b850cce649a",
+ "reference": "25013bc3b76e5a645367dc21af536b850cce649a",
+ "shasum": ""
+ },
+ "require": {
+ "contributte/application": "^0.5.2 || ^0.6.0",
+ "contributte/bootstrap": "^0.6.0",
+ "contributte/di": "^0.5.6 || ^0.6.0",
+ "contributte/forms": "^0.5.1 || ^0.6.0",
+ "contributte/latte": "^0.6.0",
+ "contributte/tracy": "^0.6.0",
+ "contributte/utils": "^0.6.0",
+ "php": ">=8.1"
+ },
+ "conflict": {
+ "nette/application": "<3.2.5"
+ },
+ "require-dev": {
+ "contributte/phpstan": "^0.1",
+ "contributte/qa": "^0.4",
+ "contributte/tester": "^0.3",
+ "mockery/mockery": "^1.5.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\Nella\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Opinionated pre-configured kernel based on Nette (@nette). Suitable for all kind apps.",
+ "homepage": "https://github.com/contributte/nella",
+ "keywords": [
+ "kernel",
+ "nella",
+ "nette",
+ "stack"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/nella/issues",
+ "source": "https://github.com/contributte/nella/tree/master"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2024-05-29T20:07:59+00:00"
+ },
+ {
+ "name": "contributte/tracy",
+ "version": "v0.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/tracy.git",
+ "reference": "36b64184b8042fc59eff49a2a2d32c56c24298fe"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/tracy/zipball/36b64184b8042fc59eff49a2a2d32c56c24298fe",
+ "reference": "36b64184b8042fc59eff49a2a2d32c56c24298fe",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "tracy/tracy": "^2.9.0"
+ },
+ "conflict": {
+ "nette/di": "<3.1.0"
+ },
+ "require-dev": {
+ "contributte/phpstan": "^0.1",
+ "contributte/qa": "^0.4",
+ "contributte/tester": "^0.3",
+ "mockery/mockery": "^1.5.0",
+ "nette/di": "^3.1.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\Tracy\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Nette Tracy extensions for easy-developing",
+ "homepage": "https://github.com/contributte/tracy",
+ "keywords": [
+ "bluescreen",
+ "develop",
+ "navigation",
+ "nette",
+ "profile",
+ "tracy"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/tracy/issues",
+ "source": "https://github.com/contributte/tracy/tree/v0.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2023-07-31T15:00:21+00:00"
+ },
+ {
+ "name": "contributte/utils",
+ "version": "v0.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/utils.git",
+ "reference": "f9796645d3cc2b0fa75ee5de0e35d24421feb35e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/utils/zipball/f9796645d3cc2b0fa75ee5de0e35d24421feb35e",
+ "reference": "f9796645d3cc2b0fa75ee5de0e35d24421feb35e",
+ "shasum": ""
+ },
+ "require": {
+ "nette/utils": "^3.2.9 || ^4.0.0",
+ "php": ">=8.0"
+ },
+ "conflict": {
+ "nette/di": "<3.0.0"
+ },
+ "require-dev": {
+ "nette/di": "^3.1.0",
+ "ninjify/nunjuck": "^0.4.0",
+ "ninjify/qa": "^0.12.0",
+ "phpstan/phpstan": "^1.9.0",
+ "phpstan/phpstan-deprecation-rules": "^1.1.0",
+ "phpstan/phpstan-nette": "^1.2.0",
+ "phpstan/phpstan-strict-rules": "^1.4.0"
+ },
+ "suggest": {
+ "nette/di": "to use DateTimeExtension[CompilerExtension]"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\Utils\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Extra contrib to nette/utils",
+ "homepage": "https://github.com/contributte/utils",
+ "keywords": [
+ "datetime",
+ "filesystem",
+ "nette",
+ "strings",
+ "utils"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/utils/issues",
+ "source": "https://github.com/contributte/utils/tree/v0.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2023-04-25T12:54:31+00:00"
+ },
+ {
+ "name": "doctrine/deprecations",
+ "version": "1.1.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/deprecations.git",
+ "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
+ "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<=7.5 || >=13"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9 || ^12 || ^13",
+ "phpstan/phpstan": "1.4.10 || 2.1.11",
+ "phpstan/phpstan-phpunit": "^1.0 || ^2",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12",
+ "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.5"
+ },
+ "time": "2025-04-07T20:06:18+00:00"
+ },
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "7.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
+ "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "guzzlehttp/promises": "^2.3",
+ "guzzlehttp/psr7": "^2.8",
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-client": "^1.0",
+ "symfony/deprecation-contracts": "^2.2 || ^3.0"
+ },
+ "provide": {
+ "psr/http-client-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "ext-curl": "*",
+ "guzzle/client-integration-tests": "3.0.2",
+ "php-http/message-factory": "^1.1",
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20",
+ "psr/log": "^1.1 || ^2.0 || ^3.0"
+ },
+ "suggest": {
+ "ext-curl": "Required for CURL handler support",
+ "ext-intl": "Required for Internationalized Domain Name (IDN) support",
+ "psr/log": "Required for using the Log middleware"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Jeremy Lindblom",
+ "email": "jeremeamia@gmail.com",
+ "homepage": "https://github.com/jeremeamia"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "psr-18",
+ "psr-7",
+ "rest",
+ "web service"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/guzzle/issues",
+ "source": "https://github.com/guzzle/guzzle/tree/7.10.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-08-23T22:36:01+00:00"
+ },
+ {
+ "name": "guzzlehttp/promises",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "481557b130ef3790cf82b713667b43030dc9c957"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957",
+ "reference": "481557b130ef3790cf82b713667b43030dc9c957",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.44 || ^9.6.25"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/2.3.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-08-22T14:34:08+00:00"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "2.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "21dc724a0583619cd1652f673303492272778051"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051",
+ "reference": "21dc724a0583619cd1652f673303492272778051",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.1 || ^2.0",
+ "ralouphie/getallheaders": "^3.0"
+ },
+ "provide": {
+ "psr/http-factory-implementation": "1.0",
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "http-interop/http-factory-tests": "0.9.0",
+ "phpunit/phpunit": "^8.5.44 || ^9.6.25"
+ },
+ "suggest": {
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/2.8.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-08-23T21:21:41+00:00"
+ },
+ {
+ "name": "latte/latte",
+ "version": "v3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/latte.git",
+ "reference": "b6e3ad20c968b0aee9a8b7c8587592cdf1feea73"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/latte/zipball/b6e3ad20c968b0aee9a8b7c8587592cdf1feea73",
+ "reference": "b6e3ad20c968b0aee9a8b7c8587592cdf1feea73",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-tokenizer": "*",
+ "php": "8.2 - 8.5"
+ },
+ "conflict": {
+ "nette/application": "<3.1.7",
+ "nette/caching": "<3.1.4"
+ },
+ "require-dev": {
+ "nette/php-generator": "^4.0",
+ "nette/tester": "^2.5",
+ "nette/utils": "^4.0",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.10"
+ },
+ "suggest": {
+ "ext-fileinfo": "to use filter |datastream",
+ "ext-iconv": "to use filters |reverse, |substring",
+ "ext-intl": "to use Latte\\Engine::setLocale()",
+ "ext-mbstring": "to use filters like lower, upper, capitalize, ...",
+ "nette/php-generator": "to use tag {templatePrint}",
+ "nette/utils": "to use filter |webalize"
+ },
+ "bin": [
+ "bin/latte-lint"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Latte\\": "src/Latte"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "☕ Latte: the intuitive and fast template engine for those who want the most secure PHP sites. Introduces context-sensitive escaping.",
+ "homepage": "https://latte.nette.org",
+ "keywords": [
+ "context-sensitive",
+ "engine",
+ "escaping",
+ "html",
+ "nette",
+ "security",
+ "template",
+ "twig"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/latte/issues",
+ "source": "https://github.com/nette/latte/tree/v3.1.0"
+ },
+ "time": "2025-11-26T04:28:31+00:00"
+ },
+ {
+ "name": "mcp/sdk",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/modelcontextprotocol/php-sdk.git",
+ "reference": "369932378f7bcfa29a00efc1530b70c4d501a24b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/modelcontextprotocol/php-sdk/zipball/369932378f7bcfa29a00efc1530b70c4d501a24b",
+ "reference": "369932378f7bcfa29a00efc1530b70c4d501a24b",
+ "shasum": ""
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "opis/json-schema": "^2.4",
+ "php": "^8.1",
+ "php-http/discovery": "^1.20",
+ "phpdocumentor/reflection-docblock": "^5.6",
+ "psr/clock": "^1.0",
+ "psr/container": "^2.0",
+ "psr/event-dispatcher": "^1.0",
+ "psr/http-factory": "^1.1",
+ "psr/http-message": "^2.0",
+ "psr/log": "^1.0 || ^2.0 || ^3.0",
+ "symfony/finder": "^6.4 || ^7.3 || ^8.0",
+ "symfony/uid": "^6.4 || ^7.3 || ^8.0"
+ },
+ "require-dev": {
+ "laminas/laminas-httphandlerrunner": "^2.12",
+ "nyholm/psr7": "^1.8",
+ "nyholm/psr7-server": "^1.1",
+ "php-cs-fixer/shim": "^3.91",
+ "phpstan/phpstan": "^2.1",
+ "phpunit/phpunit": "^10.5",
+ "psr/cache": "^3.0",
+ "psr/simple-cache": "^3.0",
+ "symfony/cache": "^6.4 || ^7.3 || ^8.0",
+ "symfony/console": "^6.4 || ^7.3 || ^8.0",
+ "symfony/process": "^6.4 || ^7.3 || ^8.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Mcp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christopher Hertel",
+ "email": "mail@christopher-hertel.de"
+ },
+ {
+ "name": "Kyrian Obikwelu",
+ "email": "koshnawaza@gmail.com"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com"
+ }
+ ],
+ "description": "Model Context Protocol SDK for Client and Server applications in PHP",
+ "support": {
+ "issues": "https://github.com/modelcontextprotocol/php-sdk/issues",
+ "source": "https://github.com/modelcontextprotocol/php-sdk/tree/main"
+ },
+ "time": "2025-12-09T08:47:31+00:00"
+ },
+ {
+ "name": "nette/application",
+ "version": "v3.2.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/application.git",
+ "reference": "aaa18a09a488a2e632162539f77f90b3024c44f8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/application/zipball/aaa18a09a488a2e632162539f77f90b3024c44f8",
+ "reference": "aaa18a09a488a2e632162539f77f90b3024c44f8",
+ "shasum": ""
+ },
+ "require": {
+ "nette/component-model": "^3.1",
+ "nette/http": "^3.3.2",
+ "nette/routing": "^3.1",
+ "nette/utils": "^4.0",
+ "php": "8.1 - 8.5"
+ },
+ "conflict": {
+ "latte/latte": "<2.7.1 || >=3.0.0 <3.0.18 || >=3.2",
+ "nette/caching": "<3.2",
+ "nette/di": "<3.2",
+ "nette/forms": "<3.2",
+ "nette/schema": "<1.3",
+ "tracy/tracy": "<2.9"
+ },
+ "require-dev": {
+ "jetbrains/phpstorm-attributes": "^1.2",
+ "latte/latte": "^2.10.2 || ^3.0.18",
+ "mockery/mockery": "^1.6@stable",
+ "nette/di": "^3.2",
+ "nette/forms": "^3.2",
+ "nette/robot-loader": "^4.0",
+ "nette/security": "^3.2",
+ "nette/tester": "^2.5.2",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.9"
+ },
+ "suggest": {
+ "latte/latte": "Allows using Latte in templates",
+ "nette/forms": "Allows to use Nette\\Application\\UI\\Form"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "🏆 Nette Application: a full-stack component-based MVC kernel for PHP that helps you write powerful and modern web applications. Write less, have cleaner code and your work will bring you joy.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "Forms",
+ "component-based",
+ "control",
+ "framework",
+ "mvc",
+ "mvp",
+ "nette",
+ "presenter",
+ "routing",
+ "seo"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/application/issues",
+ "source": "https://github.com/nette/application/tree/v3.2.8"
+ },
+ "time": "2025-11-24T00:10:57+00:00"
+ },
+ {
+ "name": "nette/bootstrap",
+ "version": "v3.2.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/bootstrap.git",
+ "reference": "10fdb1cb05497da39396f2ce1785cea67c8aa439"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/bootstrap/zipball/10fdb1cb05497da39396f2ce1785cea67c8aa439",
+ "reference": "10fdb1cb05497da39396f2ce1785cea67c8aa439",
+ "shasum": ""
+ },
+ "require": {
+ "nette/di": "^3.1",
+ "nette/utils": "^3.2.1 || ^4.0",
+ "php": "8.0 - 8.5"
+ },
+ "conflict": {
+ "tracy/tracy": "<2.6"
+ },
+ "require-dev": {
+ "latte/latte": "^2.8 || ^3.0",
+ "nette/application": "^3.1",
+ "nette/caching": "^3.0",
+ "nette/database": "^3.0",
+ "nette/forms": "^3.0",
+ "nette/http": "^3.0",
+ "nette/mail": "^3.0 || ^4.0",
+ "nette/robot-loader": "^3.0 || ^4.0",
+ "nette/safe-stream": "^2.2",
+ "nette/security": "^3.0",
+ "nette/tester": "^2.4",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.9"
+ },
+ "suggest": {
+ "nette/robot-loader": "to use Configurator::createRobotLoader()",
+ "tracy/tracy": "to use Configurator::enableTracy()"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "bootstrapping",
+ "configurator",
+ "nette"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/bootstrap/issues",
+ "source": "https://github.com/nette/bootstrap/tree/v3.2.7"
+ },
+ "time": "2025-08-01T02:02:03+00:00"
+ },
+ {
+ "name": "nette/component-model",
+ "version": "v3.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/component-model.git",
+ "reference": "0d100ba05279a1f4b20acecaa617027fbda8ecb2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/component-model/zipball/0d100ba05279a1f4b20acecaa617027fbda8ecb2",
+ "reference": "0d100ba05279a1f4b20acecaa617027fbda8ecb2",
+ "shasum": ""
+ },
+ "require": {
+ "nette/utils": "^4.0",
+ "php": "8.1 - 8.5"
+ },
+ "require-dev": {
+ "nette/tester": "^2.5",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "⚛ Nette Component Model",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "components",
+ "nette"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/component-model/issues",
+ "source": "https://github.com/nette/component-model/tree/v3.1.3"
+ },
+ "time": "2025-11-22T18:56:33+00:00"
+ },
+ {
+ "name": "nette/di",
+ "version": "v3.2.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/di.git",
+ "reference": "5708c328ce7658a73c96b14dd6da7b8b27bf220f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/di/zipball/5708c328ce7658a73c96b14dd6da7b8b27bf220f",
+ "reference": "5708c328ce7658a73c96b14dd6da7b8b27bf220f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "ext-tokenizer": "*",
+ "nette/neon": "^3.3",
+ "nette/php-generator": "^4.1.6",
+ "nette/robot-loader": "^4.0",
+ "nette/schema": "^1.2.5",
+ "nette/utils": "^4.0",
+ "php": "8.1 - 8.5"
+ },
+ "require-dev": {
+ "nette/tester": "^2.5.2",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP features.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "compiled",
+ "di",
+ "dic",
+ "factory",
+ "ioc",
+ "nette",
+ "static"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/di/issues",
+ "source": "https://github.com/nette/di/tree/v3.2.5"
+ },
+ "time": "2025-08-14T22:59:46+00:00"
+ },
+ {
+ "name": "nette/forms",
+ "version": "v3.2.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/forms.git",
+ "reference": "3bbf691ea0eb50d9594c2109d9252f267092b91f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/forms/zipball/3bbf691ea0eb50d9594c2109d9252f267092b91f",
+ "reference": "3bbf691ea0eb50d9594c2109d9252f267092b91f",
+ "shasum": ""
+ },
+ "require": {
+ "nette/component-model": "^3.1",
+ "nette/http": "^3.3",
+ "nette/utils": "^4.0.4",
+ "php": "8.1 - 8.5"
+ },
+ "conflict": {
+ "latte/latte": ">=3.0.0 <3.0.12 || >=3.2"
+ },
+ "require-dev": {
+ "latte/latte": "^2.10.2 || ^3.0.12",
+ "nette/application": "^3.0",
+ "nette/di": "^3.0",
+ "nette/tester": "^2.5.2",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.9"
+ },
+ "suggest": {
+ "ext-intl": "to use date/time controls"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "📝 Nette Forms: generating, validating and processing secure forms in PHP. Handy API, fully customizable, server & client side validation and mature design.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "Forms",
+ "bootstrap",
+ "csrf",
+ "javascript",
+ "nette",
+ "validation"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/forms/issues",
+ "source": "https://github.com/nette/forms/tree/v3.2.8"
+ },
+ "time": "2025-11-22T19:36:34+00:00"
+ },
+ {
+ "name": "nette/http",
+ "version": "v3.3.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/http.git",
+ "reference": "c557f21c8cedd621dbfd7990752b1d55ef353f1d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/http/zipball/c557f21c8cedd621dbfd7990752b1d55ef353f1d",
+ "reference": "c557f21c8cedd621dbfd7990752b1d55ef353f1d",
+ "shasum": ""
+ },
+ "require": {
+ "nette/utils": "^4.0.4",
+ "php": "8.1 - 8.5"
+ },
+ "conflict": {
+ "nette/di": "<3.0.3",
+ "nette/schema": "<1.2"
+ },
+ "require-dev": {
+ "nette/di": "^3.0",
+ "nette/security": "^3.0",
+ "nette/tester": "^2.4",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.8"
+ },
+ "suggest": {
+ "ext-fileinfo": "to detect MIME type of uploaded files by Nette\\Http\\FileUpload",
+ "ext-gd": "to use image function in Nette\\Http\\FileUpload",
+ "ext-intl": "to support punycode by Nette\\Http\\Url",
+ "ext-session": "to use Nette\\Http\\Session"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "🌐 Nette Http: abstraction for HTTP request, response and session. Provides careful data sanitization and utility for URL and cookies manipulation.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "cookies",
+ "http",
+ "nette",
+ "proxy",
+ "request",
+ "response",
+ "security",
+ "session",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/http/issues",
+ "source": "https://github.com/nette/http/tree/v3.3.3"
+ },
+ "time": "2025-10-30T22:32:24+00:00"
+ },
+ {
+ "name": "nette/neon",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/neon.git",
+ "reference": "36e3f4f89fd8a7b89ada74c7a678baa9f7cc7719"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/neon/zipball/36e3f4f89fd8a7b89ada74c7a678baa9f7cc7719",
+ "reference": "36e3f4f89fd8a7b89ada74c7a678baa9f7cc7719",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "8.0 - 8.5"
+ },
+ "require-dev": {
+ "nette/tester": "^2.4",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.7"
+ },
+ "bin": [
+ "bin/neon-lint"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "🍸 Nette NEON: encodes and decodes NEON file format.",
+ "homepage": "https://neon.nette.org",
+ "keywords": [
+ "export",
+ "import",
+ "neon",
+ "nette",
+ "yaml"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/neon/issues",
+ "source": "https://github.com/nette/neon/tree/v3.4.6"
+ },
+ "time": "2025-11-25T13:12:06+00:00"
+ },
+ {
+ "name": "nette/php-generator",
+ "version": "v4.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/php-generator.git",
+ "reference": "4707546a1f11badd72f5d82af4f8a6bc64bd56ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/php-generator/zipball/4707546a1f11badd72f5d82af4f8a6bc64bd56ac",
+ "reference": "4707546a1f11badd72f5d82af4f8a6bc64bd56ac",
+ "shasum": ""
+ },
+ "require": {
+ "nette/utils": "^4.0.6",
+ "php": "8.1 - 8.5"
+ },
+ "require-dev": {
+ "jetbrains/phpstorm-attributes": "^1.2",
+ "nette/tester": "^2.4",
+ "nikic/php-parser": "^5.0",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.8"
+ },
+ "suggest": {
+ "nikic/php-parser": "to use ClassType::from(withBodies: true) & ClassType::fromCode()"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 8.5 features.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "code",
+ "nette",
+ "php",
+ "scaffolding"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/php-generator/issues",
+ "source": "https://github.com/nette/php-generator/tree/v4.2.0"
+ },
+ "time": "2025-08-06T18:24:31+00:00"
+ },
+ {
+ "name": "nette/robot-loader",
+ "version": "v4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/robot-loader.git",
+ "reference": "805fb81376c24755d50bdb8bc69ca4db3def71d1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/robot-loader/zipball/805fb81376c24755d50bdb8bc69ca4db3def71d1",
+ "reference": "805fb81376c24755d50bdb8bc69ca4db3def71d1",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "nette/utils": "^4.0",
+ "php": "8.1 - 8.5"
+ },
+ "require-dev": {
+ "nette/tester": "^2.4",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "🍀 Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "autoload",
+ "class",
+ "interface",
+ "nette",
+ "trait"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/robot-loader/issues",
+ "source": "https://github.com/nette/robot-loader/tree/v4.1.0"
+ },
+ "time": "2025-08-06T18:34:21+00:00"
+ },
+ {
+ "name": "nette/routing",
+ "version": "v3.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/routing.git",
+ "reference": "14c466f3383add0d4f78a82074d3c9841f8edf47"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/routing/zipball/14c466f3383add0d4f78a82074d3c9841f8edf47",
+ "reference": "14c466f3383add0d4f78a82074d3c9841f8edf47",
+ "shasum": ""
+ },
+ "require": {
+ "nette/http": "^3.2 || ~4.0.0",
+ "nette/utils": "^4.0",
+ "php": "8.1 - 8.5"
+ },
+ "require-dev": {
+ "nette/tester": "^2.5",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "Nette Routing: two-ways URL conversion",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "nette"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/routing/issues",
+ "source": "https://github.com/nette/routing/tree/v3.1.2"
+ },
+ "time": "2025-10-31T00:55:27+00:00"
+ },
+ {
+ "name": "nette/schema",
+ "version": "v1.3.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/schema.git",
+ "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004",
+ "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004",
+ "shasum": ""
+ },
+ "require": {
+ "nette/utils": "^4.0",
+ "php": "8.1 - 8.5"
+ },
+ "require-dev": {
+ "nette/tester": "^2.5.2",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "📐 Nette Schema: validating data structures against a given Schema.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "config",
+ "nette"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/schema/issues",
+ "source": "https://github.com/nette/schema/tree/v1.3.3"
+ },
+ "time": "2025-10-30T22:57:59+00:00"
+ },
+ {
+ "name": "nette/utils",
+ "version": "v4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/utils.git",
+ "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0",
+ "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "8.2 - 8.5"
+ },
+ "conflict": {
+ "nette/finder": "<3",
+ "nette/schema": "<1.2.2"
+ },
+ "require-dev": {
+ "jetbrains/phpstorm-attributes": "^1.2",
+ "nette/tester": "^2.5",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "tracy/tracy": "^2.9"
+ },
+ "suggest": {
+ "ext-gd": "to use Image",
+ "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
+ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
+ "ext-json": "to use Nette\\Utils\\Json",
+ "ext-mbstring": "to use Strings::lower() etc...",
+ "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nette\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "array",
+ "core",
+ "datetime",
+ "images",
+ "json",
+ "nette",
+ "paginator",
+ "password",
+ "slugify",
+ "string",
+ "unicode",
+ "utf-8",
+ "utility",
+ "validation"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/utils/issues",
+ "source": "https://github.com/nette/utils/tree/v4.1.0"
+ },
+ "time": "2025-12-01T17:49:23+00:00"
+ },
+ {
+ "name": "opis/json-schema",
+ "version": "2.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/opis/json-schema.git",
+ "reference": "8458763e0dd0b6baa310e04f1829fc73da4e8c8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/opis/json-schema/zipball/8458763e0dd0b6baa310e04f1829fc73da4e8c8a",
+ "reference": "8458763e0dd0b6baa310e04f1829fc73da4e8c8a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "opis/string": "^2.1",
+ "opis/uri": "^1.0",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "ext-bcmath": "*",
+ "ext-intl": "*",
+ "phpunit/phpunit": "^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Opis\\JsonSchema\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Sorin Sarca",
+ "email": "sarca_sorin@hotmail.com"
+ },
+ {
+ "name": "Marius Sarca",
+ "email": "marius.sarca@gmail.com"
+ }
+ ],
+ "description": "Json Schema Validator for PHP",
+ "homepage": "https://opis.io/json-schema",
+ "keywords": [
+ "json",
+ "json-schema",
+ "schema",
+ "validation",
+ "validator"
+ ],
+ "support": {
+ "issues": "https://github.com/opis/json-schema/issues",
+ "source": "https://github.com/opis/json-schema/tree/2.6.0"
+ },
+ "time": "2025-10-17T12:46:48+00:00"
+ },
+ {
+ "name": "opis/string",
+ "version": "2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/opis/string.git",
+ "reference": "3e4d2aaff518ac518530b89bb26ed40f4503635e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/opis/string/zipball/3e4d2aaff518ac518530b89bb26ed40f4503635e",
+ "reference": "3e4d2aaff518ac518530b89bb26ed40f4503635e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-iconv": "*",
+ "ext-json": "*",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Opis\\String\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Marius Sarca",
+ "email": "marius.sarca@gmail.com"
+ },
+ {
+ "name": "Sorin Sarca",
+ "email": "sarca_sorin@hotmail.com"
+ }
+ ],
+ "description": "Multibyte strings as objects",
+ "homepage": "https://opis.io/string",
+ "keywords": [
+ "multi-byte",
+ "opis",
+ "string",
+ "string manipulation",
+ "utf-8"
+ ],
+ "support": {
+ "issues": "https://github.com/opis/string/issues",
+ "source": "https://github.com/opis/string/tree/2.1.0"
+ },
+ "time": "2025-10-17T12:38:41+00:00"
+ },
+ {
+ "name": "opis/uri",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/opis/uri.git",
+ "reference": "0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/opis/uri/zipball/0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a",
+ "reference": "0f3ca49ab1a5e4a6681c286e0b2cc081b93a7d5a",
+ "shasum": ""
+ },
+ "require": {
+ "opis/string": "^2.0",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Opis\\Uri\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Marius Sarca",
+ "email": "marius.sarca@gmail.com"
+ },
+ {
+ "name": "Sorin Sarca",
+ "email": "sarca_sorin@hotmail.com"
+ }
+ ],
+ "description": "Build, parse and validate URIs and URI-templates",
+ "homepage": "https://opis.io",
+ "keywords": [
+ "URI Template",
+ "parse url",
+ "punycode",
+ "uri",
+ "uri components",
+ "url",
+ "validate uri"
+ ],
+ "support": {
+ "issues": "https://github.com/opis/uri/issues",
+ "source": "https://github.com/opis/uri/tree/1.1.0"
+ },
+ "time": "2021-05-22T15:57:08+00:00"
+ },
+ {
+ "name": "php-http/discovery",
+ "version": "1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/discovery.git",
+ "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/discovery/zipball/82fe4c73ef3363caed49ff8dd1539ba06044910d",
+ "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0|^2.0",
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "nyholm/psr7": "<1.0",
+ "zendframework/zend-diactoros": "*"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "*",
+ "php-http/client-implementation": "*",
+ "psr/http-client-implementation": "*",
+ "psr/http-factory-implementation": "*",
+ "psr/http-message-implementation": "*"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0.2|^2.0",
+ "graham-campbell/phpspec-skip-example-extension": "^5.0",
+ "php-http/httplug": "^1.0 || ^2.0",
+ "php-http/message-factory": "^1.0",
+ "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3",
+ "sebastian/comparator": "^3.0.5 || ^4.0.8",
+ "symfony/phpunit-bridge": "^6.4.4 || ^7.0.1"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "Http\\Discovery\\Composer\\Plugin",
+ "plugin-optional": true
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Discovery\\": "src/"
+ },
+ "exclude-from-classmap": [
+ "src/Composer/Plugin.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations",
+ "homepage": "http://php-http.org",
+ "keywords": [
+ "adapter",
+ "client",
+ "discovery",
+ "factory",
+ "http",
+ "message",
+ "psr17",
+ "psr7"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/discovery/issues",
+ "source": "https://github.com/php-http/discovery/tree/1.20.0"
+ },
+ "time": "2024-10-02T11:20:13+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.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "90614c73d3800e187615e2dd236ad0e2a01bf761"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/90614c73d3800e187615e2dd236ad0e2a01bf761",
+ "reference": "90614c73d3800e187615e2dd236ad0e2a01bf761",
+ "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.5"
+ },
+ "time": "2025-11-27T19:50:05+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195",
+ "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195",
+ "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.12.0"
+ },
+ "time": "2025-11-21T15:09:14+00:00"
+ },
+ {
+ "name": "phpstan/phpdoc-parser",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495",
+ "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495",
+ "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/phpstan/phpdoc-parser/issues",
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0"
+ },
+ "time": "2025-08-30T15:50:23+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
+ },
+ "time": "2021-02-03T23:26:27+00:00"
+ },
+ {
+ "name": "psr/clock",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/clock.git",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Clock\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for reading the clock.",
+ "homepage": "https://github.com/php-fig/clock",
+ "keywords": [
+ "clock",
+ "now",
+ "psr",
+ "psr-20",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/clock/issues",
+ "source": "https://github.com/php-fig/clock/tree/1.0.0"
+ },
+ "time": "2022-11-25T14:36:26+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "time": "2021-11-05T16:47:00+00:00"
+ },
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
+ },
+ {
+ "name": "psr/http-client",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
+ "keywords": [
+ "http",
+ "http-client",
+ "psr",
+ "psr-18"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-client"
+ },
+ "time": "2023-09-23T14:17:50+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",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.2"
+ },
+ "time": "2024-09-11T13:17:53+00:00"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
+ },
+ "time": "2021-10-29T13:26:27+00:00"
+ },
+ {
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ },
+ "time": "2019-03-08T08:55:37+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v8.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "fcb73f69d655b48fcb894a262f074218df08bd58"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/fcb73f69d655b48fcb894a262f074218df08bd58",
+ "reference": "fcb73f69d655b48fcb894a262f074218df08bd58",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.4",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/string": "^7.4|^8.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^7.4|^8.0",
+ "symfony/dependency-injection": "^7.4|^8.0",
+ "symfony/event-dispatcher": "^7.4|^8.0",
+ "symfony/http-foundation": "^7.4|^8.0",
+ "symfony/http-kernel": "^7.4|^8.0",
+ "symfony/lock": "^7.4|^8.0",
+ "symfony/messenger": "^7.4|^8.0",
+ "symfony/process": "^7.4|^8.0",
+ "symfony/stopwatch": "^7.4|^8.0",
+ "symfony/var-dumper": "^7.4|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command-line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v8.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-12-05T15:25:33+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
+ "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-25T14:21:43+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v7.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9dddcddff1ef974ad87b3708e4b442dc38b2261d",
+ "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/event-dispatcher-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<6.4",
+ "symfony/service-contracts": "<2.5"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/error-handler": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/framework-bundle": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^6.4|^7.0|^8.0",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-10-28T09:38:46+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "59eb412e93815df44f05f342958efa9f46b1e586"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586",
+ "reference": "59eb412e93815df44f05f342958efa9f46b1e586",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/event-dispatcher": "^1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-25T14:21:43+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v8.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "7598dd5770580fa3517ec83e8da0c9b9e01f4291"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/7598dd5770580fa3517ec83e8da0c9b9e01f4291",
+ "reference": "7598dd5770580fa3517ec83e8da0c9b9e01f4291",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.4"
+ },
+ "require-dev": {
+ "symfony/filesystem": "^7.4|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v8.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-11-05T14:36:47+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.33.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
+ "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-09T11:45:10+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.33.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-06-27T09:58:17+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.33.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "3833d7255cc303546435cb650316bff708a1c75c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
+ "reference": "3833d7255cc303546435cb650316bff708a1c75c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-09T11:45:10+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.33.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
+ "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
+ "shasum": ""
+ },
+ "require": {
+ "ext-iconv": "*",
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-12-23T08:48:59+00:00"
+ },
+ {
+ "name": "symfony/polyfill-uuid",
+ "version": "v1.33.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-uuid.git",
+ "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2",
+ "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "provide": {
+ "ext-uuid": "*"
+ },
+ "suggest": {
+ "ext-uuid": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Uuid\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for uuid functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "uuid"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-uuid/tree/v1.33.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-09T11:45:10+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v3.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43",
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/container": "^1.1|^2.0",
+ "symfony/deprecation-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v3.6.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-07-15T11:30:57+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v8.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/ba65a969ac918ce0cc3edfac6cdde847eba231dc",
+ "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.4",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-intl-grapheme": "^1.33",
+ "symfony/polyfill-intl-normalizer": "^1.0",
+ "symfony/polyfill-mbstring": "^1.0"
+ },
+ "conflict": {
+ "symfony/translation-contracts": "<2.5"
+ },
+ "require-dev": {
+ "symfony/emoji": "^7.4|^8.0",
+ "symfony/http-client": "^7.4|^8.0",
+ "symfony/intl": "^7.4|^8.0",
+ "symfony/translation-contracts": "^2.5|^3.0",
+ "symfony/var-exporter": "^7.4|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v8.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-12-01T09:13:36+00:00"
+ },
+ {
+ "name": "symfony/uid",
+ "version": "v8.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/uid.git",
+ "reference": "8395a2cc2ed49aa68f602c5c489f60ab853893df"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/8395a2cc2ed49aa68f602c5c489f60ab853893df",
+ "reference": "8395a2cc2ed49aa68f602c5c489f60ab853893df",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.4",
+ "symfony/polyfill-uuid": "^1.15"
+ },
+ "require-dev": {
+ "symfony/console": "^7.4|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Uid\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to generate and represent UIDs",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "UID",
+ "ulid",
+ "uuid"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/uid/tree/v8.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-09-26T07:52:19+00:00"
+ },
+ {
+ "name": "tracy/tracy",
+ "version": "v2.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/tracy.git",
+ "reference": "eec57bcf2ff11d79f519a19da9d7ae1e2c63c42e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/tracy/zipball/eec57bcf2ff11d79f519a19da9d7ae1e2c63c42e",
+ "reference": "eec57bcf2ff11d79f519a19da9d7ae1e2c63c42e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-session": "*",
+ "php": "8.2 - 8.5"
+ },
+ "conflict": {
+ "nette/di": "<3.0"
+ },
+ "require-dev": {
+ "latte/latte": "^2.5 || ^3.0",
+ "nette/di": "^3.0",
+ "nette/http": "^3.0",
+ "nette/mail": "^3.0 || ^4.0",
+ "nette/tester": "^2.2",
+ "nette/utils": "^3.0 || ^4.0",
+ "phpstan/phpstan-nette": "^2.0@stable",
+ "psr/log": "^1.0 || ^2.0 || ^3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.11-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Tracy/functions.php"
+ ],
+ "psr-4": {
+ "Tracy\\": "src"
+ },
+ "classmap": [
+ "src"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "😎 Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI support. You will love it.",
+ "homepage": "https://tracy.nette.org",
+ "keywords": [
+ "Xdebug",
+ "debug",
+ "debugger",
+ "nette",
+ "profiler"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/tracy/issues",
+ "source": "https://github.com/nette/tracy/tree/v2.11.0"
+ },
+ "time": "2025-10-31T00:12:50+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.12.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "9be6926d8b485f55b9229203f962b51ed377ba68"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68",
+ "reference": "9be6926d8b485f55b9229203f962b51ed377ba68",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "ext-date": "*",
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "suggest": {
+ "ext-intl": "",
+ "ext-simplexml": "",
+ "ext-spl": ""
+ },
+ "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.12.1"
+ },
+ "time": "2025-10-29T15:56:20+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "contributte/dev",
+ "version": "v0.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/dev.git",
+ "reference": "06d386f519b57ded20a2468fa696779a2d349e00"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/dev/zipball/06d386f519b57ded20a2468fa696779a2d349e00",
+ "reference": "06d386f519b57ded20a2468fa696779a2d349e00",
+ "shasum": ""
+ },
+ "require": {
+ "nette/utils": "^4.0.3",
+ "php": ">=8.1",
+ "tracy/tracy": "^2.10.2"
+ },
+ "require-dev": {
+ "contributte/phpstan": "^0.1.0",
+ "contributte/qa": "^0.4.0",
+ "contributte/tester": "^0.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.6.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/shortcuts.php"
+ ],
+ "psr-4": {
+ "Contributte\\Dev\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Sulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Tools for development with Nette and Tracy",
+ "homepage": "https://github.com/contributte/dev",
+ "keywords": [
+ "debugger",
+ "development",
+ "functions",
+ "nette",
+ "shortcuts"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/dev/issues",
+ "source": "https://github.com/contributte/dev/tree/v0.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2023-11-17T15:55:03+00:00"
+ },
+ {
+ "name": "contributte/phpstan",
+ "version": "v0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/phpstan.git",
+ "reference": "392afbf783b24bfd0af5849f5b9a72e1fe812634"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/phpstan/zipball/392afbf783b24bfd0af5849f5b9a72e1fe812634",
+ "reference": "392afbf783b24bfd0af5849f5b9a72e1fe812634",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0",
+ "phpstan/phpstan": "^2.0.1",
+ "phpstan/phpstan-deprecation-rules": "^2.0.0",
+ "phpstan/phpstan-nette": "^2.0.0",
+ "phpstan/phpstan-strict-rules": "^2.0.0"
+ },
+ "require-dev": {
+ "contributte/qa": "^0.4",
+ "contributte/tester": "^v0.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\Phpstan\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Opinionated set of PHPStan extensions & rules for all fans.",
+ "homepage": "https://github.com/contributte/phpstan",
+ "keywords": [
+ "PHPStan",
+ "contributte",
+ "extensions",
+ "rules",
+ "strict"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/phpstan/issues",
+ "source": "https://github.com/contributte/phpstan/tree/v0.2"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2024-11-18T10:58:44+00:00"
+ },
+ {
+ "name": "contributte/qa",
+ "version": "v0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/qa.git",
+ "reference": "b60bcfc453014fd5b5f4d0c01d6f38512836992b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/qa/zipball/b60bcfc453014fd5b5f4d0c01d6f38512836992b",
+ "reference": "b60bcfc453014fd5b5f4d0c01d6f38512836992b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "slevomat/coding-standard": "^8.22.1",
+ "squizlabs/php_codesniffer": "^3.13.5"
+ },
+ "require-dev": {
+ "brianium/paratest": "^7.0",
+ "contributte/phpunit": "^0.2.0",
+ "nette/utils": "^4.0",
+ "symfony/process": "^6.0.0"
+ },
+ "bin": [
+ "bin/codesniffer",
+ "bin/codefixer"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.5.x-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Tuned & very strict coding standards for PHP projects. Trusted by Contributte, Apitte, Nettrine and many others.",
+ "homepage": "https://github.com/contributte/qa",
+ "keywords": [
+ "Codestyle",
+ "codesniffer",
+ "contributte",
+ "qa",
+ "quality assurance"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/qa/issues",
+ "source": "https://github.com/contributte/qa/tree/v0.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2025-12-12T16:54:21+00:00"
+ },
+ {
+ "name": "contributte/tester",
+ "version": "v0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/contributte/tester.git",
+ "reference": "06757baef46c13ec09cafe35fabf6b250fc47a3e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/contributte/tester/zipball/06757baef46c13ec09cafe35fabf6b250fc47a3e",
+ "reference": "06757baef46c13ec09cafe35fabf6b250fc47a3e",
+ "shasum": ""
+ },
+ "require": {
+ "nette/tester": "^2.5.4",
+ "php": ">=8.2"
+ },
+ "require-dev": {
+ "contributte/phpstan": "^0.1.0",
+ "contributte/qa": "^0.4.0",
+ "nette/di": "^3.2.4",
+ "nette/neon": "^3.4.4",
+ "nette/robot-loader": "^4.0.3"
+ },
+ "suggest": {
+ "nette/di": "for NEON handling",
+ "nette/neon": "for NEON handling",
+ "nette/robot-loader": "for class finding"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Contributte\\Tester\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milan Felix Šulc",
+ "homepage": "https://f3l1x.io"
+ }
+ ],
+ "description": "Nette Tester with extra horse power",
+ "homepage": "https://github.com/contributte/tester",
+ "keywords": [
+ "nette",
+ "php",
+ "tester"
+ ],
+ "support": {
+ "issues": "https://github.com/contributte/tester/issues",
+ "source": "https://github.com/contributte/tester/tree/v0.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://contributte.org/partners.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/f3l1x",
+ "type": "github"
+ }
+ ],
+ "time": "2025-03-28T15:51:55+00:00"
+ },
+ {
+ "name": "dealerdirect/phpcodesniffer-composer-installer",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPCSStandards/composer-installer.git",
+ "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/845eb62303d2ca9b289ef216356568ccc075ffd1",
+ "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^2.2",
+ "php": ">=5.4",
+ "squizlabs/php_codesniffer": "^3.1.0 || ^4.0"
+ },
+ "require-dev": {
+ "composer/composer": "^2.2",
+ "ext-json": "*",
+ "ext-zip": "*",
+ "php-parallel-lint/php-parallel-lint": "^1.4.0",
+ "phpcompatibility/php-compatibility": "^9.0 || ^10.0.0@dev",
+ "yoast/phpunit-polyfills": "^1.0"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Franck Nijhof",
+ "email": "opensource@frenck.dev",
+ "homepage": "https://frenck.dev",
+ "role": "Open source developer"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors"
+ }
+ ],
+ "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
+ "keywords": [
+ "PHPCodeSniffer",
+ "PHP_CodeSniffer",
+ "code quality",
+ "codesniffer",
+ "composer",
+ "installer",
+ "phpcbf",
+ "phpcs",
+ "plugin",
+ "qa",
+ "quality",
+ "standard",
+ "standards",
+ "style guide",
+ "stylecheck",
+ "tests"
+ ],
+ "support": {
+ "issues": "https://github.com/PHPCSStandards/composer-installer/issues",
+ "security": "https://github.com/PHPCSStandards/composer-installer/security/policy",
+ "source": "https://github.com/PHPCSStandards/composer-installer"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/PHPCSStandards",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/jrfnl",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/php_codesniffer",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/phpcsstandards",
+ "type": "thanks_dev"
+ }
+ ],
+ "time": "2025-11-11T04:32:07+00:00"
+ },
+ {
+ "name": "hamcrest/hamcrest-php",
+ "version": "v2.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/hamcrest/hamcrest-php.git",
+ "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487",
+ "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4|^8.0"
+ },
+ "replace": {
+ "cordoval/hamcrest-php": "*",
+ "davedevelopment/hamcrest-php": "*",
+ "kodova/hamcrest-php": "*"
+ },
+ "require-dev": {
+ "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0",
+ "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.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.1.1"
+ },
+ "time": "2025-04-30T06:54:44+00:00"
+ },
+ {
+ "name": "mockery/mockery",
+ "version": "1.6.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mockery/mockery.git",
+ "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699",
+ "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699",
+ "shasum": ""
+ },
+ "require": {
+ "hamcrest/hamcrest-php": "^2.0.1",
+ "lib-pcre": ">=7.0",
+ "php": ">=7.3"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5 || ^9.6.17",
+ "symplify/easy-coding-standard": "^12.1.14"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "library/helpers.php",
+ "library/Mockery.php"
+ ],
+ "psr-4": {
+ "Mockery\\": "library/Mockery"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Pádraic Brady",
+ "email": "padraic.brady@gmail.com",
+ "homepage": "https://github.com/padraic",
+ "role": "Author"
+ },
+ {
+ "name": "Dave Marshall",
+ "email": "dave.marshall@atstsolutions.co.uk",
+ "homepage": "https://davedevelopment.co.uk",
+ "role": "Developer"
+ },
+ {
+ "name": "Nathanael Esayeas",
+ "email": "nathanael.esayeas@protonmail.com",
+ "homepage": "https://github.com/ghostwriter",
+ "role": "Lead Developer"
+ }
+ ],
+ "description": "Mockery is a simple yet flexible PHP mock object framework",
+ "homepage": "https://github.com/mockery/mockery",
+ "keywords": [
+ "BDD",
+ "TDD",
+ "library",
+ "mock",
+ "mock objects",
+ "mockery",
+ "stub",
+ "test",
+ "test double",
+ "testing"
+ ],
+ "support": {
+ "docs": "https://docs.mockery.io/",
+ "issues": "https://github.com/mockery/mockery/issues",
+ "rss": "https://github.com/mockery/mockery/releases.atom",
+ "security": "https://github.com/mockery/mockery/security/advisories",
+ "source": "https://github.com/mockery/mockery"
+ },
+ "time": "2024-05-16T03:13:13+00:00"
+ },
+ {
+ "name": "nette/tester",
+ "version": "v2.5.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nette/tester.git",
+ "reference": "dc02e7811f3491a72e87538044586cee2f483d58"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nette/tester/zipball/dc02e7811f3491a72e87538044586cee2f483d58",
+ "reference": "dc02e7811f3491a72e87538044586cee2f483d58",
+ "shasum": ""
+ },
+ "require": {
+ "php": "8.0 - 8.5"
+ },
+ "require-dev": {
+ "ext-simplexml": "*",
+ "phpstan/phpstan-nette": "^2.0@stable"
+ },
+ "bin": [
+ "src/tester"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Tester\\": "src"
+ },
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Miloslav Hůla",
+ "homepage": "https://github.com/milo"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
+ }
+ ],
+ "description": "Nette Tester: enjoyable unit testing in PHP with code coverage reporter. 🍏🍏🍎🍏",
+ "homepage": "https://tester.nette.org",
+ "keywords": [
+ "Xdebug",
+ "assertions",
+ "clover",
+ "code coverage",
+ "nette",
+ "pcov",
+ "phpdbg",
+ "phpunit",
+ "testing",
+ "unit"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/tester/issues",
+ "source": "https://github.com/nette/tester/tree/v2.5.7"
+ },
+ "time": "2025-11-22T18:50:53+00:00"
+ },
+ {
+ "name": "phpstan/phpstan",
+ "version": "2.1.33",
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f",
+ "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4|^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
+ },
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
+ "type": "library",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "keywords": [
+ "dev",
+ "static analysis"
+ ],
+ "support": {
+ "docs": "https://phpstan.org/user-guide/getting-started",
+ "forum": "https://github.com/phpstan/phpstan/discussions",
+ "issues": "https://github.com/phpstan/phpstan/issues",
+ "security": "https://github.com/phpstan/phpstan/security/policy",
+ "source": "https://github.com/phpstan/phpstan-src"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ondrejmirtes",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/phpstan",
+ "type": "github"
+ }
+ ],
+ "time": "2025-12-05T10:24:31+00:00"
+ },
+ {
+ "name": "phpstan/phpstan-deprecation-rules",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan-deprecation-rules.git",
+ "reference": "468e02c9176891cc901143da118f09dc9505fc2f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/468e02c9176891cc901143da118f09dc9505fc2f",
+ "reference": "468e02c9176891cc901143da118f09dc9505fc2f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0",
+ "phpstan/phpstan": "^2.1.15"
+ },
+ "require-dev": {
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.6"
+ },
+ "type": "phpstan-extension",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "rules.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.",
+ "support": {
+ "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues",
+ "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/2.0.3"
+ },
+ "time": "2025-05-14T10:56:57+00:00"
+ },
+ {
+ "name": "phpstan/phpstan-nette",
+ "version": "2.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan-nette.git",
+ "reference": "488d326408740b28c364849316ec065c13799568"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan-nette/zipball/488d326408740b28c364849316ec065c13799568",
+ "reference": "488d326408740b28c364849316ec065c13799568",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0",
+ "phpstan/phpstan": "^2.1.12"
+ },
+ "conflict": {
+ "nette/application": "<2.3.0",
+ "nette/component-model": "<2.3.0",
+ "nette/di": "<2.3.0",
+ "nette/forms": "<2.3.0",
+ "nette/http": "<2.3.0",
+ "nette/utils": "<2.3.0"
+ },
+ "require-dev": {
+ "nette/application": "^3.0",
+ "nette/di": "^3.0",
+ "nette/forms": "^3.0",
+ "nette/utils": "^2.3.0 || ^3.0.0 || ^4.0",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/phpstan-deprecation-rules": "^2.0",
+ "phpstan/phpstan-phpunit": "^2.0.8",
+ "phpstan/phpstan-strict-rules": "^2.0",
+ "phpunit/phpunit": "^9.6"
+ },
+ "type": "phpstan-extension",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "extension.neon",
+ "rules.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Nette Framework class reflection extension for PHPStan",
+ "support": {
+ "issues": "https://github.com/phpstan/phpstan-nette/issues",
+ "source": "https://github.com/phpstan/phpstan-nette/tree/2.0.7"
+ },
+ "time": "2025-12-08T10:39:26+00:00"
+ },
+ {
+ "name": "phpstan/phpstan-strict-rules",
+ "version": "2.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan-strict-rules.git",
+ "reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/d6211c46213d4181054b3d77b10a5c5cb0d59538",
+ "reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0",
+ "phpstan/phpstan": "^2.1.29"
+ },
+ "require-dev": {
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/phpstan-deprecation-rules": "^2.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.6"
+ },
+ "type": "phpstan-extension",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "rules.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Extra strict and opinionated rules for PHPStan",
+ "support": {
+ "issues": "https://github.com/phpstan/phpstan-strict-rules/issues",
+ "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.7"
+ },
+ "time": "2025-09-26T11:19:08+00:00"
+ },
+ {
+ "name": "slevomat/coding-standard",
+ "version": "8.22.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/slevomat/coding-standard.git",
+ "reference": "1dd80bf3b93692bedb21a6623c496887fad05fec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/1dd80bf3b93692bedb21a6623c496887fad05fec",
+ "reference": "1dd80bf3b93692bedb21a6623c496887fad05fec",
+ "shasum": ""
+ },
+ "require": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.1.2",
+ "php": "^7.4 || ^8.0",
+ "phpstan/phpdoc-parser": "^2.3.0",
+ "squizlabs/php_codesniffer": "^3.13.4"
+ },
+ "require-dev": {
+ "phing/phing": "3.0.1|3.1.0",
+ "php-parallel-lint/php-parallel-lint": "1.4.0",
+ "phpstan/phpstan": "2.1.24",
+ "phpstan/phpstan-deprecation-rules": "2.0.3",
+ "phpstan/phpstan-phpunit": "2.0.7",
+ "phpstan/phpstan-strict-rules": "2.0.6",
+ "phpunit/phpunit": "9.6.8|10.5.48|11.4.4|11.5.36|12.3.10"
+ },
+ "type": "phpcodesniffer-standard",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "SlevomatCodingStandard\\": "SlevomatCodingStandard/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.",
+ "keywords": [
+ "dev",
+ "phpcs"
+ ],
+ "support": {
+ "issues": "https://github.com/slevomat/coding-standard/issues",
+ "source": "https://github.com/slevomat/coding-standard/tree/8.22.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/kukulich",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-09-13T08:53:30+00:00"
+ },
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "3.13.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
+ "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0ca86845ce43291e8f5692c7356fccf3bcf02bf4",
+ "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
+ },
+ "bin": [
+ "bin/phpcbf",
+ "bin/phpcs"
+ ],
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Greg Sherwood",
+ "role": "Former lead"
+ },
+ {
+ "name": "Juliette Reinders Folmer",
+ "role": "Current lead"
+ },
+ {
+ "name": "Contributors",
+ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
+ }
+ ],
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+ "keywords": [
+ "phpcs",
+ "standards",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
+ "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
+ "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+ "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/PHPCSStandards",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/jrfnl",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/php_codesniffer",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/phpcsstandards",
+ "type": "thanks_dev"
+ }
+ ],
+ "time": "2025-11-04T16:30:35+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "dev",
+ "stability-flags": {},
+ "prefer-stable": true,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=8.4"
+ },
+ "platform-dev": {},
+ "plugin-api-version": "2.6.0"
+}
diff --git a/config/config.neon b/config/config.neon
new file mode 100644
index 0000000..c0a8d8d
--- /dev/null
+++ b/config/config.neon
@@ -0,0 +1,41 @@
+# ======================================
+# Includes ===============================
+includes:
+ # local overrides
+ - local.neon
+
+# ======================================
+# Config ===============================
+php:
+ date.timezone: Europe/Prague
+ # session.save_path: %tempDir%/session
+
+# ======================================
+# Extensions ===========================
+extensions:
+ console: Contributte\Console\DI\ConsoleExtension(%consoleMode%)
+ mcp: Contributte\Mcp\DI\McpExtension
+
+# ======================================
+# MCP ==================================
+mcp:
+ debug:
+ panel: %debugMode%
+
+ servers:
+ default:
+ name: MCP Skeleton
+ version: 1.0.0
+ discovery:
+ basePath: %appDir%
+ scanDirs:
+ - Domain/Mcp
+ excludeDirs:
+ - ../vendor
+ - ../tests
+
+# ======================================
+# Services =============================
+services:
+ - Contributte\Mcp\Console\McpCommand
+ nella.routerFactory: App\Model\Router\RouterFactory
diff --git a/config/local.neon.example b/config/local.neon.example
new file mode 100644
index 0000000..69e8512
--- /dev/null
+++ b/config/local.neon.example
@@ -0,0 +1,2 @@
+parameters:
+ # local overrides (optional)
diff --git a/phpstan.neon b/phpstan.neon
new file mode 100644
index 0000000..c8a98a7
--- /dev/null
+++ b/phpstan.neon
@@ -0,0 +1,16 @@
+includes:
+ - vendor/contributte/phpstan/phpstan.neon
+
+parameters:
+ level: 9
+ phpVersion: 80400
+
+ tmpDir: %currentWorkingDirectory%/var/tmp/phpstan
+
+ fileExtensions:
+ - php
+ - phpt
+
+ paths:
+ - app
+ - bin
diff --git a/ruleset.xml b/ruleset.xml
new file mode 100644
index 0000000..a338a00
--- /dev/null
+++ b/ruleset.xml
@@ -0,0 +1,20 @@
+
+
+ Contributte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /tests/Toolkit/Utils/BypassFinals.php
+ /tests/Toolkit/Utils/FileMock.php
+
diff --git a/tests/.coveralls.yml b/tests/.coveralls.yml
new file mode 100644
index 0000000..8450382
--- /dev/null
+++ b/tests/.coveralls.yml
@@ -0,0 +1,4 @@
+# for php-coveralls
+service_name: github-actions
+coverage_clover: coverage.xml
+json_path: coverage.json
diff --git a/tests/.gitignore b/tests/.gitignore
new file mode 100644
index 0000000..f0d3402
--- /dev/null
+++ b/tests/.gitignore
@@ -0,0 +1,10 @@
+# Folders - recursive
+*.expected
+*.actual
+
+# Folders
+/tmp
+
+# Files
+/*.log
+/*.html
diff --git a/tests/Cases/E2E/Container/EntrypointTest.php b/tests/Cases/E2E/Container/EntrypointTest.php
new file mode 100644
index 0000000..66dae11
--- /dev/null
+++ b/tests/Cases/E2E/Container/EntrypointTest.php
@@ -0,0 +1,57 @@
+createContainer();
+ $container->getByType(WebApplication::class);
+
+ Assert::type(Container::class, $container);
+ }
+
+ public function testCli(): void
+ {
+ $container = Bootstrap::boot()->createContainer();
+ $container->getByType(ConsoleApplication::class);
+
+ Assert::type(Container::class, $container);
+ }
+
+ public function testTest(): void
+ {
+ $container = Bootstrap::boot()->createContainer();
+ $container->getByType(Container::class);
+
+ Assert::type(Container::class, $container);
+ }
+
+}
+
+(new EntrypointTest())->run();
diff --git a/tests/Cases/E2E/Latte/LatteTest.php b/tests/Cases/E2E/Latte/LatteTest.php
new file mode 100644
index 0000000..27bbf0b
--- /dev/null
+++ b/tests/Cases/E2E/Latte/LatteTest.php
@@ -0,0 +1,36 @@
+createContainer();
+
+ /** @var TemplateFactory $templateFactory */
+ $templateFactory = $container->getByType(TemplateFactory::class);
+ Assert::type(TemplateFactory::class, $templateFactory);
+
+ /** @var Template $template */
+ $template = $templateFactory->createTemplate();
+ $finder = Finder::findFiles('*.latte')->from(Tests::APP_PATH);
+
+ try {
+ /** @var SplFileInfo $file */
+ foreach ($finder as $file) {
+ $template->getLatte()->warmupCache($file->getRealPath());
+ }
+ } catch (Throwable $e) {
+ Assert::fail(sprintf('Template compilation failed ([%s] %s)', $e::class, $e->getMessage()));
+ }
+});
diff --git a/tests/Toolkit/Tests.php b/tests/Toolkit/Tests.php
new file mode 100644
index 0000000..034b19d
--- /dev/null
+++ b/tests/Toolkit/Tests.php
@@ -0,0 +1,11 @@
+
+ Options -Indexes
+
+
+# enable cool URL
+
+ RewriteEngine On
+ # RewriteBase /
+
+ # use HTTPS
+ # RewriteCond %{HTTPS} !on
+ # RewriteRule .? https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
+
+ # prevents files starting with dot to be viewed by browser
+ RewriteRule /\.|^\.(?!well-known/) - [F]
+
+ # front controller
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz|map)$ index.php [L]
+
+
+# enable gzip compression
+
+
+ AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json application/xml image/svg+xml
+
+
diff --git a/www/index.php b/www/index.php
new file mode 100644
index 0000000..0996575
--- /dev/null
+++ b/www/index.php
@@ -0,0 +1,5 @@
+