├── _examples ├── pestphp │ ├── .gitignore │ ├── tests │ │ ├── Feature │ │ │ └── ExampleTest.php │ │ ├── Unit │ │ │ └── ExampleTest.php │ │ ├── TestCase.php │ │ └── Pest.php │ ├── composer.json │ ├── .tools │ │ └── bootstrap.php │ ├── phpunit.xml │ ├── phpunit.xml.dist │ ├── README.md │ ├── .github │ │ └── workflows │ │ │ └── phppest.yml │ └── composer.lock ├── nightwatchjs │ ├── .gitignore │ ├── package.json │ ├── .tools │ │ └── bootstrap.php │ ├── nightwatch.conf.js │ ├── README.md │ └── .github │ │ └── workflows │ │ └── nightwatch.yml ├── playwright │ ├── .gitignore │ ├── package.json │ ├── .tools │ │ └── bootstrap.php │ ├── README.md │ ├── playwright.config.js │ └── .github │ │ └── workflows │ │ └── playwright.yml ├── phplint_codesniffer │ ├── README.md │ ├── composer.json │ ├── phpcs.xml │ └── .github │ │ └── workflows │ │ └── phpquality.yml └── minifyjs │ ├── README.md │ └── .github │ └── workflows │ └── minify.yml ├── .gitignore ├── .php-cs-fixer.dist.php ├── tests └── unit │ └── name_test.php ├── .tools ├── bootstrap.php └── rexstan.php ├── composer.json ├── .github └── workflows │ ├── publish-to-redaxo.yml │ ├── code-style.yml │ ├── rexstan.yml │ └── phpunit.yml ├── phpunit.xml.dist └── README.md /_examples/pestphp/.gitignore: -------------------------------------------------------------------------------- 1 | /.phpunit.result.cache 2 | /vendor 3 | -------------------------------------------------------------------------------- /_examples/nightwatchjs/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /tests_output/ 3 | /.env -------------------------------------------------------------------------------- /_examples/playwright/.gitignore: -------------------------------------------------------------------------------- 1 | /playwright-report/ 2 | /playwright/.cache/ 3 | /.env -------------------------------------------------------------------------------- /_examples/pestphp/tests/Feature/ExampleTest.php: -------------------------------------------------------------------------------- 1 | toBeTrue(); 5 | }); 6 | -------------------------------------------------------------------------------- /_examples/pestphp/tests/Unit/ExampleTest.php: -------------------------------------------------------------------------------- 1 | toBeTrue(); 5 | }); 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | /.idea/ 4 | .vscode 5 | 6 | /vendor/ 7 | .php-cs-fixer.cache 8 | .phpunit.result.cache 9 | /.phpunit.cache/ 10 | 11 | -------------------------------------------------------------------------------- /_examples/phplint_codesniffer/README.md: -------------------------------------------------------------------------------- 1 | # PHPLint / PHP_CodeSniffer 2 | 3 | https://github.com/overtrue/phplint 4 | 5 | https://github.com/squizlabs/PHP_CodeSniffer -------------------------------------------------------------------------------- /_examples/pestphp/tests/TestCase.php: -------------------------------------------------------------------------------- 1 | in(__DIR__) 7 | ->exclude('vendor') 8 | ; 9 | 10 | return (new Redaxo\PhpCsFixerConfig\Config()) 11 | ->setFinder($finder) 12 | ; 13 | -------------------------------------------------------------------------------- /tests/unit/name_test.php: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | ./tests 10 | 11 | 12 | 13 | 14 | ./app 15 | ./src 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /.github/workflows/publish-to-redaxo.yml: -------------------------------------------------------------------------------- 1 | name: Publish release 2 | 3 | on: 4 | release: 5 | types: 6 | - published 7 | 8 | jobs: 9 | redaxo_publish: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - uses: shivammathur/setup-php@v2 14 | with: 15 | php-version: "8.2" 16 | - uses: ramsey/composer-install@v2 17 | with: 18 | composer-options: "--no-dev" 19 | - uses: FriendsOfREDAXO/installer-action@v1 20 | with: 21 | myredaxo-username: ${{ secrets.MYREDAXO_USERNAME }} 22 | myredaxo-api-key: ${{ secrets.MYREDAXO_API_KEY }} 23 | description: ${{ github.event.release.body }} 24 | 25 | -------------------------------------------------------------------------------- /_examples/minifyjs/README.md: -------------------------------------------------------------------------------- 1 | # Minify JS 2 | 3 | ## Workflow verwenden 4 | 5 | Um den Workflow zu verwenden, muss der Ordner `.github` in das eigene Repository kopiert werden. 6 | Der Workflow startet automatisch, wenn ein neuer Commit oder ein neuer Pull-Request auf dem `main`- oder `master`-Branch erstellt wird. 7 | Der Workflow minifiziert alle JS-Dateien im angegebenen Ordner und legt diese im gleichen Ordner mit dem Suffix `.min` an. 8 | 9 | ### Konfiguration 10 | 11 | Die einzige Konfiguration, die vorgenommen werden muss, ist der Ordner, in dem die JS-Dateien liegen. 12 | Dieser kann in der `minify.yml` unter `directory: 'assets'` angepasst werden. 13 | Weitere Einstellungsmöglichkeiten findet ihr in der [Dokumentation von auto-minify](https://github.com/marketplace/actions/auto-minify). -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | tests/unit 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /_examples/minifyjs/.github/workflows/minify.yml: -------------------------------------------------------------------------------- 1 | name: Minify JS 2 | on: 3 | push: 4 | branches: [ master, main ] 5 | pull_request: 6 | branches: [ master, main ] 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | # checkout repo 14 | - uses: actions/checkout@v3 15 | with: 16 | ref: ${{ github.ref }} 17 | 18 | # run minify action to minify js in given directory 19 | - name: Auto Minify 20 | uses: nizarmah/auto-minify@v2.1 21 | with: 22 | # directory to minify 23 | directory: 'assets' 24 | 25 | # commit changes, push minified files to repo 26 | - uses: stefanzweifel/git-auto-commit-action@v4 27 | with: 28 | # commit message, change as needed 29 | commit_message: "adds minified js" 30 | -------------------------------------------------------------------------------- /_examples/pestphp/phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | tests/unit 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /_examples/pestphp/README.md: -------------------------------------------------------------------------------- 1 | # PestPHP 2 | 3 | https://pestphp.com/docs/ 4 | 5 | ### Klasse 6 | 7 | ```php 8 | 1, 21 | 'key2' => 2, 22 | 'key3' => 3, 23 | ]; 24 | 25 | if (!array_key_exists($key, $value_collection)) { 26 | return null; 27 | } 28 | 29 | return $key; 30 | } 31 | } 32 | ``` 33 | 34 | ### Tests 35 | 36 | `tests/unit/example_test.php` 37 | 38 | ```php 39 | toBeString(); 44 | }); 45 | 46 | test('expect value to be null', function () 47 | { 48 | $value = addon::getValue('key4'); 49 | 50 | expect($value)->toBeNull(); 51 | }); 52 | 53 | test('expect value to be a string', function () 54 | { 55 | $value = addon::getValue('key2'); 56 | 57 | expect($value)->toBeString(); 58 | }); 59 | ``` 60 | 61 | ## Resultat 62 | 63 | ``` 64 | ✔ Expect to get a name [4.82 ms] 65 | ✔ Expect value to be null [0.17 ms] 66 | ✔ Expect value to be a string [0.04 ms] 67 | ``` -------------------------------------------------------------------------------- /.tools/rexstan.php: -------------------------------------------------------------------------------- 1 | { 14 | /** 15 | * navigate to the login screen 16 | */ 17 | await page.goto('/redaxo/index.php'); 18 | 19 | /** 20 | * check if the login input is present 21 | * add username 22 | */ 23 | await page.locator('input[id=rex-id-login-user]').fill('nightwatch_username'); 24 | 25 | /** 26 | * check if the password input is present 27 | * add password 28 | */ 29 | await page.locator('input[id=rex-id-login-password]').fill('nightwatch_password'); 30 | await page.locator('input[id=rex-id-login-password]').press('Enter'); 31 | 32 | /** 33 | * check if the session cookie is available 34 | 35 | /** 36 | * check if we are logged in to the backend 37 | */ 38 | await expect(page).toHaveURL('/redaxo/index.php?page=structure'); 39 | }); 40 | 41 | test('Test Addon functionality', async ({page}) => { 42 | /** 43 | * check if the username-link is available 44 | * click the username-link 45 | */ 46 | await page.locator('.navbar a.rex-username').click(); 47 | await expect(page).toHaveURL('/redaxo/index.php?page=profile'); 48 | // do stuff... 49 | 50 | /** 51 | * TODO: write some tests... 52 | */ 53 | }); 54 | ``` 55 | 56 | ## Resultat 57 | 58 | ```shell 59 | Running 1 test using 1 worker 60 | 61 | ok 1 [chromium] › example.spec.js:32:1 › Test Addon functionality (4s) 62 | 63 | 1 passed (6s) 64 | ``` -------------------------------------------------------------------------------- /_examples/pestphp/tests/Pest.php: -------------------------------------------------------------------------------- 1 | in('Feature'); 15 | 16 | /* 17 | |-------------------------------------------------------------------------- 18 | | Expectations 19 | |-------------------------------------------------------------------------- 20 | | 21 | | When you're writing tests, you often need to check that values meet certain conditions. The 22 | | "expect()" function gives you access to a set of "expectations" methods that you can use 23 | | to assert different things. Of course, you may extend the Expectation API at any time. 24 | | 25 | */ 26 | 27 | expect()->extend('toBeOne', function () { 28 | return $this->toBe(1); 29 | }); 30 | 31 | /* 32 | |-------------------------------------------------------------------------- 33 | | Functions 34 | |-------------------------------------------------------------------------- 35 | | 36 | | While Pest is very powerful out-of-the-box, you may have some testing code specific to your 37 | | project that you don't want to repeat in every file. Here you can also expose helpers as 38 | | global functions to help you to reduce the number of lines of code in your test files. 39 | | 40 | */ 41 | 42 | function something() 43 | { 44 | // .. 45 | } 46 | -------------------------------------------------------------------------------- /_examples/playwright/playwright.config.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | require('dotenv').config({path: './.env'}); 3 | const {devices} = require('@playwright/test'); 4 | 5 | /** 6 | * @see https://playwright.dev/docs/test-configuration 7 | * @type {import('@playwright/test').PlaywrightTestConfig} 8 | */ 9 | const config = { 10 | testDir: './tests/e2e', 11 | /* Maximum time one test can run for. */ 12 | timeout: 30 * 1000, 13 | expect: { 14 | /** 15 | * Maximum time expect() should wait for the condition to be met. 16 | * For example in `await expect(locator).toHaveText();` 17 | */ 18 | timeout: 5000 19 | }, 20 | /* Run tests in files in parallel */ 21 | fullyParallel: true, 22 | /* Fail the build on CI if you accidentally left test.only in the source code. */ 23 | forbidOnly: !!process.env.CI, 24 | /* Retry on CI only */ 25 | retries: process.env.CI ? 2 : 0, 26 | /* Opt out of parallel tests on CI. */ 27 | workers: process.env.CI ? 1 : undefined, 28 | /* Reporter to use. See https://playwright.dev/docs/test-reporters */ 29 | reporter: 'list', 30 | /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ 31 | use: { 32 | headless: true, 33 | /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ 34 | actionTimeout: 0, 35 | /* Base URL to use in actions like `await page.goto('/')`. */ 36 | baseURL: process.env.LAUNCH_URL, 37 | 38 | /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ 39 | trace: 'on-first-retry', 40 | }, 41 | 42 | /* Configure projects for major browsers */ 43 | projects: [ 44 | { 45 | name: 'chromium', 46 | use: { 47 | ...devices['Desktop Chrome'], 48 | }, 49 | }, 50 | 51 | // { 52 | // name: 'firefox', 53 | // use: { 54 | // ...devices['Desktop Firefox'], 55 | // }, 56 | // }, 57 | // 58 | // { 59 | // name: 'webkit', 60 | // use: { 61 | // ...devices['Desktop Safari'], 62 | // }, 63 | // }, 64 | ], 65 | }; 66 | 67 | module.exports = config; 68 | -------------------------------------------------------------------------------- /_examples/nightwatchjs/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | // Refer to the online docs for more details: 2 | // https://nightwatchjs.org/gettingstarted/configuration/ 3 | // 4 | 5 | // _ _ _ _ _ _ _ 6 | // | \ | |(_) | | | | | | | | 7 | // | \| | _ __ _ | |__ | |_ __ __ __ _ | |_ ___ | |__ 8 | // | . ` || | / _` || '_ \ | __|\ \ /\ / / / _` || __| / __|| '_ \ 9 | // | |\ || || (_| || | | || |_ \ V V / | (_| || |_ | (__ | | | | 10 | // \_| \_/|_| \__, ||_| |_| \__| \_/\_/ \__,_| \__| \___||_| |_| 11 | // __/ | 12 | // |___/ 13 | 14 | module.exports = { 15 | // An array of folders (excluding subfolders) where your tests are located; 16 | // if this is not specified, the test source must be passed as the second argument to the test runner. 17 | src_folders: ['tests/e2e'], 18 | 19 | // See https://nightwatchjs.org/guide/concepts/page-object-model.html 20 | // page_objects_path: ['test/e2e/page-objects'], 21 | 22 | // See https://nightwatchjs.org/guide/extending-nightwatch/adding-custom-commands.html 23 | // custom_commands_path: ['test/e2e/custom-commands'], 24 | 25 | // See https://nightwatchjs.org/guide/extending-nightwatch/adding-custom-assertions.html 26 | // custom_assertions_path: ['test/e2e/custom-assertions'], 27 | 28 | // See https://nightwatchjs.org/guide/extending-nightwatch/adding-plugins.html 29 | // plugins: [], 30 | 31 | // See https://nightwatchjs.org/guide/concepts/test-globals.html 32 | globals_path: '', 33 | 34 | webdriver: {}, 35 | 36 | test_settings: { 37 | default: { 38 | disable_error_log: false, 39 | launch_url: '${LAUNCH_URL}', 40 | 41 | screenshots: { 42 | enabled: false, 43 | path: 'screens', 44 | on_failure: true 45 | }, 46 | 47 | desiredCapabilities: { 48 | browserName: 'firefox' 49 | }, 50 | 51 | webdriver: { 52 | start_process: true, 53 | server_path: '' 54 | }, 55 | 56 | }, 57 | 58 | firefox: { 59 | desiredCapabilities: { 60 | browserName: 'firefox', 61 | alwaysMatch: { 62 | acceptInsecureCerts: true, 63 | 'moz:firefoxOptions': { 64 | args: [ 65 | // '-headless', 66 | // '-verbose' 67 | ] 68 | } 69 | } 70 | }, 71 | webdriver: { 72 | start_process: true, 73 | server_path: '', 74 | cli_args: [ 75 | // very verbose geckodriver logs 76 | // '-vv' 77 | ] 78 | } 79 | }, 80 | 81 | } 82 | }; 83 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Standard GitHub Workflows für Redaxo Addons 2 | 3 | Die hier angelegten Workflows sind der aktuelle Standard für FOR AddOns 4 | Die Integration in ein AddOn ist relativ einfach und hilft, die Codequalität des jeweiligen AddOns zu verbessern und 5 | einen gemeinsamen Standard zu schaffen. 6 | 7 | ## Github Workflows im eigenen Projekt einrichten? 8 | 9 | 1. Github Actions im Repository aktivieren (Settings > Actions > General > Allow all actions and reusable workflows) 10 | - https://docs.github.com/en/actions 11 | 2. Alle Dateien und Ordner aus diesem Repo (außer _example und README.md) in das AddOn kopieren. 12 | 3. Ggf. Abhängigkeiten zu anderen AddOns (und deren Abhängigkeiten) in phpunit.yml und rexstan.yml (.github/workflows) 13 | eintragen ([Anleitung](#rexstan-1)) 14 | 4. Optional: Eigene Unit-Tests schreiben ([Anleitung](#phpunit-1) 15 | 5. Fertig 🚀 16 | 17 | ## Was sind GitHub Workflows? 18 | 19 | GitHub Workflows sind `.yml` Dateien die in `.github/workflows` liegen und automatisch bei bestimmten Aktionen im 20 | Repository (z.B. einem Push oder einem Pull Request) aufgerufen werden. 21 | Im Hintergrund wird dann innerhalb von Sekunden eine virtuelle Maschine gestartet, Redaxo samt AddOns installiert und 22 | die Tests ausgeführt. 23 | 24 | Hängt man `[skip ci]` an den Commit, werden die Tests nicht ausgeführt. 25 | 26 | > Sobald die Tests in ein AddOn integriert sind laufen sie automatisch bei jedem Push und Pull Request. Verändert wird 27 | > der Code allerdings nur durch den CS Fixer. Die beiden anderen Tests geben lediglich Informationen über das Testergebnis 28 | > aus. **Dass AddOn kann auch bei fehlgeschlagenen Tests hochgeladen und genutzt werden** 29 | 30 | ### Konfiguration und weitere Infos 31 | 32 | 33 | 34 | ### PHP CS Fixer 35 | 36 | Untersucht ob der Code sich an die definierten Regeln hält **und formatiert den Code ggf. direkt um**. 37 | 38 | 39 | 40 | ### Rexstan 41 | 42 | Prüft den Code mit Rexstan nach den definierten Regeln und gibt eventuelle Fehler aus. 43 | 44 | 45 | 46 | ### PHPUnit 47 | 48 | Stellt die Möglichkeit für eigene Unit-Test bereit. ([Anleitung](#phpunit-1)) 49 | 50 | 51 | 52 | ### Publish to Redaxo 53 | 54 | AddOn durch ein GitHub Release automatisch in den Redaxo Installer eintragen. 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /_examples/nightwatchjs/README.md: -------------------------------------------------------------------------------- 1 | # Nightwatch.js 2 | 3 | https://nightwatchjs.org/ 4 | 5 | ### Tests 6 | 7 | `tests/e2e/example.js` 8 | 9 | ```javascript 10 | describe('Test Titel', () => { 11 | /** 12 | * login before the actual test 13 | */ 14 | before(browser => { 15 | /** 16 | * navigate to the login screen 17 | */ 18 | browser.navigateTo('/redaxo/index.php'); 19 | 20 | /** 21 | * check if the login input is present 22 | * add username 23 | */ 24 | browser.assert.elementPresent('input[id=rex-id-login-user]'); 25 | browser.sendKeys('input[id=rex-id-login-user]', 'nightwatch_username'); 26 | 27 | /** 28 | * check if the password input is present 29 | * add password, submit form 30 | */ 31 | browser.assert.elementPresent('input[id=rex-id-login-password]'); 32 | browser.sendKeys('input[id=rex-id-login-password]', ['nightwatch_password', browser.Keys.ENTER]); 33 | 34 | /** 35 | * check if the session cookie is available 36 | */ 37 | browser.getCookie('PHPSESSID', function callback(result) { 38 | this.assert.equal(result.name, 'PHPSESSID'); 39 | }); 40 | 41 | browser.pause(500); 42 | 43 | /** 44 | * check if we are logged in to the backend 45 | */ 46 | browser.assert.urlContains('/redaxo/index.php?page=structure'); 47 | }); 48 | 49 | it('Test Addon functionality', function(browser) { 50 | /** 51 | * check if the username-link is available 52 | * click the username-link 53 | */ 54 | browser.assert.elementPresent('.navbar a.rex-username'); 55 | browser.click('.navbar a.rex-username'); 56 | browser.assert.urlContains('/redaxo/index.php?page=profile'); 57 | // do stuff... 58 | 59 | /** 60 | * TODO: write some tests... 61 | */ 62 | }); 63 | 64 | /** 65 | * close the browser 66 | */ 67 | after(browser => { 68 | browser.end(); 69 | }); 70 | }); 71 | ``` 72 | 73 | ## Resultat 74 | 75 | ```shell 76 | [Test Titel] Test Suite 77 | ────────────────────────────────────────────── 78 | i Connected to GeckoDriver on port 4444 (2635ms). 79 | Using: firefox (104.0.2) on WINDOWS. 80 | 81 | √ Testing if element is present (12ms) 82 | √ Testing if element is present (15ms) 83 | √ Passed [equal]: PHPSESSID == PHPSESSID 84 | √ Testing if the URL contains '/redaxo/index.php?page=structure' (20ms) 85 | 86 | Running Test Addon functionality: 87 | ──────────────────────────────────────────────────────────────────────────────────────────────────────── 88 | √ Testing if element <.navbar a.rex-username> is present (513ms) 89 | √ Testing if the URL contains '/redaxo/index.php?page=profile' (7ms) 90 | 91 | OK. 2 assertions passed. (1.484s) 92 | ``` -------------------------------------------------------------------------------- /_examples/phplint_codesniffer/phpcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Coding Standard 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | fragments 24 | 25 | 26 | 27 | 28 | fragments 29 | 30 | 31 | 32 | 33 | fragments 34 | 35 | 36 | 37 | 38 | fragments 39 | 40 | 41 | 42 | 43 | fragments 44 | 45 | 46 | 47 | 48 | fragments 49 | 50 | 51 | 52 | 53 | fragments 54 | 55 | 56 | 57 | 58 | fragments 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /_examples/phplint_codesniffer/.github/workflows/phpquality.yml: -------------------------------------------------------------------------------- 1 | name: PHP QA 2 | 3 | on: 4 | push: 5 | branches: [ master, main ] 6 | pull_request: 7 | branches: [ master, main ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | phpquality: 14 | 15 | runs-on: ubuntu-latest 16 | permissions: 17 | contents: write # for Git to git apply 18 | 19 | steps: 20 | - uses: actions/checkout@v3 21 | 22 | - name: Setup PHP 23 | uses: shivammathur/setup-php@v2 24 | with: 25 | php-version: '8.0' 26 | extensions: gd, intl, pdo_mysql 27 | coverage: none # disable xdebug, pcov 28 | 29 | # credits https://blog.markvincze.com/download-artifacts-from-a-latest-github-release-in-sh-and-powershell/ 30 | - name: Download latest REDAXO release 31 | run: | 32 | LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/redaxo/redaxo/releases/latest) 33 | REDAXO_VERSION=$(echo $LATEST_RELEASE | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/') 34 | echo "Downloaded REDAXO $REDAXO_VERSION" 35 | curl -Ls -o redaxo.zip https://github.com/redaxo/redaxo/releases/download/$REDAXO_VERSION/redaxo_$REDAXO_VERSION.zip 36 | unzip -oq redaxo.zip -d redaxo_cms 37 | rm redaxo.zip 38 | 39 | - name: Init database 40 | run: | 41 | sudo /etc/init.d/mysql start 42 | mysql -uroot -h127.0.0.1 -proot -e 'create database redaxo5;' 43 | 44 | - name: Setup REDAXO 45 | run: | 46 | php redaxo_cms/redaxo/bin/console setup:run -n --lang=de_de --agree-license --db-host=127.0.0.1 --db-name=redaxo5 --db-password=root --db-createdb=no --db-setup=normal --admin-username=admin --admin-password=adminpassword --error-email=test@redaxo.invalid --ansi 47 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.enabled true 48 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.throw_always_exception true 49 | 50 | - name: Create user, update config 51 | run: | 52 | php redaxo_cms/redaxo/bin/console user:create nightwatch_username nightwatch_password --admin --ansi 53 | php redaxo_cms/redaxo/bin/console config:set error_email 'test@redaxo.invalid' --ansi 54 | php redaxo_cms/redaxo/bin/console config:set server 'http://localhost:8000/' --ansi 55 | 56 | # copy Addon files, ignore some directories... 57 | # install phpmailer 58 | # install the addon 59 | # if the addon name does not match the repository name, ${{ github.event.repository.name }} must be replaced with the addon name 60 | - name: Copy and install Addons 61 | run: | 62 | rsync -av --exclude='vendor' --exclude='.github' --exclude='.git' --exclude='redaxo_cms' './' 'redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }}' 63 | redaxo_cms/redaxo/bin/console package:install '${{ github.event.repository.name }}' 64 | 65 | - name: Run lint 66 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 67 | run: composer lint 68 | 69 | - name: Run phpcs 70 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 71 | run: composer phpcs 72 | -------------------------------------------------------------------------------- /_examples/pestphp/.github/workflows/phppest.yml: -------------------------------------------------------------------------------- 1 | name: PestPHP 2 | 3 | on: 4 | push: 5 | branches: [ master, main ] 6 | pull_request: 7 | branches: [ master, main ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | pestphp: 14 | 15 | runs-on: ubuntu-latest 16 | permissions: 17 | contents: write # for Git to git apply 18 | 19 | steps: 20 | - uses: actions/checkout@v3 21 | 22 | # setup PHP v8, install some extensions 23 | - name: Setup PHP 24 | uses: shivammathur/setup-php@v2 25 | with: 26 | php-version: '8.0' 27 | extensions: gd, intl, pdo_mysql 28 | coverage: none # disable xdebug, pcov 29 | 30 | # download the latest REDAXO release and unzip it 31 | # credits https://blog.markvincze.com/download-artifacts-from-a-latest-github-release-in-sh-and-powershell/ 32 | - name: Download latest REDAXO release 33 | run: | 34 | LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/redaxo/redaxo/releases/latest) 35 | REDAXO_VERSION=$(echo $LATEST_RELEASE | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/') 36 | echo "Downloaded REDAXO $REDAXO_VERSION" 37 | curl -Ls -o redaxo.zip https://github.com/redaxo/redaxo/releases/download/$REDAXO_VERSION/redaxo_$REDAXO_VERSION.zip 38 | unzip -oq redaxo.zip -d redaxo_cms 39 | rm redaxo.zip 40 | 41 | # start mysql service, create a database called redaxo5, apply config patch 42 | - name: Init database 43 | run: | 44 | sudo /etc/init.d/mysql start 45 | mysql -uroot -h127.0.0.1 -proot -e 'create database redaxo5;' 46 | 47 | # run REDAXO setup with the following parameters 48 | # Language: de 49 | # DB password: root 50 | # Create DB: no 51 | # Admin username: admin 52 | # Admin password: adminpassword 53 | # Error E-mail: test@redaxo.invalid 54 | - name: Setup REDAXO 55 | run: | 56 | php redaxo_cms/redaxo/bin/console setup:run -n --lang=de_de --agree-license --db-host=127.0.0.1 --db-name=redaxo5 --db-password=root --db-createdb=no --db-setup=normal --admin-username=admin --admin-password=adminpassword --error-email=test@redaxo.invalid --ansi 57 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.enabled true 58 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.throw_always_exception true 59 | 60 | # copy Addon files, ignore some directories... 61 | # install the addon 62 | # if the addon name does not match the repository name, ${{ github.event.repository.name }} must be replaced with the addon name 63 | # if additional addons are needed, they can be installed via the console commands 64 | # see: https://www.redaxo.org/doku/main/basis-addons#console 65 | - name: Copy and install Addons 66 | run: | 67 | rsync -av --exclude='./vendor' --exclude='.github' --exclude='.git' --exclude='redaxo_cms' './' 'redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }}' 68 | redaxo_cms/redaxo/bin/console package:install '${{ github.event.repository.name }}' 69 | 70 | # install dependencies from composer.json 71 | - name: Install test dependencies 72 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 73 | env: 74 | COMPOSER: composer.json 75 | run: composer install --prefer-dist --no-progress 76 | 77 | # run unit tests, see composer.json 78 | - name: Run pest 79 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 80 | run: composer test 81 | -------------------------------------------------------------------------------- /_examples/nightwatchjs/.github/workflows/nightwatch.yml: -------------------------------------------------------------------------------- 1 | name: Nightwatch 2 | 3 | on: 4 | push: 5 | branches: [ master, main ] 6 | pull_request: 7 | branches: [ master, main ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | e2e: 14 | 15 | runs-on: ubuntu-latest 16 | permissions: 17 | contents: write # for Git to git apply 18 | 19 | steps: 20 | - uses: actions/checkout@v3 21 | 22 | - name: Setup PHP 23 | uses: shivammathur/setup-php@v2 24 | with: 25 | php-version: '8.0' 26 | extensions: gd, intl, pdo_mysql 27 | coverage: none # disable xdebug, pcov 28 | 29 | # credits https://blog.markvincze.com/download-artifacts-from-a-latest-github-release-in-sh-and-powershell/ 30 | - name: Download latest REDAXO release 31 | run: | 32 | LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/redaxo/redaxo/releases/latest) 33 | REDAXO_VERSION=$(echo $LATEST_RELEASE | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/') 34 | echo "Downloaded REDAXO $REDAXO_VERSION" 35 | curl -Ls -o redaxo.zip https://github.com/redaxo/redaxo/releases/download/$REDAXO_VERSION/redaxo_$REDAXO_VERSION.zip 36 | unzip -oq redaxo.zip -d redaxo_cms 37 | rm redaxo.zip 38 | 39 | - name: Init database 40 | run: | 41 | sudo /etc/init.d/mysql start 42 | mysql -uroot -h127.0.0.1 -proot -e 'create database redaxo5;' 43 | 44 | - name: Setup REDAXO 45 | run: | 46 | php redaxo_cms/redaxo/bin/console setup:run -n --lang=de_de --agree-license --db-host=127.0.0.1 --db-name=redaxo5 --db-password=root --db-createdb=no --db-setup=normal --admin-username=admin --admin-password=adminpassword --error-email=test@redaxo.invalid --ansi 47 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.enabled true 48 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.throw_always_exception true 49 | 50 | - name: Create user, update config 51 | run: | 52 | php redaxo_cms/redaxo/bin/console user:create nightwatch_username nightwatch_password --admin --ansi 53 | php redaxo_cms/redaxo/bin/console config:set error_email 'test@redaxo.invalid' --ansi 54 | php redaxo_cms/redaxo/bin/console config:set server 'http://localhost:8000/' --ansi 55 | 56 | # copy Addon files, ignore some directories... 57 | # install phpmailer 58 | # install the addon 59 | # if the addon name does not match the repository name, ${{ github.event.repository.name }} must be replaced with the addon name 60 | - name: Copy and install Addons 61 | run: | 62 | rsync -av --exclude='vendor' --exclude='.github' --exclude='.git' --exclude='redaxo_cms' './' 'redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }}' 63 | redaxo_cms/redaxo/bin/console package:install 'phpmailer' 64 | redaxo_cms/redaxo/bin/console package:install '${{ github.event.repository.name }}' 65 | 66 | - name: Setup nodejs 67 | uses: actions/setup-node@v3 68 | with: 69 | node-version: "16.x" 70 | 71 | - name: Setup Webserver and install node modules 72 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 73 | run: | 74 | php -S localhost:8000 -t ../../../../ & 75 | npm install 76 | sudo apt-get install xvfb 77 | 78 | - name: Run e2e tests 79 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 80 | run: | 81 | export LAUNCH_URL='http://localhost:8000/'; 82 | xvfb-run npm test 83 | -------------------------------------------------------------------------------- /_examples/playwright/.github/workflows/playwright.yml: -------------------------------------------------------------------------------- 1 | name: Nightwatch 2 | 3 | on: 4 | push: 5 | branches: [ master, main ] 6 | pull_request: 7 | branches: [ master, main ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | e2e: 14 | 15 | runs-on: ubuntu-latest 16 | permissions: 17 | contents: write # for Git to git apply 18 | 19 | steps: 20 | - uses: actions/checkout@v3 21 | 22 | - name: Setup PHP 23 | uses: shivammathur/setup-php@v2 24 | with: 25 | php-version: '8.0' 26 | extensions: gd, intl, pdo_mysql 27 | coverage: none # disable xdebug, pcov 28 | 29 | # credits https://blog.markvincze.com/download-artifacts-from-a-latest-github-release-in-sh-and-powershell/ 30 | - name: Download latest REDAXO release 31 | run: | 32 | LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/redaxo/redaxo/releases/latest) 33 | REDAXO_VERSION=$(echo $LATEST_RELEASE | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/') 34 | echo "Downloaded REDAXO $REDAXO_VERSION" 35 | curl -Ls -o redaxo.zip https://github.com/redaxo/redaxo/releases/download/$REDAXO_VERSION/redaxo_$REDAXO_VERSION.zip 36 | unzip -oq redaxo.zip -d redaxo_cms 37 | rm redaxo.zip 38 | 39 | - name: Init database 40 | run: | 41 | sudo /etc/init.d/mysql start 42 | mysql -uroot -h127.0.0.1 -proot -e 'create database redaxo5;' 43 | 44 | - name: Setup REDAXO 45 | run: | 46 | php redaxo_cms/redaxo/bin/console setup:run -n --lang=de_de --agree-license --db-host=127.0.0.1 --db-name=redaxo5 --db-password=root --db-createdb=no --db-setup=normal --admin-username=admin --admin-password=adminpassword --error-email=test@redaxo.invalid --ansi 47 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.enabled true 48 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.throw_always_exception true 49 | 50 | - name: Create user, update config 51 | run: | 52 | php redaxo_cms/redaxo/bin/console user:create nightwatch_username nightwatch_password --admin --ansi 53 | php redaxo_cms/redaxo/bin/console config:set error_email 'test@redaxo.invalid' --ansi 54 | php redaxo_cms/redaxo/bin/console config:set server 'http://localhost:8000/' --ansi 55 | 56 | # copy Addon files, ignore some directories... 57 | # install phpmailer 58 | # install the addon 59 | # if the addon name does not match the repository name, ${{ github.event.repository.name }} must be replaced with the addon name 60 | - name: Copy and install Addons 61 | run: | 62 | rsync -av --exclude='vendor' --exclude='.github' --exclude='.git' --exclude='redaxo_cms' './' 'redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }}' 63 | redaxo_cms/redaxo/bin/console package:install 'phpmailer' 64 | redaxo_cms/redaxo/bin/console package:install '${{ github.event.repository.name }}' 65 | 66 | - name: Setup nodejs 67 | uses: actions/setup-node@v3 68 | with: 69 | node-version: "16.x" 70 | cache: 'npm' 71 | cache-dependency-path: package-lock.json 72 | 73 | - name: Setup Webserver and install node modules 74 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 75 | run: | 76 | php -S localhost:8000 -t ../../../../ & 77 | npm ci 78 | npx playwright install chromium 79 | 80 | - name: Run e2e tests 81 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 82 | run: | 83 | export LAUNCH_URL='http://localhost:8000/'; 84 | npx playwright test -------------------------------------------------------------------------------- /.github/workflows/rexstan.yml: -------------------------------------------------------------------------------- 1 | name: rexstan 2 | 3 | on: 4 | push: 5 | branches: [ master, main ] 6 | pull_request: 7 | branches: [ master, main ] 8 | types: [opened, synchronize, reopened, ready_for_review] 9 | 10 | permissions: 11 | contents: read 12 | 13 | jobs: 14 | rexstan: 15 | env: 16 | ADDON_KEY: ${{ github.event.repository.name }} 17 | 18 | runs-on: ubuntu-latest 19 | permissions: 20 | contents: write # for Git to git apply 21 | 22 | steps: 23 | - uses: actions/checkout@v3 24 | 25 | # setup PHP v8, install some extensions 26 | - name: Setup PHP 27 | uses: shivammathur/setup-php@v2 28 | with: 29 | php-version: '8.2' 30 | extensions: gd, intl, pdo_mysql 31 | coverage: none # disable xdebug, pcov 32 | 33 | # download the latest REDAXO release and unzip it 34 | # credits https://blog.markvincze.com/download-artifacts-from-a-latest-github-release-in-sh-and-powershell/ 35 | - name: Download latest REDAXO release 36 | run: | 37 | LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/redaxo/redaxo/releases/latest) 38 | REDAXO_VERSION=$(echo $LATEST_RELEASE | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/') 39 | echo "Downloaded REDAXO $REDAXO_VERSION" 40 | curl -Ls -o redaxo.zip https://github.com/redaxo/redaxo/releases/download/$REDAXO_VERSION/redaxo_$REDAXO_VERSION.zip 41 | unzip -oq redaxo.zip -d redaxo_cms 42 | rm redaxo.zip 43 | 44 | # start mysql service, create a database called redaxo5, apply config patch 45 | - name: Init database 46 | run: | 47 | sudo /etc/init.d/mysql start 48 | mysql -uroot -h127.0.0.1 -proot -e 'create database redaxo5;' 49 | 50 | # run REDAXO setup with the following parameters 51 | # Language: de 52 | # DB password: root 53 | # Create DB: no 54 | # Admin username: admin 55 | # Admin password: adminpassword 56 | # Error E-mail: test@redaxo.invalid 57 | - name: Setup REDAXO 58 | run: | 59 | php redaxo_cms/redaxo/bin/console setup:run -n --lang=de_de --agree-license --db-host=127.0.0.1 --db-name=redaxo5 --db-password=root --db-createdb=no --db-setup=normal --admin-username=admin --admin-password=adminpassword --error-email=test@redaxo.invalid --ansi 60 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.enabled true 61 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.throw_always_exception true 62 | 63 | # copy Addon files, ignore some directories... 64 | # install the addon 65 | # if the addon name does not match the repository name, ${{ github.event.repository.name }} must be replaced with the addon name 66 | # install latest rexstan 67 | # if additional addons are needed, they can be installed via the console commands 68 | # see: https://www.redaxo.org/doku/main/basis-addons#console 69 | - name: Copy and install Addons 70 | run: | 71 | rsync -av --exclude='./vendor' --exclude='.github' --exclude='.git' --exclude='redaxo_cms' './' 'redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }}' 72 | redaxo_cms/redaxo/bin/console install:download 'rexstan' '1.*' 73 | redaxo_cms/redaxo/bin/console package:install 'rexstan' 74 | redaxo_cms/redaxo/bin/console package:install '${{ github.event.repository.name }}' 75 | 76 | # execute rexstan.php to create the needed user-config.neon 77 | - name: Execute .tools/rexstan.php 78 | run: php -f redaxo/src/addons/${{ github.event.repository.name }}/.tools/rexstan.php 79 | working-directory: redaxo_cms 80 | 81 | # run rexstan 82 | - id: rexstan 83 | name: Run rexstan 84 | run: redaxo_cms/redaxo/bin/console rexstan:analyze 85 | -------------------------------------------------------------------------------- /.github/workflows/phpunit.yml: -------------------------------------------------------------------------------- 1 | name: PHPUnit 2 | 3 | on: 4 | push: 5 | branches: [ master, main ] 6 | pull_request: 7 | branches: [ master, main ] 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | phpunit: 14 | 15 | runs-on: ubuntu-latest 16 | permissions: 17 | contents: write # for Git to git apply 18 | 19 | steps: 20 | - uses: actions/checkout@v3 21 | 22 | # setup PHP v8, install some extensions 23 | - name: Setup PHP 24 | uses: shivammathur/setup-php@v2 25 | with: 26 | php-version: '8.2' 27 | extensions: gd, intl, pdo_mysql 28 | coverage: none # disable xdebug, pcov 29 | 30 | # download the latest REDAXO release and unzip it 31 | # credits https://blog.markvincze.com/download-artifacts-from-a-latest-github-release-in-sh-and-powershell/ 32 | - name: Download latest REDAXO release 33 | run: | 34 | LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/redaxo/redaxo/releases/latest) 35 | REDAXO_VERSION=$(echo $LATEST_RELEASE | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/') 36 | echo "Downloaded REDAXO $REDAXO_VERSION" 37 | curl -Ls -o redaxo.zip https://github.com/redaxo/redaxo/releases/download/$REDAXO_VERSION/redaxo_$REDAXO_VERSION.zip 38 | unzip -oq redaxo.zip -d redaxo_cms 39 | rm redaxo.zip 40 | 41 | # start mysql service, create a database called redaxo5, apply config patch 42 | - name: Init database 43 | run: | 44 | sudo /etc/init.d/mysql start 45 | mysql -uroot -h127.0.0.1 -proot -e 'create database redaxo5;' 46 | 47 | # run REDAXO setup with the following parameters 48 | # Language: de 49 | # DB password: root 50 | # Create DB: no 51 | # Admin username: admin 52 | # Admin password: adminpassword 53 | # Error E-mail: test@redaxo.invalid 54 | - name: Setup REDAXO 55 | run: | 56 | php redaxo_cms/redaxo/bin/console setup:run -n --lang=de_de --agree-license --db-host=127.0.0.1 --db-name=redaxo5 --db-password=root --db-createdb=no --db-setup=normal --admin-username=admin --admin-password=adminpassword --error-email=test@redaxo.invalid --ansi 57 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.enabled true 58 | php redaxo_cms/redaxo/bin/console config:set --type boolean debug.throw_always_exception true 59 | 60 | # copy Addon files, ignore some directories... 61 | # install the addon 62 | # if the addon name does not match the repository name, ${{ github.event.repository.name }} must be replaced with the addon name 63 | # if additional addons are needed, they can be installed via the console commands 64 | # see: https://www.redaxo.org/doku/main/basis-addons#console 65 | - name: Copy and install Addons 66 | run: | 67 | rsync -av --exclude='./vendor' --exclude='.github' --exclude='.git' --exclude='redaxo_cms' './' 'redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }}' 68 | redaxo_cms/redaxo/bin/console package:install '${{ github.event.repository.name }}' 69 | 70 | # install dependencies from composer.json 71 | - name: Install test dependencies 72 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 73 | env: 74 | COMPOSER: composer.json 75 | run: composer install --prefer-dist --no-progress 76 | 77 | - name: Setup Problem Matchers for PHPUnit 78 | run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" 79 | 80 | # run unit tests, see composer.json 81 | - name: Run phpunit 82 | working-directory: redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }} 83 | run: composer unit-test 84 | -------------------------------------------------------------------------------- /_examples/pestphp/composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "720e17f47746f299bb925a1dd59df0f3", 8 | "packages": [], 9 | "packages-dev": [ 10 | { 11 | "name": "brianium/paratest", 12 | "version": "v7.2.7", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/paratestphp/paratest.git", 16 | "reference": "1526eb4fd195f65075456dee394d14742ae0a66c" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/paratestphp/paratest/zipball/1526eb4fd195f65075456dee394d14742ae0a66c", 21 | "reference": "1526eb4fd195f65075456dee394d14742ae0a66c", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "ext-dom": "*", 26 | "ext-pcre": "*", 27 | "ext-reflection": "*", 28 | "ext-simplexml": "*", 29 | "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1", 30 | "jean85/pretty-package-versions": "^2.0.5", 31 | "php": "~8.1.0 || ~8.2.0 || ~8.3.0", 32 | "phpunit/php-code-coverage": "^10.1.3", 33 | "phpunit/php-file-iterator": "^4.0.2", 34 | "phpunit/php-timer": "^6.0", 35 | "phpunit/phpunit": "^10.3.2", 36 | "sebastian/environment": "^6.0.1", 37 | "symfony/console": "^6.3.4", 38 | "symfony/process": "^6.3.4" 39 | }, 40 | "require-dev": { 41 | "doctrine/coding-standard": "^12.0.0", 42 | "ext-pcov": "*", 43 | "ext-posix": "*", 44 | "infection/infection": "^0.27.0", 45 | "phpstan/phpstan": "^1.10.32", 46 | "phpstan/phpstan-deprecation-rules": "^1.1.4", 47 | "phpstan/phpstan-phpunit": "^1.3.14", 48 | "phpstan/phpstan-strict-rules": "^1.5.1", 49 | "squizlabs/php_codesniffer": "^3.7.2", 50 | "symfony/filesystem": "^6.3.1" 51 | }, 52 | "bin": [ 53 | "bin/paratest", 54 | "bin/paratest.bat", 55 | "bin/paratest_for_phpstorm" 56 | ], 57 | "type": "library", 58 | "autoload": { 59 | "psr-4": { 60 | "ParaTest\\": [ 61 | "src/" 62 | ] 63 | } 64 | }, 65 | "notification-url": "https://packagist.org/downloads/", 66 | "license": [ 67 | "MIT" 68 | ], 69 | "authors": [ 70 | { 71 | "name": "Brian Scaturro", 72 | "email": "scaturrob@gmail.com", 73 | "role": "Developer" 74 | }, 75 | { 76 | "name": "Filippo Tessarotto", 77 | "email": "zoeslam@gmail.com", 78 | "role": "Developer" 79 | } 80 | ], 81 | "description": "Parallel testing for PHP", 82 | "homepage": "https://github.com/paratestphp/paratest", 83 | "keywords": [ 84 | "concurrent", 85 | "parallel", 86 | "phpunit", 87 | "testing" 88 | ], 89 | "support": { 90 | "issues": "https://github.com/paratestphp/paratest/issues", 91 | "source": "https://github.com/paratestphp/paratest/tree/v7.2.7" 92 | }, 93 | "funding": [ 94 | { 95 | "url": "https://github.com/sponsors/Slamdunk", 96 | "type": "github" 97 | }, 98 | { 99 | "url": "https://paypal.me/filippotessarotto", 100 | "type": "paypal" 101 | } 102 | ], 103 | "time": "2023-09-14T14:10:09+00:00" 104 | }, 105 | { 106 | "name": "doctrine/deprecations", 107 | "version": "v1.1.1", 108 | "source": { 109 | "type": "git", 110 | "url": "https://github.com/doctrine/deprecations.git", 111 | "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" 112 | }, 113 | "dist": { 114 | "type": "zip", 115 | "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", 116 | "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", 117 | "shasum": "" 118 | }, 119 | "require": { 120 | "php": "^7.1 || ^8.0" 121 | }, 122 | "require-dev": { 123 | "doctrine/coding-standard": "^9", 124 | "phpstan/phpstan": "1.4.10 || 1.10.15", 125 | "phpstan/phpstan-phpunit": "^1.0", 126 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", 127 | "psalm/plugin-phpunit": "0.18.4", 128 | "psr/log": "^1 || ^2 || ^3", 129 | "vimeo/psalm": "4.30.0 || 5.12.0" 130 | }, 131 | "suggest": { 132 | "psr/log": "Allows logging deprecations via PSR-3 logger implementation" 133 | }, 134 | "type": "library", 135 | "autoload": { 136 | "psr-4": { 137 | "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" 138 | } 139 | }, 140 | "notification-url": "https://packagist.org/downloads/", 141 | "license": [ 142 | "MIT" 143 | ], 144 | "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.", 145 | "homepage": "https://www.doctrine-project.org/", 146 | "support": { 147 | "issues": "https://github.com/doctrine/deprecations/issues", 148 | "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" 149 | }, 150 | "time": "2023-06-03T09:27:29+00:00" 151 | }, 152 | { 153 | "name": "fidry/cpu-core-counter", 154 | "version": "0.5.1", 155 | "source": { 156 | "type": "git", 157 | "url": "https://github.com/theofidry/cpu-core-counter.git", 158 | "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623" 159 | }, 160 | "dist": { 161 | "type": "zip", 162 | "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623", 163 | "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623", 164 | "shasum": "" 165 | }, 166 | "require": { 167 | "php": "^7.2 || ^8.0" 168 | }, 169 | "require-dev": { 170 | "fidry/makefile": "^0.2.0", 171 | "phpstan/extension-installer": "^1.2.0", 172 | "phpstan/phpstan": "^1.9.2", 173 | "phpstan/phpstan-deprecation-rules": "^1.0.0", 174 | "phpstan/phpstan-phpunit": "^1.2.2", 175 | "phpstan/phpstan-strict-rules": "^1.4.4", 176 | "phpunit/phpunit": "^9.5.26 || ^8.5.31", 177 | "theofidry/php-cs-fixer-config": "^1.0", 178 | "webmozarts/strict-phpunit": "^7.5" 179 | }, 180 | "type": "library", 181 | "autoload": { 182 | "psr-4": { 183 | "Fidry\\CpuCoreCounter\\": "src/" 184 | } 185 | }, 186 | "notification-url": "https://packagist.org/downloads/", 187 | "license": [ 188 | "MIT" 189 | ], 190 | "authors": [ 191 | { 192 | "name": "Théo FIDRY", 193 | "email": "theo.fidry@gmail.com" 194 | } 195 | ], 196 | "description": "Tiny utility to get the number of CPU cores.", 197 | "keywords": [ 198 | "CPU", 199 | "core" 200 | ], 201 | "support": { 202 | "issues": "https://github.com/theofidry/cpu-core-counter/issues", 203 | "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1" 204 | }, 205 | "funding": [ 206 | { 207 | "url": "https://github.com/theofidry", 208 | "type": "github" 209 | } 210 | ], 211 | "time": "2022-12-24T12:35:10+00:00" 212 | }, 213 | { 214 | "name": "filp/whoops", 215 | "version": "2.15.3", 216 | "source": { 217 | "type": "git", 218 | "url": "https://github.com/filp/whoops.git", 219 | "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" 220 | }, 221 | "dist": { 222 | "type": "zip", 223 | "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", 224 | "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", 225 | "shasum": "" 226 | }, 227 | "require": { 228 | "php": "^5.5.9 || ^7.0 || ^8.0", 229 | "psr/log": "^1.0.1 || ^2.0 || ^3.0" 230 | }, 231 | "require-dev": { 232 | "mockery/mockery": "^0.9 || ^1.0", 233 | "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", 234 | "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" 235 | }, 236 | "suggest": { 237 | "symfony/var-dumper": "Pretty print complex values better with var-dumper available", 238 | "whoops/soap": "Formats errors as SOAP responses" 239 | }, 240 | "type": "library", 241 | "extra": { 242 | "branch-alias": { 243 | "dev-master": "2.7-dev" 244 | } 245 | }, 246 | "autoload": { 247 | "psr-4": { 248 | "Whoops\\": "src/Whoops/" 249 | } 250 | }, 251 | "notification-url": "https://packagist.org/downloads/", 252 | "license": [ 253 | "MIT" 254 | ], 255 | "authors": [ 256 | { 257 | "name": "Filipe Dobreira", 258 | "homepage": "https://github.com/filp", 259 | "role": "Developer" 260 | } 261 | ], 262 | "description": "php error handling for cool kids", 263 | "homepage": "https://filp.github.io/whoops/", 264 | "keywords": [ 265 | "error", 266 | "exception", 267 | "handling", 268 | "library", 269 | "throwable", 270 | "whoops" 271 | ], 272 | "support": { 273 | "issues": "https://github.com/filp/whoops/issues", 274 | "source": "https://github.com/filp/whoops/tree/2.15.3" 275 | }, 276 | "funding": [ 277 | { 278 | "url": "https://github.com/denis-sokolov", 279 | "type": "github" 280 | } 281 | ], 282 | "time": "2023-07-13T12:00:00+00:00" 283 | }, 284 | { 285 | "name": "jean85/pretty-package-versions", 286 | "version": "2.0.5", 287 | "source": { 288 | "type": "git", 289 | "url": "https://github.com/Jean85/pretty-package-versions.git", 290 | "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" 291 | }, 292 | "dist": { 293 | "type": "zip", 294 | "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", 295 | "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", 296 | "shasum": "" 297 | }, 298 | "require": { 299 | "composer-runtime-api": "^2.0.0", 300 | "php": "^7.1|^8.0" 301 | }, 302 | "require-dev": { 303 | "friendsofphp/php-cs-fixer": "^2.17", 304 | "jean85/composer-provided-replaced-stub-package": "^1.0", 305 | "phpstan/phpstan": "^0.12.66", 306 | "phpunit/phpunit": "^7.5|^8.5|^9.4", 307 | "vimeo/psalm": "^4.3" 308 | }, 309 | "type": "library", 310 | "extra": { 311 | "branch-alias": { 312 | "dev-master": "1.x-dev" 313 | } 314 | }, 315 | "autoload": { 316 | "psr-4": { 317 | "Jean85\\": "src/" 318 | } 319 | }, 320 | "notification-url": "https://packagist.org/downloads/", 321 | "license": [ 322 | "MIT" 323 | ], 324 | "authors": [ 325 | { 326 | "name": "Alessandro Lai", 327 | "email": "alessandro.lai85@gmail.com" 328 | } 329 | ], 330 | "description": "A library to get pretty versions strings of installed dependencies", 331 | "keywords": [ 332 | "composer", 333 | "package", 334 | "release", 335 | "versions" 336 | ], 337 | "support": { 338 | "issues": "https://github.com/Jean85/pretty-package-versions/issues", 339 | "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" 340 | }, 341 | "time": "2021-10-08T21:21:46+00:00" 342 | }, 343 | { 344 | "name": "myclabs/deep-copy", 345 | "version": "1.11.1", 346 | "source": { 347 | "type": "git", 348 | "url": "https://github.com/myclabs/DeepCopy.git", 349 | "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" 350 | }, 351 | "dist": { 352 | "type": "zip", 353 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", 354 | "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", 355 | "shasum": "" 356 | }, 357 | "require": { 358 | "php": "^7.1 || ^8.0" 359 | }, 360 | "conflict": { 361 | "doctrine/collections": "<1.6.8", 362 | "doctrine/common": "<2.13.3 || >=3,<3.2.2" 363 | }, 364 | "require-dev": { 365 | "doctrine/collections": "^1.6.8", 366 | "doctrine/common": "^2.13.3 || ^3.2.2", 367 | "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" 368 | }, 369 | "type": "library", 370 | "autoload": { 371 | "files": [ 372 | "src/DeepCopy/deep_copy.php" 373 | ], 374 | "psr-4": { 375 | "DeepCopy\\": "src/DeepCopy/" 376 | } 377 | }, 378 | "notification-url": "https://packagist.org/downloads/", 379 | "license": [ 380 | "MIT" 381 | ], 382 | "description": "Create deep copies (clones) of your objects", 383 | "keywords": [ 384 | "clone", 385 | "copy", 386 | "duplicate", 387 | "object", 388 | "object graph" 389 | ], 390 | "support": { 391 | "issues": "https://github.com/myclabs/DeepCopy/issues", 392 | "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" 393 | }, 394 | "funding": [ 395 | { 396 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 397 | "type": "tidelift" 398 | } 399 | ], 400 | "time": "2023-03-08T13:26:56+00:00" 401 | }, 402 | { 403 | "name": "nikic/php-parser", 404 | "version": "v4.17.1", 405 | "source": { 406 | "type": "git", 407 | "url": "https://github.com/nikic/PHP-Parser.git", 408 | "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" 409 | }, 410 | "dist": { 411 | "type": "zip", 412 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", 413 | "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", 414 | "shasum": "" 415 | }, 416 | "require": { 417 | "ext-tokenizer": "*", 418 | "php": ">=7.0" 419 | }, 420 | "require-dev": { 421 | "ircmaxell/php-yacc": "^0.0.7", 422 | "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" 423 | }, 424 | "bin": [ 425 | "bin/php-parse" 426 | ], 427 | "type": "library", 428 | "extra": { 429 | "branch-alias": { 430 | "dev-master": "4.9-dev" 431 | } 432 | }, 433 | "autoload": { 434 | "psr-4": { 435 | "PhpParser\\": "lib/PhpParser" 436 | } 437 | }, 438 | "notification-url": "https://packagist.org/downloads/", 439 | "license": [ 440 | "BSD-3-Clause" 441 | ], 442 | "authors": [ 443 | { 444 | "name": "Nikita Popov" 445 | } 446 | ], 447 | "description": "A PHP parser written in PHP", 448 | "keywords": [ 449 | "parser", 450 | "php" 451 | ], 452 | "support": { 453 | "issues": "https://github.com/nikic/PHP-Parser/issues", 454 | "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" 455 | }, 456 | "time": "2023-08-13T19:53:39+00:00" 457 | }, 458 | { 459 | "name": "nunomaduro/collision", 460 | "version": "v7.9.0", 461 | "source": { 462 | "type": "git", 463 | "url": "https://github.com/nunomaduro/collision.git", 464 | "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da" 465 | }, 466 | "dist": { 467 | "type": "zip", 468 | "url": "https://api.github.com/repos/nunomaduro/collision/zipball/296d0cf9fe462837ac0da8a568b56fc026b132da", 469 | "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da", 470 | "shasum": "" 471 | }, 472 | "require": { 473 | "filp/whoops": "^2.15.3", 474 | "nunomaduro/termwind": "^1.15.1", 475 | "php": "^8.1.0", 476 | "symfony/console": "^6.3.4" 477 | }, 478 | "require-dev": { 479 | "brianium/paratest": "^7.2.7", 480 | "laravel/framework": "^10.23.1", 481 | "laravel/pint": "^1.13.1", 482 | "laravel/sail": "^1.25.0", 483 | "laravel/sanctum": "^3.3.1", 484 | "laravel/tinker": "^2.8.2", 485 | "nunomaduro/larastan": "^2.6.4", 486 | "orchestra/testbench-core": "^8.11.0", 487 | "pestphp/pest": "^2.19.1", 488 | "phpunit/phpunit": "^10.3.5", 489 | "sebastian/environment": "^6.0.1", 490 | "spatie/laravel-ignition": "^2.3.0" 491 | }, 492 | "type": "library", 493 | "extra": { 494 | "laravel": { 495 | "providers": [ 496 | "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" 497 | ] 498 | } 499 | }, 500 | "autoload": { 501 | "files": [ 502 | "./src/Adapters/Phpunit/Autoload.php" 503 | ], 504 | "psr-4": { 505 | "NunoMaduro\\Collision\\": "src/" 506 | } 507 | }, 508 | "notification-url": "https://packagist.org/downloads/", 509 | "license": [ 510 | "MIT" 511 | ], 512 | "authors": [ 513 | { 514 | "name": "Nuno Maduro", 515 | "email": "enunomaduro@gmail.com" 516 | } 517 | ], 518 | "description": "Cli error handling for console/command-line PHP applications.", 519 | "keywords": [ 520 | "artisan", 521 | "cli", 522 | "command-line", 523 | "console", 524 | "error", 525 | "handling", 526 | "laravel", 527 | "laravel-zero", 528 | "php", 529 | "symfony" 530 | ], 531 | "support": { 532 | "issues": "https://github.com/nunomaduro/collision/issues", 533 | "source": "https://github.com/nunomaduro/collision" 534 | }, 535 | "funding": [ 536 | { 537 | "url": "https://www.paypal.com/paypalme/enunomaduro", 538 | "type": "custom" 539 | }, 540 | { 541 | "url": "https://github.com/nunomaduro", 542 | "type": "github" 543 | }, 544 | { 545 | "url": "https://www.patreon.com/nunomaduro", 546 | "type": "patreon" 547 | } 548 | ], 549 | "time": "2023-09-19T10:45:09+00:00" 550 | }, 551 | { 552 | "name": "nunomaduro/termwind", 553 | "version": "v1.15.1", 554 | "source": { 555 | "type": "git", 556 | "url": "https://github.com/nunomaduro/termwind.git", 557 | "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" 558 | }, 559 | "dist": { 560 | "type": "zip", 561 | "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", 562 | "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", 563 | "shasum": "" 564 | }, 565 | "require": { 566 | "ext-mbstring": "*", 567 | "php": "^8.0", 568 | "symfony/console": "^5.3.0|^6.0.0" 569 | }, 570 | "require-dev": { 571 | "ergebnis/phpstan-rules": "^1.0.", 572 | "illuminate/console": "^8.0|^9.0", 573 | "illuminate/support": "^8.0|^9.0", 574 | "laravel/pint": "^1.0.0", 575 | "pestphp/pest": "^1.21.0", 576 | "pestphp/pest-plugin-mock": "^1.0", 577 | "phpstan/phpstan": "^1.4.6", 578 | "phpstan/phpstan-strict-rules": "^1.1.0", 579 | "symfony/var-dumper": "^5.2.7|^6.0.0", 580 | "thecodingmachine/phpstan-strict-rules": "^1.0.0" 581 | }, 582 | "type": "library", 583 | "extra": { 584 | "laravel": { 585 | "providers": [ 586 | "Termwind\\Laravel\\TermwindServiceProvider" 587 | ] 588 | } 589 | }, 590 | "autoload": { 591 | "files": [ 592 | "src/Functions.php" 593 | ], 594 | "psr-4": { 595 | "Termwind\\": "src/" 596 | } 597 | }, 598 | "notification-url": "https://packagist.org/downloads/", 599 | "license": [ 600 | "MIT" 601 | ], 602 | "authors": [ 603 | { 604 | "name": "Nuno Maduro", 605 | "email": "enunomaduro@gmail.com" 606 | } 607 | ], 608 | "description": "Its like Tailwind CSS, but for the console.", 609 | "keywords": [ 610 | "cli", 611 | "console", 612 | "css", 613 | "package", 614 | "php", 615 | "style" 616 | ], 617 | "support": { 618 | "issues": "https://github.com/nunomaduro/termwind/issues", 619 | "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" 620 | }, 621 | "funding": [ 622 | { 623 | "url": "https://www.paypal.com/paypalme/enunomaduro", 624 | "type": "custom" 625 | }, 626 | { 627 | "url": "https://github.com/nunomaduro", 628 | "type": "github" 629 | }, 630 | { 631 | "url": "https://github.com/xiCO2k", 632 | "type": "github" 633 | } 634 | ], 635 | "time": "2023-02-08T01:06:31+00:00" 636 | }, 637 | { 638 | "name": "pestphp/pest", 639 | "version": "v2.19.2", 640 | "source": { 641 | "type": "git", 642 | "url": "https://github.com/pestphp/pest.git", 643 | "reference": "6bc9da3fe1154d75a65262618b4a7032f267c04f" 644 | }, 645 | "dist": { 646 | "type": "zip", 647 | "url": "https://api.github.com/repos/pestphp/pest/zipball/6bc9da3fe1154d75a65262618b4a7032f267c04f", 648 | "reference": "6bc9da3fe1154d75a65262618b4a7032f267c04f", 649 | "shasum": "" 650 | }, 651 | "require": { 652 | "brianium/paratest": "^7.2.7", 653 | "nunomaduro/collision": "^7.9.0", 654 | "nunomaduro/termwind": "^1.15.1", 655 | "pestphp/pest-plugin": "^2.1.1", 656 | "pestphp/pest-plugin-arch": "^2.3.3", 657 | "php": "^8.1.0", 658 | "phpunit/phpunit": "^10.3.5" 659 | }, 660 | "conflict": { 661 | "phpunit/phpunit": ">10.3.5", 662 | "sebastian/exporter": "<5.1.0", 663 | "webmozart/assert": "<1.11.0" 664 | }, 665 | "require-dev": { 666 | "pestphp/pest-dev-tools": "^2.16.0", 667 | "pestphp/pest-plugin-type-coverage": "^2.2.0", 668 | "symfony/process": "^6.3.4" 669 | }, 670 | "bin": [ 671 | "bin/pest" 672 | ], 673 | "type": "library", 674 | "extra": { 675 | "pest": { 676 | "plugins": [ 677 | "Pest\\Plugins\\Bail", 678 | "Pest\\Plugins\\Cache", 679 | "Pest\\Plugins\\Coverage", 680 | "Pest\\Plugins\\Init", 681 | "Pest\\Plugins\\Environment", 682 | "Pest\\Plugins\\Help", 683 | "Pest\\Plugins\\Memory", 684 | "Pest\\Plugins\\Only", 685 | "Pest\\Plugins\\Printer", 686 | "Pest\\Plugins\\ProcessIsolation", 687 | "Pest\\Plugins\\Profile", 688 | "Pest\\Plugins\\Retry", 689 | "Pest\\Plugins\\Snapshot", 690 | "Pest\\Plugins\\Verbose", 691 | "Pest\\Plugins\\Version", 692 | "Pest\\Plugins\\Parallel" 693 | ] 694 | } 695 | }, 696 | "autoload": { 697 | "files": [ 698 | "src/Functions.php", 699 | "src/Pest.php" 700 | ], 701 | "psr-4": { 702 | "Pest\\": "src/" 703 | } 704 | }, 705 | "notification-url": "https://packagist.org/downloads/", 706 | "license": [ 707 | "MIT" 708 | ], 709 | "authors": [ 710 | { 711 | "name": "Nuno Maduro", 712 | "email": "enunomaduro@gmail.com" 713 | } 714 | ], 715 | "description": "The elegant PHP Testing Framework.", 716 | "keywords": [ 717 | "framework", 718 | "pest", 719 | "php", 720 | "test", 721 | "testing", 722 | "unit" 723 | ], 724 | "support": { 725 | "issues": "https://github.com/pestphp/pest/issues", 726 | "source": "https://github.com/pestphp/pest/tree/v2.19.2" 727 | }, 728 | "funding": [ 729 | { 730 | "url": "https://www.paypal.com/paypalme/enunomaduro", 731 | "type": "custom" 732 | }, 733 | { 734 | "url": "https://github.com/nunomaduro", 735 | "type": "github" 736 | } 737 | ], 738 | "time": "2023-09-19T10:48:16+00:00" 739 | }, 740 | { 741 | "name": "pestphp/pest-plugin", 742 | "version": "v2.1.1", 743 | "source": { 744 | "type": "git", 745 | "url": "https://github.com/pestphp/pest-plugin.git", 746 | "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b" 747 | }, 748 | "dist": { 749 | "type": "zip", 750 | "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e05d2859e08c2567ee38ce8b005d044e72648c0b", 751 | "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b", 752 | "shasum": "" 753 | }, 754 | "require": { 755 | "composer-plugin-api": "^2.0.0", 756 | "composer-runtime-api": "^2.2.2", 757 | "php": "^8.1" 758 | }, 759 | "conflict": { 760 | "pestphp/pest": "<2.2.3" 761 | }, 762 | "require-dev": { 763 | "composer/composer": "^2.5.8", 764 | "pestphp/pest": "^2.16.0", 765 | "pestphp/pest-dev-tools": "^2.16.0" 766 | }, 767 | "type": "composer-plugin", 768 | "extra": { 769 | "class": "Pest\\Plugin\\Manager" 770 | }, 771 | "autoload": { 772 | "psr-4": { 773 | "Pest\\Plugin\\": "src/" 774 | } 775 | }, 776 | "notification-url": "https://packagist.org/downloads/", 777 | "license": [ 778 | "MIT" 779 | ], 780 | "description": "The Pest plugin manager", 781 | "keywords": [ 782 | "framework", 783 | "manager", 784 | "pest", 785 | "php", 786 | "plugin", 787 | "test", 788 | "testing", 789 | "unit" 790 | ], 791 | "support": { 792 | "source": "https://github.com/pestphp/pest-plugin/tree/v2.1.1" 793 | }, 794 | "funding": [ 795 | { 796 | "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", 797 | "type": "custom" 798 | }, 799 | { 800 | "url": "https://github.com/nunomaduro", 801 | "type": "github" 802 | }, 803 | { 804 | "url": "https://www.patreon.com/nunomaduro", 805 | "type": "patreon" 806 | } 807 | ], 808 | "time": "2023-08-22T08:40:06+00:00" 809 | }, 810 | { 811 | "name": "pestphp/pest-plugin-arch", 812 | "version": "v2.3.3", 813 | "source": { 814 | "type": "git", 815 | "url": "https://github.com/pestphp/pest-plugin-arch.git", 816 | "reference": "b758990e83f89daba3c45672398579cf8692213f" 817 | }, 818 | "dist": { 819 | "type": "zip", 820 | "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/b758990e83f89daba3c45672398579cf8692213f", 821 | "reference": "b758990e83f89daba3c45672398579cf8692213f", 822 | "shasum": "" 823 | }, 824 | "require": { 825 | "nunomaduro/collision": "^7.8.1", 826 | "pestphp/pest-plugin": "^2.0.1", 827 | "php": "^8.1", 828 | "ta-tikoma/phpunit-architecture-test": "^0.7.4" 829 | }, 830 | "require-dev": { 831 | "pestphp/pest": "^2.16.0", 832 | "pestphp/pest-dev-tools": "^2.16.0" 833 | }, 834 | "type": "library", 835 | "autoload": { 836 | "files": [ 837 | "src/Autoload.php" 838 | ], 839 | "psr-4": { 840 | "Pest\\Arch\\": "src/" 841 | } 842 | }, 843 | "notification-url": "https://packagist.org/downloads/", 844 | "license": [ 845 | "MIT" 846 | ], 847 | "description": "The Arch plugin for Pest PHP.", 848 | "keywords": [ 849 | "arch", 850 | "architecture", 851 | "framework", 852 | "pest", 853 | "php", 854 | "plugin", 855 | "test", 856 | "testing", 857 | "unit" 858 | ], 859 | "support": { 860 | "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.3.3" 861 | }, 862 | "funding": [ 863 | { 864 | "url": "https://www.paypal.com/paypalme/enunomaduro", 865 | "type": "custom" 866 | }, 867 | { 868 | "url": "https://github.com/nunomaduro", 869 | "type": "github" 870 | } 871 | ], 872 | "time": "2023-08-21T16:06:30+00:00" 873 | }, 874 | { 875 | "name": "phar-io/manifest", 876 | "version": "2.0.3", 877 | "source": { 878 | "type": "git", 879 | "url": "https://github.com/phar-io/manifest.git", 880 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53" 881 | }, 882 | "dist": { 883 | "type": "zip", 884 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", 885 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53", 886 | "shasum": "" 887 | }, 888 | "require": { 889 | "ext-dom": "*", 890 | "ext-phar": "*", 891 | "ext-xmlwriter": "*", 892 | "phar-io/version": "^3.0.1", 893 | "php": "^7.2 || ^8.0" 894 | }, 895 | "type": "library", 896 | "extra": { 897 | "branch-alias": { 898 | "dev-master": "2.0.x-dev" 899 | } 900 | }, 901 | "autoload": { 902 | "classmap": [ 903 | "src/" 904 | ] 905 | }, 906 | "notification-url": "https://packagist.org/downloads/", 907 | "license": [ 908 | "BSD-3-Clause" 909 | ], 910 | "authors": [ 911 | { 912 | "name": "Arne Blankerts", 913 | "email": "arne@blankerts.de", 914 | "role": "Developer" 915 | }, 916 | { 917 | "name": "Sebastian Heuer", 918 | "email": "sebastian@phpeople.de", 919 | "role": "Developer" 920 | }, 921 | { 922 | "name": "Sebastian Bergmann", 923 | "email": "sebastian@phpunit.de", 924 | "role": "Developer" 925 | } 926 | ], 927 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 928 | "support": { 929 | "issues": "https://github.com/phar-io/manifest/issues", 930 | "source": "https://github.com/phar-io/manifest/tree/2.0.3" 931 | }, 932 | "time": "2021-07-20T11:28:43+00:00" 933 | }, 934 | { 935 | "name": "phar-io/version", 936 | "version": "3.2.1", 937 | "source": { 938 | "type": "git", 939 | "url": "https://github.com/phar-io/version.git", 940 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" 941 | }, 942 | "dist": { 943 | "type": "zip", 944 | "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 945 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 946 | "shasum": "" 947 | }, 948 | "require": { 949 | "php": "^7.2 || ^8.0" 950 | }, 951 | "type": "library", 952 | "autoload": { 953 | "classmap": [ 954 | "src/" 955 | ] 956 | }, 957 | "notification-url": "https://packagist.org/downloads/", 958 | "license": [ 959 | "BSD-3-Clause" 960 | ], 961 | "authors": [ 962 | { 963 | "name": "Arne Blankerts", 964 | "email": "arne@blankerts.de", 965 | "role": "Developer" 966 | }, 967 | { 968 | "name": "Sebastian Heuer", 969 | "email": "sebastian@phpeople.de", 970 | "role": "Developer" 971 | }, 972 | { 973 | "name": "Sebastian Bergmann", 974 | "email": "sebastian@phpunit.de", 975 | "role": "Developer" 976 | } 977 | ], 978 | "description": "Library for handling version information and constraints", 979 | "support": { 980 | "issues": "https://github.com/phar-io/version/issues", 981 | "source": "https://github.com/phar-io/version/tree/3.2.1" 982 | }, 983 | "time": "2022-02-21T01:04:05+00:00" 984 | }, 985 | { 986 | "name": "phpdocumentor/reflection-common", 987 | "version": "2.2.0", 988 | "source": { 989 | "type": "git", 990 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 991 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 992 | }, 993 | "dist": { 994 | "type": "zip", 995 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 996 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 997 | "shasum": "" 998 | }, 999 | "require": { 1000 | "php": "^7.2 || ^8.0" 1001 | }, 1002 | "type": "library", 1003 | "extra": { 1004 | "branch-alias": { 1005 | "dev-2.x": "2.x-dev" 1006 | } 1007 | }, 1008 | "autoload": { 1009 | "psr-4": { 1010 | "phpDocumentor\\Reflection\\": "src/" 1011 | } 1012 | }, 1013 | "notification-url": "https://packagist.org/downloads/", 1014 | "license": [ 1015 | "MIT" 1016 | ], 1017 | "authors": [ 1018 | { 1019 | "name": "Jaap van Otterdijk", 1020 | "email": "opensource@ijaap.nl" 1021 | } 1022 | ], 1023 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 1024 | "homepage": "http://www.phpdoc.org", 1025 | "keywords": [ 1026 | "FQSEN", 1027 | "phpDocumentor", 1028 | "phpdoc", 1029 | "reflection", 1030 | "static analysis" 1031 | ], 1032 | "support": { 1033 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", 1034 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" 1035 | }, 1036 | "time": "2020-06-27T09:03:43+00:00" 1037 | }, 1038 | { 1039 | "name": "phpdocumentor/reflection-docblock", 1040 | "version": "5.3.0", 1041 | "source": { 1042 | "type": "git", 1043 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 1044 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" 1045 | }, 1046 | "dist": { 1047 | "type": "zip", 1048 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", 1049 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", 1050 | "shasum": "" 1051 | }, 1052 | "require": { 1053 | "ext-filter": "*", 1054 | "php": "^7.2 || ^8.0", 1055 | "phpdocumentor/reflection-common": "^2.2", 1056 | "phpdocumentor/type-resolver": "^1.3", 1057 | "webmozart/assert": "^1.9.1" 1058 | }, 1059 | "require-dev": { 1060 | "mockery/mockery": "~1.3.2", 1061 | "psalm/phar": "^4.8" 1062 | }, 1063 | "type": "library", 1064 | "extra": { 1065 | "branch-alias": { 1066 | "dev-master": "5.x-dev" 1067 | } 1068 | }, 1069 | "autoload": { 1070 | "psr-4": { 1071 | "phpDocumentor\\Reflection\\": "src" 1072 | } 1073 | }, 1074 | "notification-url": "https://packagist.org/downloads/", 1075 | "license": [ 1076 | "MIT" 1077 | ], 1078 | "authors": [ 1079 | { 1080 | "name": "Mike van Riel", 1081 | "email": "me@mikevanriel.com" 1082 | }, 1083 | { 1084 | "name": "Jaap van Otterdijk", 1085 | "email": "account@ijaap.nl" 1086 | } 1087 | ], 1088 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 1089 | "support": { 1090 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", 1091 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" 1092 | }, 1093 | "time": "2021-10-19T17:43:47+00:00" 1094 | }, 1095 | { 1096 | "name": "phpdocumentor/type-resolver", 1097 | "version": "1.7.3", 1098 | "source": { 1099 | "type": "git", 1100 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 1101 | "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" 1102 | }, 1103 | "dist": { 1104 | "type": "zip", 1105 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", 1106 | "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", 1107 | "shasum": "" 1108 | }, 1109 | "require": { 1110 | "doctrine/deprecations": "^1.0", 1111 | "php": "^7.4 || ^8.0", 1112 | "phpdocumentor/reflection-common": "^2.0", 1113 | "phpstan/phpdoc-parser": "^1.13" 1114 | }, 1115 | "require-dev": { 1116 | "ext-tokenizer": "*", 1117 | "phpbench/phpbench": "^1.2", 1118 | "phpstan/extension-installer": "^1.1", 1119 | "phpstan/phpstan": "^1.8", 1120 | "phpstan/phpstan-phpunit": "^1.1", 1121 | "phpunit/phpunit": "^9.5", 1122 | "rector/rector": "^0.13.9", 1123 | "vimeo/psalm": "^4.25" 1124 | }, 1125 | "type": "library", 1126 | "extra": { 1127 | "branch-alias": { 1128 | "dev-1.x": "1.x-dev" 1129 | } 1130 | }, 1131 | "autoload": { 1132 | "psr-4": { 1133 | "phpDocumentor\\Reflection\\": "src" 1134 | } 1135 | }, 1136 | "notification-url": "https://packagist.org/downloads/", 1137 | "license": [ 1138 | "MIT" 1139 | ], 1140 | "authors": [ 1141 | { 1142 | "name": "Mike van Riel", 1143 | "email": "me@mikevanriel.com" 1144 | } 1145 | ], 1146 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 1147 | "support": { 1148 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues", 1149 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" 1150 | }, 1151 | "time": "2023-08-12T11:01:26+00:00" 1152 | }, 1153 | { 1154 | "name": "phpstan/phpdoc-parser", 1155 | "version": "1.24.2", 1156 | "source": { 1157 | "type": "git", 1158 | "url": "https://github.com/phpstan/phpdoc-parser.git", 1159 | "reference": "bcad8d995980440892759db0c32acae7c8e79442" 1160 | }, 1161 | "dist": { 1162 | "type": "zip", 1163 | "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", 1164 | "reference": "bcad8d995980440892759db0c32acae7c8e79442", 1165 | "shasum": "" 1166 | }, 1167 | "require": { 1168 | "php": "^7.2 || ^8.0" 1169 | }, 1170 | "require-dev": { 1171 | "doctrine/annotations": "^2.0", 1172 | "nikic/php-parser": "^4.15", 1173 | "php-parallel-lint/php-parallel-lint": "^1.2", 1174 | "phpstan/extension-installer": "^1.0", 1175 | "phpstan/phpstan": "^1.5", 1176 | "phpstan/phpstan-phpunit": "^1.1", 1177 | "phpstan/phpstan-strict-rules": "^1.0", 1178 | "phpunit/phpunit": "^9.5", 1179 | "symfony/process": "^5.2" 1180 | }, 1181 | "type": "library", 1182 | "autoload": { 1183 | "psr-4": { 1184 | "PHPStan\\PhpDocParser\\": [ 1185 | "src/" 1186 | ] 1187 | } 1188 | }, 1189 | "notification-url": "https://packagist.org/downloads/", 1190 | "license": [ 1191 | "MIT" 1192 | ], 1193 | "description": "PHPDoc parser with support for nullable, intersection and generic types", 1194 | "support": { 1195 | "issues": "https://github.com/phpstan/phpdoc-parser/issues", 1196 | "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" 1197 | }, 1198 | "time": "2023-09-26T12:28:12+00:00" 1199 | }, 1200 | { 1201 | "name": "phpunit/php-code-coverage", 1202 | "version": "10.1.6", 1203 | "source": { 1204 | "type": "git", 1205 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1206 | "reference": "56f33548fe522c8d82da7ff3824b42829d324364" 1207 | }, 1208 | "dist": { 1209 | "type": "zip", 1210 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/56f33548fe522c8d82da7ff3824b42829d324364", 1211 | "reference": "56f33548fe522c8d82da7ff3824b42829d324364", 1212 | "shasum": "" 1213 | }, 1214 | "require": { 1215 | "ext-dom": "*", 1216 | "ext-libxml": "*", 1217 | "ext-xmlwriter": "*", 1218 | "nikic/php-parser": "^4.15", 1219 | "php": ">=8.1", 1220 | "phpunit/php-file-iterator": "^4.0", 1221 | "phpunit/php-text-template": "^3.0", 1222 | "sebastian/code-unit-reverse-lookup": "^3.0", 1223 | "sebastian/complexity": "^3.0", 1224 | "sebastian/environment": "^6.0", 1225 | "sebastian/lines-of-code": "^2.0", 1226 | "sebastian/version": "^4.0", 1227 | "theseer/tokenizer": "^1.2.0" 1228 | }, 1229 | "require-dev": { 1230 | "phpunit/phpunit": "^10.1" 1231 | }, 1232 | "suggest": { 1233 | "ext-pcov": "PHP extension that provides line coverage", 1234 | "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" 1235 | }, 1236 | "type": "library", 1237 | "extra": { 1238 | "branch-alias": { 1239 | "dev-main": "10.1-dev" 1240 | } 1241 | }, 1242 | "autoload": { 1243 | "classmap": [ 1244 | "src/" 1245 | ] 1246 | }, 1247 | "notification-url": "https://packagist.org/downloads/", 1248 | "license": [ 1249 | "BSD-3-Clause" 1250 | ], 1251 | "authors": [ 1252 | { 1253 | "name": "Sebastian Bergmann", 1254 | "email": "sebastian@phpunit.de", 1255 | "role": "lead" 1256 | } 1257 | ], 1258 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1259 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1260 | "keywords": [ 1261 | "coverage", 1262 | "testing", 1263 | "xunit" 1264 | ], 1265 | "support": { 1266 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 1267 | "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", 1268 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.6" 1269 | }, 1270 | "funding": [ 1271 | { 1272 | "url": "https://github.com/sebastianbergmann", 1273 | "type": "github" 1274 | } 1275 | ], 1276 | "time": "2023-09-19T04:59:03+00:00" 1277 | }, 1278 | { 1279 | "name": "phpunit/php-file-iterator", 1280 | "version": "4.1.0", 1281 | "source": { 1282 | "type": "git", 1283 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1284 | "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" 1285 | }, 1286 | "dist": { 1287 | "type": "zip", 1288 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", 1289 | "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", 1290 | "shasum": "" 1291 | }, 1292 | "require": { 1293 | "php": ">=8.1" 1294 | }, 1295 | "require-dev": { 1296 | "phpunit/phpunit": "^10.0" 1297 | }, 1298 | "type": "library", 1299 | "extra": { 1300 | "branch-alias": { 1301 | "dev-main": "4.0-dev" 1302 | } 1303 | }, 1304 | "autoload": { 1305 | "classmap": [ 1306 | "src/" 1307 | ] 1308 | }, 1309 | "notification-url": "https://packagist.org/downloads/", 1310 | "license": [ 1311 | "BSD-3-Clause" 1312 | ], 1313 | "authors": [ 1314 | { 1315 | "name": "Sebastian Bergmann", 1316 | "email": "sebastian@phpunit.de", 1317 | "role": "lead" 1318 | } 1319 | ], 1320 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1321 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1322 | "keywords": [ 1323 | "filesystem", 1324 | "iterator" 1325 | ], 1326 | "support": { 1327 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 1328 | "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", 1329 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" 1330 | }, 1331 | "funding": [ 1332 | { 1333 | "url": "https://github.com/sebastianbergmann", 1334 | "type": "github" 1335 | } 1336 | ], 1337 | "time": "2023-08-31T06:24:48+00:00" 1338 | }, 1339 | { 1340 | "name": "phpunit/php-invoker", 1341 | "version": "4.0.0", 1342 | "source": { 1343 | "type": "git", 1344 | "url": "https://github.com/sebastianbergmann/php-invoker.git", 1345 | "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" 1346 | }, 1347 | "dist": { 1348 | "type": "zip", 1349 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", 1350 | "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", 1351 | "shasum": "" 1352 | }, 1353 | "require": { 1354 | "php": ">=8.1" 1355 | }, 1356 | "require-dev": { 1357 | "ext-pcntl": "*", 1358 | "phpunit/phpunit": "^10.0" 1359 | }, 1360 | "suggest": { 1361 | "ext-pcntl": "*" 1362 | }, 1363 | "type": "library", 1364 | "extra": { 1365 | "branch-alias": { 1366 | "dev-main": "4.0-dev" 1367 | } 1368 | }, 1369 | "autoload": { 1370 | "classmap": [ 1371 | "src/" 1372 | ] 1373 | }, 1374 | "notification-url": "https://packagist.org/downloads/", 1375 | "license": [ 1376 | "BSD-3-Clause" 1377 | ], 1378 | "authors": [ 1379 | { 1380 | "name": "Sebastian Bergmann", 1381 | "email": "sebastian@phpunit.de", 1382 | "role": "lead" 1383 | } 1384 | ], 1385 | "description": "Invoke callables with a timeout", 1386 | "homepage": "https://github.com/sebastianbergmann/php-invoker/", 1387 | "keywords": [ 1388 | "process" 1389 | ], 1390 | "support": { 1391 | "issues": "https://github.com/sebastianbergmann/php-invoker/issues", 1392 | "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" 1393 | }, 1394 | "funding": [ 1395 | { 1396 | "url": "https://github.com/sebastianbergmann", 1397 | "type": "github" 1398 | } 1399 | ], 1400 | "time": "2023-02-03T06:56:09+00:00" 1401 | }, 1402 | { 1403 | "name": "phpunit/php-text-template", 1404 | "version": "3.0.1", 1405 | "source": { 1406 | "type": "git", 1407 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1408 | "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" 1409 | }, 1410 | "dist": { 1411 | "type": "zip", 1412 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", 1413 | "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", 1414 | "shasum": "" 1415 | }, 1416 | "require": { 1417 | "php": ">=8.1" 1418 | }, 1419 | "require-dev": { 1420 | "phpunit/phpunit": "^10.0" 1421 | }, 1422 | "type": "library", 1423 | "extra": { 1424 | "branch-alias": { 1425 | "dev-main": "3.0-dev" 1426 | } 1427 | }, 1428 | "autoload": { 1429 | "classmap": [ 1430 | "src/" 1431 | ] 1432 | }, 1433 | "notification-url": "https://packagist.org/downloads/", 1434 | "license": [ 1435 | "BSD-3-Clause" 1436 | ], 1437 | "authors": [ 1438 | { 1439 | "name": "Sebastian Bergmann", 1440 | "email": "sebastian@phpunit.de", 1441 | "role": "lead" 1442 | } 1443 | ], 1444 | "description": "Simple template engine.", 1445 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1446 | "keywords": [ 1447 | "template" 1448 | ], 1449 | "support": { 1450 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 1451 | "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", 1452 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" 1453 | }, 1454 | "funding": [ 1455 | { 1456 | "url": "https://github.com/sebastianbergmann", 1457 | "type": "github" 1458 | } 1459 | ], 1460 | "time": "2023-08-31T14:07:24+00:00" 1461 | }, 1462 | { 1463 | "name": "phpunit/php-timer", 1464 | "version": "6.0.0", 1465 | "source": { 1466 | "type": "git", 1467 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1468 | "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" 1469 | }, 1470 | "dist": { 1471 | "type": "zip", 1472 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", 1473 | "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", 1474 | "shasum": "" 1475 | }, 1476 | "require": { 1477 | "php": ">=8.1" 1478 | }, 1479 | "require-dev": { 1480 | "phpunit/phpunit": "^10.0" 1481 | }, 1482 | "type": "library", 1483 | "extra": { 1484 | "branch-alias": { 1485 | "dev-main": "6.0-dev" 1486 | } 1487 | }, 1488 | "autoload": { 1489 | "classmap": [ 1490 | "src/" 1491 | ] 1492 | }, 1493 | "notification-url": "https://packagist.org/downloads/", 1494 | "license": [ 1495 | "BSD-3-Clause" 1496 | ], 1497 | "authors": [ 1498 | { 1499 | "name": "Sebastian Bergmann", 1500 | "email": "sebastian@phpunit.de", 1501 | "role": "lead" 1502 | } 1503 | ], 1504 | "description": "Utility class for timing", 1505 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1506 | "keywords": [ 1507 | "timer" 1508 | ], 1509 | "support": { 1510 | "issues": "https://github.com/sebastianbergmann/php-timer/issues", 1511 | "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" 1512 | }, 1513 | "funding": [ 1514 | { 1515 | "url": "https://github.com/sebastianbergmann", 1516 | "type": "github" 1517 | } 1518 | ], 1519 | "time": "2023-02-03T06:57:52+00:00" 1520 | }, 1521 | { 1522 | "name": "phpunit/phpunit", 1523 | "version": "10.3.5", 1524 | "source": { 1525 | "type": "git", 1526 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1527 | "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503" 1528 | }, 1529 | "dist": { 1530 | "type": "zip", 1531 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/747c3b2038f1139e3dcd9886a3f5a948648b7503", 1532 | "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503", 1533 | "shasum": "" 1534 | }, 1535 | "require": { 1536 | "ext-dom": "*", 1537 | "ext-json": "*", 1538 | "ext-libxml": "*", 1539 | "ext-mbstring": "*", 1540 | "ext-xml": "*", 1541 | "ext-xmlwriter": "*", 1542 | "myclabs/deep-copy": "^1.10.1", 1543 | "phar-io/manifest": "^2.0.3", 1544 | "phar-io/version": "^3.0.2", 1545 | "php": ">=8.1", 1546 | "phpunit/php-code-coverage": "^10.1.5", 1547 | "phpunit/php-file-iterator": "^4.0", 1548 | "phpunit/php-invoker": "^4.0", 1549 | "phpunit/php-text-template": "^3.0", 1550 | "phpunit/php-timer": "^6.0", 1551 | "sebastian/cli-parser": "^2.0", 1552 | "sebastian/code-unit": "^2.0", 1553 | "sebastian/comparator": "^5.0", 1554 | "sebastian/diff": "^5.0", 1555 | "sebastian/environment": "^6.0", 1556 | "sebastian/exporter": "^5.1", 1557 | "sebastian/global-state": "^6.0.1", 1558 | "sebastian/object-enumerator": "^5.0", 1559 | "sebastian/recursion-context": "^5.0", 1560 | "sebastian/type": "^4.0", 1561 | "sebastian/version": "^4.0" 1562 | }, 1563 | "suggest": { 1564 | "ext-soap": "To be able to generate mocks based on WSDL files" 1565 | }, 1566 | "bin": [ 1567 | "phpunit" 1568 | ], 1569 | "type": "library", 1570 | "extra": { 1571 | "branch-alias": { 1572 | "dev-main": "10.3-dev" 1573 | } 1574 | }, 1575 | "autoload": { 1576 | "files": [ 1577 | "src/Framework/Assert/Functions.php" 1578 | ], 1579 | "classmap": [ 1580 | "src/" 1581 | ] 1582 | }, 1583 | "notification-url": "https://packagist.org/downloads/", 1584 | "license": [ 1585 | "BSD-3-Clause" 1586 | ], 1587 | "authors": [ 1588 | { 1589 | "name": "Sebastian Bergmann", 1590 | "email": "sebastian@phpunit.de", 1591 | "role": "lead" 1592 | } 1593 | ], 1594 | "description": "The PHP Unit Testing framework.", 1595 | "homepage": "https://phpunit.de/", 1596 | "keywords": [ 1597 | "phpunit", 1598 | "testing", 1599 | "xunit" 1600 | ], 1601 | "support": { 1602 | "issues": "https://github.com/sebastianbergmann/phpunit/issues", 1603 | "security": "https://github.com/sebastianbergmann/phpunit/security/policy", 1604 | "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.5" 1605 | }, 1606 | "funding": [ 1607 | { 1608 | "url": "https://phpunit.de/sponsors.html", 1609 | "type": "custom" 1610 | }, 1611 | { 1612 | "url": "https://github.com/sebastianbergmann", 1613 | "type": "github" 1614 | }, 1615 | { 1616 | "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", 1617 | "type": "tidelift" 1618 | } 1619 | ], 1620 | "time": "2023-09-19T05:42:37+00:00" 1621 | }, 1622 | { 1623 | "name": "psr/container", 1624 | "version": "2.0.2", 1625 | "source": { 1626 | "type": "git", 1627 | "url": "https://github.com/php-fig/container.git", 1628 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" 1629 | }, 1630 | "dist": { 1631 | "type": "zip", 1632 | "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1633 | "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", 1634 | "shasum": "" 1635 | }, 1636 | "require": { 1637 | "php": ">=7.4.0" 1638 | }, 1639 | "type": "library", 1640 | "extra": { 1641 | "branch-alias": { 1642 | "dev-master": "2.0.x-dev" 1643 | } 1644 | }, 1645 | "autoload": { 1646 | "psr-4": { 1647 | "Psr\\Container\\": "src/" 1648 | } 1649 | }, 1650 | "notification-url": "https://packagist.org/downloads/", 1651 | "license": [ 1652 | "MIT" 1653 | ], 1654 | "authors": [ 1655 | { 1656 | "name": "PHP-FIG", 1657 | "homepage": "https://www.php-fig.org/" 1658 | } 1659 | ], 1660 | "description": "Common Container Interface (PHP FIG PSR-11)", 1661 | "homepage": "https://github.com/php-fig/container", 1662 | "keywords": [ 1663 | "PSR-11", 1664 | "container", 1665 | "container-interface", 1666 | "container-interop", 1667 | "psr" 1668 | ], 1669 | "support": { 1670 | "issues": "https://github.com/php-fig/container/issues", 1671 | "source": "https://github.com/php-fig/container/tree/2.0.2" 1672 | }, 1673 | "time": "2021-11-05T16:47:00+00:00" 1674 | }, 1675 | { 1676 | "name": "psr/log", 1677 | "version": "3.0.0", 1678 | "source": { 1679 | "type": "git", 1680 | "url": "https://github.com/php-fig/log.git", 1681 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" 1682 | }, 1683 | "dist": { 1684 | "type": "zip", 1685 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", 1686 | "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", 1687 | "shasum": "" 1688 | }, 1689 | "require": { 1690 | "php": ">=8.0.0" 1691 | }, 1692 | "type": "library", 1693 | "extra": { 1694 | "branch-alias": { 1695 | "dev-master": "3.x-dev" 1696 | } 1697 | }, 1698 | "autoload": { 1699 | "psr-4": { 1700 | "Psr\\Log\\": "src" 1701 | } 1702 | }, 1703 | "notification-url": "https://packagist.org/downloads/", 1704 | "license": [ 1705 | "MIT" 1706 | ], 1707 | "authors": [ 1708 | { 1709 | "name": "PHP-FIG", 1710 | "homepage": "https://www.php-fig.org/" 1711 | } 1712 | ], 1713 | "description": "Common interface for logging libraries", 1714 | "homepage": "https://github.com/php-fig/log", 1715 | "keywords": [ 1716 | "log", 1717 | "psr", 1718 | "psr-3" 1719 | ], 1720 | "support": { 1721 | "source": "https://github.com/php-fig/log/tree/3.0.0" 1722 | }, 1723 | "time": "2021-07-14T16:46:02+00:00" 1724 | }, 1725 | { 1726 | "name": "sebastian/cli-parser", 1727 | "version": "2.0.0", 1728 | "source": { 1729 | "type": "git", 1730 | "url": "https://github.com/sebastianbergmann/cli-parser.git", 1731 | "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" 1732 | }, 1733 | "dist": { 1734 | "type": "zip", 1735 | "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", 1736 | "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", 1737 | "shasum": "" 1738 | }, 1739 | "require": { 1740 | "php": ">=8.1" 1741 | }, 1742 | "require-dev": { 1743 | "phpunit/phpunit": "^10.0" 1744 | }, 1745 | "type": "library", 1746 | "extra": { 1747 | "branch-alias": { 1748 | "dev-main": "2.0-dev" 1749 | } 1750 | }, 1751 | "autoload": { 1752 | "classmap": [ 1753 | "src/" 1754 | ] 1755 | }, 1756 | "notification-url": "https://packagist.org/downloads/", 1757 | "license": [ 1758 | "BSD-3-Clause" 1759 | ], 1760 | "authors": [ 1761 | { 1762 | "name": "Sebastian Bergmann", 1763 | "email": "sebastian@phpunit.de", 1764 | "role": "lead" 1765 | } 1766 | ], 1767 | "description": "Library for parsing CLI options", 1768 | "homepage": "https://github.com/sebastianbergmann/cli-parser", 1769 | "support": { 1770 | "issues": "https://github.com/sebastianbergmann/cli-parser/issues", 1771 | "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" 1772 | }, 1773 | "funding": [ 1774 | { 1775 | "url": "https://github.com/sebastianbergmann", 1776 | "type": "github" 1777 | } 1778 | ], 1779 | "time": "2023-02-03T06:58:15+00:00" 1780 | }, 1781 | { 1782 | "name": "sebastian/code-unit", 1783 | "version": "2.0.0", 1784 | "source": { 1785 | "type": "git", 1786 | "url": "https://github.com/sebastianbergmann/code-unit.git", 1787 | "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" 1788 | }, 1789 | "dist": { 1790 | "type": "zip", 1791 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", 1792 | "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", 1793 | "shasum": "" 1794 | }, 1795 | "require": { 1796 | "php": ">=8.1" 1797 | }, 1798 | "require-dev": { 1799 | "phpunit/phpunit": "^10.0" 1800 | }, 1801 | "type": "library", 1802 | "extra": { 1803 | "branch-alias": { 1804 | "dev-main": "2.0-dev" 1805 | } 1806 | }, 1807 | "autoload": { 1808 | "classmap": [ 1809 | "src/" 1810 | ] 1811 | }, 1812 | "notification-url": "https://packagist.org/downloads/", 1813 | "license": [ 1814 | "BSD-3-Clause" 1815 | ], 1816 | "authors": [ 1817 | { 1818 | "name": "Sebastian Bergmann", 1819 | "email": "sebastian@phpunit.de", 1820 | "role": "lead" 1821 | } 1822 | ], 1823 | "description": "Collection of value objects that represent the PHP code units", 1824 | "homepage": "https://github.com/sebastianbergmann/code-unit", 1825 | "support": { 1826 | "issues": "https://github.com/sebastianbergmann/code-unit/issues", 1827 | "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" 1828 | }, 1829 | "funding": [ 1830 | { 1831 | "url": "https://github.com/sebastianbergmann", 1832 | "type": "github" 1833 | } 1834 | ], 1835 | "time": "2023-02-03T06:58:43+00:00" 1836 | }, 1837 | { 1838 | "name": "sebastian/code-unit-reverse-lookup", 1839 | "version": "3.0.0", 1840 | "source": { 1841 | "type": "git", 1842 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1843 | "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" 1844 | }, 1845 | "dist": { 1846 | "type": "zip", 1847 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", 1848 | "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", 1849 | "shasum": "" 1850 | }, 1851 | "require": { 1852 | "php": ">=8.1" 1853 | }, 1854 | "require-dev": { 1855 | "phpunit/phpunit": "^10.0" 1856 | }, 1857 | "type": "library", 1858 | "extra": { 1859 | "branch-alias": { 1860 | "dev-main": "3.0-dev" 1861 | } 1862 | }, 1863 | "autoload": { 1864 | "classmap": [ 1865 | "src/" 1866 | ] 1867 | }, 1868 | "notification-url": "https://packagist.org/downloads/", 1869 | "license": [ 1870 | "BSD-3-Clause" 1871 | ], 1872 | "authors": [ 1873 | { 1874 | "name": "Sebastian Bergmann", 1875 | "email": "sebastian@phpunit.de" 1876 | } 1877 | ], 1878 | "description": "Looks up which function or method a line of code belongs to", 1879 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1880 | "support": { 1881 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", 1882 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" 1883 | }, 1884 | "funding": [ 1885 | { 1886 | "url": "https://github.com/sebastianbergmann", 1887 | "type": "github" 1888 | } 1889 | ], 1890 | "time": "2023-02-03T06:59:15+00:00" 1891 | }, 1892 | { 1893 | "name": "sebastian/comparator", 1894 | "version": "5.0.1", 1895 | "source": { 1896 | "type": "git", 1897 | "url": "https://github.com/sebastianbergmann/comparator.git", 1898 | "reference": "2db5010a484d53ebf536087a70b4a5423c102372" 1899 | }, 1900 | "dist": { 1901 | "type": "zip", 1902 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", 1903 | "reference": "2db5010a484d53ebf536087a70b4a5423c102372", 1904 | "shasum": "" 1905 | }, 1906 | "require": { 1907 | "ext-dom": "*", 1908 | "ext-mbstring": "*", 1909 | "php": ">=8.1", 1910 | "sebastian/diff": "^5.0", 1911 | "sebastian/exporter": "^5.0" 1912 | }, 1913 | "require-dev": { 1914 | "phpunit/phpunit": "^10.3" 1915 | }, 1916 | "type": "library", 1917 | "extra": { 1918 | "branch-alias": { 1919 | "dev-main": "5.0-dev" 1920 | } 1921 | }, 1922 | "autoload": { 1923 | "classmap": [ 1924 | "src/" 1925 | ] 1926 | }, 1927 | "notification-url": "https://packagist.org/downloads/", 1928 | "license": [ 1929 | "BSD-3-Clause" 1930 | ], 1931 | "authors": [ 1932 | { 1933 | "name": "Sebastian Bergmann", 1934 | "email": "sebastian@phpunit.de" 1935 | }, 1936 | { 1937 | "name": "Jeff Welch", 1938 | "email": "whatthejeff@gmail.com" 1939 | }, 1940 | { 1941 | "name": "Volker Dusch", 1942 | "email": "github@wallbash.com" 1943 | }, 1944 | { 1945 | "name": "Bernhard Schussek", 1946 | "email": "bschussek@2bepublished.at" 1947 | } 1948 | ], 1949 | "description": "Provides the functionality to compare PHP values for equality", 1950 | "homepage": "https://github.com/sebastianbergmann/comparator", 1951 | "keywords": [ 1952 | "comparator", 1953 | "compare", 1954 | "equality" 1955 | ], 1956 | "support": { 1957 | "issues": "https://github.com/sebastianbergmann/comparator/issues", 1958 | "security": "https://github.com/sebastianbergmann/comparator/security/policy", 1959 | "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" 1960 | }, 1961 | "funding": [ 1962 | { 1963 | "url": "https://github.com/sebastianbergmann", 1964 | "type": "github" 1965 | } 1966 | ], 1967 | "time": "2023-08-14T13:18:12+00:00" 1968 | }, 1969 | { 1970 | "name": "sebastian/complexity", 1971 | "version": "3.0.1", 1972 | "source": { 1973 | "type": "git", 1974 | "url": "https://github.com/sebastianbergmann/complexity.git", 1975 | "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a" 1976 | }, 1977 | "dist": { 1978 | "type": "zip", 1979 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c70b73893e10757af9c6a48929fa6a333b56a97a", 1980 | "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a", 1981 | "shasum": "" 1982 | }, 1983 | "require": { 1984 | "nikic/php-parser": "^4.10", 1985 | "php": ">=8.1" 1986 | }, 1987 | "require-dev": { 1988 | "phpunit/phpunit": "^10.0" 1989 | }, 1990 | "type": "library", 1991 | "extra": { 1992 | "branch-alias": { 1993 | "dev-main": "3.0-dev" 1994 | } 1995 | }, 1996 | "autoload": { 1997 | "classmap": [ 1998 | "src/" 1999 | ] 2000 | }, 2001 | "notification-url": "https://packagist.org/downloads/", 2002 | "license": [ 2003 | "BSD-3-Clause" 2004 | ], 2005 | "authors": [ 2006 | { 2007 | "name": "Sebastian Bergmann", 2008 | "email": "sebastian@phpunit.de", 2009 | "role": "lead" 2010 | } 2011 | ], 2012 | "description": "Library for calculating the complexity of PHP code units", 2013 | "homepage": "https://github.com/sebastianbergmann/complexity", 2014 | "support": { 2015 | "issues": "https://github.com/sebastianbergmann/complexity/issues", 2016 | "security": "https://github.com/sebastianbergmann/complexity/security/policy", 2017 | "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.1" 2018 | }, 2019 | "funding": [ 2020 | { 2021 | "url": "https://github.com/sebastianbergmann", 2022 | "type": "github" 2023 | } 2024 | ], 2025 | "time": "2023-08-31T09:55:53+00:00" 2026 | }, 2027 | { 2028 | "name": "sebastian/diff", 2029 | "version": "5.0.3", 2030 | "source": { 2031 | "type": "git", 2032 | "url": "https://github.com/sebastianbergmann/diff.git", 2033 | "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" 2034 | }, 2035 | "dist": { 2036 | "type": "zip", 2037 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", 2038 | "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", 2039 | "shasum": "" 2040 | }, 2041 | "require": { 2042 | "php": ">=8.1" 2043 | }, 2044 | "require-dev": { 2045 | "phpunit/phpunit": "^10.0", 2046 | "symfony/process": "^4.2 || ^5" 2047 | }, 2048 | "type": "library", 2049 | "extra": { 2050 | "branch-alias": { 2051 | "dev-main": "5.0-dev" 2052 | } 2053 | }, 2054 | "autoload": { 2055 | "classmap": [ 2056 | "src/" 2057 | ] 2058 | }, 2059 | "notification-url": "https://packagist.org/downloads/", 2060 | "license": [ 2061 | "BSD-3-Clause" 2062 | ], 2063 | "authors": [ 2064 | { 2065 | "name": "Sebastian Bergmann", 2066 | "email": "sebastian@phpunit.de" 2067 | }, 2068 | { 2069 | "name": "Kore Nordmann", 2070 | "email": "mail@kore-nordmann.de" 2071 | } 2072 | ], 2073 | "description": "Diff implementation", 2074 | "homepage": "https://github.com/sebastianbergmann/diff", 2075 | "keywords": [ 2076 | "diff", 2077 | "udiff", 2078 | "unidiff", 2079 | "unified diff" 2080 | ], 2081 | "support": { 2082 | "issues": "https://github.com/sebastianbergmann/diff/issues", 2083 | "security": "https://github.com/sebastianbergmann/diff/security/policy", 2084 | "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" 2085 | }, 2086 | "funding": [ 2087 | { 2088 | "url": "https://github.com/sebastianbergmann", 2089 | "type": "github" 2090 | } 2091 | ], 2092 | "time": "2023-05-01T07:48:21+00:00" 2093 | }, 2094 | { 2095 | "name": "sebastian/environment", 2096 | "version": "6.0.1", 2097 | "source": { 2098 | "type": "git", 2099 | "url": "https://github.com/sebastianbergmann/environment.git", 2100 | "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" 2101 | }, 2102 | "dist": { 2103 | "type": "zip", 2104 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", 2105 | "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", 2106 | "shasum": "" 2107 | }, 2108 | "require": { 2109 | "php": ">=8.1" 2110 | }, 2111 | "require-dev": { 2112 | "phpunit/phpunit": "^10.0" 2113 | }, 2114 | "suggest": { 2115 | "ext-posix": "*" 2116 | }, 2117 | "type": "library", 2118 | "extra": { 2119 | "branch-alias": { 2120 | "dev-main": "6.0-dev" 2121 | } 2122 | }, 2123 | "autoload": { 2124 | "classmap": [ 2125 | "src/" 2126 | ] 2127 | }, 2128 | "notification-url": "https://packagist.org/downloads/", 2129 | "license": [ 2130 | "BSD-3-Clause" 2131 | ], 2132 | "authors": [ 2133 | { 2134 | "name": "Sebastian Bergmann", 2135 | "email": "sebastian@phpunit.de" 2136 | } 2137 | ], 2138 | "description": "Provides functionality to handle HHVM/PHP environments", 2139 | "homepage": "https://github.com/sebastianbergmann/environment", 2140 | "keywords": [ 2141 | "Xdebug", 2142 | "environment", 2143 | "hhvm" 2144 | ], 2145 | "support": { 2146 | "issues": "https://github.com/sebastianbergmann/environment/issues", 2147 | "security": "https://github.com/sebastianbergmann/environment/security/policy", 2148 | "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" 2149 | }, 2150 | "funding": [ 2151 | { 2152 | "url": "https://github.com/sebastianbergmann", 2153 | "type": "github" 2154 | } 2155 | ], 2156 | "time": "2023-04-11T05:39:26+00:00" 2157 | }, 2158 | { 2159 | "name": "sebastian/exporter", 2160 | "version": "5.1.1", 2161 | "source": { 2162 | "type": "git", 2163 | "url": "https://github.com/sebastianbergmann/exporter.git", 2164 | "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" 2165 | }, 2166 | "dist": { 2167 | "type": "zip", 2168 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", 2169 | "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", 2170 | "shasum": "" 2171 | }, 2172 | "require": { 2173 | "ext-mbstring": "*", 2174 | "php": ">=8.1", 2175 | "sebastian/recursion-context": "^5.0" 2176 | }, 2177 | "require-dev": { 2178 | "phpunit/phpunit": "^10.0" 2179 | }, 2180 | "type": "library", 2181 | "extra": { 2182 | "branch-alias": { 2183 | "dev-main": "5.1-dev" 2184 | } 2185 | }, 2186 | "autoload": { 2187 | "classmap": [ 2188 | "src/" 2189 | ] 2190 | }, 2191 | "notification-url": "https://packagist.org/downloads/", 2192 | "license": [ 2193 | "BSD-3-Clause" 2194 | ], 2195 | "authors": [ 2196 | { 2197 | "name": "Sebastian Bergmann", 2198 | "email": "sebastian@phpunit.de" 2199 | }, 2200 | { 2201 | "name": "Jeff Welch", 2202 | "email": "whatthejeff@gmail.com" 2203 | }, 2204 | { 2205 | "name": "Volker Dusch", 2206 | "email": "github@wallbash.com" 2207 | }, 2208 | { 2209 | "name": "Adam Harvey", 2210 | "email": "aharvey@php.net" 2211 | }, 2212 | { 2213 | "name": "Bernhard Schussek", 2214 | "email": "bschussek@gmail.com" 2215 | } 2216 | ], 2217 | "description": "Provides the functionality to export PHP variables for visualization", 2218 | "homepage": "https://www.github.com/sebastianbergmann/exporter", 2219 | "keywords": [ 2220 | "export", 2221 | "exporter" 2222 | ], 2223 | "support": { 2224 | "issues": "https://github.com/sebastianbergmann/exporter/issues", 2225 | "security": "https://github.com/sebastianbergmann/exporter/security/policy", 2226 | "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" 2227 | }, 2228 | "funding": [ 2229 | { 2230 | "url": "https://github.com/sebastianbergmann", 2231 | "type": "github" 2232 | } 2233 | ], 2234 | "time": "2023-09-24T13:22:09+00:00" 2235 | }, 2236 | { 2237 | "name": "sebastian/global-state", 2238 | "version": "6.0.1", 2239 | "source": { 2240 | "type": "git", 2241 | "url": "https://github.com/sebastianbergmann/global-state.git", 2242 | "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" 2243 | }, 2244 | "dist": { 2245 | "type": "zip", 2246 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", 2247 | "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", 2248 | "shasum": "" 2249 | }, 2250 | "require": { 2251 | "php": ">=8.1", 2252 | "sebastian/object-reflector": "^3.0", 2253 | "sebastian/recursion-context": "^5.0" 2254 | }, 2255 | "require-dev": { 2256 | "ext-dom": "*", 2257 | "phpunit/phpunit": "^10.0" 2258 | }, 2259 | "type": "library", 2260 | "extra": { 2261 | "branch-alias": { 2262 | "dev-main": "6.0-dev" 2263 | } 2264 | }, 2265 | "autoload": { 2266 | "classmap": [ 2267 | "src/" 2268 | ] 2269 | }, 2270 | "notification-url": "https://packagist.org/downloads/", 2271 | "license": [ 2272 | "BSD-3-Clause" 2273 | ], 2274 | "authors": [ 2275 | { 2276 | "name": "Sebastian Bergmann", 2277 | "email": "sebastian@phpunit.de" 2278 | } 2279 | ], 2280 | "description": "Snapshotting of global state", 2281 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2282 | "keywords": [ 2283 | "global state" 2284 | ], 2285 | "support": { 2286 | "issues": "https://github.com/sebastianbergmann/global-state/issues", 2287 | "security": "https://github.com/sebastianbergmann/global-state/security/policy", 2288 | "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" 2289 | }, 2290 | "funding": [ 2291 | { 2292 | "url": "https://github.com/sebastianbergmann", 2293 | "type": "github" 2294 | } 2295 | ], 2296 | "time": "2023-07-19T07:19:23+00:00" 2297 | }, 2298 | { 2299 | "name": "sebastian/lines-of-code", 2300 | "version": "2.0.1", 2301 | "source": { 2302 | "type": "git", 2303 | "url": "https://github.com/sebastianbergmann/lines-of-code.git", 2304 | "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" 2305 | }, 2306 | "dist": { 2307 | "type": "zip", 2308 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", 2309 | "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", 2310 | "shasum": "" 2311 | }, 2312 | "require": { 2313 | "nikic/php-parser": "^4.10", 2314 | "php": ">=8.1" 2315 | }, 2316 | "require-dev": { 2317 | "phpunit/phpunit": "^10.0" 2318 | }, 2319 | "type": "library", 2320 | "extra": { 2321 | "branch-alias": { 2322 | "dev-main": "2.0-dev" 2323 | } 2324 | }, 2325 | "autoload": { 2326 | "classmap": [ 2327 | "src/" 2328 | ] 2329 | }, 2330 | "notification-url": "https://packagist.org/downloads/", 2331 | "license": [ 2332 | "BSD-3-Clause" 2333 | ], 2334 | "authors": [ 2335 | { 2336 | "name": "Sebastian Bergmann", 2337 | "email": "sebastian@phpunit.de", 2338 | "role": "lead" 2339 | } 2340 | ], 2341 | "description": "Library for counting the lines of code in PHP source code", 2342 | "homepage": "https://github.com/sebastianbergmann/lines-of-code", 2343 | "support": { 2344 | "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", 2345 | "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", 2346 | "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" 2347 | }, 2348 | "funding": [ 2349 | { 2350 | "url": "https://github.com/sebastianbergmann", 2351 | "type": "github" 2352 | } 2353 | ], 2354 | "time": "2023-08-31T09:25:50+00:00" 2355 | }, 2356 | { 2357 | "name": "sebastian/object-enumerator", 2358 | "version": "5.0.0", 2359 | "source": { 2360 | "type": "git", 2361 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2362 | "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" 2363 | }, 2364 | "dist": { 2365 | "type": "zip", 2366 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", 2367 | "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", 2368 | "shasum": "" 2369 | }, 2370 | "require": { 2371 | "php": ">=8.1", 2372 | "sebastian/object-reflector": "^3.0", 2373 | "sebastian/recursion-context": "^5.0" 2374 | }, 2375 | "require-dev": { 2376 | "phpunit/phpunit": "^10.0" 2377 | }, 2378 | "type": "library", 2379 | "extra": { 2380 | "branch-alias": { 2381 | "dev-main": "5.0-dev" 2382 | } 2383 | }, 2384 | "autoload": { 2385 | "classmap": [ 2386 | "src/" 2387 | ] 2388 | }, 2389 | "notification-url": "https://packagist.org/downloads/", 2390 | "license": [ 2391 | "BSD-3-Clause" 2392 | ], 2393 | "authors": [ 2394 | { 2395 | "name": "Sebastian Bergmann", 2396 | "email": "sebastian@phpunit.de" 2397 | } 2398 | ], 2399 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2400 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2401 | "support": { 2402 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 2403 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" 2404 | }, 2405 | "funding": [ 2406 | { 2407 | "url": "https://github.com/sebastianbergmann", 2408 | "type": "github" 2409 | } 2410 | ], 2411 | "time": "2023-02-03T07:08:32+00:00" 2412 | }, 2413 | { 2414 | "name": "sebastian/object-reflector", 2415 | "version": "3.0.0", 2416 | "source": { 2417 | "type": "git", 2418 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2419 | "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" 2420 | }, 2421 | "dist": { 2422 | "type": "zip", 2423 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", 2424 | "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", 2425 | "shasum": "" 2426 | }, 2427 | "require": { 2428 | "php": ">=8.1" 2429 | }, 2430 | "require-dev": { 2431 | "phpunit/phpunit": "^10.0" 2432 | }, 2433 | "type": "library", 2434 | "extra": { 2435 | "branch-alias": { 2436 | "dev-main": "3.0-dev" 2437 | } 2438 | }, 2439 | "autoload": { 2440 | "classmap": [ 2441 | "src/" 2442 | ] 2443 | }, 2444 | "notification-url": "https://packagist.org/downloads/", 2445 | "license": [ 2446 | "BSD-3-Clause" 2447 | ], 2448 | "authors": [ 2449 | { 2450 | "name": "Sebastian Bergmann", 2451 | "email": "sebastian@phpunit.de" 2452 | } 2453 | ], 2454 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2455 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2456 | "support": { 2457 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 2458 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" 2459 | }, 2460 | "funding": [ 2461 | { 2462 | "url": "https://github.com/sebastianbergmann", 2463 | "type": "github" 2464 | } 2465 | ], 2466 | "time": "2023-02-03T07:06:18+00:00" 2467 | }, 2468 | { 2469 | "name": "sebastian/recursion-context", 2470 | "version": "5.0.0", 2471 | "source": { 2472 | "type": "git", 2473 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2474 | "reference": "05909fb5bc7df4c52992396d0116aed689f93712" 2475 | }, 2476 | "dist": { 2477 | "type": "zip", 2478 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", 2479 | "reference": "05909fb5bc7df4c52992396d0116aed689f93712", 2480 | "shasum": "" 2481 | }, 2482 | "require": { 2483 | "php": ">=8.1" 2484 | }, 2485 | "require-dev": { 2486 | "phpunit/phpunit": "^10.0" 2487 | }, 2488 | "type": "library", 2489 | "extra": { 2490 | "branch-alias": { 2491 | "dev-main": "5.0-dev" 2492 | } 2493 | }, 2494 | "autoload": { 2495 | "classmap": [ 2496 | "src/" 2497 | ] 2498 | }, 2499 | "notification-url": "https://packagist.org/downloads/", 2500 | "license": [ 2501 | "BSD-3-Clause" 2502 | ], 2503 | "authors": [ 2504 | { 2505 | "name": "Sebastian Bergmann", 2506 | "email": "sebastian@phpunit.de" 2507 | }, 2508 | { 2509 | "name": "Jeff Welch", 2510 | "email": "whatthejeff@gmail.com" 2511 | }, 2512 | { 2513 | "name": "Adam Harvey", 2514 | "email": "aharvey@php.net" 2515 | } 2516 | ], 2517 | "description": "Provides functionality to recursively process PHP variables", 2518 | "homepage": "https://github.com/sebastianbergmann/recursion-context", 2519 | "support": { 2520 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 2521 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" 2522 | }, 2523 | "funding": [ 2524 | { 2525 | "url": "https://github.com/sebastianbergmann", 2526 | "type": "github" 2527 | } 2528 | ], 2529 | "time": "2023-02-03T07:05:40+00:00" 2530 | }, 2531 | { 2532 | "name": "sebastian/type", 2533 | "version": "4.0.0", 2534 | "source": { 2535 | "type": "git", 2536 | "url": "https://github.com/sebastianbergmann/type.git", 2537 | "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" 2538 | }, 2539 | "dist": { 2540 | "type": "zip", 2541 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", 2542 | "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", 2543 | "shasum": "" 2544 | }, 2545 | "require": { 2546 | "php": ">=8.1" 2547 | }, 2548 | "require-dev": { 2549 | "phpunit/phpunit": "^10.0" 2550 | }, 2551 | "type": "library", 2552 | "extra": { 2553 | "branch-alias": { 2554 | "dev-main": "4.0-dev" 2555 | } 2556 | }, 2557 | "autoload": { 2558 | "classmap": [ 2559 | "src/" 2560 | ] 2561 | }, 2562 | "notification-url": "https://packagist.org/downloads/", 2563 | "license": [ 2564 | "BSD-3-Clause" 2565 | ], 2566 | "authors": [ 2567 | { 2568 | "name": "Sebastian Bergmann", 2569 | "email": "sebastian@phpunit.de", 2570 | "role": "lead" 2571 | } 2572 | ], 2573 | "description": "Collection of value objects that represent the types of the PHP type system", 2574 | "homepage": "https://github.com/sebastianbergmann/type", 2575 | "support": { 2576 | "issues": "https://github.com/sebastianbergmann/type/issues", 2577 | "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" 2578 | }, 2579 | "funding": [ 2580 | { 2581 | "url": "https://github.com/sebastianbergmann", 2582 | "type": "github" 2583 | } 2584 | ], 2585 | "time": "2023-02-03T07:10:45+00:00" 2586 | }, 2587 | { 2588 | "name": "sebastian/version", 2589 | "version": "4.0.1", 2590 | "source": { 2591 | "type": "git", 2592 | "url": "https://github.com/sebastianbergmann/version.git", 2593 | "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" 2594 | }, 2595 | "dist": { 2596 | "type": "zip", 2597 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", 2598 | "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", 2599 | "shasum": "" 2600 | }, 2601 | "require": { 2602 | "php": ">=8.1" 2603 | }, 2604 | "type": "library", 2605 | "extra": { 2606 | "branch-alias": { 2607 | "dev-main": "4.0-dev" 2608 | } 2609 | }, 2610 | "autoload": { 2611 | "classmap": [ 2612 | "src/" 2613 | ] 2614 | }, 2615 | "notification-url": "https://packagist.org/downloads/", 2616 | "license": [ 2617 | "BSD-3-Clause" 2618 | ], 2619 | "authors": [ 2620 | { 2621 | "name": "Sebastian Bergmann", 2622 | "email": "sebastian@phpunit.de", 2623 | "role": "lead" 2624 | } 2625 | ], 2626 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2627 | "homepage": "https://github.com/sebastianbergmann/version", 2628 | "support": { 2629 | "issues": "https://github.com/sebastianbergmann/version/issues", 2630 | "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" 2631 | }, 2632 | "funding": [ 2633 | { 2634 | "url": "https://github.com/sebastianbergmann", 2635 | "type": "github" 2636 | } 2637 | ], 2638 | "time": "2023-02-07T11:34:05+00:00" 2639 | }, 2640 | { 2641 | "name": "symfony/console", 2642 | "version": "v6.3.4", 2643 | "source": { 2644 | "type": "git", 2645 | "url": "https://github.com/symfony/console.git", 2646 | "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" 2647 | }, 2648 | "dist": { 2649 | "type": "zip", 2650 | "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", 2651 | "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", 2652 | "shasum": "" 2653 | }, 2654 | "require": { 2655 | "php": ">=8.1", 2656 | "symfony/deprecation-contracts": "^2.5|^3", 2657 | "symfony/polyfill-mbstring": "~1.0", 2658 | "symfony/service-contracts": "^2.5|^3", 2659 | "symfony/string": "^5.4|^6.0" 2660 | }, 2661 | "conflict": { 2662 | "symfony/dependency-injection": "<5.4", 2663 | "symfony/dotenv": "<5.4", 2664 | "symfony/event-dispatcher": "<5.4", 2665 | "symfony/lock": "<5.4", 2666 | "symfony/process": "<5.4" 2667 | }, 2668 | "provide": { 2669 | "psr/log-implementation": "1.0|2.0|3.0" 2670 | }, 2671 | "require-dev": { 2672 | "psr/log": "^1|^2|^3", 2673 | "symfony/config": "^5.4|^6.0", 2674 | "symfony/dependency-injection": "^5.4|^6.0", 2675 | "symfony/event-dispatcher": "^5.4|^6.0", 2676 | "symfony/lock": "^5.4|^6.0", 2677 | "symfony/process": "^5.4|^6.0", 2678 | "symfony/var-dumper": "^5.4|^6.0" 2679 | }, 2680 | "type": "library", 2681 | "autoload": { 2682 | "psr-4": { 2683 | "Symfony\\Component\\Console\\": "" 2684 | }, 2685 | "exclude-from-classmap": [ 2686 | "/Tests/" 2687 | ] 2688 | }, 2689 | "notification-url": "https://packagist.org/downloads/", 2690 | "license": [ 2691 | "MIT" 2692 | ], 2693 | "authors": [ 2694 | { 2695 | "name": "Fabien Potencier", 2696 | "email": "fabien@symfony.com" 2697 | }, 2698 | { 2699 | "name": "Symfony Community", 2700 | "homepage": "https://symfony.com/contributors" 2701 | } 2702 | ], 2703 | "description": "Eases the creation of beautiful and testable command line interfaces", 2704 | "homepage": "https://symfony.com", 2705 | "keywords": [ 2706 | "cli", 2707 | "command-line", 2708 | "console", 2709 | "terminal" 2710 | ], 2711 | "support": { 2712 | "source": "https://github.com/symfony/console/tree/v6.3.4" 2713 | }, 2714 | "funding": [ 2715 | { 2716 | "url": "https://symfony.com/sponsor", 2717 | "type": "custom" 2718 | }, 2719 | { 2720 | "url": "https://github.com/fabpot", 2721 | "type": "github" 2722 | }, 2723 | { 2724 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2725 | "type": "tidelift" 2726 | } 2727 | ], 2728 | "time": "2023-08-16T10:10:12+00:00" 2729 | }, 2730 | { 2731 | "name": "symfony/deprecation-contracts", 2732 | "version": "v3.3.0", 2733 | "source": { 2734 | "type": "git", 2735 | "url": "https://github.com/symfony/deprecation-contracts.git", 2736 | "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" 2737 | }, 2738 | "dist": { 2739 | "type": "zip", 2740 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", 2741 | "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", 2742 | "shasum": "" 2743 | }, 2744 | "require": { 2745 | "php": ">=8.1" 2746 | }, 2747 | "type": "library", 2748 | "extra": { 2749 | "branch-alias": { 2750 | "dev-main": "3.4-dev" 2751 | }, 2752 | "thanks": { 2753 | "name": "symfony/contracts", 2754 | "url": "https://github.com/symfony/contracts" 2755 | } 2756 | }, 2757 | "autoload": { 2758 | "files": [ 2759 | "function.php" 2760 | ] 2761 | }, 2762 | "notification-url": "https://packagist.org/downloads/", 2763 | "license": [ 2764 | "MIT" 2765 | ], 2766 | "authors": [ 2767 | { 2768 | "name": "Nicolas Grekas", 2769 | "email": "p@tchwork.com" 2770 | }, 2771 | { 2772 | "name": "Symfony Community", 2773 | "homepage": "https://symfony.com/contributors" 2774 | } 2775 | ], 2776 | "description": "A generic function and convention to trigger deprecation notices", 2777 | "homepage": "https://symfony.com", 2778 | "support": { 2779 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" 2780 | }, 2781 | "funding": [ 2782 | { 2783 | "url": "https://symfony.com/sponsor", 2784 | "type": "custom" 2785 | }, 2786 | { 2787 | "url": "https://github.com/fabpot", 2788 | "type": "github" 2789 | }, 2790 | { 2791 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2792 | "type": "tidelift" 2793 | } 2794 | ], 2795 | "time": "2023-05-23T14:45:45+00:00" 2796 | }, 2797 | { 2798 | "name": "symfony/finder", 2799 | "version": "v6.3.3", 2800 | "source": { 2801 | "type": "git", 2802 | "url": "https://github.com/symfony/finder.git", 2803 | "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" 2804 | }, 2805 | "dist": { 2806 | "type": "zip", 2807 | "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", 2808 | "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", 2809 | "shasum": "" 2810 | }, 2811 | "require": { 2812 | "php": ">=8.1" 2813 | }, 2814 | "require-dev": { 2815 | "symfony/filesystem": "^6.0" 2816 | }, 2817 | "type": "library", 2818 | "autoload": { 2819 | "psr-4": { 2820 | "Symfony\\Component\\Finder\\": "" 2821 | }, 2822 | "exclude-from-classmap": [ 2823 | "/Tests/" 2824 | ] 2825 | }, 2826 | "notification-url": "https://packagist.org/downloads/", 2827 | "license": [ 2828 | "MIT" 2829 | ], 2830 | "authors": [ 2831 | { 2832 | "name": "Fabien Potencier", 2833 | "email": "fabien@symfony.com" 2834 | }, 2835 | { 2836 | "name": "Symfony Community", 2837 | "homepage": "https://symfony.com/contributors" 2838 | } 2839 | ], 2840 | "description": "Finds files and directories via an intuitive fluent interface", 2841 | "homepage": "https://symfony.com", 2842 | "support": { 2843 | "source": "https://github.com/symfony/finder/tree/v6.3.3" 2844 | }, 2845 | "funding": [ 2846 | { 2847 | "url": "https://symfony.com/sponsor", 2848 | "type": "custom" 2849 | }, 2850 | { 2851 | "url": "https://github.com/fabpot", 2852 | "type": "github" 2853 | }, 2854 | { 2855 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2856 | "type": "tidelift" 2857 | } 2858 | ], 2859 | "time": "2023-07-31T08:31:44+00:00" 2860 | }, 2861 | { 2862 | "name": "symfony/polyfill-ctype", 2863 | "version": "v1.28.0", 2864 | "source": { 2865 | "type": "git", 2866 | "url": "https://github.com/symfony/polyfill-ctype.git", 2867 | "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" 2868 | }, 2869 | "dist": { 2870 | "type": "zip", 2871 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", 2872 | "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", 2873 | "shasum": "" 2874 | }, 2875 | "require": { 2876 | "php": ">=7.1" 2877 | }, 2878 | "provide": { 2879 | "ext-ctype": "*" 2880 | }, 2881 | "suggest": { 2882 | "ext-ctype": "For best performance" 2883 | }, 2884 | "type": "library", 2885 | "extra": { 2886 | "branch-alias": { 2887 | "dev-main": "1.28-dev" 2888 | }, 2889 | "thanks": { 2890 | "name": "symfony/polyfill", 2891 | "url": "https://github.com/symfony/polyfill" 2892 | } 2893 | }, 2894 | "autoload": { 2895 | "files": [ 2896 | "bootstrap.php" 2897 | ], 2898 | "psr-4": { 2899 | "Symfony\\Polyfill\\Ctype\\": "" 2900 | } 2901 | }, 2902 | "notification-url": "https://packagist.org/downloads/", 2903 | "license": [ 2904 | "MIT" 2905 | ], 2906 | "authors": [ 2907 | { 2908 | "name": "Gert de Pagter", 2909 | "email": "BackEndTea@gmail.com" 2910 | }, 2911 | { 2912 | "name": "Symfony Community", 2913 | "homepage": "https://symfony.com/contributors" 2914 | } 2915 | ], 2916 | "description": "Symfony polyfill for ctype functions", 2917 | "homepage": "https://symfony.com", 2918 | "keywords": [ 2919 | "compatibility", 2920 | "ctype", 2921 | "polyfill", 2922 | "portable" 2923 | ], 2924 | "support": { 2925 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" 2926 | }, 2927 | "funding": [ 2928 | { 2929 | "url": "https://symfony.com/sponsor", 2930 | "type": "custom" 2931 | }, 2932 | { 2933 | "url": "https://github.com/fabpot", 2934 | "type": "github" 2935 | }, 2936 | { 2937 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2938 | "type": "tidelift" 2939 | } 2940 | ], 2941 | "time": "2023-01-26T09:26:14+00:00" 2942 | }, 2943 | { 2944 | "name": "symfony/polyfill-intl-grapheme", 2945 | "version": "v1.28.0", 2946 | "source": { 2947 | "type": "git", 2948 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 2949 | "reference": "875e90aeea2777b6f135677f618529449334a612" 2950 | }, 2951 | "dist": { 2952 | "type": "zip", 2953 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", 2954 | "reference": "875e90aeea2777b6f135677f618529449334a612", 2955 | "shasum": "" 2956 | }, 2957 | "require": { 2958 | "php": ">=7.1" 2959 | }, 2960 | "suggest": { 2961 | "ext-intl": "For best performance" 2962 | }, 2963 | "type": "library", 2964 | "extra": { 2965 | "branch-alias": { 2966 | "dev-main": "1.28-dev" 2967 | }, 2968 | "thanks": { 2969 | "name": "symfony/polyfill", 2970 | "url": "https://github.com/symfony/polyfill" 2971 | } 2972 | }, 2973 | "autoload": { 2974 | "files": [ 2975 | "bootstrap.php" 2976 | ], 2977 | "psr-4": { 2978 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 2979 | } 2980 | }, 2981 | "notification-url": "https://packagist.org/downloads/", 2982 | "license": [ 2983 | "MIT" 2984 | ], 2985 | "authors": [ 2986 | { 2987 | "name": "Nicolas Grekas", 2988 | "email": "p@tchwork.com" 2989 | }, 2990 | { 2991 | "name": "Symfony Community", 2992 | "homepage": "https://symfony.com/contributors" 2993 | } 2994 | ], 2995 | "description": "Symfony polyfill for intl's grapheme_* functions", 2996 | "homepage": "https://symfony.com", 2997 | "keywords": [ 2998 | "compatibility", 2999 | "grapheme", 3000 | "intl", 3001 | "polyfill", 3002 | "portable", 3003 | "shim" 3004 | ], 3005 | "support": { 3006 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" 3007 | }, 3008 | "funding": [ 3009 | { 3010 | "url": "https://symfony.com/sponsor", 3011 | "type": "custom" 3012 | }, 3013 | { 3014 | "url": "https://github.com/fabpot", 3015 | "type": "github" 3016 | }, 3017 | { 3018 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3019 | "type": "tidelift" 3020 | } 3021 | ], 3022 | "time": "2023-01-26T09:26:14+00:00" 3023 | }, 3024 | { 3025 | "name": "symfony/polyfill-intl-normalizer", 3026 | "version": "v1.28.0", 3027 | "source": { 3028 | "type": "git", 3029 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 3030 | "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" 3031 | }, 3032 | "dist": { 3033 | "type": "zip", 3034 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", 3035 | "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", 3036 | "shasum": "" 3037 | }, 3038 | "require": { 3039 | "php": ">=7.1" 3040 | }, 3041 | "suggest": { 3042 | "ext-intl": "For best performance" 3043 | }, 3044 | "type": "library", 3045 | "extra": { 3046 | "branch-alias": { 3047 | "dev-main": "1.28-dev" 3048 | }, 3049 | "thanks": { 3050 | "name": "symfony/polyfill", 3051 | "url": "https://github.com/symfony/polyfill" 3052 | } 3053 | }, 3054 | "autoload": { 3055 | "files": [ 3056 | "bootstrap.php" 3057 | ], 3058 | "psr-4": { 3059 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 3060 | }, 3061 | "classmap": [ 3062 | "Resources/stubs" 3063 | ] 3064 | }, 3065 | "notification-url": "https://packagist.org/downloads/", 3066 | "license": [ 3067 | "MIT" 3068 | ], 3069 | "authors": [ 3070 | { 3071 | "name": "Nicolas Grekas", 3072 | "email": "p@tchwork.com" 3073 | }, 3074 | { 3075 | "name": "Symfony Community", 3076 | "homepage": "https://symfony.com/contributors" 3077 | } 3078 | ], 3079 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 3080 | "homepage": "https://symfony.com", 3081 | "keywords": [ 3082 | "compatibility", 3083 | "intl", 3084 | "normalizer", 3085 | "polyfill", 3086 | "portable", 3087 | "shim" 3088 | ], 3089 | "support": { 3090 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" 3091 | }, 3092 | "funding": [ 3093 | { 3094 | "url": "https://symfony.com/sponsor", 3095 | "type": "custom" 3096 | }, 3097 | { 3098 | "url": "https://github.com/fabpot", 3099 | "type": "github" 3100 | }, 3101 | { 3102 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3103 | "type": "tidelift" 3104 | } 3105 | ], 3106 | "time": "2023-01-26T09:26:14+00:00" 3107 | }, 3108 | { 3109 | "name": "symfony/polyfill-mbstring", 3110 | "version": "v1.28.0", 3111 | "source": { 3112 | "type": "git", 3113 | "url": "https://github.com/symfony/polyfill-mbstring.git", 3114 | "reference": "42292d99c55abe617799667f454222c54c60e229" 3115 | }, 3116 | "dist": { 3117 | "type": "zip", 3118 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", 3119 | "reference": "42292d99c55abe617799667f454222c54c60e229", 3120 | "shasum": "" 3121 | }, 3122 | "require": { 3123 | "php": ">=7.1" 3124 | }, 3125 | "provide": { 3126 | "ext-mbstring": "*" 3127 | }, 3128 | "suggest": { 3129 | "ext-mbstring": "For best performance" 3130 | }, 3131 | "type": "library", 3132 | "extra": { 3133 | "branch-alias": { 3134 | "dev-main": "1.28-dev" 3135 | }, 3136 | "thanks": { 3137 | "name": "symfony/polyfill", 3138 | "url": "https://github.com/symfony/polyfill" 3139 | } 3140 | }, 3141 | "autoload": { 3142 | "files": [ 3143 | "bootstrap.php" 3144 | ], 3145 | "psr-4": { 3146 | "Symfony\\Polyfill\\Mbstring\\": "" 3147 | } 3148 | }, 3149 | "notification-url": "https://packagist.org/downloads/", 3150 | "license": [ 3151 | "MIT" 3152 | ], 3153 | "authors": [ 3154 | { 3155 | "name": "Nicolas Grekas", 3156 | "email": "p@tchwork.com" 3157 | }, 3158 | { 3159 | "name": "Symfony Community", 3160 | "homepage": "https://symfony.com/contributors" 3161 | } 3162 | ], 3163 | "description": "Symfony polyfill for the Mbstring extension", 3164 | "homepage": "https://symfony.com", 3165 | "keywords": [ 3166 | "compatibility", 3167 | "mbstring", 3168 | "polyfill", 3169 | "portable", 3170 | "shim" 3171 | ], 3172 | "support": { 3173 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" 3174 | }, 3175 | "funding": [ 3176 | { 3177 | "url": "https://symfony.com/sponsor", 3178 | "type": "custom" 3179 | }, 3180 | { 3181 | "url": "https://github.com/fabpot", 3182 | "type": "github" 3183 | }, 3184 | { 3185 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3186 | "type": "tidelift" 3187 | } 3188 | ], 3189 | "time": "2023-07-28T09:04:16+00:00" 3190 | }, 3191 | { 3192 | "name": "symfony/process", 3193 | "version": "v6.3.4", 3194 | "source": { 3195 | "type": "git", 3196 | "url": "https://github.com/symfony/process.git", 3197 | "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" 3198 | }, 3199 | "dist": { 3200 | "type": "zip", 3201 | "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", 3202 | "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", 3203 | "shasum": "" 3204 | }, 3205 | "require": { 3206 | "php": ">=8.1" 3207 | }, 3208 | "type": "library", 3209 | "autoload": { 3210 | "psr-4": { 3211 | "Symfony\\Component\\Process\\": "" 3212 | }, 3213 | "exclude-from-classmap": [ 3214 | "/Tests/" 3215 | ] 3216 | }, 3217 | "notification-url": "https://packagist.org/downloads/", 3218 | "license": [ 3219 | "MIT" 3220 | ], 3221 | "authors": [ 3222 | { 3223 | "name": "Fabien Potencier", 3224 | "email": "fabien@symfony.com" 3225 | }, 3226 | { 3227 | "name": "Symfony Community", 3228 | "homepage": "https://symfony.com/contributors" 3229 | } 3230 | ], 3231 | "description": "Executes commands in sub-processes", 3232 | "homepage": "https://symfony.com", 3233 | "support": { 3234 | "source": "https://github.com/symfony/process/tree/v6.3.4" 3235 | }, 3236 | "funding": [ 3237 | { 3238 | "url": "https://symfony.com/sponsor", 3239 | "type": "custom" 3240 | }, 3241 | { 3242 | "url": "https://github.com/fabpot", 3243 | "type": "github" 3244 | }, 3245 | { 3246 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3247 | "type": "tidelift" 3248 | } 3249 | ], 3250 | "time": "2023-08-07T10:39:22+00:00" 3251 | }, 3252 | { 3253 | "name": "symfony/service-contracts", 3254 | "version": "v3.3.0", 3255 | "source": { 3256 | "type": "git", 3257 | "url": "https://github.com/symfony/service-contracts.git", 3258 | "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" 3259 | }, 3260 | "dist": { 3261 | "type": "zip", 3262 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", 3263 | "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", 3264 | "shasum": "" 3265 | }, 3266 | "require": { 3267 | "php": ">=8.1", 3268 | "psr/container": "^2.0" 3269 | }, 3270 | "conflict": { 3271 | "ext-psr": "<1.1|>=2" 3272 | }, 3273 | "type": "library", 3274 | "extra": { 3275 | "branch-alias": { 3276 | "dev-main": "3.4-dev" 3277 | }, 3278 | "thanks": { 3279 | "name": "symfony/contracts", 3280 | "url": "https://github.com/symfony/contracts" 3281 | } 3282 | }, 3283 | "autoload": { 3284 | "psr-4": { 3285 | "Symfony\\Contracts\\Service\\": "" 3286 | }, 3287 | "exclude-from-classmap": [ 3288 | "/Test/" 3289 | ] 3290 | }, 3291 | "notification-url": "https://packagist.org/downloads/", 3292 | "license": [ 3293 | "MIT" 3294 | ], 3295 | "authors": [ 3296 | { 3297 | "name": "Nicolas Grekas", 3298 | "email": "p@tchwork.com" 3299 | }, 3300 | { 3301 | "name": "Symfony Community", 3302 | "homepage": "https://symfony.com/contributors" 3303 | } 3304 | ], 3305 | "description": "Generic abstractions related to writing services", 3306 | "homepage": "https://symfony.com", 3307 | "keywords": [ 3308 | "abstractions", 3309 | "contracts", 3310 | "decoupling", 3311 | "interfaces", 3312 | "interoperability", 3313 | "standards" 3314 | ], 3315 | "support": { 3316 | "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" 3317 | }, 3318 | "funding": [ 3319 | { 3320 | "url": "https://symfony.com/sponsor", 3321 | "type": "custom" 3322 | }, 3323 | { 3324 | "url": "https://github.com/fabpot", 3325 | "type": "github" 3326 | }, 3327 | { 3328 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3329 | "type": "tidelift" 3330 | } 3331 | ], 3332 | "time": "2023-05-23T14:45:45+00:00" 3333 | }, 3334 | { 3335 | "name": "symfony/string", 3336 | "version": "v6.3.2", 3337 | "source": { 3338 | "type": "git", 3339 | "url": "https://github.com/symfony/string.git", 3340 | "reference": "53d1a83225002635bca3482fcbf963001313fb68" 3341 | }, 3342 | "dist": { 3343 | "type": "zip", 3344 | "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", 3345 | "reference": "53d1a83225002635bca3482fcbf963001313fb68", 3346 | "shasum": "" 3347 | }, 3348 | "require": { 3349 | "php": ">=8.1", 3350 | "symfony/polyfill-ctype": "~1.8", 3351 | "symfony/polyfill-intl-grapheme": "~1.0", 3352 | "symfony/polyfill-intl-normalizer": "~1.0", 3353 | "symfony/polyfill-mbstring": "~1.0" 3354 | }, 3355 | "conflict": { 3356 | "symfony/translation-contracts": "<2.5" 3357 | }, 3358 | "require-dev": { 3359 | "symfony/error-handler": "^5.4|^6.0", 3360 | "symfony/http-client": "^5.4|^6.0", 3361 | "symfony/intl": "^6.2", 3362 | "symfony/translation-contracts": "^2.5|^3.0", 3363 | "symfony/var-exporter": "^5.4|^6.0" 3364 | }, 3365 | "type": "library", 3366 | "autoload": { 3367 | "files": [ 3368 | "Resources/functions.php" 3369 | ], 3370 | "psr-4": { 3371 | "Symfony\\Component\\String\\": "" 3372 | }, 3373 | "exclude-from-classmap": [ 3374 | "/Tests/" 3375 | ] 3376 | }, 3377 | "notification-url": "https://packagist.org/downloads/", 3378 | "license": [ 3379 | "MIT" 3380 | ], 3381 | "authors": [ 3382 | { 3383 | "name": "Nicolas Grekas", 3384 | "email": "p@tchwork.com" 3385 | }, 3386 | { 3387 | "name": "Symfony Community", 3388 | "homepage": "https://symfony.com/contributors" 3389 | } 3390 | ], 3391 | "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", 3392 | "homepage": "https://symfony.com", 3393 | "keywords": [ 3394 | "grapheme", 3395 | "i18n", 3396 | "string", 3397 | "unicode", 3398 | "utf-8", 3399 | "utf8" 3400 | ], 3401 | "support": { 3402 | "source": "https://github.com/symfony/string/tree/v6.3.2" 3403 | }, 3404 | "funding": [ 3405 | { 3406 | "url": "https://symfony.com/sponsor", 3407 | "type": "custom" 3408 | }, 3409 | { 3410 | "url": "https://github.com/fabpot", 3411 | "type": "github" 3412 | }, 3413 | { 3414 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3415 | "type": "tidelift" 3416 | } 3417 | ], 3418 | "time": "2023-07-05T08:41:27+00:00" 3419 | }, 3420 | { 3421 | "name": "ta-tikoma/phpunit-architecture-test", 3422 | "version": "0.7.4", 3423 | "source": { 3424 | "type": "git", 3425 | "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", 3426 | "reference": "abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2" 3427 | }, 3428 | "dist": { 3429 | "type": "zip", 3430 | "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2", 3431 | "reference": "abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2", 3432 | "shasum": "" 3433 | }, 3434 | "require": { 3435 | "nikic/php-parser": "^4.15.4", 3436 | "php": "^8.1.0", 3437 | "phpdocumentor/reflection-docblock": "^5.3.0", 3438 | "phpunit/phpunit": "^10.1.1", 3439 | "symfony/finder": "^6.2.7" 3440 | }, 3441 | "require-dev": { 3442 | "laravel/pint": "^1.9.0", 3443 | "phpstan/phpstan": "^1.10.13" 3444 | }, 3445 | "type": "library", 3446 | "autoload": { 3447 | "psr-4": { 3448 | "PHPUnit\\Architecture\\": "src/" 3449 | } 3450 | }, 3451 | "notification-url": "https://packagist.org/downloads/", 3452 | "license": [ 3453 | "MIT" 3454 | ], 3455 | "authors": [ 3456 | { 3457 | "name": "Ni Shi", 3458 | "email": "futik0ma011@gmail.com" 3459 | }, 3460 | { 3461 | "name": "Nuno Maduro", 3462 | "email": "enunomaduro@gmail.com" 3463 | } 3464 | ], 3465 | "description": "Methods for testing application architecture", 3466 | "keywords": [ 3467 | "architecture", 3468 | "phpunit", 3469 | "stucture", 3470 | "test", 3471 | "testing" 3472 | ], 3473 | "support": { 3474 | "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", 3475 | "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.7.4" 3476 | }, 3477 | "time": "2023-08-03T06:50:14+00:00" 3478 | }, 3479 | { 3480 | "name": "theseer/tokenizer", 3481 | "version": "1.2.1", 3482 | "source": { 3483 | "type": "git", 3484 | "url": "https://github.com/theseer/tokenizer.git", 3485 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" 3486 | }, 3487 | "dist": { 3488 | "type": "zip", 3489 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", 3490 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", 3491 | "shasum": "" 3492 | }, 3493 | "require": { 3494 | "ext-dom": "*", 3495 | "ext-tokenizer": "*", 3496 | "ext-xmlwriter": "*", 3497 | "php": "^7.2 || ^8.0" 3498 | }, 3499 | "type": "library", 3500 | "autoload": { 3501 | "classmap": [ 3502 | "src/" 3503 | ] 3504 | }, 3505 | "notification-url": "https://packagist.org/downloads/", 3506 | "license": [ 3507 | "BSD-3-Clause" 3508 | ], 3509 | "authors": [ 3510 | { 3511 | "name": "Arne Blankerts", 3512 | "email": "arne@blankerts.de", 3513 | "role": "Developer" 3514 | } 3515 | ], 3516 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 3517 | "support": { 3518 | "issues": "https://github.com/theseer/tokenizer/issues", 3519 | "source": "https://github.com/theseer/tokenizer/tree/1.2.1" 3520 | }, 3521 | "funding": [ 3522 | { 3523 | "url": "https://github.com/theseer", 3524 | "type": "github" 3525 | } 3526 | ], 3527 | "time": "2021-07-28T10:34:58+00:00" 3528 | }, 3529 | { 3530 | "name": "webmozart/assert", 3531 | "version": "1.11.0", 3532 | "source": { 3533 | "type": "git", 3534 | "url": "https://github.com/webmozarts/assert.git", 3535 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" 3536 | }, 3537 | "dist": { 3538 | "type": "zip", 3539 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", 3540 | "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", 3541 | "shasum": "" 3542 | }, 3543 | "require": { 3544 | "ext-ctype": "*", 3545 | "php": "^7.2 || ^8.0" 3546 | }, 3547 | "conflict": { 3548 | "phpstan/phpstan": "<0.12.20", 3549 | "vimeo/psalm": "<4.6.1 || 4.6.2" 3550 | }, 3551 | "require-dev": { 3552 | "phpunit/phpunit": "^8.5.13" 3553 | }, 3554 | "type": "library", 3555 | "extra": { 3556 | "branch-alias": { 3557 | "dev-master": "1.10-dev" 3558 | } 3559 | }, 3560 | "autoload": { 3561 | "psr-4": { 3562 | "Webmozart\\Assert\\": "src/" 3563 | } 3564 | }, 3565 | "notification-url": "https://packagist.org/downloads/", 3566 | "license": [ 3567 | "MIT" 3568 | ], 3569 | "authors": [ 3570 | { 3571 | "name": "Bernhard Schussek", 3572 | "email": "bschussek@gmail.com" 3573 | } 3574 | ], 3575 | "description": "Assertions to validate method input/output with nice error messages.", 3576 | "keywords": [ 3577 | "assert", 3578 | "check", 3579 | "validate" 3580 | ], 3581 | "support": { 3582 | "issues": "https://github.com/webmozarts/assert/issues", 3583 | "source": "https://github.com/webmozarts/assert/tree/1.11.0" 3584 | }, 3585 | "time": "2022-06-03T18:03:27+00:00" 3586 | } 3587 | ], 3588 | "aliases": [], 3589 | "minimum-stability": "stable", 3590 | "stability-flags": [], 3591 | "prefer-stable": false, 3592 | "prefer-lowest": false, 3593 | "platform": [], 3594 | "platform-dev": [], 3595 | "plugin-api-version": "2.3.0" 3596 | } 3597 | --------------------------------------------------------------------------------