├── _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 |
--------------------------------------------------------------------------------