diff --git a/.editorconfig b/.editorconfig index cfec585..cb5cb07 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,15 +1,28 @@ +# editorconfig.org + root = true [*] charset = utf-8 end_of_line = lf insert_final_newline = true -indent_style = spaces +indent_style = space indent_size = 4 trim_trailing_whitespace = true +[*.js] +indent_size = 2 + [*.md] trim_trailing_whitespace = false +[*.php] +ij_php_space_before_short_closure_left_parenthesis = false +ij_php_space_after_type_cast = true + [*.yml] indent_size = 2 + +[LICENSE*] +indent_style = unset +indent_size = unset diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..6ed6edb --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,102 @@ +# Code of Conduct + +## Our Pledge + +As contributors and maintainers of this project, and in order to keep community open and welcoming, we ask to +respect all community members. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +- Focusing on what is best not just for us as individuals, but for the overall community + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery, and sexual attention or advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting + +## Enforcement Responsibilities + +Core team members are responsible for clarifying and enforcing our standards of acceptable behavior and will take +appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Core team members have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, +issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for +moderation decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing +the community in public spaces. Examples of representing a project or community include using an official email +address, posting via an official social media account, within project GitHub, official forum or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting core team members. All +complaints will be reviewed and investigated promptly and fairly. + +All core team members are obligated to respect the privacy and security of the reporter of any incident. + +## Enforcement Guidelines + +Core team members will follow these Community Impact Guidelines in determining the consequences for any action they +deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in +the community. + +**Consequence**: A private, written warning from core team members, providing clarity around the nature of the violation +and an explanation of why the behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of actions. + +**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including +unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding +interactions in community spaces as well as external channels like social media. Violating these terms may lead to +a temporary or permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified +period of time. No public or private interaction with the people involved, including unsolicited interaction with those +enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate +behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..102c3ed --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +--- +github: [terabytesoftw] diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index a7c47a8..0d78c31 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,13 +1,15 @@ -### What steps will reproduce the problem? +# Issue Report -### What is the expected result? +## What steps will reproduce the problem? -### What do you get instead? +## What is the expected result? -### Additional info +## What do you get instead? -| Q | A -| ---------------- | --- -| Version | 1.0.? -| PHP version | -| Operating system | +## Additional info + +| Q | A | +| ---------------- | ----- | +| Version | 1.0.? | +| PHP version | | +| Operating system | | diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 0c07f8d..caa140a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,6 +1,8 @@ -| Q | A -| ------------ | --- -| Is bugfix | ✔️/❌ -| New feature | ✔️/❌ -| Breaks BC | ✔️/❌ -| Fixed issues | comma-separated list of tickets # fixed by the PR, if any +# Pull Request + +| Q | A | +| ------------ | ------------------------------------------------------------------ | +| Is bugfix? | ✔️/❌ | +| New feature? | ✔️/❌ | +| Breaks BC? | ✔️/❌ | +| Fixed issues | | diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d7ebdbf..ce0844c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,16 +1,15 @@ +--- version: 2 updates: - # Maintain dependencies for GitHub Actions. - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "daily" - # Too noisy. See https://github.community/t/increase-if-necessary-for-github-actions-in-dependabot/179581 - open-pull-requests-limit: 0 + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" - # Maintain dependencies for Composer - - package-ecosystem: "composer" - directory: "/" - schedule: - interval: "daily" - versioning-strategy: increase-if-necessary + # Maintain dependencies for Composer + - package-ecosystem: "composer" + directory: "/" + schedule: + interval: "daily" + versioning-strategy: increase-if-necessary diff --git a/.github/linters/actionlint.yml b/.github/linters/actionlint.yml new file mode 100644 index 0000000..785d850 --- /dev/null +++ b/.github/linters/actionlint.yml @@ -0,0 +1,7 @@ +--- +paths: + .github/workflows/**/*.yml: + ignore: + - '"pull_request" section is alias node but mapping node is expected' + - '"push" section is alias node but mapping node is expected' + - "section is alias node but mapping node is expected" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0c908e6..0f270c8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,25 +1,23 @@ +--- on: - pull_request: + pull_request: &ignore-paths paths-ignore: - - 'docs/**' - - 'README.md' - - 'CHANGELOG.md' - - '.gitignore' - - '.gitattributes' + - ".gitattributes" + - ".gitignore" + - "CHANGELOG.md" + - "docs/**" + - "README.md" - push: - paths-ignore: - - 'docs/**' - - 'README.md' - - 'CHANGELOG.md' - - '.gitignore' - - '.gitattributes' + push: *ignore-paths name: build +permissions: + contents: read + jobs: codeception: - uses: php-forge/actions/.github/workflows/codeception.yml@main + uses: yii2-framework/actions/.github/workflows/codeception.yml@main secrets: AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }} CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/dependency-check.yml b/.github/workflows/dependency-check.yml index 3e588e2..94a100b 100644 --- a/.github/workflows/dependency-check.yml +++ b/.github/workflows/dependency-check.yml @@ -1,24 +1,23 @@ +--- on: - pull_request: + pull_request: &ignore-paths paths-ignore: - - 'docs/**' - - 'README.md' - - 'CHANGELOG.md' - - '.gitignore' - - '.gitattributes' + - ".gitattributes" + - ".gitignore" + - "CHANGELOG.md" + - "docs/**" + - "README.md" - push: - paths-ignore: - - 'docs/**' - - 'README.md' - - 'CHANGELOG.md' - - '.gitignore' - - '.gitattributes' + push: *ignore-paths + +name: Composer require checker -name: dependency-check +permissions: + contents: read + pull-requests: write jobs: composer-require-checker: - uses: php-forge/actions/.github/workflows/composer-require-checker.yml@main + uses: yii2-framework/actions/.github/workflows/composer-require-checker.yml@main secrets: AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }} diff --git a/.github/workflows/ecs.yml b/.github/workflows/ecs.yml index 0693163..0fa6e11 100644 --- a/.github/workflows/ecs.yml +++ b/.github/workflows/ecs.yml @@ -1,24 +1,23 @@ +--- on: - pull_request: + pull_request: &ignore-paths paths-ignore: - - 'docs/**' - - 'README.md' - - 'CHANGELOG.md' - - '.gitignore' - - '.gitattributes' + - ".gitattributes" + - ".gitignore" + - "CHANGELOG.md" + - "docs/**" + - "README.md" - push: - paths-ignore: - - 'docs/**' - - 'README.md' - - 'CHANGELOG.md' - - '.gitignore' - - '.gitattributes' + push: *ignore-paths name: ecs +permissions: + contents: read + pull-requests: write + jobs: easy-coding-standard: - uses: php-forge/actions/.github/workflows/ecs.yml@main + uses: yii2-framework/actions/.github/workflows/ecs.yml@main with: extensions: mbstring diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml new file mode 100644 index 0000000..7b46557 --- /dev/null +++ b/.github/workflows/linter.yml @@ -0,0 +1,17 @@ +--- +on: + - pull_request + - push + +name: linter + +permissions: + checks: write + contents: read + statuses: write + +jobs: + linter: + uses: yii2-framework/actions/.github/workflows/super-linter.yml@v1 + secrets: + AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 6d1ad1b..2623179 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -1,25 +1,24 @@ +--- on: - pull_request: + pull_request: &ignore-paths paths-ignore: - - 'docs/**' - - 'README.md' - - 'CHANGELOG.md' - - '.gitignore' - - '.gitattributes' + - ".gitattributes" + - ".gitignore" + - "CHANGELOG.md" + - "docs/**" + - "README.md" - push: - paths-ignore: - - 'docs/**' - - 'README.md' - - 'CHANGELOG.md' - - '.gitignore' - - '.gitattributes' + push: *ignore-paths name: static analysis +permissions: + contents: read + pull-requests: write + jobs: phpstan: - uses: php-forge/actions/.github/workflows/phpstan.yml@main + uses: yii2-framework/actions/.github/workflows/phpstan.yml@main secrets: AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }} with: diff --git a/.gitignore b/.gitignore index 48678c8..0c1ed62 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,12 @@ composer.phar # composer vendor dir /vendor +# config plugin +/config/.merge-plan.php + +#copilot +copilot + # local phpunit config /phpunit.xml @@ -46,6 +52,3 @@ requirements.php .buildpath .project .settings - -# config plugin -/config/.merge-plan.php diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 0000000..12624ca --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,6 @@ +{ + "extends": "stylelint-config-standard", + "rules": { + "selector-pseudo-element-colon-notation": "double" + } +} diff --git a/CHANGELOG.md b/CHANGELOG.md index af8e916..caad2b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ -# Change Log +# ChangeLog -## 0.1.2 Under development +## 0.1.2 October 8, 2025 + +- Bug #197: Update workflows and documentation for improved CI/CD processes and feature clarity (@terabytesoftw) ## 0.1.1 September 03, 2025 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0ece5fe --- /dev/null +++ b/LICENSE @@ -0,0 +1,31 @@ +SPDX-License-Identifier: BSD-3-Clause + +BSD 3-Clause License + +Copyright (c) 2008, Terabytesoftw (https://github.com/terabytesoftw/) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index 13bf79d..0000000 --- a/LICENSE.md +++ /dev/null @@ -1,27 +0,0 @@ -# BSD 3-Clause License - -Copyright © 2008 by Terabytesoftw () -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. -* Neither the name of Yii Software nor the names of its contributors may be - used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md index 06d2d93..0c161aa 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,28 @@ +

- - Yii Framework - + + + + Yii Framework +

Web Application Basic

+

+

- - PHP version - - - Yii 2.0.x - - - Yii 22.0.x - - Codeception + Codeception - PHPStan + PHPStan

-A modern, Bootstrap 5-powered Yii2 application template designed for rapid web-application development. Built with best practices, clean architecture, and developer-friendly configuration, it lets you create production-ready apps with minimal setup while maintaining code quality and extensibility. +

+ A modern, Bootstrap 5-powered Yii2 application template for rapid development
+ Clean architecture, production-ready features, and developer-friendly configuration +

@@ -33,12 +32,10 @@ A modern, Bootstrap 5-powered Yii2 application template designed for rapid web-a ## Features -- ✅ **Asset Management** - Optimized asset bundles for CSS, JS, and resource management. -- ✅ **Clean Architecture** - Well-organized directory structure following Yii2 best practices. -- ✅ **Console Commands** - Example console commands for background tasks and maintenance. -- ✅ **Developer Tools** - Debugging tools, logging, and development-friendly configurations. -- ✅ **Modern Bootstrap 5 UI** - Responsive, mobile-first design with latest Bootstrap components. -- ✅ **Testing Ready** - Codeception test suite with examples for functional and unit testing. + + + Feature Overview + ## Available deployment options @@ -57,6 +54,7 @@ Long-running PHP workers for higher throughput and lower latency. [![FrankenPHP](https://img.shields.io/badge/FrankenPHP-777BB4?style=for-the-badge&logo=php&logoColor=white)](https://github.com/yii2-extensions/app-basic/tree/franken-php) [![RoadRunner](https://img.shields.io/badge/RoadRunner-%23FF6B35.svg?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDJMMjIgMTJMMTIgMjJMMiAxMkwxMiAyWiIgZmlsbD0iI0ZGRkZGRiIvPgo8cGF0aCBkPSJNOCAyTDE2IDEwTDggMThaIiBmaWxsPSIjRkY2QjM1Ii8+CjxwYXRoIGQ9Ik0xNiA2TDIwIDEwTDE2IDE0WiIgZmlsbD0iI0ZGNkIzNSIvPgo8L3N2Zz4K&logoColor=white)](https://github.com/yii2-extensions/app-basic/tree/road-runner) +> [!IMPORTANT] > For setup instructions, see `README.md` in each branch. ## How it works @@ -75,7 +73,8 @@ The Yii2 Web Application Basic template provides a complete foundation for build - **Extensible**: Easy to customize and extend for specific project requirements. - **Production-ready**: Includes security features and optimizations for deployment. ->Note: Also, make sure to install [`npm`](https://nodejs.org/en/download/) for frontend dependency management. +> [!NOTE] +> Also, make sure to install [`npm`](https://nodejs.org/en/download/) for frontend dependency management. ### Installation @@ -104,7 +103,7 @@ php -S localhost:8080 -t web root/ ├── config/ Configuration files │ ├── common/ Common configuration -│ ├── console/ Console configuration +P│ ├── console/ Console configuration │ ├── web/ Web configuration │ └── messages.php Translation config ├── src/ @@ -155,8 +154,11 @@ final class SiteController extends Controller ## Package information +[![PHP](https://img.shields.io/badge/%3E%3D8.1-777BB4.svg?style=for-the-badge&logo=php&logoColor=white)](https://www.php.net/releases/8.1/en.php) +[![Yii 2.0.x](https://img.shields.io/badge/2.0.53-0073AA.svg?style=for-the-badge&logo=yii&logoColor=white)](https://github.com/yiisoft/yii2/tree/2.0.53) +[![Yii 22.0.x](https://img.shields.io/badge/22.0.x-0073AA.svg?style=for-the-badge&logo=yii&logoColor=white)](https://github.com/yiisoft/yii2/tree/22.0) [![Latest Stable Version](https://img.shields.io/packagist/v/yii2-extensions/app-basic.svg?style=for-the-badge&logo=packagist&logoColor=white&label=Stable)](https://packagist.org/packages/yii2-extensions/app-basic) -[![Total Downloads](https://img.shields.io/packagist/dt/yii2-extensions/app-basic.svg?style=for-the-badge&logo=packagist&logoColor=white&label=Downloads)](https://packagist.org/packages/yii2-extensions/app-basic) +[![Total Downloads](https://img.shields.io/packagist/dt/yii2-extensions/app-basic.svg?style=for-the-badge&logo=composer&logoColor=white&label=Downloads)](https://packagist.org/packages/yii2-extensions/app-basic) ## Quality code @@ -169,7 +171,7 @@ final class SiteController extends Controller For detailed configuration options and advanced usage: - 📚 [Installation Guide](docs/installation.md) -- ⚙️ [Configuration Reference](docs/configuration.md) +- ⚙️ [Configuration Reference](docs/configuration.md) - 🧪 [Testing Guide](docs/testing.md) - 📸 [Screenshots](docs/screenshots.md) @@ -179,4 +181,4 @@ For detailed configuration options and advanced usage: ## License -[![License](https://img.shields.io/github/license/yii2-extensions/app-basic?style=for-the-badge&logo=opensourceinitiative&logoColor=white&labelColor=333333)](LICENSE.md) +[![License](https://img.shields.io/badge/License-BSD--3--Clause-brightgreen.svg?style=for-the-badge&logo=opensourceinitiative&logoColor=white&labelColor=555555)](LICENSE) diff --git a/composer-require-checker.json b/composer-require-checker.json index e6a9190..8eb9cdd 100644 --- a/composer-require-checker.json +++ b/composer-require-checker.json @@ -1,5 +1,3 @@ { - "symbol-whitelist": [ - "YII_ENV" - ] + "symbol-whitelist": ["YII_ENV"] } diff --git a/composer.json b/composer.json index 93998b5..c3a7a46 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ "require": { "php": ">=8.1", "php-forge/foxy": "^0.1", - "ui-awesome/html-svg":"^0.2", + "ui-awesome/html-svg": "^0.2", "vlucas/phpdotenv": "^5.6", "yiisoft/yii2": "^2.0.53|^22", "yiisoft/yii2-bootstrap5": "^2.0.50|^22" diff --git a/composer.lock b/composer.lock index 49a6f96..da7cbab 100644 --- a/composer.lock +++ b/composer.lock @@ -77,12 +77,12 @@ "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "719026bb30813accb68271fee7e39552a58e9f65" + "reference": "96a9896f1a7d418fc78c0c7b2a3757664f80e7fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/719026bb30813accb68271fee7e39552a58e9f65", - "reference": "719026bb30813accb68271fee7e39552a58e9f65", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/96a9896f1a7d418fc78c0c7b2a3757664f80e7fc", + "reference": "96a9896f1a7d418fc78c0c7b2a3757664f80e7fc", "shasum": "" }, "require": { @@ -130,7 +130,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.8" + "source": "https://github.com/composer/ca-bundle/tree/main" }, "funding": [ { @@ -142,7 +142,7 @@ "type": "github" } ], - "time": "2025-08-20T18:49:47+00:00" + "time": "2025-09-17T07:10:22+00:00" }, { "name": "composer/class-map-generator", @@ -150,12 +150,12 @@ "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "ba9f089655d4cdd64e762a6044f411ccdaec0076" + "reference": "9a419ca773c1c9f294ad687c6f53e799c6a0571c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/ba9f089655d4cdd64e762a6044f411ccdaec0076", - "reference": "ba9f089655d4cdd64e762a6044f411ccdaec0076", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/9a419ca773c1c9f294ad687c6f53e799c6a0571c", + "reference": "9a419ca773c1c9f294ad687c6f53e799c6a0571c", "shasum": "" }, "require": { @@ -200,7 +200,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.6.2" + "source": "https://github.com/composer/class-map-generator/tree/main" }, "funding": [ { @@ -212,7 +212,7 @@ "type": "github" } ], - "time": "2025-08-20T18:52:43+00:00" + "time": "2025-10-03T14:57:42+00:00" }, { "name": "composer/composer", @@ -220,12 +220,12 @@ "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "b88968cf6ad5098de2d5510e42216c4d912940cc" + "reference": "fee2383ed5bb0dfd95315997cd789fa8d37f2f47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/b88968cf6ad5098de2d5510e42216c4d912940cc", - "reference": "b88968cf6ad5098de2d5510e42216c4d912940cc", + "url": "https://api.github.com/repos/composer/composer/zipball/fee2383ed5bb0dfd95315997cd789fa8d37f2f47", + "reference": "fee2383ed5bb0dfd95315997cd789fa8d37f2f47", "shasum": "" }, "require": { @@ -236,20 +236,20 @@ "composer/semver": "^3.3", "composer/spdx-licenses": "^1.5.7", "composer/xdebug-handler": "^2.0.2 || ^3.0.3", - "justinrainbow/json-schema": "^6.3.1", + "justinrainbow/json-schema": "^6.5.1", "php": "^7.2.5 || ^8.0", "psr/log": "^1.0 || ^2.0 || ^3.0", - "react/promise": "^2.11 || ^3.3", + "react/promise": "^3.3", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.2", "seld/signal-handler": "^2.0", - "symfony/console": "^5.4.35 || ^6.3.12 || ^7.0.3 || ^8.0", - "symfony/filesystem": "^5.4.35 || ^6.3.12 || ^7.0.3 || ^8.0", - "symfony/finder": "^5.4.35 || ^6.3.12 || ^7.0.3 || ^8.0", + "symfony/console": "^5.4.47 || ^6.4.25 || ^7.1.10 || ^8.0", + "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.1.10 || ^8.0", + "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.1.10 || ^8.0", "symfony/polyfill-php73": "^1.24", "symfony/polyfill-php80": "^1.24", "symfony/polyfill-php81": "^1.24", - "symfony/process": "^5.4.35 || ^6.3.12 || ^7.0.3 || ^8.0" + "symfony/process": "^5.4.47 || ^6.4.25 || ^7.1.10 || ^8.0" }, "require-dev": { "phpstan/phpstan": "^1.11.8", @@ -257,7 +257,7 @@ "phpstan/phpstan-phpunit": "^1.4.0", "phpstan/phpstan-strict-rules": "^1.6.0", "phpstan/phpstan-symfony": "^1.4.0", - "symfony/phpunit-bridge": "^6.4.3 || ^7.0.1 || ^8.0" + "symfony/phpunit-bridge": "^6.4.25 || ^7.3.3 || ^8.0" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -323,7 +323,7 @@ "type": "github" } ], - "time": "2025-08-27T20:54:37+00:00" + "time": "2025-10-07T09:41:51+00:00" }, { "name": "composer/metadata-minifier", @@ -331,12 +331,12 @@ "source": { "type": "git", "url": "https://github.com/composer/metadata-minifier.git", - "reference": "0a38292ff395f3716454613e3a6c6eaa422456c8" + "reference": "9178fb630c1f69cb0f3b56e2052ed3d347fa171a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/0a38292ff395f3716454613e3a6c6eaa422456c8", - "reference": "0a38292ff395f3716454613e3a6c6eaa422456c8", + "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/9178fb630c1f69cb0f3b56e2052ed3d347fa171a", + "reference": "9178fb630c1f69cb0f3b56e2052ed3d347fa171a", "shasum": "" }, "require": { @@ -387,13 +387,9 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2025-02-17T12:51:19+00:00" + "time": "2025-09-03T06:59:18+00:00" }, { "name": "composer/pcre", @@ -401,12 +397,12 @@ "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "fadb6382c5d62e4e59ca45a4e77d3a356b40c594" + "reference": "efd688146c54599288d52f9f459d81b345a9778f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/fadb6382c5d62e4e59ca45a4e77d3a356b40c594", - "reference": "fadb6382c5d62e4e59ca45a4e77d3a356b40c594", + "url": "https://api.github.com/repos/composer/pcre/zipball/efd688146c54599288d52f9f459d81b345a9778f", + "reference": "efd688146c54599288d52f9f459d81b345a9778f", "shasum": "" }, "require": { @@ -470,7 +466,7 @@ "type": "github" } ], - "time": "2025-05-28T08:54:55+00:00" + "time": "2025-10-06T14:04:28+00:00" }, { "name": "composer/semver", @@ -478,12 +474,12 @@ "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" + "reference": "b52829022cb18210bb84e44e457bd4e890f8d2a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", - "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "url": "https://api.github.com/repos/composer/semver/zipball/b52829022cb18210bb84e44e457bd4e890f8d2a7", + "reference": "b52829022cb18210bb84e44e457bd4e890f8d2a7", "shasum": "" }, "require": { @@ -536,7 +532,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.4" + "source": "https://github.com/composer/semver/tree/main" }, "funding": [ { @@ -548,7 +544,7 @@ "type": "github" } ], - "time": "2025-08-20T19:15:30+00:00" + "time": "2025-09-03T06:59:12+00:00" }, { "name": "composer/spdx-licenses", @@ -556,12 +552,12 @@ "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "edf364cefe8c43501e21e88110aac10b284c3c9f" + "reference": "f22eab83707e49be5a66ef4b7b9cb4bbd667f39a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/edf364cefe8c43501e21e88110aac10b284c3c9f", - "reference": "edf364cefe8c43501e21e88110aac10b284c3c9f", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/f22eab83707e49be5a66ef4b7b9cb4bbd667f39a", + "reference": "f22eab83707e49be5a66ef4b7b9cb4bbd667f39a", "shasum": "" }, "require": { @@ -613,7 +609,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.9" + "source": "https://github.com/composer/spdx-licenses/tree/main" }, "funding": [ { @@ -623,13 +619,9 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2025-05-12T21:07:07+00:00" + "time": "2025-10-02T06:46:19+00:00" }, { "name": "composer/xdebug-handler", @@ -872,12 +864,12 @@ "source": { "type": "git", "url": "https://github.com/jsonrainbow/json-schema.git", - "reference": "b5ab21e431594897e5bb86343c01f140ba862c26" + "reference": "1ed72392105ee98ce8b18c3a2b5dbe096c9af27f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/b5ab21e431594897e5bb86343c01f140ba862c26", - "reference": "b5ab21e431594897e5bb86343c01f140ba862c26", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/1ed72392105ee98ce8b18c3a2b5dbe096c9af27f", + "reference": "1ed72392105ee98ce8b18c3a2b5dbe096c9af27f", "shasum": "" }, "require": { @@ -938,9 +930,9 @@ ], "support": { "issues": "https://github.com/jsonrainbow/json-schema/issues", - "source": "https://github.com/jsonrainbow/json-schema/tree/6.5.1" + "source": "https://github.com/jsonrainbow/json-schema/tree/master" }, - "time": "2025-08-29T10:58:11+00:00" + "time": "2025-09-20T10:54:20+00:00" }, { "name": "marc-mabe/php-enum", @@ -948,12 +940,12 @@ "source": { "type": "git", "url": "https://github.com/marc-mabe/php-enum.git", - "reference": "7159809e5cfa041dca28e61f7f7ae58063aae8ed" + "reference": "bb426fcdd65c60fb3638ef741e8782508fda7eef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/marc-mabe/php-enum/zipball/7159809e5cfa041dca28e61f7f7ae58063aae8ed", - "reference": "7159809e5cfa041dca28e61f7f7ae58063aae8ed", + "url": "https://api.github.com/repos/marc-mabe/php-enum/zipball/bb426fcdd65c60fb3638ef741e8782508fda7eef", + "reference": "bb426fcdd65c60fb3638ef741e8782508fda7eef", "shasum": "" }, "require": { @@ -1012,9 +1004,9 @@ ], "support": { "issues": "https://github.com/marc-mabe/php-enum/issues", - "source": "https://github.com/marc-mabe/php-enum/tree/v4.7.1" + "source": "https://github.com/marc-mabe/php-enum/tree/v4.7.2" }, - "time": "2024-11-28T04:54:44+00:00" + "time": "2025-09-14T11:18:39+00:00" }, { "name": "php-forge/awesome-widget", @@ -1573,12 +1565,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "dc8d57e6d71f26f368f80053b4e5bc92f6c395e5" + "reference": "8294fbe48814e9e313f5af7adcd2ce3d49fcba84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/dc8d57e6d71f26f368f80053b4e5bc92f6c395e5", - "reference": "dc8d57e6d71f26f368f80053b4e5bc92f6c395e5", + "url": "https://api.github.com/repos/symfony/console/zipball/8294fbe48814e9e313f5af7adcd2ce3d49fcba84", + "reference": "8294fbe48814e9e313f5af7adcd2ce3d49fcba84", "shasum": "" }, "require": { @@ -1663,7 +1655,7 @@ "type": "tidelift" } ], - "time": "2025-08-29T07:40:56+00:00" + "time": "2025-10-08T10:26:29+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1813,12 +1805,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "57861c3e46d9c85d89b73588afae62049ceafc5e" + "reference": "c1a41e8ecb0f76b9e6d93deaeb5b85718975b12a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/57861c3e46d9c85d89b73588afae62049ceafc5e", - "reference": "57861c3e46d9c85d89b73588afae62049ceafc5e", + "url": "https://api.github.com/repos/symfony/finder/zipball/c1a41e8ecb0f76b9e6d93deaeb5b85718975b12a", + "reference": "c1a41e8ecb0f76b9e6d93deaeb5b85718975b12a", "shasum": "" }, "require": { @@ -1873,7 +1865,7 @@ "type": "tidelift" } ], - "time": "2025-08-12T20:20:59+00:00" + "time": "2025-09-08T21:17:01+00:00" }, { "name": "symfony/polyfill-ctype", @@ -2622,12 +2614,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8" + "reference": "48bad913268c8cafabbf7034b39c8bb24fbc5ab8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8", - "reference": "6be2f0c9ab3428587c07bed03aa9e3d1b823c6c8", + "url": "https://api.github.com/repos/symfony/process/zipball/48bad913268c8cafabbf7034b39c8bb24fbc5ab8", + "reference": "48bad913268c8cafabbf7034b39c8bb24fbc5ab8", "shasum": "" }, "require": { @@ -2679,7 +2671,7 @@ "type": "tidelift" } ], - "time": "2025-08-14T06:23:17+00:00" + "time": "2025-09-11T09:57:09+00:00" }, { "name": "symfony/service-contracts", @@ -2775,12 +2767,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "b87a95c24475492ac665704843e341873eea1b28" + "reference": "f929eccf09531078c243df72398560e32fa4cf4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/b87a95c24475492ac665704843e341873eea1b28", - "reference": "b87a95c24475492ac665704843e341873eea1b28", + "url": "https://api.github.com/repos/symfony/string/zipball/f929eccf09531078c243df72398560e32fa4cf4f", + "reference": "f929eccf09531078c243df72398560e32fa4cf4f", "shasum": "" }, "require": { @@ -2795,7 +2787,6 @@ }, "require-dev": { "symfony/emoji": "^7.4|^8.0", - "symfony/error-handler": "^7.4|^8.0", "symfony/http-client": "^7.4|^8.0", "symfony/intl": "^7.4|^8.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -2858,7 +2849,7 @@ "type": "tidelift" } ], - "time": "2025-08-26T09:23:28+00:00" + "time": "2025-09-11T14:37:55+00:00" }, { "name": "ui-awesome/html-attribute", @@ -3549,12 +3540,12 @@ "source": { "type": "git", "url": "https://github.com/yiisoft/yii2-framework.git", - "reference": "1069366405ec1c99605839047900945bc25b2c2d" + "reference": "4655ce6a4d01452df9bf2146658a15cef6d35766" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/1069366405ec1c99605839047900945bc25b2c2d", - "reference": "1069366405ec1c99605839047900945bc25b2c2d", + "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/4655ce6a4d01452df9bf2146658a15cef6d35766", + "reference": "4655ce6a4d01452df9bf2146658a15cef6d35766", "shasum": "" }, "require": { @@ -3656,7 +3647,7 @@ "type": "tidelift" } ], - "time": "2025-08-29T13:44:35+00:00" + "time": "2025-09-04T21:30:36+00:00" }, { "name": "yiisoft/yii2-bootstrap5", @@ -3822,12 +3813,12 @@ "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "a70421e94b11b7e92e9922e2494ea7debdcac79a" + "reference": "bfcf25c7bd3912977dffa31da96f1dfda9a2ad5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/a70421e94b11b7e92e9922e2494ea7debdcac79a", - "reference": "a70421e94b11b7e92e9922e2494ea7debdcac79a", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/bfcf25c7bd3912977dffa31da96f1dfda9a2ad5b", + "reference": "bfcf25c7bd3912977dffa31da96f1dfda9a2ad5b", "shasum": "" }, "require": { @@ -3835,7 +3826,7 @@ "php": "8.1.* || 8.2.* || 8.3.* || 8.4.*" }, "require-dev": { - "cucumber/gherkin-monorepo": "dev-gherkin-v34.0.0", + "cucumber/gherkin-monorepo": "dev-gherkin-v35.1.0", "friendsofphp/php-cs-fixer": "^3.77", "mikey179/vfsstream": "^1.6", "phpstan/extension-installer": "^1", @@ -3884,7 +3875,7 @@ "issues": "https://github.com/Behat/Gherkin/issues", "source": "https://github.com/Behat/Gherkin/tree/master" }, - "time": "2025-08-19T15:39:32+00:00" + "time": "2025-09-22T07:34:30+00:00" }, { "name": "codeception/c3", @@ -3945,16 +3936,16 @@ }, { "name": "codeception/codeception", - "version": "5.3.2", + "version": "dev-main", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "582112d7a603d575e41638df1e96900b10ae91b8" + "reference": "96443080d3c5b345b8bceb1f9c6251c520f2a7f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/582112d7a603d575e41638df1e96900b10ae91b8", - "reference": "582112d7a603d575e41638df1e96900b10ae91b8", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/96443080d3c5b345b8bceb1f9c6251c520f2a7f6", + "reference": "96443080d3c5b345b8bceb1f9c6251c520f2a7f6", "shasum": "" }, "require": { @@ -4017,13 +4008,14 @@ "symfony/phpunit-bridge": "For phpunit-bridge support", "vlucas/phpdotenv": "For loading params from .env files" }, + "default-branch": true, "bin": [ "codecept" ], "type": "library", "extra": { "branch-alias": { - "dev-main": "5.2.x-dev" + "dev-main": "5.3.x-dev" } }, "autoload": { @@ -4060,7 +4052,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/5.3.2" + "source": "https://github.com/Codeception/Codeception/tree/main" }, "funding": [ { @@ -4068,7 +4060,7 @@ "type": "open_collective" } ], - "time": "2025-05-26T07:47:39+00:00" + "time": "2025-10-05T00:04:31+00:00" }, { "name": "codeception/lib-asserts", @@ -4347,16 +4339,16 @@ }, { "name": "codeception/module-phpbrowser", - "version": "3.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/Codeception/module-phpbrowser.git", - "reference": "a972411f60cd00d00d5e5e3b35496ba4a23bcffc" + "reference": "460e392c77370f7836012b16e06071eb1607876a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/a972411f60cd00d00d5e5e3b35496ba4a23bcffc", - "reference": "a972411f60cd00d00d5e5e3b35496ba4a23bcffc", + "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/460e392c77370f7836012b16e06071eb1607876a", + "reference": "460e392c77370f7836012b16e06071eb1607876a", "shasum": "" }, "require": { @@ -4364,8 +4356,8 @@ "codeception/lib-innerbrowser": "*@dev", "ext-json": "*", "guzzlehttp/guzzle": "^7.4", - "php": "^8.0", - "symfony/browser-kit": "^5.4 || ^6.0 || ^7.0" + "php": "^8.1", + "symfony/browser-kit": "^5.4 | ^6.0 | ^7.0" }, "conflict": { "codeception/codeception": "<5.0", @@ -4373,8 +4365,10 @@ }, "require-dev": { "aws/aws-sdk-php": "^3.199", - "codeception/module-rest": "^2.0 || *@dev", - "ext-curl": "*" + "codeception/module-rest": "^2.0 | *@dev", + "ext-curl": "*", + "phpstan/phpstan": "^1.10", + "squizlabs/php_codesniffer": "^3.10" }, "suggest": { "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests" @@ -4406,9 +4400,9 @@ ], "support": { "issues": "https://github.com/Codeception/module-phpbrowser/issues", - "source": "https://github.com/Codeception/module-phpbrowser/tree/3.0.1" + "source": "https://github.com/Codeception/module-phpbrowser/tree/3.0.2" }, - "time": "2023-12-08T19:41:28+00:00" + "time": "2025-09-04T10:45:58+00:00" }, { "name": "codeception/module-yii2", @@ -5105,12 +5099,12 @@ "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f7c23a43eee861070ab4e88819a4e76a611c7e4f" + "reference": "0da2d6679a3df45d6d720aa2e0d4568f82a32e46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f7c23a43eee861070ab4e88819a4e76a611c7e4f", - "reference": "f7c23a43eee861070ab4e88819a4e76a611c7e4f", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0da2d6679a3df45d6d720aa2e0d4568f82a32e46", + "reference": "0da2d6679a3df45d6d720aa2e0d4568f82a32e46", "shasum": "" }, "require": { @@ -5156,7 +5150,7 @@ "issues": "https://github.com/nikic/PHP-Parser/issues", "source": "https://github.com/nikic/PHP-Parser/tree/master" }, - "time": "2025-08-19T18:41:44+00:00" + "time": "2025-09-08T07:54:25+00:00" }, { "name": "phar-io/manifest", @@ -5324,23 +5318,23 @@ "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "a998f10f8e3f5f38739e82cacebdee731a3c04a3" + "reference": "1d5bbbff94b8d43d3f6ccb83652989483c6e3dce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/a998f10f8e3f5f38739e82cacebdee731a3c04a3", - "reference": "a998f10f8e3f5f38739e82cacebdee731a3c04a3", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/1d5bbbff94b8d43d3f6ccb83652989483c6e3dce", + "reference": "1d5bbbff94b8d43d3f6ccb83652989483c6e3dce", "shasum": "" }, "require": { "composer-plugin-api": "^2.0", - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.12.0 || ^2.0" + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.0" }, "require-dev": { "composer/composer": "^2.0", "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + "phpstan/phpstan-strict-rules": "^2.0" }, "default-branch": true, "type": "composer-plugin", @@ -5365,20 +5359,15 @@ "issues": "https://github.com/phpstan/extension-installer/issues", "source": "https://github.com/phpstan/extension-installer/tree/1.4.x" }, - "time": "2025-08-21T08:44:40+00:00" + "time": "2025-09-06T11:38:31+00:00" }, { "name": "phpstan/phpstan", "version": "2.1.x-dev", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "b3ae3d27beb3625f29c7a01799d3f45506c53745" - }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b3ae3d27beb3625f29c7a01799d3f45506c53745", - "reference": "b3ae3d27beb3625f29c7a01799d3f45506c53745", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d16b1ca949bc5563f76488bbab6ff7ad5c9e84a2", + "reference": "d16b1ca949bc5563f76488bbab6ff7ad5c9e84a2", "shasum": "" }, "require": { @@ -5424,7 +5413,7 @@ "type": "github" } ], - "time": "2025-08-31T15:28:24+00:00" + "time": "2025-10-08T13:59:05+00:00" }, { "name": "phpstan/phpstan-strict-rules", @@ -5432,17 +5421,17 @@ "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "b043bd81404b8e4e4783c8b348c05bc08fafeb02" + "reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/b043bd81404b8e4e4783c8b348c05bc08fafeb02", - "reference": "b043bd81404b8e4e4783c8b348c05bc08fafeb02", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/d6211c46213d4181054b3d77b10a5c5cb0d59538", + "reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538", "shasum": "" }, "require": { "php": "^7.4 || ^8.0", - "phpstan/phpstan": "^2.0.4" + "phpstan/phpstan": "^2.1.29" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", @@ -5473,7 +5462,7 @@ "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.x" }, - "time": "2025-08-30T08:29:42+00:00" + "time": "2025-09-26T11:19:08+00:00" }, { "name": "phpunit/php-code-coverage", @@ -5481,12 +5470,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "96dc0466673e215bf5536301039017f03cd45c6b" + "reference": "98384864722106029944f669cc51668a0de2717a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/96dc0466673e215bf5536301039017f03cd45c6b", - "reference": "96dc0466673e215bf5536301039017f03cd45c6b", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/98384864722106029944f669cc51668a0de2717a", + "reference": "98384864722106029944f669cc51668a0de2717a", "shasum": "" }, "require": { @@ -5514,7 +5503,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "12.3.x-dev" + "dev-main": "12.4.x-dev" } }, "autoload": { @@ -5543,7 +5532,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.3.5" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/main" }, "funding": [ { @@ -5563,7 +5552,7 @@ "type": "tidelift" } ], - "time": "2025-09-01T08:07:42+00:00" + "time": "2025-09-26T13:02:34+00:00" }, { "name": "phpunit/php-file-iterator", @@ -5571,12 +5560,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "43ce4a5be5e5e2d254a04af27a531f044c3f4b98" + "reference": "b141834426cf398b3842ad514710cc15993830b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/43ce4a5be5e5e2d254a04af27a531f044c3f4b98", - "reference": "43ce4a5be5e5e2d254a04af27a531f044c3f4b98", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/b141834426cf398b3842ad514710cc15993830b7", + "reference": "b141834426cf398b3842ad514710cc15993830b7", "shasum": "" }, "require": { @@ -5637,7 +5626,7 @@ "type": "tidelift" } ], - "time": "2025-05-25T06:45:36+00:00" + "time": "2025-09-26T11:54:35+00:00" }, { "name": "phpunit/php-invoker", @@ -5645,12 +5634,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "e894566d235809c82c77424f08810952755d9f80" + "reference": "11785bf0cbc64eb1b089a3f22c31e0f17ace93f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/e894566d235809c82c77424f08810952755d9f80", - "reference": "e894566d235809c82c77424f08810952755d9f80", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/11785bf0cbc64eb1b089a3f22c31e0f17ace93f8", + "reference": "11785bf0cbc64eb1b089a3f22c31e0f17ace93f8", "shasum": "" }, "require": { @@ -5714,7 +5703,7 @@ "type": "tidelift" } ], - "time": "2025-05-25T06:46:26+00:00" + "time": "2025-09-26T11:58:40+00:00" }, { "name": "phpunit/php-text-template", @@ -5722,12 +5711,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "cee043439ecbe031d409def48af2f1e3bf13a6eb" + "reference": "8afd12ba4cbf06b65a0a2336f0e796bc4b0f986d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/cee043439ecbe031d409def48af2f1e3bf13a6eb", - "reference": "cee043439ecbe031d409def48af2f1e3bf13a6eb", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/8afd12ba4cbf06b65a0a2336f0e796bc4b0f986d", + "reference": "8afd12ba4cbf06b65a0a2336f0e796bc4b0f986d", "shasum": "" }, "require": { @@ -5787,7 +5776,7 @@ "type": "tidelift" } ], - "time": "2025-05-25T06:47:03+00:00" + "time": "2025-09-26T12:04:00+00:00" }, { "name": "phpunit/php-timer", @@ -5795,12 +5784,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "23036cd263bd4812edd4642cd866db831704821f" + "reference": "6e392b79f23b813fa3ebdc33f3de8e8f68820353" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/23036cd263bd4812edd4642cd866db831704821f", - "reference": "23036cd263bd4812edd4642cd866db831704821f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/6e392b79f23b813fa3ebdc33f3de8e8f68820353", + "reference": "6e392b79f23b813fa3ebdc33f3de8e8f68820353", "shasum": "" }, "require": { @@ -5860,20 +5849,20 @@ "type": "tidelift" } ], - "time": "2025-05-25T06:47:33+00:00" + "time": "2025-09-26T12:07:45+00:00" }, { "name": "phpunit/phpunit", - "version": "dev-main", + "version": "12.5.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fb9037c729d0298d9052e92303a8bd4213659116" + "reference": "e294589ec7d702bb7b69667206d9c17bb502e85a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9037c729d0298d9052e92303a8bd4213659116", - "reference": "fb9037c729d0298d9052e92303a8bd4213659116", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e294589ec7d702bb7b69667206d9c17bb502e85a", + "reference": "e294589ec7d702bb7b69667206d9c17bb502e85a", "shasum": "" }, "require": { @@ -5887,30 +5876,29 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.3", - "phpunit/php-code-coverage": "^12.3.4", + "phpunit/php-code-coverage": "^12.4.0", "phpunit/php-file-iterator": "^6.0.0", "phpunit/php-invoker": "^6.0.0", "phpunit/php-text-template": "^5.0.0", "phpunit/php-timer": "^8.0.0", - "sebastian/cli-parser": "^4.0.0", + "sebastian/cli-parser": "^4.2.0", "sebastian/comparator": "^7.1.3", "sebastian/diff": "^7.0.0", "sebastian/environment": "^8.0.3", - "sebastian/exporter": "^7.0.0", + "sebastian/exporter": "^7.0.2", "sebastian/global-state": "^8.0.2", "sebastian/object-enumerator": "^7.0.0", "sebastian/type": "^6.0.3", "sebastian/version": "^6.0.0", "staabm/side-effects-detector": "^1.0.5" }, - "default-branch": true, "bin": [ "phpunit" ], "type": "library", "extra": { "branch-alias": { - "dev-main": "12.4-dev" + "dev-main": "12.5-dev" } }, "autoload": { @@ -5942,7 +5930,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/main" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5" }, "funding": [ { @@ -5966,7 +5954,7 @@ "type": "tidelift" } ], - "time": "2025-08-29T11:33:58+00:00" + "time": "2025-10-08T05:59:53+00:00" }, { "name": "psr/event-dispatcher", @@ -6189,12 +6177,12 @@ "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "2f0a5bf8e3a4ffeb93fbf5182cb6a4b378ee6194" + "reference": "cd23863404a40ccfaf733e3af4db2b459837f7e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2f0a5bf8e3a4ffeb93fbf5182cb6a4b378ee6194", - "reference": "2f0a5bf8e3a4ffeb93fbf5182cb6a4b378ee6194", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/cd23863404a40ccfaf733e3af4db2b459837f7e7", + "reference": "cd23863404a40ccfaf733e3af4db2b459837f7e7", "shasum": "" }, "require": { @@ -6258,9 +6246,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/main" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.12" }, - "time": "2025-08-23T23:30:16+00:00" + "time": "2025-09-20T13:46:31+00:00" }, { "name": "ralouphie/getallheaders", @@ -6308,21 +6296,21 @@ }, { "name": "rector/rector", - "version": "2.1.4", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "fe613c528819222f8686a9a037a315ef9d4915b3" + "reference": "e1aaf3061e9ae9342ed0824865e3a3360defddeb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/fe613c528819222f8686a9a037a315ef9d4915b3", - "reference": "fe613c528819222f8686a9a037a315ef9d4915b3", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/e1aaf3061e9ae9342ed0824865e3a3360defddeb", + "reference": "e1aaf3061e9ae9342ed0824865e3a3360defddeb", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.18" + "phpstan/phpstan": "^2.1.26" }, "conflict": { "rector/rector-doctrine": "*", @@ -6356,7 +6344,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.1.4" + "source": "https://github.com/rectorphp/rector/tree/2.2.1" }, "funding": [ { @@ -6364,7 +6352,7 @@ "type": "github" } ], - "time": "2025-08-15T14:41:36+00:00" + "time": "2025-10-06T21:25:14+00:00" }, { "name": "sebastian/cli-parser", @@ -6372,12 +6360,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "9b9963bb4f869e2aae7d1483e0d9075b1f5cb436" + "reference": "13e61c39b4a79fd74518c7f282c0e053d2ebec92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/9b9963bb4f869e2aae7d1483e0d9075b1f5cb436", - "reference": "9b9963bb4f869e2aae7d1483e0d9075b1f5cb436", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/13e61c39b4a79fd74518c7f282c0e053d2ebec92", + "reference": "13e61c39b4a79fd74518c7f282c0e053d2ebec92", "shasum": "" }, "require": { @@ -6390,7 +6378,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "4.2-dev" } }, "autoload": { @@ -6434,7 +6422,7 @@ "type": "tidelift" } ], - "time": "2025-05-25T06:37:02+00:00" + "time": "2025-09-26T09:03:38+00:00" }, { "name": "sebastian/comparator", @@ -6442,12 +6430,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "812ce2426e84729afecd5f1647e39083b0ff158c" + "reference": "2f7e868cdac74c96ea7ee067df6083b8672890ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/812ce2426e84729afecd5f1647e39083b0ff158c", - "reference": "812ce2426e84729afecd5f1647e39083b0ff158c", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2f7e868cdac74c96ea7ee067df6083b8672890ee", + "reference": "2f7e868cdac74c96ea7ee067df6083b8672890ee", "shasum": "" }, "require": { @@ -6527,7 +6515,7 @@ "type": "tidelift" } ], - "time": "2025-08-23T11:55:05+00:00" + "time": "2025-09-26T09:21:08+00:00" }, { "name": "sebastian/complexity", @@ -6535,12 +6523,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "7f27b19d08f99a44041720b185cfdabfb4599adb" + "reference": "259ab527b8a1d91d55c4dd6fcd9cbd53881d2d1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/7f27b19d08f99a44041720b185cfdabfb4599adb", - "reference": "7f27b19d08f99a44041720b185cfdabfb4599adb", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/259ab527b8a1d91d55c4dd6fcd9cbd53881d2d1d", + "reference": "259ab527b8a1d91d55c4dd6fcd9cbd53881d2d1d", "shasum": "" }, "require": { @@ -6598,7 +6586,7 @@ "type": "tidelift" } ], - "time": "2025-05-25T06:38:26+00:00" + "time": "2025-09-26T09:30:00+00:00" }, { "name": "sebastian/diff", @@ -6606,12 +6594,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "98c299d8486b460efd667d0d64f1a32dd588971d" + "reference": "9aff9b4e75e81bbfe6c769be3f393055febf1c6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/98c299d8486b460efd667d0d64f1a32dd588971d", - "reference": "98c299d8486b460efd667d0d64f1a32dd588971d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/9aff9b4e75e81bbfe6c769be3f393055febf1c6a", + "reference": "9aff9b4e75e81bbfe6c769be3f393055febf1c6a", "shasum": "" }, "require": { @@ -6678,7 +6666,7 @@ "type": "tidelift" } ], - "time": "2025-06-26T11:32:07+00:00" + "time": "2025-09-26T09:46:36+00:00" }, { "name": "sebastian/environment", @@ -6686,12 +6674,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68" + "reference": "353a6fa7e92ca85324a5d7bcdf17a12b3a030353" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/24a711b5c916efc6d6e62aa65aa2ec98fef77f68", - "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/353a6fa7e92ca85324a5d7bcdf17a12b3a030353", + "reference": "353a6fa7e92ca85324a5d7bcdf17a12b3a030353", "shasum": "" }, "require": { @@ -6735,7 +6723,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/8.0.3" + "source": "https://github.com/sebastianbergmann/environment/tree/main" }, "funding": [ { @@ -6755,7 +6743,7 @@ "type": "tidelift" } ], - "time": "2025-08-12T14:11:56+00:00" + "time": "2025-09-26T09:55:55+00:00" }, { "name": "sebastian/exporter", @@ -6763,12 +6751,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "0ef7d66753a1282b23890c2d9a8c775607e8e07f" + "reference": "d4d9bba3c5904cdebea5c9bebab27d8abd6c1af1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0ef7d66753a1282b23890c2d9a8c775607e8e07f", - "reference": "0ef7d66753a1282b23890c2d9a8c775607e8e07f", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d4d9bba3c5904cdebea5c9bebab27d8abd6c1af1", + "reference": "d4d9bba3c5904cdebea5c9bebab27d8abd6c1af1", "shasum": "" }, "require": { @@ -6846,7 +6834,7 @@ "type": "tidelift" } ], - "time": "2025-05-25T06:40:56+00:00" + "time": "2025-09-26T11:25:33+00:00" }, { "name": "sebastian/global-state", @@ -6854,12 +6842,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "ef1377171613d09edd25b7816f05be8313f9115d" + "reference": "a10949d1e386170a423618c690b8efcb2ca56ae2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d", - "reference": "ef1377171613d09edd25b7816f05be8313f9115d", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a10949d1e386170a423618c690b8efcb2ca56ae2", + "reference": "a10949d1e386170a423618c690b8efcb2ca56ae2", "shasum": "" }, "require": { @@ -6901,7 +6889,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/main" }, "funding": [ { @@ -6921,7 +6909,7 @@ "type": "tidelift" } ], - "time": "2025-08-29T11:29:25+00:00" + "time": "2025-09-26T11:32:43+00:00" }, { "name": "sebastian/lines-of-code", @@ -6929,12 +6917,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "62b4d88ce107fb2a4d33a9e8b7e9b38f97c1b5cb" + "reference": "2f9169ba549af53f680e68abb56e62a5f0dee84e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/62b4d88ce107fb2a4d33a9e8b7e9b38f97c1b5cb", - "reference": "62b4d88ce107fb2a4d33a9e8b7e9b38f97c1b5cb", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/2f9169ba549af53f680e68abb56e62a5f0dee84e", + "reference": "2f9169ba549af53f680e68abb56e62a5f0dee84e", "shasum": "" }, "require": { @@ -6992,7 +6980,7 @@ "type": "tidelift" } ], - "time": "2025-05-25T06:41:57+00:00" + "time": "2025-09-26T11:38:29+00:00" }, { "name": "sebastian/object-enumerator", @@ -7000,12 +6988,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5346e40be4f996fb6643214c754dc91fac81f66d" + "reference": "e1cd261f5ea34e8568b3fc827919410292d1ca69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5346e40be4f996fb6643214c754dc91fac81f66d", - "reference": "5346e40be4f996fb6643214c754dc91fac81f66d", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e1cd261f5ea34e8568b3fc827919410292d1ca69", + "reference": "e1cd261f5ea34e8568b3fc827919410292d1ca69", "shasum": "" }, "require": { @@ -7063,7 +7051,7 @@ "type": "tidelift" } ], - "time": "2025-05-25T06:43:17+00:00" + "time": "2025-09-26T11:43:21+00:00" }, { "name": "sebastian/object-reflector", @@ -7071,12 +7059,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "20c26ab19b751ae8e0771bcff9e1581ea7db8817" + "reference": "cea2f459bb5d3d0a63bce71ddda57903d7150e53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/20c26ab19b751ae8e0771bcff9e1581ea7db8817", - "reference": "20c26ab19b751ae8e0771bcff9e1581ea7db8817", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/cea2f459bb5d3d0a63bce71ddda57903d7150e53", + "reference": "cea2f459bb5d3d0a63bce71ddda57903d7150e53", "shasum": "" }, "require": { @@ -7132,7 +7120,7 @@ "type": "tidelift" } ], - "time": "2025-05-25T06:44:27+00:00" + "time": "2025-09-26T11:48:46+00:00" }, { "name": "sebastian/recursion-context", @@ -7140,12 +7128,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c" + "reference": "ee84e0473412ee0a6c381fbabd618b31955f3c7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", - "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/ee84e0473412ee0a6c381fbabd618b31955f3c7e", + "reference": "ee84e0473412ee0a6c381fbabd618b31955f3c7e", "shasum": "" }, "require": { @@ -7189,7 +7177,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/main" }, "funding": [ { @@ -7209,7 +7197,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T04:44:59+00:00" + "time": "2025-09-26T12:16:33+00:00" }, { "name": "sebastian/type", @@ -7217,12 +7205,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d" + "reference": "04f923c375c0430774f283e53340c374c498a562" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d", - "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/04f923c375c0430774f283e53340c374c498a562", + "reference": "04f923c375c0430774f283e53340c374c498a562", "shasum": "" }, "require": { @@ -7259,7 +7247,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/type/issues", "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/6.0.3" + "source": "https://github.com/sebastianbergmann/type/tree/main" }, "funding": [ { @@ -7279,7 +7267,7 @@ "type": "tidelift" } ], - "time": "2025-08-09T06:57:12+00:00" + "time": "2025-09-26T12:20:52+00:00" }, { "name": "sebastian/version", @@ -7287,12 +7275,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "200159ecc0a10f655df0e5ce4d7cd0f0c3037784" + "reference": "225ee32d2b812505e0a9bbe0faaf88c7b0c9ebd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/200159ecc0a10f655df0e5ce4d7cd0f0c3037784", - "reference": "200159ecc0a10f655df0e5ce4d7cd0f0c3037784", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/225ee32d2b812505e0a9bbe0faaf88c7b0c9ebd3", + "reference": "225ee32d2b812505e0a9bbe0faaf88c7b0c9ebd3", "shasum": "" }, "require": { @@ -7346,7 +7334,7 @@ "type": "tidelift" } ], - "time": "2025-05-25T06:50:56+00:00" + "time": "2025-09-26T12:29:27+00:00" }, { "name": "staabm/side-effects-detector", @@ -7543,12 +7531,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "62e6c8883d8faa24d9815e1e4daf5ddeac0adde8" + "reference": "d4e84f351805b6e39747d6851c623836e9e81522" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/62e6c8883d8faa24d9815e1e4daf5ddeac0adde8", - "reference": "62e6c8883d8faa24d9815e1e4daf5ddeac0adde8", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d4e84f351805b6e39747d6851c623836e9e81522", + "reference": "d4e84f351805b6e39747d6851c623836e9e81522", "shasum": "" }, "require": { @@ -7607,7 +7595,7 @@ "type": "tidelift" } ], - "time": "2025-08-21T08:46:20+00:00" + "time": "2025-09-09T06:33:17+00:00" }, { "name": "symfony/event-dispatcher", @@ -7615,12 +7603,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "c511634ea987e9f96eafe4270a3c5e7cf6f2f747" + "reference": "899a660f2d62e493ce6e68844b9089d4e1a639a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c511634ea987e9f96eafe4270a3c5e7cf6f2f747", - "reference": "c511634ea987e9f96eafe4270a3c5e7cf6f2f747", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/899a660f2d62e493ce6e68844b9089d4e1a639a1", + "reference": "899a660f2d62e493ce6e68844b9089d4e1a639a1", "shasum": "" }, "require": { @@ -7691,7 +7679,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T13:43:36+00:00" + "time": "2025-10-05T07:10:02+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -7780,12 +7768,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "2492ca878da0addda89d9edefc3e4bad973efca2" + "reference": "0c9272cc57ad469bbcb3f881f2c9d0b1295d477d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2492ca878da0addda89d9edefc3e4bad973efca2", - "reference": "2492ca878da0addda89d9edefc3e4bad973efca2", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0c9272cc57ad469bbcb3f881f2c9d0b1295d477d", + "reference": "0c9272cc57ad469bbcb3f881f2c9d0b1295d477d", "shasum": "" }, "require": { @@ -7859,7 +7847,7 @@ "type": "tidelift" } ], - "time": "2025-08-17T17:04:24+00:00" + "time": "2025-09-29T13:00:59+00:00" }, { "name": "symfony/yaml", @@ -7867,12 +7855,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "87fee1ea580fbbd338642ee42c2dd1906f161bce" + "reference": "0d7c67f404dc22bfa340546f8537cd0eb61eec6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/87fee1ea580fbbd338642ee42c2dd1906f161bce", - "reference": "87fee1ea580fbbd338642ee42c2dd1906f161bce", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0d7c67f404dc22bfa340546f8537cd0eb61eec6a", + "reference": "0d7c67f404dc22bfa340546f8537cd0eb61eec6a", "shasum": "" }, "require": { @@ -7935,20 +7923,20 @@ "type": "tidelift" } ], - "time": "2025-08-27T12:26:27+00:00" + "time": "2025-09-27T09:05:58+00:00" }, { "name": "symplify/easy-coding-standard", - "version": "12.5.24", + "version": "12.6.0", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "4b90f2b6efed9508000968eac2397ac7aff34354" + "reference": "781e6124dc7e14768ae999a8f5309566bbe62004" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/4b90f2b6efed9508000968eac2397ac7aff34354", - "reference": "4b90f2b6efed9508000968eac2397ac7aff34354", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/781e6124dc7e14768ae999a8f5309566bbe62004", + "reference": "781e6124dc7e14768ae999a8f5309566bbe62004", "shasum": "" }, "require": { @@ -7984,7 +7972,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.5.24" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.6.0" }, "funding": [ { @@ -7996,7 +7984,7 @@ "type": "github" } ], - "time": "2025-08-21T06:57:14+00:00" + "time": "2025-09-10T14:21:58+00:00" }, { "name": "theseer/tokenizer", diff --git a/docs/configuration.md b/docs/configuration.md index 6363034..95f3d24 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -2,7 +2,7 @@ ## Overview -This guide covers all configuration options for the Yii2 Web Application Basic template, from basic setup to advanced +This guide covers all configuration options for the Yii2 Web Application Basic template, from basic setup to advanced customization for production environments. ## Configuration structure @@ -201,13 +201,13 @@ declare(strict_types=1); $config = [ 'debug' => [ 'class' => yii\debug\Module::class, - // development only: allows all IPs. + // development only: allows all IPs. // for production, replace '*' with explicit trusted IPs (for example, ['127.0.0.1', '::1']). 'allowedIPs' => ['*'], ], 'gii' => [ 'class' => yii\gii\Module::class, - // development only: allows all IPs. + // development only: allows all IPs. // for production, replace '*' with explicit trusted IPs (for example, ['127.0.0.1', '::1']). 'allowedIPs' => ['*'], ], diff --git a/docs/installation.md b/docs/installation.md index 1004315..0b061d1 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -25,17 +25,19 @@ cd app-basic ### Method 2: Manual installation 1. **Download the template**: + ```bash git clone --branch 0.1 https://github.com/yii2-extensions/app-basic.git app-basic cd app-basic ``` 2. **Install dependencies** + ```bash composer install ``` -### Method 3: Using git +### Method 3: Using Git Clone the repository and set up your project. @@ -77,16 +79,19 @@ php -S localhost:8080 -t web ### Database setup 1. **Create database** + ```sql CREATE DATABASE app_basic CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. **Run migrations** (if available) + ```bash ./yii migrate ``` 3. **Seed test data** (optional) + ```bash ./yii fixture/load ``` diff --git a/docs/svgs/features-mobile.svg b/docs/svgs/features-mobile.svg new file mode 100644 index 0000000..327abb4 --- /dev/null +++ b/docs/svgs/features-mobile.svg @@ -0,0 +1,75 @@ + + + +
+ +
+
+

Asset Management

+

Optimized bundles • CSS & JS management • Resource optimization

+
+
+

Clean Architecture

+

Organized structure • Yii2 best practices • Extensible design

+
+
+

Console Commands

+

Background tasks • Maintenance tools • Custom commands

+
+
+

Developer Tools

+

Debugging support • Logging • Development configs

+
+
+

Modern Bootstrap 5 UI

+

Responsive design • Mobile-first • Latest components

+
+
+

Testing Ready

+

Codeception suite • Functional tests • Unit testing examples

+
+
+
+
+
diff --git a/docs/svgs/features.svg b/docs/svgs/features.svg new file mode 100644 index 0000000..a449eaa --- /dev/null +++ b/docs/svgs/features.svg @@ -0,0 +1,72 @@ + + +
+ +
+
+

Asset Management

+

Optimized bundles • CSS & JS management • Resource optimization

+
+
+

Clean Architecture

+

Organized structure • Yii2 best practices • Extensible design

+
+
+

Console Commands

+

Background tasks • Maintenance tools • Custom commands

+
+
+

Developer Tools

+

Debugging support • Logging • Development configs

+
+
+

Modern Bootstrap 5 UI

+

Responsive design • Mobile-first • Latest components

+
+
+

Testing Ready

+

Codeception suite • Functional tests • Unit testing examples

+
+
+
+
+
diff --git a/src/framework/resource/css/site.css b/src/framework/resource/css/site.css index 4ae43d7..2e3f230 100644 --- a/src/framework/resource/css/site.css +++ b/src/framework/resource/css/site.css @@ -2,25 +2,26 @@ * Css web application basic */ :root { - --input-padding-x: .75rem; - --input-padding-y: .75rem; + --input-padding-x: 0.75rem; + --input-padding-y: 0.75rem; } -a.asc:after { +a.asc::after { content: "\2191"; - padding-left: 2px; + padding-left: 2px; } -a.desc:after { - content: "\2193"; +a.desc::after { + content: "\2193"; padding-left: 2px; } -html, body { - height: 100vh; +html, +body { + height: 100vh; } -.breadcrumb > li + li:before { +.breadcrumb > li + li::before { color: var(--bs-tertiary-color); content: "/\00a0"; padding: 0 5px; diff --git a/src/framework/resource/js/toggle-theme.js b/src/framework/resource/js/toggle-theme.js index 07d1bb2..b842e88 100644 --- a/src/framework/resource/js/toggle-theme.js +++ b/src/framework/resource/js/toggle-theme.js @@ -5,115 +5,132 @@ */ (() => { - 'use strict' + "use strict"; - const getStoredTheme = () => localStorage.getItem('theme') - const setStoredTheme = theme => localStorage.setItem('theme', theme) + const getStoredTheme = () => localStorage.getItem("theme"); + const setStoredTheme = (theme) => localStorage.setItem("theme", theme); const getPreferredTheme = () => { - const storedTheme = getStoredTheme() + const storedTheme = getStoredTheme(); if (storedTheme) { - return storedTheme + return storedTheme; } - return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' - } - - const setTheme = theme => { - if (theme === 'auto') { - document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')) + return window.matchMedia("(prefers-color-scheme: dark)").matches + ? "dark" + : "light"; + }; + + const setTheme = (theme) => { + if (theme === "auto") { + document.documentElement.setAttribute( + "data-bs-theme", + window.matchMedia("(prefers-color-scheme: dark)").matches + ? "dark" + : "light", + ); } else { - document.documentElement.setAttribute('data-bs-theme', theme) + document.documentElement.setAttribute("data-bs-theme", theme); } - } + }; - setTheme(getPreferredTheme()) + setTheme(getPreferredTheme()); const showActiveTheme = (theme, focus = false) => { // Original Bootstrap theme switcher logic - const themeSwitcher = document.querySelector('#bd-theme') + const themeSwitcher = document.querySelector("#bd-theme"); if (themeSwitcher) { - const themeSwitcherText = document.querySelector('#bd-theme-text') - const activeThemeIcon = document.querySelector('.theme-icon-active use') - const btnToActive = document.querySelector(`[data-bs-theme-value="${theme}"]`) + const themeSwitcherText = document.querySelector("#bd-theme-text"); + const activeThemeIcon = document.querySelector(".theme-icon-active use"); + const btnToActive = document.querySelector( + `[data-bs-theme-value="${theme}"]`, + ); if (btnToActive) { - const svgOfActiveBtn = btnToActive.querySelector('svg use').getAttribute('href') - - document.querySelectorAll('[data-bs-theme-value]').forEach(element => { - element.classList.remove('active') - element.setAttribute('aria-pressed', 'false') - }) - - btnToActive.classList.add('active') - btnToActive.setAttribute('aria-pressed', 'true') - activeThemeIcon.setAttribute('href', svgOfActiveBtn) - const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})` - themeSwitcher.setAttribute('aria-label', themeSwitcherLabel) + const svgOfActiveBtn = btnToActive + .querySelector("svg use") + .getAttribute("href"); + + document + .querySelectorAll("[data-bs-theme-value]") + .forEach((element) => { + element.classList.remove("active"); + element.setAttribute("aria-pressed", "false"); + }); + + btnToActive.classList.add("active"); + btnToActive.setAttribute("aria-pressed", "true"); + activeThemeIcon.setAttribute("href", svgOfActiveBtn); + const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})`; + themeSwitcher.setAttribute("aria-label", themeSwitcherLabel); if (focus) { - themeSwitcher.focus() + themeSwitcher.focus(); } } } // Custom theme toggle icons logic - const themeToggle = document.querySelector('#theme-toggle') + const themeToggle = document.querySelector("#theme-toggle"); if (themeToggle) { - const moonIcon = themeToggle.querySelector('#theme-dark-icon') - const sunIcon = themeToggle.querySelector('#theme-light-icon') + const moonIcon = themeToggle.querySelector("#theme-dark-icon"); + const sunIcon = themeToggle.querySelector("#theme-light-icon"); if (moonIcon && sunIcon) { // Determine effective theme (handle 'auto' case) - const effectiveTheme = theme === 'auto' - ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') - : theme - - if (effectiveTheme === 'dark') { - moonIcon.classList.remove('d-none') - sunIcon.classList.add('d-none') + const effectiveTheme = + theme === "auto" + ? window.matchMedia("(prefers-color-scheme: dark)").matches + ? "dark" + : "light" + : theme; + + if (effectiveTheme === "dark") { + moonIcon.classList.remove("d-none"); + sunIcon.classList.add("d-none"); } else { - moonIcon.classList.add('d-none') - sunIcon.classList.remove('d-none') + moonIcon.classList.add("d-none"); + sunIcon.classList.remove("d-none"); } } } - } - - window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { - const storedTheme = getStoredTheme() - if (storedTheme !== 'light' && storedTheme !== 'dark') { - setTheme(getPreferredTheme()) - // Update icons when system preference changes - showActiveTheme(getPreferredTheme()) - } - }) + }; + + window + .matchMedia("(prefers-color-scheme: dark)") + .addEventListener("change", () => { + const storedTheme = getStoredTheme(); + if (storedTheme !== "light" && storedTheme !== "dark") { + setTheme(getPreferredTheme()); + // Update icons when system preference changes + showActiveTheme(getPreferredTheme()); + } + }); - window.addEventListener('DOMContentLoaded', () => { - showActiveTheme(getPreferredTheme()) + window.addEventListener("DOMContentLoaded", () => { + showActiveTheme(getPreferredTheme()); - document.querySelectorAll('[data-bs-theme-value]') - .forEach(toggle => { - toggle.addEventListener('click', () => { - const theme = toggle.getAttribute('data-bs-theme-value') - setStoredTheme(theme) - setTheme(theme) - showActiveTheme(theme, true) - }) - }) + document.querySelectorAll("[data-bs-theme-value]").forEach((toggle) => { + toggle.addEventListener("click", () => { + const theme = toggle.getAttribute("data-bs-theme-value"); + setStoredTheme(theme); + setTheme(theme); + showActiveTheme(theme, true); + }); + }); // Add event listener for custom theme toggle button - const customThemeToggle = document.querySelector('#theme-toggle') + const customThemeToggle = document.querySelector("#theme-toggle"); if (customThemeToggle) { - customThemeToggle.addEventListener('click', () => { - const currentTheme = getStoredTheme() || getPreferredTheme() - const newTheme = currentTheme === 'dark' ? 'light' : 'dark' - - setStoredTheme(newTheme) - setTheme(newTheme) - showActiveTheme(newTheme, true) - }) + customThemeToggle.addEventListener("click", () => { + const currentTheme = getStoredTheme() || getPreferredTheme(); + const newTheme = currentTheme === "dark" ? "light" : "dark"; + + setStoredTheme(newTheme); + setTheme(newTheme); + showActiveTheme(newTheme, true); + }); } - }) -})() + }); +})(); diff --git a/tests/Acceptance.suite.yml b/tests/Acceptance.suite.yml index 03e52e8..abe2320 100644 --- a/tests/Acceptance.suite.yml +++ b/tests/Acceptance.suite.yml @@ -5,7 +5,7 @@ # If you need both WebDriver and PHPBrowser tests - create a separate suite. actor: AcceptanceTester modules: - enabled: - - PhpBrowser: - url: localhost:8080 + enabled: + - PhpBrowser: + url: localhost:8080 step_decorators: ~ diff --git a/tests/Functional.suite.yml b/tests/Functional.suite.yml index a9fc97f..7d5ef82 100644 --- a/tests/Functional.suite.yml +++ b/tests/Functional.suite.yml @@ -6,8 +6,8 @@ # Remove this suite if you don't use frameworks actor: FunctionalTester modules: - enabled: - - Filesystem - - Yii2 - - Asserts + enabled: + - Filesystem + - Yii2 + - Asserts step_decorators: ~ diff --git a/tests/Unit.suite.yml b/tests/Unit.suite.yml index c819da1..6790db3 100644 --- a/tests/Unit.suite.yml +++ b/tests/Unit.suite.yml @@ -3,8 +3,8 @@ # Suite for unit or integration tests. actor: UnitTester modules: - enabled: - - Asserts - - Yii2: - part: [orm, email, fixtures] + enabled: + - Asserts + - Yii2: + part: [orm, email, fixtures] step_decorators: ~ diff --git a/tests/_envs/dockerized.yml b/tests/_envs/dockerized.yml index 546f0cc..abbe856 100644 --- a/tests/_envs/dockerized.yml +++ b/tests/_envs/dockerized.yml @@ -1,4 +1,4 @@ modules: - config: - PhpBrowser: - url: https://localhost:443 + config: + PhpBrowser: + url: https://localhost:443 diff --git a/tests/_envs/php-builtin.yml b/tests/_envs/php-builtin.yml index ce9c804..ad3b2fb 100644 --- a/tests/_envs/php-builtin.yml +++ b/tests/_envs/php-builtin.yml @@ -1,9 +1,9 @@ extensions: - enabled: - - Codeception\Extension\RunProcess: - 0: php -d variables_order=EGPCS -S localhost:8085 -t web - sleep: 1 + enabled: + - Codeception\Extension\RunProcess: + 0: php -d variables_order=EGPCS -S localhost:8085 -t web + sleep: 1 modules: - config: - PhpBrowser: - url: http://localhost:8085 + config: + PhpBrowser: + url: http://localhost:8085 diff --git a/web/robots.txt b/web/robots.txt index 6f27bb6..eb05362 100644 --- a/web/robots.txt +++ b/web/robots.txt @@ -1,2 +1,2 @@ User-agent: * -Disallow: \ No newline at end of file +Disallow: